軟件工程學(xué)概述課件_第1頁(yè)
軟件工程學(xué)概述課件_第2頁(yè)
軟件工程學(xué)概述課件_第3頁(yè)
軟件工程學(xué)概述課件_第4頁(yè)
軟件工程學(xué)概述課件_第5頁(yè)
已閱讀5頁(yè),還剩139頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程計(jì)算機(jī)與信息科學(xué)學(xué)院黃敏hmin@軟件工程計(jì)算機(jī)與信息科學(xué)學(xué)院1

軟件工程是以工程化的思想和方法來指導(dǎo)計(jì)算機(jī)軟件開發(fā)與維護(hù)整個(gè)過程的一門學(xué)科,既有很強(qiáng)的理論性,又有鮮明的實(shí)踐性。本課程通過介紹軟件工程學(xué)產(chǎn)生的歷史背景以及它的基本原理、概念、技術(shù)和方法,使學(xué)生掌握軟件項(xiàng)目開發(fā)和維護(hù)的一般過程,掌握軟件開發(fā)的傳統(tǒng)方法和最新方法,能用軟件工程的方法參與軟件項(xiàng)目的分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù),為更深入地學(xué)習(xí)和今后從事軟件工程的實(shí)踐打下良好的基礎(chǔ)。

軟件工程是以工程化的思想和方法來指導(dǎo)計(jì)算機(jī)軟件開2第1章軟件工程學(xué)概述第2章可行性研究第3章需求分析第4章形式化說明技術(shù)第5章總體設(shè)計(jì)第6章詳細(xì)設(shè)計(jì)第7章實(shí)現(xiàn)第8章維護(hù)第9章面向?qū)ο蠓椒▽W(xué)引論第10章面向?qū)ο蠓治龅?1章面向?qū)ο笤O(shè)計(jì)第12章面向?qū)ο髮?shí)現(xiàn)第13章軟件項(xiàng)目管理第1章軟件工程學(xué)概述3

教學(xué)內(nèi)容

1.1軟件與軟件危機(jī)

1.2

軟件工程

1.3軟件生命周期

1.4

軟件過程第1章軟件工程學(xué)概述

教學(xué)內(nèi)容第1章軟件工程學(xué)概述4教學(xué)目標(biāo)一般了解:軟件開發(fā)技術(shù)的發(fā)展歷史及其特點(diǎn);什么是軟件危機(jī)?軟件危機(jī)產(chǎn)生的原因?解決軟件危機(jī)的辦法;軟件的特點(diǎn)、傳統(tǒng)的生命周期模型?;菊莆眨簩?duì)軟件工程的基本原理和方法有概括性的認(rèn)識(shí)。重點(diǎn)掌握:軟件工程的概念和基本原理;生命周期方法學(xué)的內(nèi)容;生命周期方法學(xué)各階段的劃分和基本任務(wù)。教學(xué)目標(biāo)一般了解:5軟件的定義軟件工程的發(fā)展軟件危機(jī)的介紹產(chǎn)生軟件危機(jī)的原因消除軟件危機(jī)的途徑1.1軟件與軟件危機(jī)軟件的定義1.1軟件與軟件危機(jī)61.軟件的定義

軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及其相關(guān)文檔組成的完整集合。可以寫作為:軟件=程序+數(shù)據(jù)+文檔。程序:程序是按事先設(shè)計(jì)好的功能和性能要求執(zhí)行的指令序列。數(shù)據(jù):數(shù)據(jù)是使程序能適當(dāng)?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu)。文檔:文檔是與程序運(yùn)行和維護(hù)有關(guān)的圖文資料(面向開發(fā)者的文檔和面向用戶的文檔)。1.軟件的定義軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另7第一階段:個(gè)體化生產(chǎn)20世紀(jì)60年代中期以前第二階段:作坊式生產(chǎn)

20世紀(jì)60年代中期到70年代中期第三階段:產(chǎn)業(yè)化生產(chǎn)20世紀(jì)70年代中期至今2.從軟件到軟件工程第一階段:個(gè)體化生產(chǎn)2.從軟件到軟件工程8第一階段:個(gè)體化生產(chǎn)

20世紀(jì)60年代中期以前,當(dāng)時(shí)的軟件沒有系統(tǒng)化的開發(fā)方法,所謂的軟件開發(fā)就是根據(jù)應(yīng)用的需要寫出能夠運(yùn)行的程序,軟件的開發(fā)者、使用者、維護(hù)者大多為同一個(gè)人或一組人,軟件開發(fā)處于個(gè)體化生產(chǎn)狀態(tài)。第一階段:個(gè)體化生產(chǎn)9第二階段:作坊式生產(chǎn)

20世紀(jì)60年代中期到70年代中期,產(chǎn)品軟件萌生,軟件開發(fā)進(jìn)入作坊式生產(chǎn)階段,軟件數(shù)量膨脹。但是,“軟件作坊”基本上仍然沿用早期形成的個(gè)體化軟件開發(fā)方法,這使得軟件在開發(fā)和維護(hù)過程中遇到了一系列嚴(yán)重問題,軟件危機(jī)由此產(chǎn)生。1968年北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國(guó)召開會(huì)議,討論“軟件危機(jī)”問題,正式提出“軟件工程”這一術(shù)語,從而使軟件的開發(fā)和維護(hù)進(jìn)入了一個(gè)新的歷史階段。第二階段:作坊式生產(chǎn)10第三階段:產(chǎn)業(yè)化生產(chǎn)

20世紀(jì)70年代中期以后,軟件開發(fā)進(jìn)入產(chǎn)業(yè)化生產(chǎn)階段,出現(xiàn)了眾多大型的軟件公司,在工程化的思想和方法指導(dǎo)下進(jìn)行軟件的開發(fā)和維護(hù),軟件的數(shù)量和質(zhì)量都有很大提高。第三階段:產(chǎn)業(yè)化生產(chǎn)11軟件工程的發(fā)展第一代軟件工程生產(chǎn)作坊式第二代軟件工程20世紀(jì)80年代中期,Smalltalk等面向?qū)ο蟪绦蛟O(shè)計(jì)語言推出20世紀(jì)90年代起,研究重點(diǎn)從程序設(shè)計(jì)語言逐漸轉(zhuǎn)移到面向?qū)ο蟮姆治龊驮O(shè)計(jì),演化為一種完整的軟件開發(fā)方法和系統(tǒng)的技術(shù)體系(對(duì)象工程)第三代軟件工程軟件工程管理難度增大,形成新的認(rèn)識(shí):對(duì)軟件過程的控制非常重要(軟件過程工程)第四代軟件工程構(gòu)件工程軟件工程的發(fā)展第一代軟件工程121.1.3軟件危機(jī)的介紹IBM公司在1963年至1966年開發(fā)的IBM360機(jī)的操作系統(tǒng)。這一項(xiàng)目花了5000人一年的工作量,最多時(shí)有1000人投入開發(fā)工作,寫出了近100萬行源代碼。據(jù)統(tǒng)計(jì),這個(gè)操作系統(tǒng)每次發(fā)型的新版本都是從前一版本中找出1000個(gè)程序錯(cuò)誤而修正的結(jié)果。這個(gè)項(xiàng)目的負(fù)責(zé)人F.P.Brooks事后總結(jié)了他在組織開發(fā)過程中的沉痛教訓(xùn)時(shí)說:“……正像一只逃亡的野獸落到泥沼中做垂死的掙扎,越是掙扎,陷得越深。最后無法逃脫滅頂?shù)臑?zāi)難?!绦蛟O(shè)計(jì)工作正像這樣一個(gè)泥潭,……一批批程序員被迫在泥沼中拼命掙扎,……誰也沒有料到問題竟會(huì)陷入這樣的困境……”IBM360操作系統(tǒng)的歷史教訓(xùn)成為軟件開發(fā)項(xiàng)目的典型事例為人們所記取。而Brooks隨后也寫出了軟件工程領(lǐng)域的經(jīng)典著作《人月神話》,至今暢銷不衰。1.1.3軟件危機(jī)的介紹IBM公司在1963年至1966年13某公園有一游船碼頭,負(fù)責(zé)人希望開發(fā)一游船管理系統(tǒng)要求如下:當(dāng)游客租船時(shí),管理員輸入S表示租船周期開始;當(dāng)游客還船時(shí),管理員輸入E表示租船周期結(jié)束。一天結(jié)束時(shí),要求系統(tǒng)打印出租船次數(shù)和平均租船時(shí)間。Algorithm:Number=Total_time=0;GetMessage;While(!End_of_stream){if(Code==S){Number++;Total_time=Start_time;}elseTotal_time+=End_time;GetMessage;}PrintNumber;If(Number)PrintTotal_time/Number;新要求:輸出一天中的最長(zhǎng)租用時(shí)間。新要求:將報(bào)告分上午和下午輸出。新要求:當(dāng)通信線路出問題時(shí),能從計(jì)算中刪除一切不完整的租船信息。Myth:Oncewewritetheprogramandgetittowork,ourjobisdone.Reality:Someoneoncesaidthat“thesooneryoubegin‘writingcode’,thelongerit’lltakeyoutogetdone.”Industrydataindicatethatbetween60and80percentofalleffortexpendedonaprogramwillbeexpendedafteritisdeliveredtothecustomerforthefirsttime.某公園有一游船碼頭,負(fù)責(zé)人希望開發(fā)一游船管理系統(tǒng)Algori14直到今天,我們?nèi)匀恍枰卮疬@樣幾個(gè)問題:

Whydoesittakessolongtogetsoftwarefinished?

Whyaredevelopmentcostssohigh?

Whycan’twefindalltheerrorsbeforewegivethesoftwaretocustomers?

Whydowecontinuetohavedifficultyinmeasuringprogressassoftwareisbeingdeveloped?直到今天,我們?nèi)匀恍枰卮疬@樣幾個(gè)問題:Whydoes151.1.3軟件危機(jī)的介紹軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題。概括地說,軟件危機(jī)包含兩方面問題:如何開發(fā)軟件,以滿足對(duì)軟件日益增長(zhǎng)的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。軟件危機(jī)主要有以下一些典型表現(xiàn):對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。軟件常常是不可維護(hù)的。軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。軟件開發(fā)生產(chǎn)率提高的速度遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。1.1.3軟件危機(jī)的介紹軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維16原因一:軟件本身的特點(diǎn)軟件是邏輯產(chǎn)品;軟件規(guī)模龐大;1.1.4產(chǎn)生軟件危機(jī)的原因InfantmortalityWearoutFailurecurveforhardwareidealizedcurvechangeactualcurveFailurerateTime原因一:軟件本身的特點(diǎn)1.1.4產(chǎn)生軟件危機(jī)的原因Infa171.1.4產(chǎn)生軟件危機(jī)的原因原因二:軟件專業(yè)人員本身的素質(zhì)所決定的:軟件專業(yè)人員對(duì)軟件開發(fā)和維護(hù)存在糊涂的觀念,在實(shí)踐過程中采用了錯(cuò)誤的方法和技術(shù)忽視用戶需求分析或分析不足;對(duì)軟件生存周期這一過程認(rèn)識(shí)不明確;對(duì)完整的軟件配置認(rèn)識(shí)不準(zhǔn)確;忽略了軟件維護(hù)的重要性;1.1.4產(chǎn)生軟件危機(jī)的原因原因二:軟件專業(yè)人員本身的素質(zhì)18對(duì)計(jì)算機(jī)軟件應(yīng)當(dāng)有一個(gè)正確的認(rèn)識(shí);應(yīng)當(dāng)有組織、有計(jì)劃、通過嚴(yán)格的管理手段進(jìn)行軟件的開發(fā);及時(shí)總結(jié)軟件開發(fā)的成功技術(shù)和方法并加以推廣;開發(fā)和使用更好的軟件工具;總之,為了解決軟件危機(jī),既要有技術(shù)措施,又要有必要的組織管理措施。軟件工程正是從管理和技術(shù)兩方面研究如何更好的開發(fā)和維護(hù)計(jì)算機(jī)軟件的學(xué)科。1.1.5消除軟件危機(jī)的途徑對(duì)計(jì)算機(jī)軟件應(yīng)當(dāng)有一個(gè)正確的認(rèn)識(shí);1.1.5消除軟件危機(jī)的191.2軟件工程1.2.1軟件工程的介紹1.2.2軟件工程的基本原理1.2.3軟件工程方法學(xué)1.2軟件工程1.2.1軟件工程的介紹20軟件工程是研究軟件生產(chǎn)的一門學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以達(dá)到經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效的維護(hù)它的目的。1968年,北大西洋公約組織在原西德召開計(jì)算機(jī)科學(xué)會(huì)議,由FritzBauer首次提出了“軟件工程”的概念:“軟件工程是為了經(jīng)濟(jì)地獲得能夠在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件而建立和使用的一系列完善的工程化原則?!薄禝EEE軟件工程標(biāo)準(zhǔn)術(shù)語》對(duì)軟件工程給出的定義是:開發(fā)、運(yùn)行和維護(hù)軟件以及使之退役的系統(tǒng)方法。1.2.1軟件工程的介紹軟件工程是研究軟件生產(chǎn)的一門學(xué)科。它采用工程的概念、原理、技21軟件工程具有下述本質(zhì)特性:軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧的合作是開發(fā)軟件的關(guān)鍵軟件必須有效的支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品1.2.1軟件工程的介紹軟件工程具有下述本質(zhì)特性:1.2.1軟件工程的介紹22著名的軟件工程專家B.W.Boehm于1983年綜合了軟件工程專家學(xué)者們的意見并總結(jié)了開發(fā)軟件的經(jīng)驗(yàn),提出了軟件工程的7條基本原理。這7條原理被認(rèn)為是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合,又是相互獨(dú)立、缺一不可、相當(dāng)完備的最小集合。用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.2.2軟件工程的基本原理著名的軟件工程專家B.W.Boehm于1983年綜合了軟231.用分階段的生命周期計(jì)劃嚴(yán)格管理

這條基本原理是應(yīng)該把軟件生存周期劃分成若干個(gè)階段,并相應(yīng)地制定出切實(shí)可行的計(jì)劃,然后嚴(yán)格按照計(jì)劃對(duì)軟件開發(fā)與維護(hù)工作進(jìn)行管理。應(yīng)該制定的計(jì)劃有項(xiàng)目概要計(jì)劃、里程碑計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃和運(yùn)行維護(hù)計(jì)劃等。各級(jí)管理人員都必須嚴(yán)格按照計(jì)劃對(duì)軟件開發(fā)和維護(hù)工作進(jìn)行管理。據(jù)統(tǒng)計(jì),不成功的軟件項(xiàng)目中,有一半左右是由于計(jì)劃不周造成的。1.用分階段的生命周期計(jì)劃嚴(yán)格管理242.堅(jiān)持進(jìn)行階段評(píng)審據(jù)統(tǒng)計(jì),在軟件生存周期各階段中,編碼階段之前的錯(cuò)誤約占63%,而編碼錯(cuò)誤僅占37%。另外,錯(cuò)誤發(fā)現(xiàn)并改正得越晚,所花費(fèi)的代價(jià)越高。堅(jiān)持在每個(gè)階段結(jié)束前進(jìn)行嚴(yán)格的評(píng)審,就可以盡早發(fā)現(xiàn)錯(cuò)誤,從而可以最小的代價(jià)改正錯(cuò)誤。因此,這是一條必須堅(jiān)持的重要原理。2.堅(jiān)持進(jìn)行階段評(píng)審253.實(shí)行嚴(yán)格的產(chǎn)品控制

決不能隨意改變需求,只能依靠科學(xué)的產(chǎn)品控制技術(shù)來順應(yīng)用戶提出的改變需求的要求。為了保持軟件各個(gè)配置成分的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制。其中主要是實(shí)行基準(zhǔn)配置管理(又稱為變動(dòng)控制),即凡是修改軟件的建議,尤其是涉及基本配置的修改建議,都必須按規(guī)程進(jìn)行嚴(yán)格的評(píng)審,評(píng)審?fù)ㄟ^后才能實(shí)施。這里的“基準(zhǔn)配置”是指經(jīng)過階段評(píng)審后的軟件配置成分,即各階段產(chǎn)生的文檔或程序代碼等。3.實(shí)行嚴(yán)格的產(chǎn)品控制264.采用現(xiàn)代程序設(shè)計(jì)技術(shù)

實(shí)踐表明,采用先進(jìn)的程序設(shè)計(jì)技術(shù)既可以提高軟件開發(fā)與維護(hù)的效率,又可以提高軟件的質(zhì)量。多年來,人們一直致力于研究新的“程序設(shè)計(jì)技術(shù)”。比如,20世紀(jì)60年代末提出的結(jié)構(gòu)程序設(shè)計(jì)技術(shù);后來又發(fā)展出各種結(jié)構(gòu)分析(SA)和結(jié)構(gòu)設(shè)計(jì)(SD)技術(shù);之后又出現(xiàn)了面向?qū)ο蠓治觯∣OA)和面向?qū)ο笤O(shè)計(jì)(OOD)技術(shù)等等。4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)275.結(jié)果應(yīng)該能清楚地審查

軟件產(chǎn)品是一種看不見、摸不著的邏輯產(chǎn)品。因此,軟件開發(fā)小組的工作進(jìn)展情況可見性差,難于評(píng)價(jià)和管理。為了更好地進(jìn)行評(píng)價(jià)與管理,應(yīng)根據(jù)軟件開發(fā)的總目標(biāo)和完成期限,盡量明確地規(guī)定軟件開發(fā)小組的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使所得到的結(jié)果能清楚地審查。5.結(jié)果應(yīng)該能清楚地審查286.開發(fā)小組的人員應(yīng)該少而精

軟件開發(fā)小組人員素質(zhì)和數(shù)量是影響軟件質(zhì)量和開發(fā)效率的重要因素。實(shí)踐表明,素質(zhì)高的人員與素質(zhì)低的人員相比,開發(fā)效率可能高幾倍至幾十倍、而且所開發(fā)的軟件中的錯(cuò)誤也要少得多。另外,開發(fā)小組的人數(shù)不宜過多,因?yàn)殡S著人數(shù)的增加,人員之間交流情況、討論問題的通信開銷將急劇增加,這不但不能提高生產(chǎn)率,反而由于誤解等原因可能增加出錯(cuò)的概率。向進(jìn)度落后的項(xiàng)目中增加人手,只能讓項(xiàng)目進(jìn)度更落后!6.開發(fā)小組的人員應(yīng)該少而精向進(jìn)度落后的項(xiàng)目中增加人手,只297.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性

遵循上述六條基本原理,就能夠較好地實(shí)現(xiàn)軟件的工程化生產(chǎn)。但是,軟件工程不能停留在已有的技術(shù)水平上,應(yīng)積極主動(dòng)地采納或創(chuàng)造新的軟件技術(shù),要注意不斷總結(jié)經(jīng)驗(yàn),收集工作量、進(jìn)度、成本等數(shù)據(jù),并進(jìn)行出錯(cuò)類型和問題報(bào)告的統(tǒng)計(jì)。這些數(shù)據(jù)既可用來評(píng)估新的軟件技術(shù)的效果,又可用來指明應(yīng)優(yōu)先進(jìn)行研究的軟件工具和技術(shù)。7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性30通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methodology),也稱為范型(paradigm)。軟件工程方法學(xué)包含3個(gè)要素:方法、工具和過程。方法是完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法;工具是為運(yùn)用方法而提供的自動(dòng)的或半自動(dòng)的軟件工程支撐環(huán)境;過程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。目前使用最廣泛的軟件工程方法學(xué),分別是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。1.2.3軟件工程方法學(xué)通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方31傳統(tǒng)方法學(xué)

傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。它采用結(jié)構(gòu)化技術(shù)來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。這種方法學(xué)把軟件生命周期的全過程依次劃分為若干個(gè)階段,然后順序的完成每個(gè)階段的任務(wù)。前一個(gè)階段任務(wù)的完成是開始進(jìn)行后一個(gè)階段工作的前提和基礎(chǔ),每一階段的開始和結(jié)束都有嚴(yán)格標(biāo)準(zhǔn)。在每一階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格的技術(shù)審查和管理復(fù)審。傳統(tǒng)方法學(xué)322.面向?qū)ο蠓椒▽W(xué)

面向?qū)ο蠓椒▽W(xué)是一種以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來的方法,它具有下述4個(gè)要點(diǎn):把對(duì)象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。把所有對(duì)象都劃分成類。按照父類與子類的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)。對(duì)象彼此間僅能通過發(fā)送消息互相聯(lián)系。

2.面向?qū)ο蠓椒▽W(xué)331.3軟件生命周期請(qǐng)問:你將如何來組織開發(fā)一個(gè)基于B/S結(jié)構(gòu)的工資管理系統(tǒng)?1.3軟件生命周期請(qǐng)問:你將如何來組織開發(fā)一個(gè)基于B/S結(jié)341.3軟件生命周期軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)3個(gè)時(shí)期組成,每個(gè)時(shí)期又進(jìn)一步劃分為若干個(gè)階段。軟件定義時(shí)期的任務(wù)是:確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;到處實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并制定工程進(jìn)度表。這一時(shí)期可劃分為三個(gè)階段:?jiǎn)栴}定義、可行性研究、需求分析。軟件開發(fā)時(shí)期的任務(wù)是:具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件。這一時(shí)期由四階段組成:總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試、綜合測(cè)試。軟件維護(hù)時(shí)期的任務(wù)是:當(dāng)軟件在使用過程中發(fā)現(xiàn)錯(cuò)誤時(shí)加以改正;當(dāng)環(huán)境改變時(shí)修改軟件以適應(yīng)新的環(huán)境;當(dāng)用戶有新要求時(shí)及時(shí)改進(jìn)軟件以滿足用戶的新需要。1.3軟件生命周期軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維35維護(hù)綜合測(cè)試編碼和單元測(cè)試詳細(xì)設(shè)計(jì)總體設(shè)計(jì)需求分析可行性研究問題定義定義時(shí)期開發(fā)時(shí)期維護(hù)時(shí)期維護(hù)綜合測(cè)試編碼和詳細(xì)設(shè)計(jì)總體設(shè)計(jì)需求分析可行性研究問題定義36問題定義

問題定義階段要回答的關(guān)鍵問題是“要解決的問題是什么?”通過對(duì)客戶的訪問調(diào)查,系統(tǒng)分析員扼要的寫出關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的書面報(bào)告,經(jīng)過討論和必要的修改之后,這份報(bào)告還應(yīng)該得到客戶的確認(rèn)。問題定義372.可行性研究本階段的任務(wù)是根據(jù)用戶提出的工程項(xiàng)目的性質(zhì)、目標(biāo)和規(guī)模,進(jìn)一步了解用戶的要求及現(xiàn)有的環(huán)境及條件,從技術(shù)、經(jīng)濟(jì)和社會(huì)等多方面研究并論證該項(xiàng)目的可行性。即該項(xiàng)目是否值得去解決,是否存在可行的解決辦法。此時(shí),系統(tǒng)分析人員應(yīng)在用戶的配合下對(duì)用戶的要求和現(xiàn)有的環(huán)境進(jìn)行深入調(diào)查并寫出調(diào)研報(bào)告。進(jìn)而進(jìn)行可行性論證??尚行哉撟C包括經(jīng)濟(jì)可行性、技術(shù)可行性、操作可行性、法律可行性等。在此基礎(chǔ)上還要制定初步的項(xiàng)目計(jì)劃,包括需要的軟硬件資源、定義任務(wù)、風(fēng)險(xiǎn)分析、成本/效益分析以及進(jìn)度安排等??尚行匝芯康慕Y(jié)果將是使用部門負(fù)責(zé)人做出是否繼續(xù)進(jìn)行該項(xiàng)目決定的重要依據(jù)。2.可行性研究383.需求分析需求分析的任務(wù)是確定待開發(fā)的軟件系統(tǒng)“做什么”。軟件系統(tǒng)需求一般由用戶提出。系統(tǒng)分析員和開發(fā)人員在需求分析階段必須與用戶反復(fù)討論、協(xié)商,充分交流信息,并用某種方法和工具構(gòu)建軟件系統(tǒng)的邏輯模型。需求分析階段的主要成果有軟件需求規(guī)格說明書、軟件驗(yàn)收測(cè)試計(jì)劃和準(zhǔn)則、初步的用戶手冊(cè)等。其中,軟件需求規(guī)格說明書(SoftwareRequirementsSpecification,即SRS)是一個(gè)關(guān)鍵性的文檔。3.需求分析394.總體設(shè)計(jì)這個(gè)階段必須回答的關(guān)鍵問題是:“概括地說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”這一階段對(duì)需求規(guī)格說明中提供的軟件系統(tǒng)邏輯模型進(jìn)行進(jìn)一步的分解,從而建立軟件系統(tǒng)的總體結(jié)構(gòu)和各子系統(tǒng)之間、各模塊之間的關(guān)系,定義各子系統(tǒng)接口界面和各功能模塊的接口,設(shè)計(jì)全局?jǐn)?shù)據(jù)庫(kù)或數(shù)據(jù)結(jié)構(gòu),規(guī)定設(shè)計(jì)約束,制定組裝測(cè)試計(jì)劃,進(jìn)而給出每個(gè)功能模塊的功能描述、全局?jǐn)?shù)據(jù)定義和外部文件定義等??傮w設(shè)計(jì)階段的主要成果有概要設(shè)計(jì)說明書、數(shù)據(jù)庫(kù)或數(shù)據(jù)結(jié)構(gòu)說明書、組裝測(cè)試計(jì)劃等文檔4.總體設(shè)計(jì)405.詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)是將概要設(shè)計(jì)產(chǎn)生的功能模塊進(jìn)一步細(xì)化,形成可編程的程序模塊,然后設(shè)計(jì)程序模塊的內(nèi)部細(xì)節(jié),包括算法、數(shù)據(jù)結(jié)構(gòu)以及各程序模塊間的接口信息,并設(shè)計(jì)模塊的單元測(cè)試計(jì)劃??梢圆捎媒Y(jié)構(gòu)化的設(shè)計(jì)方法,采用結(jié)構(gòu)化的程序流程圖、N-S圖、過程設(shè)計(jì)語言(PDL,ProcedureDesignLanguage)等工具進(jìn)行描述,也可以采用面向?qū)ο蟮脑O(shè)計(jì)方法等等。詳細(xì)設(shè)計(jì)階段的主要成果是“詳細(xì)設(shè)計(jì)規(guī)格說明”(或稱“模塊開發(fā)卷宗”)和單元測(cè)試計(jì)劃等詳細(xì)設(shè)計(jì)文檔。5.詳細(xì)設(shè)計(jì)416.編碼和單元測(cè)試編碼的主要任務(wù)是根據(jù)詳細(xì)設(shè)計(jì)規(guī)格說明,用某種選定的程序設(shè)計(jì)語言把詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)化為機(jī)器可運(yùn)行的源程序模塊,這是一個(gè)編程和調(diào)試程序的過程。編碼階段應(yīng)注意遵循編程標(biāo)準(zhǔn)、養(yǎng)成良好的編程風(fēng)格,以便編寫出正確的便于理解、調(diào)試和維護(hù)的程序模塊。單元測(cè)試:每編寫出一個(gè)程序模塊的源程序,調(diào)試通過后,即對(duì)該模塊進(jìn)行測(cè)試,這稱為單元測(cè)試。這一階段結(jié)束時(shí)應(yīng)提供按一定規(guī)則存在盤上的通過單元測(cè)試的各功能模塊的集合、詳細(xì)的單元測(cè)試報(bào)告等文檔。6.編碼和單元測(cè)試427.綜合測(cè)試這個(gè)階段的關(guān)鍵任務(wù)是通過各種類型的測(cè)試和調(diào)試使軟件達(dá)到預(yù)定的要求。最基本的測(cè)試是集成測(cè)試和驗(yàn)收測(cè)試。集成測(cè)試是根據(jù)概要設(shè)計(jì)提供的軟件結(jié)構(gòu)、各功能模塊的說明和集成測(cè)試計(jì)劃,把經(jīng)過單元測(cè)試檢驗(yàn)的模塊按照某種選定的策略逐步進(jìn)行裝配和測(cè)試。驗(yàn)收測(cè)試是按照驗(yàn)收測(cè)試計(jì)劃和準(zhǔn)則對(duì)軟件系統(tǒng)進(jìn)行測(cè)試,看其是否達(dá)到了需求規(guī)格說明中定義的全部功能和性能等方面的需求。這一階段應(yīng)將測(cè)試計(jì)劃、詳細(xì)測(cè)試方案和實(shí)際測(cè)試結(jié)果保存為相應(yīng)的文檔,作為軟件配置的一個(gè)組成部分。7.綜合測(cè)試438.軟件維護(hù)軟件維護(hù)的任務(wù)是通過各種維護(hù)活動(dòng)使軟件系統(tǒng)持久地滿足用戶的需求。每項(xiàng)維護(hù)活動(dòng)實(shí)質(zhì)上都是一次壓縮和簡(jiǎn)化了的軟件定義和軟件開發(fā)過程。都要經(jīng)歷提出維護(hù)要求、分析維護(hù)要求、提出維護(hù)方案、審批維護(hù)方案、確定維護(hù)計(jì)劃、修改軟件設(shè)計(jì)、修改程序、測(cè)試程序、評(píng)審、驗(yàn)收等步驟。通常有四類維護(hù)活動(dòng):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。每一項(xiàng)維護(hù)活動(dòng)都應(yīng)該準(zhǔn)確記錄下來,作為正式的文檔資料加以保管。8.軟件維護(hù)441.4軟件過程軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。過程定義了運(yùn)用方法的順序、應(yīng)該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管理措施,以及標(biāo)志軟件開發(fā)各個(gè)階段任務(wù)完成的里程碑。科學(xué)、有效的軟件過程應(yīng)該定義一組適合于所承擔(dān)的項(xiàng)目特點(diǎn)的任務(wù)集合。通常使用生命周期模型間接的描述軟件過程;生命周期模型也稱為過程模型。1.4.1瀑布模型1.4.2快速原型模型1.4.3增量模型1.4.4螺旋模型1.4軟件過程軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系45

瀑布模型(waterfallmodel)是由W.Royce于1970年提出來的。又稱為軟件生存周期模型。瀑布模型嚴(yán)格按照軟件生存周期各個(gè)階段來進(jìn)行開發(fā),上一階段的輸出即是下一階段的輸入,并強(qiáng)調(diào)每一階段的嚴(yán)格性。它規(guī)定了各階段的任務(wù)和應(yīng)提交的成果及文檔,每一階段的任務(wù)完成后,都必須對(duì)其階段性產(chǎn)品(主要是文檔)進(jìn)行評(píng)審,通過后才能開始下一階段的工作。因此,它是一種以文檔作為驅(qū)動(dòng)的模型。瀑布模型具有以下幾個(gè)特征:1.階段間的順序性和依賴性2.推遲實(shí)現(xiàn)的觀點(diǎn)3.質(zhì)量保證的觀點(diǎn)

1.4.1瀑布模型瀑布模型(waterfallmodel)是由W.Ro46需求分析驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需求驗(yàn)證瀑布模型需求分析驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需47瀑布模型的優(yōu)點(diǎn)可以強(qiáng)迫開發(fā)人員采用規(guī)范的方法;嚴(yán)格規(guī)定了每個(gè)階段必須提交的文檔;要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。瀑布模型的缺點(diǎn)在軟件開發(fā)的初期階段就要求做出正確、全面、完整的需求分析對(duì)許多應(yīng)用軟件來說是極其困難的。在需求分析階段,當(dāng)需求確定后,無法及時(shí)驗(yàn)證需求是否正確、完整。作為整體開發(fā)的瀑布模型,由于不支持產(chǎn)品的演化,缺乏靈活性,對(duì)開發(fā)過程中很難發(fā)現(xiàn)的錯(cuò)誤,只有在最終產(chǎn)品運(yùn)行時(shí)才能暴露出來,從而使軟件產(chǎn)品難以維護(hù)。瀑布模型的優(yōu)點(diǎn)48瀑布模型適用的場(chǎng)合

瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。例如操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)等系統(tǒng)軟件的開發(fā)。應(yīng)用有一定的局限性。瀑布模型適用的場(chǎng)合49原型模型(prototypingmodel)的基本框架是軟件開發(fā)人員根據(jù)用戶提出的軟件基本需求快速開發(fā)一個(gè)原型,以便向用戶展示軟件系統(tǒng)應(yīng)有的部分或全部功能和性能,在征求用戶對(duì)原型的評(píng)價(jià)意見后,進(jìn)一步使需求精確化、完全化,并據(jù)此改進(jìn)、完善原型,如此迭代,直到軟件開發(fā)人員和用戶都確認(rèn)軟件系統(tǒng)的需求并達(dá)成一致的理解為止。軟件需求確定后,便可進(jìn)行設(shè)計(jì),編碼、測(cè)試等以后的各個(gè)開發(fā)步驟。1.4.2快速原型模型原型模型(prototyping50快速原型驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需求驗(yàn)證快速原型模型快速原型驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需51快速原型模型適用的場(chǎng)合原型模型比瀑布模型更符合人們認(rèn)識(shí)事物的過程和規(guī)律,是一種較實(shí)用的開發(fā)框架。它適合于那些不能預(yù)先確切定義需求的軟件系統(tǒng)的開發(fā),更適合于那些項(xiàng)目組成員(包括分析員、設(shè)計(jì)員、程序員和用戶)不能很好交流或通信有困難的情況??焖僭湍P瓦m用的場(chǎng)合52增量模型也稱為漸增模型,使用增量模型開發(fā)軟件時(shí),把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測(cè)試。每個(gè)構(gòu)建由多個(gè)相互作用的模塊構(gòu)成,并且能夠完成特定的功能。把軟件產(chǎn)品分解成增量構(gòu)件時(shí),應(yīng)該使構(gòu)件的規(guī)模適中。分解時(shí)唯一必須遵守的約束條件是,當(dāng)把新構(gòu)件集成到現(xiàn)有軟件中時(shí),所形成的產(chǎn)品必須是可測(cè)試的。用增量模型開發(fā)軟件時(shí),是分批地逐步向用戶提交產(chǎn)品。1.4.3增量模型增量模型也稱為漸增模型,使用增量模型開發(fā)軟件時(shí),把軟件產(chǎn)品作53需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對(duì)每個(gè)構(gòu)件,完成詳細(xì)設(shè)計(jì)、編碼和集成,經(jīng)測(cè)試后交付給用戶增量模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對(duì)每個(gè)構(gòu)件,完成增量模54增量模型的優(yōu)點(diǎn)能在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。逐步增加產(chǎn)品功能可以使用戶有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個(gè)全新的軟件可能給客戶組織帶來的沖擊。增量模型的缺點(diǎn)在把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時(shí),必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)的便于按照這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡(jiǎn)單、方便,這就意味著需要更精心的設(shè)計(jì)。增量模型的優(yōu)點(diǎn)55螺旋模型(spiralmodel)是B.Boehm于1988年提出的。螺旋模型將瀑布模型與快速原型模型結(jié)合起來,并且加入兩種模型均忽略了的風(fēng)險(xiǎn)分析,彌補(bǔ)了兩者的不足。螺旋模型的基本思想是,使用原型及其他方法來盡量降低風(fēng)險(xiǎn)。1.4.4螺旋模型螺旋模型(spiralmodel)是B.Boehm于1956第1章軟件工程學(xué)概述課件57螺旋模型的優(yōu)點(diǎn)對(duì)可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo)。減少了過多測(cè)試或測(cè)試不足所帶來的風(fēng)險(xiǎn)。在螺旋模型中維護(hù)只是模型的另一個(gè)周期,在維護(hù)和開發(fā)之間并沒有本質(zhì)區(qū)別。螺旋模型的缺點(diǎn)如果每次迭代的效率不高,致使迭代次數(shù)過多,將會(huì)增加成本并推遲提交時(shí)間。使用該模型需要有相當(dāng)豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和專門知識(shí),要求開發(fā)隊(duì)伍水平較高。螺旋模型的優(yōu)點(diǎn)58螺旋模型適用的場(chǎng)合

支持需求不明確、特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、面向過程、面向?qū)ο蟮榷喾N軟件開發(fā)方法,是一種具有廣闊前景的模型。螺旋模型適用的場(chǎng)合59噴泉模型是一種以用戶需求為動(dòng)力,以對(duì)象為驅(qū)動(dòng)的模型,主要用于采用對(duì)象技術(shù)的軟件開發(fā)項(xiàng)目。該模型認(rèn)為軟件開發(fā)過程自下而上周期的各階段是相互迭代和無間隙的特性。軟件的某個(gè)部分常常被重復(fù)工作多次,相關(guān)對(duì)象在每次迭代中隨之加入漸進(jìn)的軟件成分。無間隙指在各項(xiàng)活動(dòng)之間無明顯邊界,如分析和設(shè)計(jì)活動(dòng)之間沒有明顯的界限,由于對(duì)象概念的引入,表達(dá)分析、設(shè)計(jì)、實(shí)現(xiàn)等活動(dòng)只用對(duì)象類和關(guān)系,從而可以較為容易地實(shí)現(xiàn)活動(dòng)的迭代和無間隙,使其開發(fā)自然地包括復(fù)用。

1.4.5噴泉模型噴泉模型是一種以用戶需求為動(dòng)力,以對(duì)象為驅(qū)動(dòng)的模型,主要用于601、噴泉模型的優(yōu)點(diǎn)

噴泉模型不像瀑布模型那樣,需要分析活動(dòng)結(jié)束后才開始設(shè)計(jì)活動(dòng),設(shè)計(jì)活動(dòng)結(jié)束后才開始編碼活動(dòng)。該模型的各個(gè)階段沒有明顯的界限,開發(fā)人員可以同步進(jìn)行開發(fā)。其優(yōu)點(diǎn)是可以提高軟件項(xiàng)目開發(fā)效率,節(jié)省開發(fā)時(shí)間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。

2、噴泉模型的缺點(diǎn)

由于噴泉模型在各個(gè)開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項(xiàng)目的管理。此外這種模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對(duì)可能隨時(shí)加入各種信息、需求與資料的情況。

1、噴泉模型的優(yōu)點(diǎn)611.4.6Rational統(tǒng)一過程Rational統(tǒng)一過程(RUP)是Rational軟件公司(現(xiàn)在Rational公司被IBM并購(gòu))創(chuàng)造的軟件工程方法。RUP描述了如何有效地利用商業(yè)的可靠的方法開發(fā)和部署軟件,是一種重量級(jí)過程(也被稱作厚方法學(xué)),因此特別適用于大型軟件團(tuán)隊(duì)開發(fā)大型項(xiàng)目。RUP強(qiáng)調(diào)采用迭代和檢查的方式來開發(fā)軟件,整個(gè)項(xiàng)目開發(fā)過程由多個(gè)迭代過程組成。在每次迭代中只考慮系統(tǒng)的一部分需求,針對(duì)這部分需求進(jìn)行分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和部署等工作,每次迭代都是在系統(tǒng)已完成部分的基礎(chǔ)上進(jìn)行的,每次給系統(tǒng)能夠增加一些新的功能,如此循環(huán)往復(fù)地進(jìn)行下去,直至完成最終項(xiàng)目。1.4.6Rational統(tǒng)一過程Rational統(tǒng)一過程62第1章軟件工程學(xué)概述課件63

初始階段:

進(jìn)行問題定義,確定目標(biāo),評(píng)估其可行性,降低關(guān)鍵風(fēng)險(xiǎn)。

細(xì)化階段:

制定項(xiàng)目計(jì)劃、配置各類資源、建立系統(tǒng)架構(gòu)(包括各類視圖)。

構(gòu)造階段:

開發(fā)整個(gè)產(chǎn)品,并確保產(chǎn)品可移交給用戶。

移交階段:

產(chǎn)品發(fā)布、安裝、用戶培訓(xùn)。

在每個(gè)階段的每次迭代的最后,用例模型、分析模型、設(shè)計(jì)模型、實(shí)現(xiàn)模型都會(huì)增量,每個(gè)階段結(jié)束的里程碑處,管理層做出是否繼續(xù)、進(jìn)度、預(yù)算、是否給下一階段提供資助等決定。不同階段工作流的側(cè)重點(diǎn)不同,前兩階段大部分工作集中在需求、分析和架構(gòu)設(shè)計(jì)上;在構(gòu)造階段,重點(diǎn)轉(zhuǎn)移到詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試上。初始階段:641.4.7敏捷過程與極限編程1.4.7敏捷過程與極限編程651.4.7敏捷過程與極限編程極限編程是敏捷過程中最有名的一個(gè),適于小型項(xiàng)目.極限編程(XP)對(duì)于傳統(tǒng)的軟件工程中看來是“極端的”實(shí)踐.圖1.11XP項(xiàng)目的整體開發(fā)過程1.4.7敏捷過程與極限編程極限編程是敏捷過程中最有名的一66圖:XP迭代開發(fā)過程圖:XP迭代開發(fā)過程671.4.8微軟過程圖:微軟軟件生命周期階段劃分和主要里程碑1.4.8微軟過程圖:微軟軟件生命周期階段劃分和主要里程68圖:微軟過程的生命周期模型圖:微軟過程的生命周期模型691.5小結(jié)1.1軟件與軟件危機(jī)軟件的定義軟件的發(fā)展軟件危機(jī)的介紹產(chǎn)生軟件危機(jī)的原因消除軟件危機(jī)的途徑1.2軟件工程軟件工程的介紹軟件工程的基本原理軟件工程方法學(xué)1.3軟件生命周期三時(shí)期八階段1.4軟件過程七種模型

1.5小結(jié)1.1軟件與軟件危機(jī)70習(xí)題1美國(guó)一家公司在1982年計(jì)劃用fortran語言開發(fā)一個(gè)在VAX750計(jì)算機(jī)上運(yùn)行的應(yīng)用程序,估計(jì)這個(gè)程序的長(zhǎng)度為10000條指令。如果平均每人每天可以開發(fā)10條指令,請(qǐng)問:(1)開發(fā)這個(gè)應(yīng)用程序?qū)⒂枚嗌偃巳眨浚?)假設(shè)程序員的月平均工資為4000美元,每月按20個(gè)工作日計(jì)算,這個(gè)軟件的成本是多少美元?(3)1982年VAX750計(jì)算機(jī)硬件價(jià)格約為125000美元,那么這個(gè)軟件的成本在總成本中占多大的比例?(4)20年后,一臺(tái)性能遠(yuǎn)遠(yuǎn)優(yōu)于VAX750的微型計(jì)算機(jī)的價(jià)格為2000美元,這時(shí)軟件開發(fā)生產(chǎn)率已提高到平均每人每天開發(fā)40條指令,而程序員的月平均工資也漲到8000美元。如果在2002年開發(fā)上述應(yīng)用程序,該軟件成本在總成本中占多大的比例?習(xí)題1美國(guó)一家公司在1982年計(jì)劃用fortran語言開發(fā)一71習(xí)題2假設(shè)你被任命為一家軟件公司的項(xiàng)目負(fù)責(zé)人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā),由于市場(chǎng)競(jìng)爭(zhēng)激烈,公司規(guī)定了嚴(yán)格的完成期限并且已經(jīng)已對(duì)外公布。你打算采用哪種軟件過程模型?為什么?假設(shè)要求你開發(fā)一個(gè)軟件,該軟件的功能是把讀入的浮點(diǎn)數(shù)開平方,所得到的結(jié)果應(yīng)該精確到小數(shù)點(diǎn)后4位,一旦實(shí)現(xiàn)并測(cè)試完成之后,該產(chǎn)品將被拋棄。你打算選用哪種軟件過程模型?為什么?習(xí)題272軟件工程計(jì)算機(jī)與信息科學(xué)學(xué)院黃敏hmin@軟件工程計(jì)算機(jī)與信息科學(xué)學(xué)院73

軟件工程是以工程化的思想和方法來指導(dǎo)計(jì)算機(jī)軟件開發(fā)與維護(hù)整個(gè)過程的一門學(xué)科,既有很強(qiáng)的理論性,又有鮮明的實(shí)踐性。本課程通過介紹軟件工程學(xué)產(chǎn)生的歷史背景以及它的基本原理、概念、技術(shù)和方法,使學(xué)生掌握軟件項(xiàng)目開發(fā)和維護(hù)的一般過程,掌握軟件開發(fā)的傳統(tǒng)方法和最新方法,能用軟件工程的方法參與軟件項(xiàng)目的分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù),為更深入地學(xué)習(xí)和今后從事軟件工程的實(shí)踐打下良好的基礎(chǔ)。

軟件工程是以工程化的思想和方法來指導(dǎo)計(jì)算機(jī)軟件開74第1章軟件工程學(xué)概述第2章可行性研究第3章需求分析第4章形式化說明技術(shù)第5章總體設(shè)計(jì)第6章詳細(xì)設(shè)計(jì)第7章實(shí)現(xiàn)第8章維護(hù)第9章面向?qū)ο蠓椒▽W(xué)引論第10章面向?qū)ο蠓治龅?1章面向?qū)ο笤O(shè)計(jì)第12章面向?qū)ο髮?shí)現(xiàn)第13章軟件項(xiàng)目管理第1章軟件工程學(xué)概述75

教學(xué)內(nèi)容

1.1軟件與軟件危機(jī)

1.2

軟件工程

1.3軟件生命周期

1.4

軟件過程第1章軟件工程學(xué)概述

教學(xué)內(nèi)容第1章軟件工程學(xué)概述76教學(xué)目標(biāo)一般了解:軟件開發(fā)技術(shù)的發(fā)展歷史及其特點(diǎn);什么是軟件危機(jī)?軟件危機(jī)產(chǎn)生的原因?解決軟件危機(jī)的辦法;軟件的特點(diǎn)、傳統(tǒng)的生命周期模型?;菊莆眨簩?duì)軟件工程的基本原理和方法有概括性的認(rèn)識(shí)。重點(diǎn)掌握:軟件工程的概念和基本原理;生命周期方法學(xué)的內(nèi)容;生命周期方法學(xué)各階段的劃分和基本任務(wù)。教學(xué)目標(biāo)一般了解:77軟件的定義軟件工程的發(fā)展軟件危機(jī)的介紹產(chǎn)生軟件危機(jī)的原因消除軟件危機(jī)的途徑1.1軟件與軟件危機(jī)軟件的定義1.1軟件與軟件危機(jī)781.軟件的定義

軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及其相關(guān)文檔組成的完整集合??梢詫懽鳛椋很浖?程序+數(shù)據(jù)+文檔。程序:程序是按事先設(shè)計(jì)好的功能和性能要求執(zhí)行的指令序列。數(shù)據(jù):數(shù)據(jù)是使程序能適當(dāng)?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu)。文檔:文檔是與程序運(yùn)行和維護(hù)有關(guān)的圖文資料(面向開發(fā)者的文檔和面向用戶的文檔)。1.軟件的定義軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另79第一階段:個(gè)體化生產(chǎn)20世紀(jì)60年代中期以前第二階段:作坊式生產(chǎn)

20世紀(jì)60年代中期到70年代中期第三階段:產(chǎn)業(yè)化生產(chǎn)20世紀(jì)70年代中期至今2.從軟件到軟件工程第一階段:個(gè)體化生產(chǎn)2.從軟件到軟件工程80第一階段:個(gè)體化生產(chǎn)

20世紀(jì)60年代中期以前,當(dāng)時(shí)的軟件沒有系統(tǒng)化的開發(fā)方法,所謂的軟件開發(fā)就是根據(jù)應(yīng)用的需要寫出能夠運(yùn)行的程序,軟件的開發(fā)者、使用者、維護(hù)者大多為同一個(gè)人或一組人,軟件開發(fā)處于個(gè)體化生產(chǎn)狀態(tài)。第一階段:個(gè)體化生產(chǎn)81第二階段:作坊式生產(chǎn)

20世紀(jì)60年代中期到70年代中期,產(chǎn)品軟件萌生,軟件開發(fā)進(jìn)入作坊式生產(chǎn)階段,軟件數(shù)量膨脹。但是,“軟件作坊”基本上仍然沿用早期形成的個(gè)體化軟件開發(fā)方法,這使得軟件在開發(fā)和維護(hù)過程中遇到了一系列嚴(yán)重問題,軟件危機(jī)由此產(chǎn)生。1968年北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國(guó)召開會(huì)議,討論“軟件危機(jī)”問題,正式提出“軟件工程”這一術(shù)語,從而使軟件的開發(fā)和維護(hù)進(jìn)入了一個(gè)新的歷史階段。第二階段:作坊式生產(chǎn)82第三階段:產(chǎn)業(yè)化生產(chǎn)

20世紀(jì)70年代中期以后,軟件開發(fā)進(jìn)入產(chǎn)業(yè)化生產(chǎn)階段,出現(xiàn)了眾多大型的軟件公司,在工程化的思想和方法指導(dǎo)下進(jìn)行軟件的開發(fā)和維護(hù),軟件的數(shù)量和質(zhì)量都有很大提高。第三階段:產(chǎn)業(yè)化生產(chǎn)83軟件工程的發(fā)展第一代軟件工程生產(chǎn)作坊式第二代軟件工程20世紀(jì)80年代中期,Smalltalk等面向?qū)ο蟪绦蛟O(shè)計(jì)語言推出20世紀(jì)90年代起,研究重點(diǎn)從程序設(shè)計(jì)語言逐漸轉(zhuǎn)移到面向?qū)ο蟮姆治龊驮O(shè)計(jì),演化為一種完整的軟件開發(fā)方法和系統(tǒng)的技術(shù)體系(對(duì)象工程)第三代軟件工程軟件工程管理難度增大,形成新的認(rèn)識(shí):對(duì)軟件過程的控制非常重要(軟件過程工程)第四代軟件工程構(gòu)件工程軟件工程的發(fā)展第一代軟件工程841.1.3軟件危機(jī)的介紹IBM公司在1963年至1966年開發(fā)的IBM360機(jī)的操作系統(tǒng)。這一項(xiàng)目花了5000人一年的工作量,最多時(shí)有1000人投入開發(fā)工作,寫出了近100萬行源代碼。據(jù)統(tǒng)計(jì),這個(gè)操作系統(tǒng)每次發(fā)型的新版本都是從前一版本中找出1000個(gè)程序錯(cuò)誤而修正的結(jié)果。這個(gè)項(xiàng)目的負(fù)責(zé)人F.P.Brooks事后總結(jié)了他在組織開發(fā)過程中的沉痛教訓(xùn)時(shí)說:“……正像一只逃亡的野獸落到泥沼中做垂死的掙扎,越是掙扎,陷得越深。最后無法逃脫滅頂?shù)臑?zāi)難?!绦蛟O(shè)計(jì)工作正像這樣一個(gè)泥潭,……一批批程序員被迫在泥沼中拼命掙扎,……誰也沒有料到問題竟會(huì)陷入這樣的困境……”IBM360操作系統(tǒng)的歷史教訓(xùn)成為軟件開發(fā)項(xiàng)目的典型事例為人們所記取。而Brooks隨后也寫出了軟件工程領(lǐng)域的經(jīng)典著作《人月神話》,至今暢銷不衰。1.1.3軟件危機(jī)的介紹IBM公司在1963年至1966年85某公園有一游船碼頭,負(fù)責(zé)人希望開發(fā)一游船管理系統(tǒng)要求如下:當(dāng)游客租船時(shí),管理員輸入S表示租船周期開始;當(dāng)游客還船時(shí),管理員輸入E表示租船周期結(jié)束。一天結(jié)束時(shí),要求系統(tǒng)打印出租船次數(shù)和平均租船時(shí)間。Algorithm:Number=Total_time=0;GetMessage;While(!End_of_stream){if(Code==S){Number++;Total_time=Start_time;}elseTotal_time+=End_time;GetMessage;}PrintNumber;If(Number)PrintTotal_time/Number;新要求:輸出一天中的最長(zhǎng)租用時(shí)間。新要求:將報(bào)告分上午和下午輸出。新要求:當(dāng)通信線路出問題時(shí),能從計(jì)算中刪除一切不完整的租船信息。Myth:Oncewewritetheprogramandgetittowork,ourjobisdone.Reality:Someoneoncesaidthat“thesooneryoubegin‘writingcode’,thelongerit’lltakeyoutogetdone.”Industrydataindicatethatbetween60and80percentofalleffortexpendedonaprogramwillbeexpendedafteritisdeliveredtothecustomerforthefirsttime.某公園有一游船碼頭,負(fù)責(zé)人希望開發(fā)一游船管理系統(tǒng)Algori86直到今天,我們?nèi)匀恍枰卮疬@樣幾個(gè)問題:

Whydoesittakessolongtogetsoftwarefinished?

Whyaredevelopmentcostssohigh?

Whycan’twefindalltheerrorsbeforewegivethesoftwaretocustomers?

Whydowecontinuetohavedifficultyinmeasuringprogressassoftwareisbeingdeveloped?直到今天,我們?nèi)匀恍枰卮疬@樣幾個(gè)問題:Whydoes871.1.3軟件危機(jī)的介紹軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題。概括地說,軟件危機(jī)包含兩方面問題:如何開發(fā)軟件,以滿足對(duì)軟件日益增長(zhǎng)的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。軟件危機(jī)主要有以下一些典型表現(xiàn):對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。軟件常常是不可維護(hù)的。軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。軟件開發(fā)生產(chǎn)率提高的速度遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。1.1.3軟件危機(jī)的介紹軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維88原因一:軟件本身的特點(diǎn)軟件是邏輯產(chǎn)品;軟件規(guī)模龐大;1.1.4產(chǎn)生軟件危機(jī)的原因InfantmortalityWearoutFailurecurveforhardwareidealizedcurvechangeactualcurveFailurerateTime原因一:軟件本身的特點(diǎn)1.1.4產(chǎn)生軟件危機(jī)的原因Infa891.1.4產(chǎn)生軟件危機(jī)的原因原因二:軟件專業(yè)人員本身的素質(zhì)所決定的:軟件專業(yè)人員對(duì)軟件開發(fā)和維護(hù)存在糊涂的觀念,在實(shí)踐過程中采用了錯(cuò)誤的方法和技術(shù)忽視用戶需求分析或分析不足;對(duì)軟件生存周期這一過程認(rèn)識(shí)不明確;對(duì)完整的軟件配置認(rèn)識(shí)不準(zhǔn)確;忽略了軟件維護(hù)的重要性;1.1.4產(chǎn)生軟件危機(jī)的原因原因二:軟件專業(yè)人員本身的素質(zhì)90對(duì)計(jì)算機(jī)軟件應(yīng)當(dāng)有一個(gè)正確的認(rèn)識(shí);應(yīng)當(dāng)有組織、有計(jì)劃、通過嚴(yán)格的管理手段進(jìn)行軟件的開發(fā);及時(shí)總結(jié)軟件開發(fā)的成功技術(shù)和方法并加以推廣;開發(fā)和使用更好的軟件工具;總之,為了解決軟件危機(jī),既要有技術(shù)措施,又要有必要的組織管理措施。軟件工程正是從管理和技術(shù)兩方面研究如何更好的開發(fā)和維護(hù)計(jì)算機(jī)軟件的學(xué)科。1.1.5消除軟件危機(jī)的途徑對(duì)計(jì)算機(jī)軟件應(yīng)當(dāng)有一個(gè)正確的認(rèn)識(shí);1.1.5消除軟件危機(jī)的911.2軟件工程1.2.1軟件工程的介紹1.2.2軟件工程的基本原理1.2.3軟件工程方法學(xué)1.2軟件工程1.2.1軟件工程的介紹92軟件工程是研究軟件生產(chǎn)的一門學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以達(dá)到經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效的維護(hù)它的目的。1968年,北大西洋公約組織在原西德召開計(jì)算機(jī)科學(xué)會(huì)議,由FritzBauer首次提出了“軟件工程”的概念:“軟件工程是為了經(jīng)濟(jì)地獲得能夠在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件而建立和使用的一系列完善的工程化原則?!薄禝EEE軟件工程標(biāo)準(zhǔn)術(shù)語》對(duì)軟件工程給出的定義是:開發(fā)、運(yùn)行和維護(hù)軟件以及使之退役的系統(tǒng)方法。1.2.1軟件工程的介紹軟件工程是研究軟件生產(chǎn)的一門學(xué)科。它采用工程的概念、原理、技93軟件工程具有下述本質(zhì)特性:軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧的合作是開發(fā)軟件的關(guān)鍵軟件必須有效的支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品1.2.1軟件工程的介紹軟件工程具有下述本質(zhì)特性:1.2.1軟件工程的介紹94著名的軟件工程專家B.W.Boehm于1983年綜合了軟件工程專家學(xué)者們的意見并總結(jié)了開發(fā)軟件的經(jīng)驗(yàn),提出了軟件工程的7條基本原理。這7條原理被認(rèn)為是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合,又是相互獨(dú)立、缺一不可、相當(dāng)完備的最小集合。用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.2.2軟件工程的基本原理著名的軟件工程專家B.W.Boehm于1983年綜合了軟951.用分階段的生命周期計(jì)劃嚴(yán)格管理

這條基本原理是應(yīng)該把軟件生存周期劃分成若干個(gè)階段,并相應(yīng)地制定出切實(shí)可行的計(jì)劃,然后嚴(yán)格按照計(jì)劃對(duì)軟件開發(fā)與維護(hù)工作進(jìn)行管理。應(yīng)該制定的計(jì)劃有項(xiàng)目概要計(jì)劃、里程碑計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃和運(yùn)行維護(hù)計(jì)劃等。各級(jí)管理人員都必須嚴(yán)格按照計(jì)劃對(duì)軟件開發(fā)和維護(hù)工作進(jìn)行管理。據(jù)統(tǒng)計(jì),不成功的軟件項(xiàng)目中,有一半左右是由于計(jì)劃不周造成的。1.用分階段的生命周期計(jì)劃嚴(yán)格管理962.堅(jiān)持進(jìn)行階段評(píng)審據(jù)統(tǒng)計(jì),在軟件生存周期各階段中,編碼階段之前的錯(cuò)誤約占63%,而編碼錯(cuò)誤僅占37%。另外,錯(cuò)誤發(fā)現(xiàn)并改正得越晚,所花費(fèi)的代價(jià)越高。堅(jiān)持在每個(gè)階段結(jié)束前進(jìn)行嚴(yán)格的評(píng)審,就可以盡早發(fā)現(xiàn)錯(cuò)誤,從而可以最小的代價(jià)改正錯(cuò)誤。因此,這是一條必須堅(jiān)持的重要原理。2.堅(jiān)持進(jìn)行階段評(píng)審973.實(shí)行嚴(yán)格的產(chǎn)品控制

決不能隨意改變需求,只能依靠科學(xué)的產(chǎn)品控制技術(shù)來順應(yīng)用戶提出的改變需求的要求。為了保持軟件各個(gè)配置成分的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制。其中主要是實(shí)行基準(zhǔn)配置管理(又稱為變動(dòng)控制),即凡是修改軟件的建議,尤其是涉及基本配置的修改建議,都必須按規(guī)程進(jìn)行嚴(yán)格的評(píng)審,評(píng)審?fù)ㄟ^后才能實(shí)施。這里的“基準(zhǔn)配置”是指經(jīng)過階段評(píng)審后的軟件配置成分,即各階段產(chǎn)生的文檔或程序代碼等。3.實(shí)行嚴(yán)格的產(chǎn)品控制984.采用現(xiàn)代程序設(shè)計(jì)技術(shù)

實(shí)踐表明,采用先進(jìn)的程序設(shè)計(jì)技術(shù)既可以提高軟件開發(fā)與維護(hù)的效率,又可以提高軟件的質(zhì)量。多年來,人們一直致力于研究新的“程序設(shè)計(jì)技術(shù)”。比如,20世紀(jì)60年代末提出的結(jié)構(gòu)程序設(shè)計(jì)技術(shù);后來又發(fā)展出各種結(jié)構(gòu)分析(SA)和結(jié)構(gòu)設(shè)計(jì)(SD)技術(shù);之后又出現(xiàn)了面向?qū)ο蠓治觯∣OA)和面向?qū)ο笤O(shè)計(jì)(OOD)技術(shù)等等。4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)995.結(jié)果應(yīng)該能清楚地審查

軟件產(chǎn)品是一種看不見、摸不著的邏輯產(chǎn)品。因此,軟件開發(fā)小組的工作進(jìn)展情況可見性差,難于評(píng)價(jià)和管理。為了更好地進(jìn)行評(píng)價(jià)與管理,應(yīng)根據(jù)軟件開發(fā)的總目標(biāo)和完成期限,盡量明確地規(guī)定軟件開發(fā)小組的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使所得到的結(jié)果能清楚地審查。5.結(jié)果應(yīng)該能清楚地審查1006.開發(fā)小組的人員應(yīng)該少而精

軟件開發(fā)小組人員素質(zhì)和數(shù)量是影響軟件質(zhì)量和開發(fā)效率的重要因素。實(shí)踐表明,素質(zhì)高的人員與素質(zhì)低的人員相比,開發(fā)效率可能高幾倍至幾十倍、而且所開發(fā)的軟件中的錯(cuò)誤也要少得多。另外,開發(fā)小組的人數(shù)不宜過多,因?yàn)殡S著人數(shù)的增加,人員之間交流情況、討論問題的通信開銷將急劇增加,這不但不能提高生產(chǎn)率,反而由于誤解等原因可能增加出錯(cuò)的概率。向進(jìn)度落后的項(xiàng)目中增加人手,只能讓項(xiàng)目進(jìn)度更落后!6.開發(fā)小組的人員應(yīng)該少而精向進(jìn)度落后的項(xiàng)目中增加人手,只1017.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性

遵循上述六條基本原理,就能夠較好地實(shí)現(xiàn)軟件的工程化生產(chǎn)。但是,軟件工程不能停留在已有的技術(shù)水平上,應(yīng)積極主動(dòng)地采納或創(chuàng)造新的軟件技術(shù),要注意不斷總結(jié)經(jīng)驗(yàn),收集工作量、進(jìn)度、成本等數(shù)據(jù),并進(jìn)行出錯(cuò)類型和問題報(bào)告的統(tǒng)計(jì)。這些數(shù)據(jù)既可用來評(píng)估新的軟件技術(shù)的效果,又可用來指明應(yīng)優(yōu)先進(jìn)行研究的軟件工具和技術(shù)。7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性102通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methodology),也稱為范型(paradigm)。軟件工程方法學(xué)包含3個(gè)要素:方法、工具和過程。方法是完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法;工具是為運(yùn)用方法而提供的自動(dòng)的或半自動(dòng)的軟件工程支撐環(huán)境;過程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。目前使用最廣泛的軟件工程方法學(xué),分別是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。1.2.3軟件工程方法學(xué)通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方103傳統(tǒng)方法學(xué)

傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。它采用結(jié)構(gòu)化技術(shù)來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。這種方法學(xué)把軟件生命周期的全過程依次劃分為若干個(gè)階段,然后順序的完成每個(gè)階段的任務(wù)。前一個(gè)階段任務(wù)的完成是開始進(jìn)行后一個(gè)階段工作的前提和基礎(chǔ),每一階段的開始和結(jié)束都有嚴(yán)格標(biāo)準(zhǔn)。在每一階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格的技術(shù)審查和管理復(fù)審。傳統(tǒng)方法學(xué)1042.面向?qū)ο蠓椒▽W(xué)

面向?qū)ο蠓椒▽W(xué)是一種以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來的方法,它具有下述4個(gè)要點(diǎn):把對(duì)象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。把所有對(duì)象都劃分成類。按照父類與子類的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)。對(duì)象彼此間僅能通過發(fā)送消息互相聯(lián)系。

2.面向?qū)ο蠓椒▽W(xué)1051.3軟件生命周期請(qǐng)問:你將如何來組織開發(fā)一個(gè)基于B/S結(jié)構(gòu)的工資管理系統(tǒng)?1.3軟件生命周期請(qǐng)問:你將如何來組織開發(fā)一個(gè)基于B/S結(jié)1061.3軟件生命周期軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)3個(gè)時(shí)期組成,每個(gè)時(shí)期又進(jìn)一步劃分為若干個(gè)階段。軟件定義時(shí)期的任務(wù)是:確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;到處實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并制定工程進(jìn)度表。這一時(shí)期可劃分為三個(gè)階段:?jiǎn)栴}定義、可行性研究、需求分析。軟件開發(fā)時(shí)期的任務(wù)是:具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件。這一時(shí)期由四階段組成:總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試、綜合測(cè)試。軟件維護(hù)時(shí)期的任務(wù)是:當(dāng)軟件在使用過程中發(fā)現(xiàn)錯(cuò)誤時(shí)加以改正;當(dāng)環(huán)境改變時(shí)修改軟件以適應(yīng)新的環(huán)境;當(dāng)用戶有新要求時(shí)及時(shí)改進(jìn)軟件以滿足用戶的新需要。1.3軟件生命周期軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維107維護(hù)綜合測(cè)試編碼和單元測(cè)試詳細(xì)設(shè)計(jì)總體設(shè)計(jì)需求分析可行性研究問題定義定義時(shí)期開發(fā)時(shí)期維護(hù)時(shí)期維護(hù)綜合測(cè)試編碼和詳細(xì)設(shè)計(jì)總體設(shè)計(jì)需求分析可行性研究問題定義108問題定義

問題定義階段要回答的關(guān)鍵問題是“要解決的問題是什么?”通過對(duì)客戶的訪問調(diào)查,系統(tǒng)分析員扼要的寫出關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的書面報(bào)告,經(jīng)過討論和必要的修改之后,這份報(bào)告還應(yīng)該得到客戶的確認(rèn)。問題定義1092.可行性研究本階段的任務(wù)是根據(jù)用戶提出的工程項(xiàng)目的性質(zhì)、目標(biāo)和規(guī)模,進(jìn)一步了解用戶的要求及現(xiàn)有的環(huán)境及條件,從技術(shù)、經(jīng)濟(jì)和社會(huì)等多方面研究并論證該項(xiàng)目的可行性。即該項(xiàng)目是否值得去解決,是否存在可行的解決辦法。此時(shí),系統(tǒng)分析人員應(yīng)在用戶的配合下對(duì)用戶的要求和現(xiàn)有的環(huán)境進(jìn)行深入調(diào)查并寫出調(diào)研報(bào)告。進(jìn)而進(jìn)行可行性論證??尚行哉撟C包括經(jīng)濟(jì)可行性、技術(shù)可行性、操作可行性、法律可行性等。在此基礎(chǔ)上還要制定初步的項(xiàng)目計(jì)劃,包括需要的軟硬件資源、定義任務(wù)、風(fēng)險(xiǎn)分析、成本/效益分析以及進(jìn)度安排等??尚行匝芯康慕Y(jié)果將是使用部門負(fù)責(zé)人做出是否繼續(xù)進(jìn)行該項(xiàng)目決定的重要依據(jù)。2.可行性研究1103.需求分析需求分析的任務(wù)是確定待開發(fā)的軟件系統(tǒng)“做什么”。軟件系統(tǒng)需求一般由用戶提出。系統(tǒng)分析員和開發(fā)人員在需求分析階段必須與用戶反復(fù)討論、協(xié)商,充分交流信息,并用某種方法和工具構(gòu)建軟件系統(tǒng)的邏輯模型。需求分析階段的主要成果有軟件需求規(guī)格說明書、軟件驗(yàn)收測(cè)試計(jì)劃和準(zhǔn)則、初步的用戶手冊(cè)等。其中,軟件需求規(guī)格說明書(SoftwareRequirementsSpecification,即SRS)是一個(gè)關(guān)鍵性的文檔。3.需求分析1114.總體設(shè)計(jì)這個(gè)階段必須回答的關(guān)鍵問題是:“概括地說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”這一階段對(duì)需求規(guī)格說明中提供的軟件系統(tǒng)邏輯模型進(jìn)行進(jìn)一步的分解,從而建立軟件系統(tǒng)的總體結(jié)構(gòu)和各子系統(tǒng)之間、各模塊之間的關(guān)系,定義各子系統(tǒng)接口界面和各功能模塊的接口,設(shè)計(jì)全局?jǐn)?shù)據(jù)庫(kù)或數(shù)據(jù)結(jié)構(gòu),規(guī)定設(shè)計(jì)約束,制定組裝測(cè)試計(jì)劃,進(jìn)而給出每個(gè)功能模塊的功能描述、全局?jǐn)?shù)據(jù)定義和外部文件定義等??傮w設(shè)計(jì)階段的主要成果有概要設(shè)計(jì)說明書、數(shù)據(jù)庫(kù)或數(shù)據(jù)結(jié)構(gòu)說明書、組裝測(cè)試計(jì)劃等文檔4.總體設(shè)計(jì)1125.詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)是將概要設(shè)計(jì)產(chǎn)生的功能模塊進(jìn)一步細(xì)化,形成可編程的程序模塊,然后設(shè)計(jì)程序模塊的內(nèi)部細(xì)節(jié),包括算法、數(shù)據(jù)結(jié)構(gòu)以及各程序模塊間的接口信息,并設(shè)計(jì)模塊的單元測(cè)試計(jì)劃??梢圆捎媒Y(jié)構(gòu)化的設(shè)計(jì)方法,采用結(jié)構(gòu)化的程序流程圖、N-S圖、過程設(shè)計(jì)語言(PDL,ProcedureDesignLanguage)等工具進(jìn)行描述,也可以采用面向?qū)ο蟮脑O(shè)計(jì)方法等等。詳細(xì)設(shè)計(jì)階段的主要成果是“詳細(xì)設(shè)計(jì)規(guī)格說明”(或稱“模塊開發(fā)卷宗”)和單元測(cè)試計(jì)劃等詳細(xì)設(shè)計(jì)文檔。5.詳細(xì)設(shè)計(jì)1136.編碼和單元測(cè)試編碼的主要任務(wù)是根據(jù)詳細(xì)設(shè)計(jì)規(guī)格說明,用某種選定的程序設(shè)計(jì)語言把詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)化為機(jī)器可運(yùn)行的源程序模塊,這是一個(gè)編程和調(diào)試程序的過程。編碼階段應(yīng)注意遵循編程標(biāo)準(zhǔn)、養(yǎng)成良好的編程風(fēng)格,以便編寫出正確的便于理解、調(diào)試和維護(hù)的程序模塊。單元測(cè)試:每編寫出一個(gè)程序模塊的源程序,調(diào)試通過后,即對(duì)該模塊進(jìn)行測(cè)試,這稱為單元測(cè)試。這一階段結(jié)束時(shí)應(yīng)提供按一定規(guī)則存在盤上的通過單元測(cè)試的各功能模塊的集合、詳細(xì)的單元測(cè)試報(bào)告等文檔。6.編碼和單元測(cè)試1147.綜合測(cè)試這個(gè)階段的關(guān)鍵任務(wù)是通過各種類型的測(cè)試和調(diào)試使軟件達(dá)到預(yù)定的要求。最基本的測(cè)試是集成測(cè)試和驗(yàn)收測(cè)試。集成測(cè)試是根據(jù)概要設(shè)計(jì)提供的軟件結(jié)構(gòu)、各功能模塊的說明和集成測(cè)試計(jì)劃,把經(jīng)過單元測(cè)試檢驗(yàn)的模塊按照某種選定的策略逐步進(jìn)行裝配和測(cè)試。驗(yàn)收測(cè)試是按照驗(yàn)收測(cè)試計(jì)劃和準(zhǔn)則對(duì)軟件系統(tǒng)進(jìn)行測(cè)試,看其是否達(dá)到了需求規(guī)格說明中定義的全部功能和性能等方面的需求。這一階段應(yīng)將測(cè)試計(jì)劃、詳細(xì)測(cè)試方案和實(shí)際測(cè)試結(jié)果保存為相應(yīng)的文檔,作為軟件配置的一個(gè)組成部分。7.綜合測(cè)試1158.軟件維護(hù)軟件維護(hù)的任務(wù)是通過各種維護(hù)活動(dòng)使軟件系統(tǒng)持久地滿足用戶的需求。每項(xiàng)維護(hù)活動(dòng)實(shí)質(zhì)上都是一次壓縮和簡(jiǎn)化了的軟件定義和軟件開發(fā)過程。都要經(jīng)歷提出維護(hù)要求、分析維護(hù)要求、提出維護(hù)方案、審批維護(hù)方案、確定維護(hù)計(jì)劃、修改軟件設(shè)計(jì)、修改程序、測(cè)試程序、評(píng)審、驗(yàn)收等步驟。通常有四類維護(hù)活動(dòng):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。每一項(xiàng)維護(hù)活動(dòng)都應(yīng)該準(zhǔn)確記錄下來,作為正式的文檔資料加以保管。8.軟件維護(hù)1161.4軟件過程軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。過程定義了運(yùn)用方法的順序、應(yīng)該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管理措施,以及標(biāo)志軟件開發(fā)各個(gè)階段任務(wù)完成的里程碑??茖W(xué)、有效的軟件過程應(yīng)該定義一組適合于所承擔(dān)的項(xiàng)目特點(diǎn)的任務(wù)集合。通常使用生命周期模型間接的描述軟件過程;生命周期模型也稱為過程模型。1.4.1瀑布模型1.4.2快速原型模型1.4.3增量模型1.4.4螺旋模型1.4軟件過程軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系117

瀑布模型(waterfallmodel)是由W.Royce于1970年提出來的。又稱為軟件生存周期模型。瀑布模型嚴(yán)格按照軟件生存周期各個(gè)階段來進(jìn)行開發(fā),上一階段的輸出即是下一階段的輸入,并強(qiáng)調(diào)每一階段的嚴(yán)格性。它規(guī)定了各階段的任務(wù)和應(yīng)提交的成果及文檔,每一階段的任務(wù)完成后,都必須對(duì)其階段性產(chǎn)品(主要是文檔)進(jìn)行評(píng)審,通過后才能開始下一階段的工作。因此,它是一種以文檔作為驅(qū)動(dòng)的模型。瀑布模型具有以下幾個(gè)特征:1.階段間的順序性和依賴性2.推遲實(shí)現(xiàn)的觀點(diǎn)3.質(zhì)量保證的觀點(diǎn)

1.4.1瀑布模型瀑布模型(waterfallmodel)是由W.Ro118需求分析驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需求驗(yàn)證瀑布模型需求分析驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需119瀑布模型的優(yōu)點(diǎn)可以強(qiáng)迫開發(fā)人員采用規(guī)范的方法;嚴(yán)格規(guī)定了每個(gè)階段必須提交的文檔;要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。瀑布模型的缺點(diǎn)在軟件開發(fā)的初期階段就要求做出正確、全面、完整的需求分析對(duì)許多應(yīng)用軟件來說是極其困難的。在需求分析階段,當(dāng)需求確定后,無法及時(shí)驗(yàn)證需求是否正確、完整。作為整體開發(fā)的瀑布模型,由于不支持產(chǎn)品的演化,缺乏靈活性,對(duì)開發(fā)過程中很難發(fā)現(xiàn)的錯(cuò)誤,只有在最終產(chǎn)品運(yùn)行時(shí)才能暴露出來,從而使軟件產(chǎn)品難以維護(hù)。瀑布模型的優(yōu)點(diǎn)120瀑布模型適用的場(chǎng)合

瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。例如操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)等系統(tǒng)軟件的開發(fā)。應(yīng)用有一定的局限性。瀑布模型適用的場(chǎng)合121原型模型(prototypingmodel)的基本框架是軟件開發(fā)人員根據(jù)用戶提出的軟件基本需求快速開發(fā)一個(gè)原型,以便向用戶展示軟件系統(tǒng)應(yīng)有的部分或全部功能和性能,在征求用戶對(duì)原型的評(píng)價(jià)意見后,進(jìn)一步使需求精確化、完全化,并據(jù)此改進(jìn)、完善原型,如此迭代,直到軟件開發(fā)人員和用戶都確認(rèn)軟件系統(tǒng)的需求并達(dá)成一致的理解為止。軟件需求確定后,便可進(jìn)行設(shè)計(jì),編碼、測(cè)試等以后的各個(gè)開發(fā)步驟。1.4.2快速原型模型原型模型(prototyping122快速原型驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需求驗(yàn)證快速原型模型快速原型驗(yàn)證編碼驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證綜合測(cè)試維護(hù)變化的需123快速原型模型適用的場(chǎng)合原型模型比瀑布模型更符合人們認(rèn)識(shí)事物的過程和規(guī)律,是一種較實(shí)用的開發(fā)框架。它適合于那些不能預(yù)先確切定義需求的軟件系統(tǒng)的開發(fā),更適合于那些項(xiàng)目組成員(包括分析員、設(shè)計(jì)員、程序員和用戶)不能很好交流或通信有困難的情況??焖僭湍P瓦m用的場(chǎng)合124增量模型也稱為漸增模型,使用增量模型開發(fā)軟件時(shí),把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測(cè)試。每個(gè)構(gòu)建由多個(gè)相互作用的模塊構(gòu)成,并且能夠完成特定的功能。把軟件產(chǎn)品分解成增量構(gòu)件時(shí),應(yīng)該使構(gòu)件的規(guī)模適中。分解時(shí)唯一必須遵守的約束條件是,當(dāng)把新構(gòu)件集成到現(xiàn)有軟件中時(shí),所形成的產(chǎn)品必須是可測(cè)試的。用增量模型開發(fā)軟件時(shí),是分批地逐步向用戶提交產(chǎn)品。1.4.3增量模型增量模型也稱為漸增模型,使用增量模型開發(fā)軟件時(shí),把軟件產(chǎn)品作125需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對(duì)每個(gè)構(gòu)件,完成詳細(xì)設(shè)計(jì)、編碼和集成,經(jīng)測(cè)試后交付給用戶增量模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對(duì)每個(gè)構(gòu)件,完成增量模126增量模型的優(yōu)點(diǎn)能在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。逐步增加產(chǎn)品功能可以使用戶有較充裕的時(shí)間

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論