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

下載本文檔

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

文檔簡(jiǎn)介

1軟件工程

SoftwareEngineering

主講:金蘭2課程目的掌握軟件工程的基本概念、原理和技術(shù)。掌握系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、測(cè)試與維護(hù)的理論與方法。了解并掌握部分軟件工程工具的使用。實(shí)踐軟件系統(tǒng)開發(fā)的全過程,構(gòu)建一個(gè)軟件系統(tǒng)。轉(zhuǎn)變對(duì)軟件的認(rèn)識(shí):程序

系統(tǒng)轉(zhuǎn)變思維模式:程序員

系統(tǒng)分析員/系統(tǒng)設(shè)計(jì)員工程化訓(xùn)練規(guī)范、準(zhǔn)則、項(xiàng)目管理3課程內(nèi)容軟件工程導(dǎo)論:包括軟件與軟件工程的概念、傳統(tǒng)的開發(fā)方法、面向?qū)ο蟮拈_發(fā)方法、實(shí)現(xiàn)與測(cè)試、質(zhì)量與質(zhì)量保證、軟件計(jì)劃與管理、軟件開發(fā)工具與環(huán)境等內(nèi)容。軟件建模技術(shù):面向?qū)ο蟮能浖Ec構(gòu)造的基本概念、原理和方法。軟件項(xiàng)目組織與管理:軟件項(xiàng)目管理領(lǐng)域中所含的計(jì)劃方法、活動(dòng)排序與跟蹤、質(zhì)量保證、配置管理、風(fēng)險(xiǎn)防御、質(zhì)量度量方法、軟件人員的管理方法等內(nèi)容。4課程內(nèi)容第1章軟件工程概述第2章軟件開發(fā)方法簡(jiǎn)介第3-5章

結(jié)構(gòu)化分析、設(shè)計(jì)和實(shí)現(xiàn)第6-8章面向?qū)ο蠓治?、設(shè)計(jì)、實(shí)現(xiàn)及測(cè)試第9章運(yùn)行和維護(hù)第10章軟件工程標(biāo)準(zhǔn)化和軟件質(zhì)量第11章軟件工程項(xiàng)目管理第12章結(jié)構(gòu)化開發(fā)實(shí)例第13章面向?qū)ο筌浖_發(fā)實(shí)例5課程安排考試形式:考試平時(shí)(到勤+上機(jī)+作業(yè))30%考試成績(jī)70%6教材及參考資料教材:《軟件工程實(shí)踐教程(第2版)》劉冰機(jī)械工業(yè)出版社參考資料:《軟件工程導(dǎo)論(第五版)》張海藩清華大學(xué)出版社《軟件工程概論》鄭人杰,馬素霞,殷人昆機(jī)械工業(yè)出版社殷人昆.實(shí)用軟件工程(第三版).清華大學(xué)出版社.2010.(美)RogerS.Pressman.(鄭人杰,馬素霞譯).軟件工程:實(shí)踐者的研究方法(原書第7版),北京:機(jī)械工業(yè)出版社,2011.(美)ShariLawrencePfleeger,(加)JoanneM.Atlee(楊衛(wèi)東譯).軟件工程(第3版).北京:人民郵電出版社,2007.鄭人杰,馬素霞,殷人昆.軟件工程概論,機(jī)械工業(yè)出版社,2010.齊治昌.軟件工程(第二版).北京:高等教育出版社,2004.《UML和OOAD快速入門》邱郁惠機(jī)械工業(yè)出版社7網(wǎng)絡(luò)資源//

8第1章軟件工程概述軟件軟件過程的概念軟件過程模型Rational統(tǒng)一開發(fā)過程實(shí)例:軟件外包開發(fā)過程9軟件軟件的特點(diǎn)軟件的發(fā)展軟件危機(jī)軟件工程的概念軟件工程的三要素軟件工程方法軟件工程的發(fā)展歷史10軟件的定義軟件(software)是計(jì)算機(jī)程序、程序使用的數(shù)據(jù)(數(shù)據(jù)結(jié)構(gòu))以及相關(guān)文檔的集合。(1)可以在計(jì)算機(jī)上運(yùn)行的程序(program)。(2)運(yùn)行程序需要的數(shù)據(jù)(data)。(3)軟件開發(fā)、維護(hù)、使用需要的各種文檔(document)。11軟件的定義文檔(Document)指用自然語言或者形式化語言所編寫的文字資料和圖表,用來描述程序的內(nèi)容、組成、設(shè)計(jì)、功能規(guī)格、開發(fā)情況、測(cè)試結(jié)果及使用方法。文檔有規(guī)定的格式和標(biāo)準(zhǔn)。國(guó)家標(biāo)準(zhǔn)GB/T8567—2006《計(jì)算機(jī)軟件文檔編制規(guī)范》12軟件的特點(diǎn)(1)軟件產(chǎn)品的生產(chǎn)主要是腦力勞動(dòng),還未完全擺脫手工開發(fā)方式,大部分產(chǎn)品是“定做”的。(2)軟件是一種邏輯產(chǎn)品,是腦力勞動(dòng)的結(jié)晶,看不見摸不著的,因而具有無形性。(3)軟件產(chǎn)品不會(huì)用壞,不存在磨損、消耗問題。(4)軟件產(chǎn)品的成本主要體現(xiàn)在軟件的開發(fā)和研制上,軟件開發(fā)研制完成后,通過復(fù)制就產(chǎn)生了大量軟件產(chǎn)品。(5)軟件費(fèi)用不斷增加,軟件成本相當(dāng)昂貴。13硬件和軟件故障率曲線14軟件的分類按軟件的功能進(jìn)行劃分:系統(tǒng)軟件操作系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)設(shè)備驅(qū)動(dòng)程序支撐軟件文本編輯程序支持需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和支持管理的軟件應(yīng)用軟件工程與科學(xué)計(jì)算軟件計(jì)算機(jī)輔助設(shè)計(jì)/制造軟件智能產(chǎn)品嵌入軟件醫(yī)療、制藥軟件辦公自動(dòng)化軟件計(jì)算機(jī)輔助教學(xué)軟件15軟件的分類

按軟件的規(guī)模進(jìn)行分類:分類參加人員開發(fā)期限程序規(guī)模/源程序行數(shù)特征微型11~4周500以下不必有嚴(yán)格的設(shè)計(jì)和測(cè)試文檔小型1~21~6月1k~2k通常沒有與其他程序的接口中型3~51~2年5k~50k需要有嚴(yán)格的文檔和設(shè)計(jì)規(guī)范大型5~202~3年50k~100k需要按照軟件工程方法進(jìn)行管理超大型100~10004~5年1M(=1000k)必須按照軟件工程開發(fā),有嚴(yán)格的質(zhì)量管理措施巨型2000~50005~10年1M~10M同上16例:?Windows95有1000萬行代碼

?Windows2000有5000萬行代碼,3000多個(gè)工程師,幾百個(gè)小團(tuán)隊(duì)。Exchange2000和Windows2000開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測(cè)試人員350人約3200人17軟件的分類根據(jù)軟件的服務(wù)對(duì)象進(jìn)行分類:(1)定制軟件(2)產(chǎn)品軟件幾家領(lǐng)軍軟件企業(yè)也建立了一些軟件組件復(fù)用的技術(shù)標(biāo)準(zhǔn),例如,OMG的CORBA、Microsoft的COM和DCOM、SUN的EJB和J2EE,但是目前還做不到大范圍使用軟件替代品。大多數(shù)軟件仍然是為特定任務(wù)或用戶定制的。18軟件的發(fā)展程序設(shè)計(jì)階段—40至50年代在這一時(shí)期,軟件的生產(chǎn)主要是個(gè)體手工勞動(dòng)的生產(chǎn)方式。使用機(jī)器語言、匯編語言作為工具;開發(fā)程序的方法上主要是追求編程技巧和程序運(yùn)行效率。這個(gè)時(shí)期軟件特征是只有程序、程序設(shè)計(jì)概念,不重視程序設(shè)計(jì)方法。程序系統(tǒng)階段—50至60年代

這一時(shí)期主要圍繞軟件項(xiàng)目,開展了開發(fā)模型、支持工具以及開發(fā)方法的研究。如:瀑布模型、結(jié)構(gòu)化方法(自頂向下)、結(jié)構(gòu)化語言(Pascal、C、Ada語言)、管理方法(費(fèi)用估算、文檔復(fù)審)、支持工具(計(jì)劃、配置管理工具等)軟件工程階段—70年代以后

開展了有關(guān)軟件生產(chǎn)技術(shù)、軟件復(fù)用技術(shù)、軟件生產(chǎn)管理的研究和實(shí)踐;提出具有廣泛應(yīng)用前景的面向?qū)ο蠓椒ê拖嚓P(guān)的語言(Smalltalk、C++);近年來,軟件工程的研究從過程轉(zhuǎn)向產(chǎn)品更加注重程序的開發(fā)范型和軟件生產(chǎn)。高智能、自動(dòng)化CASE成為軟件工程技術(shù)研究的熱點(diǎn)

階段描述內(nèi)容程序設(shè)計(jì)程序系統(tǒng)軟件工程軟件所指內(nèi)容程序程序及說明書程序、文檔及數(shù)據(jù)主要程序設(shè)計(jì)語言匯編及機(jī)器語言高級(jí)語言軟件語言(需求定義語言、軟件功能語言、軟件設(shè)計(jì)語言、程序設(shè)計(jì)語言

)軟件工作范圍程序編寫包括設(shè)計(jì)和測(cè)試包括整個(gè)軟件生存周期需求者程序設(shè)計(jì)者本人少數(shù)用戶市場(chǎng)用戶開發(fā)軟件的組織個(gè)人開發(fā)小組開發(fā)小組及大、中型軟件開發(fā)機(jī)構(gòu)軟件規(guī)模小型中、小型大、中、小型決定質(zhì)量的因素個(gè)人程序設(shè)計(jì)技術(shù)小組技術(shù)水平管理水平開發(fā)技術(shù)和手段子程序、程序庫(kù)結(jié)構(gòu)化程序設(shè)計(jì)數(shù)據(jù)庫(kù)、開發(fā)工具、工程化開發(fā)方法、標(biāo)準(zhǔn)和規(guī)范、網(wǎng)絡(luò)和分布式開發(fā)、面向?qū)ο蠹夹g(shù)、軟件過程與過程改進(jìn)維護(hù)責(zé)任者程序設(shè)計(jì)者開發(fā)小組專職維護(hù)人員硬件特征價(jià)格高、存儲(chǔ)容量小、工作可靠性差降價(jià),速度、存儲(chǔ)容量及工作可靠性有明顯提高向超高速、大容量、微型化及網(wǎng)絡(luò)化方向發(fā)展軟件特征完全不受重視軟件技術(shù)的發(fā)展不能滿足需求,出現(xiàn)軟件危機(jī)開發(fā)技術(shù)有進(jìn)步,但未獲突破性進(jìn)展,價(jià)格高,未完全擺脫軟件危機(jī)20軟件技術(shù)的總體發(fā)展趨勢(shì)平臺(tái)網(wǎng)絡(luò)化 方法對(duì)象化 系統(tǒng)構(gòu)件化

產(chǎn)品家族化 開發(fā)工程化 過程規(guī)范化 生產(chǎn)規(guī)?;? 競(jìng)爭(zhēng)國(guó)際化21國(guó)際軟件產(chǎn)業(yè)現(xiàn)狀其中,各國(guó)在全球軟件總額中所占的份額:中國(guó)1.2%愛爾蘭1.5%44.63%印度1.48%韓國(guó)1.39%日本9.6%美國(guó)40.2%其它國(guó)家22軟件危機(jī)軟件危機(jī)的概念軟件危機(jī)的形成軟件危機(jī)的具體表現(xiàn)軟件危機(jī)的根源消除軟件危機(jī)的途徑23軟件危機(jī)的概念軟件危機(jī)在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。幾乎所有的軟件都不同程度地存在問題。24軟件危機(jī)的概念從20世紀(jì)60年代開始,軟件界經(jīng)常遭受軟件危機(jī)的襲擾。以IBM公司的OS/360操作系統(tǒng)為例。它共有4000多個(gè)模塊、100萬行指令,共投入5000人年,耗資5億美元,但在交付使用的系統(tǒng)中仍找出2000個(gè)以上的錯(cuò)誤。軟件開發(fā)所需的高成本與軟件產(chǎn)品的低質(zhì)量之間存在尖銳的矛盾。這種現(xiàn)象被稱為“軟件危機(jī)”(SoftwareCrisis)。25軟件危機(jī)的形成1.硬件生產(chǎn)率大幅提高

如今,計(jì)算機(jī)硬件產(chǎn)品已系列化、自動(dòng)化、標(biāo)準(zhǔn)化,"即插即用"。

生產(chǎn)效率幾百萬倍的提高。生產(chǎn)能力過剩。

26軟件危機(jī)的形成2.軟件生產(chǎn)隨規(guī)模增大復(fù)雜度增大以美國(guó)宇航局的軟件系統(tǒng)為例:

1963年水星計(jì)劃系統(tǒng)200萬條指令

1967年雙子星座計(jì)劃系統(tǒng)400萬條指令

1973年阿波羅計(jì)劃系統(tǒng)1000萬條指令

1979年哥倫比亞航天飛機(jī)系統(tǒng)4000萬條指令

假設(shè)1個(gè)人一年生產(chǎn)一萬條有效指令,那么是否4000人生產(chǎn)一年,或400人生產(chǎn)10年就能完成任務(wù)呢?答案是否定的。一萬條指令的復(fù)雜度決不僅僅是100條指令復(fù)雜度的100倍。

27軟件危機(jī)的形成3.軟件生產(chǎn)率很低軟件的生產(chǎn)卻還沿用"手工作坊"的生產(chǎn)方式。生產(chǎn)效率僅提高了幾倍。生產(chǎn)能力極其低下。

28軟件危機(jī)的形成4.硬、軟件供需失衡

社會(huì)大量需求,生產(chǎn)成本高,生產(chǎn)過程控制復(fù)雜,生產(chǎn)效率低等等因素構(gòu)成軟件生產(chǎn)的惡性循環(huán)。

由此產(chǎn)生"軟件危機(jī)"。

29軟件危機(jī)的形成5.矛盾引發(fā)"軟件危機(jī)"

軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。

為了研究、解決軟件危機(jī),誕生了一門新興學(xué)科--軟件工程學(xué)。把軟件作為工程對(duì)象,從技術(shù)措施和組織管理兩個(gè)方面來研究、解決軟件危機(jī)。

30軟件危機(jī)的具體表現(xiàn)(1)軟件開發(fā)進(jìn)度難以預(yù)測(cè)拖延工期幾個(gè)月甚至幾年的現(xiàn)象并不罕見,這種現(xiàn)象降低了軟件開發(fā)組織的信譽(yù)。案例31以丹佛新國(guó)際機(jī)場(chǎng)為例:

該機(jī)場(chǎng)規(guī)模是曼哈頓機(jī)場(chǎng)的兩倍,寬為希思機(jī)場(chǎng)的10倍,可以全天侯同時(shí)起降三架噴氣式客機(jī);投資1.93億美元建立了一個(gè)地下行李傳送系統(tǒng),總長(zhǎng)21英里,有4,000臺(tái)遙控車,可按不同線路在20家不同的航空公司柜臺(tái)、登機(jī)門和行李領(lǐng)取處之間發(fā)送和傳遞行李;支持該系統(tǒng)的是5,000個(gè)電子眼、400臺(tái)無線電接受機(jī)、56臺(tái)條形碼掃描儀和100臺(tái)計(jì)算機(jī)。按原定計(jì)劃要在1993年萬圣節(jié)前啟用,但一直到1994年6月,機(jī)場(chǎng)的計(jì)劃者還無法預(yù)測(cè)行李系統(tǒng)何時(shí)能達(dá)到可使機(jī)場(chǎng)開放的穩(wěn)定程度。據(jù)研究結(jié)果統(tǒng)計(jì):只有15%的項(xiàng)目是按計(jì)劃完成的。32軟件危機(jī)的具體表現(xiàn)(2)軟件開發(fā)成本難以控制投資一再追加,令人難以置信。往往是實(shí)際成本比預(yù)算成本高出一個(gè)數(shù)量級(jí)。案例33例如,20世紀(jì)80年代初,美國(guó)國(guó)內(nèi)稅收服務(wù)處(IRS)讓Sperry公司開發(fā)一套聯(lián)邦稅收表格自動(dòng)處理系統(tǒng)。結(jié)果是:系統(tǒng)被證明不適合當(dāng)前的工作量,花費(fèi)幾乎是預(yù)算的兩倍,必須立即更換(華盛頓郵報(bào)的報(bào)道)。到1985年,還需要再追加9千萬美元來改進(jìn)Sperry公司最初價(jià)值1.03億美元的設(shè)備。另外,因?yàn)槌霈F(xiàn)的問題阻礙了IRS按時(shí)返還納稅者的稅款,IRS還被迫償還4.02億美元的利息以及2.23千萬美元的工資給加班職員。據(jù)研究統(tǒng)計(jì)結(jié)果表明:僅有10%的項(xiàng)目是按費(fèi)用計(jì)劃完成的。34軟件危機(jī)的具體表現(xiàn)(3)產(chǎn)品功能難以滿足用戶需求開發(fā)人員和用戶之間溝通難、溝通不徹底。在雙方互不充分了解的情況下,就"閉門造車"的開發(fā)方式必然導(dǎo)致最終的產(chǎn)品不符合用戶的實(shí)際需要。35軟件危機(jī)的具體表現(xiàn)(4)軟件產(chǎn)品質(zhì)量無法保證軟件是邏輯產(chǎn)品,因而造成質(zhì)量控制困難。軟件產(chǎn)品檢測(cè)錯(cuò)誤困難。案例

36例如,一次美國(guó)在肯尼迪角發(fā)射一枚阿脫拉斯火箭,預(yù)定將用這種火箭運(yùn)載飛往金星的宇宙飛船。火箭飛離地面幾十英里高空開始翻轉(zhuǎn),地面控制中心被迫下令自爆炸毀。后經(jīng)檢查發(fā)現(xiàn)是飛行計(jì)劃程序中漏掉一個(gè)連字符。就是這樣一個(gè)連字符的疏漏造成這枚價(jià)值1850萬美元的火箭實(shí)驗(yàn)失敗。據(jù)統(tǒng)計(jì)數(shù)字表明:在大型系統(tǒng)中,約3/4的系統(tǒng)有問題。37軟件危機(jī)的具體表現(xiàn)(5)軟件產(chǎn)品難以維護(hù)

非開發(fā)者本人,很難及時(shí)檢測(cè)、排除系統(tǒng)故障。在原系統(tǒng)中增加新的功能,產(chǎn)生“波動(dòng)效應(yīng)”,增加系統(tǒng)中的錯(cuò)誤。38軟件危機(jī)的具體表現(xiàn)(6)軟件缺少適當(dāng)?shù)奈臋n資料

軟件的文檔資料是:開發(fā)者和用戶的之間權(quán)利和義務(wù)的合同書。系統(tǒng)管理者、總體設(shè)計(jì)者向開發(fā)人員下達(dá)的任務(wù)書。系統(tǒng)維護(hù)人員的技術(shù)指導(dǎo)手冊(cè)。用戶的操作說明書。

39軟件危機(jī)的具體表現(xiàn)(7)軟件開發(fā)供不應(yīng)求

1960~1980年期間,計(jì)算機(jī)硬件的生產(chǎn)由于采用計(jì)算機(jī)輔助設(shè)計(jì)、自動(dòng)生產(chǎn)線等先進(jìn)工具,使硬件生產(chǎn)率提高了100萬倍,而軟件生產(chǎn)率只提高了2倍,相差十分懸殊。軟件產(chǎn)品“供不應(yīng)求”的現(xiàn)象致使不能充分利用現(xiàn)代計(jì)算機(jī)硬件提供的巨大潛力。40軟件危機(jī)的根源

危機(jī)根源軟件本身特點(diǎn)邏輯部件規(guī)模龐大:(Windows2000:5000萬行代碼)開發(fā)方法的缺陷忽視需求分析軟件開發(fā)=程序編寫輕視軟件維護(hù)41消除軟件危機(jī)的途徑解決途徑組織管理工程項(xiàng)目管理方法技術(shù)措施軟件開發(fā)技術(shù)與方法軟件工具42軟件工程軟件工程的定義B.W.Boehm軟件工程的7條基本原理軟件工程方法學(xué)43蓋房子與構(gòu)建系統(tǒng)房子建造過程:確定和分析需求提出并文檔化房子的總體設(shè)計(jì)提出房子的詳細(xì)規(guī)格說明識(shí)別并設(shè)計(jì)房子的組成部分構(gòu)建房子的每一個(gè)組成部分測(cè)試房子的每一個(gè)組成部分把房子的各個(gè)組成部分集成在一起,在住戶搬進(jìn)來之前做最后的修改。由房子的住戶持續(xù)進(jìn)行維護(hù)。44蓋房子與構(gòu)建系統(tǒng)構(gòu)建一個(gè)系統(tǒng):需求分析和定義系統(tǒng)設(shè)計(jì)程序設(shè)計(jì)編寫程序(程序?qū)崿F(xiàn))單元測(cè)試集成測(cè)試系統(tǒng)測(cè)試系統(tǒng)交付維護(hù)45軟件工程的定義軟件工程專家Boehm:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料。強(qiáng)調(diào)的是程序和文檔。IEEE1983:軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法。強(qiáng)調(diào)的是系統(tǒng)方法而不是一種個(gè)人的“技藝”。46軟件工程的定義FritzBauer:軟件工程是為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上有效地運(yùn)行的軟件,而建立和使用的完善的工程化原則。強(qiáng)調(diào)的是經(jīng)濟(jì)性和工程化原則。IEEE1993:軟件工程是:

1.把系統(tǒng)化的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)的過程,也就是把工程化應(yīng)用于軟件中;

2.研究1中提到的途徑。47軟件工程的定義《計(jì)算機(jī)科學(xué)技術(shù)百科全書》中的定義:軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本。計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法;工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型(paradigm)、評(píng)估成本及確定權(quán)衡;管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。48軟件工程的交叉學(xué)科計(jì)算機(jī)科學(xué)和數(shù)學(xué)計(jì)算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造模型與算法工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評(píng)估成本及確定權(quán)衡管理科學(xué)管理科學(xué)用于計(jì)劃、資源、質(zhì)量和成本的管理49B.W.Boehm軟件工程的7條基本原理著名軟件工程專家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小準(zhǔn)則集合。50B.W.Boehm軟件工程的7條基本原理1.用分階段的生命周期計(jì)劃嚴(yán)格管理據(jù)統(tǒng)計(jì)發(fā)現(xiàn):不成功軟件項(xiàng)目中半數(shù)是因計(jì)劃不周造成的。在軟件的整個(gè)生命周期中應(yīng)該制定并嚴(yán)格執(zhí)行六類計(jì)劃:項(xiàng)目概要、項(xiàng)目進(jìn)度表、項(xiàng)目控制、產(chǎn)品控制、驗(yàn)證及運(yùn)行維護(hù)計(jì)劃。51B.W.Boehm軟件工程的7條基本原理2.堅(jiān)持進(jìn)行階段評(píng)審大部分錯(cuò)誤是在編碼之前造成的。根據(jù)Boehm統(tǒng)計(jì),設(shè)計(jì)錯(cuò)誤占63%,編碼錯(cuò)誤占37%。錯(cuò)誤發(fā)現(xiàn)與改正得越晚,所付出的代價(jià)也越高。52B.W.Boehm軟件工程的7條基本原理3.實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過程中不應(yīng)隨意改變需求。一切有關(guān)修改軟件的建議都必須按照嚴(yán)格的規(guī)程進(jìn)行評(píng)審,獲準(zhǔn)后才能實(shí)施修改。53小笑話—軟件需求的改動(dòng)是必然MarshallP.Cline,GregA.Lomow,C++FAQs,Addison-Wesley,1995記載:

沒有一個(gè)軟件的需求改動(dòng)少于三次。唯一只改動(dòng)需求兩次的客戶是個(gè)死人。這個(gè)可憐的家伙還是在運(yùn)送第三次需求的路上被車子撞死的。54B.W.Boehm軟件工程的7條基本原理4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)以前的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),如今的面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)都被實(shí)踐證明是各個(gè)不同歷史階段的優(yōu)秀程序設(shè)計(jì)技術(shù)和方法。采用先進(jìn)的技術(shù)既可以提高軟件開發(fā)的效率,又可以提高軟件維護(hù)的效率。55B.W.Boehm軟件工程的7條基本原理5.結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,軟件開發(fā)人員的工作進(jìn)展情況可見性差。為了提高開發(fā)過程的可見性,應(yīng)根據(jù)軟件開發(fā)項(xiàng)目中的目標(biāo)完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使得到的結(jié)果能夠清楚的審查。56B.W.Boehm軟件工程的7條基本原理6.開發(fā)小組的人員應(yīng)該少而精素質(zhì)高的人員的開發(fā)效率比素質(zhì)低的人員的開發(fā)效率可能高幾倍至幾十倍,而錯(cuò)誤則明顯得少。人數(shù)N增多,通信路徑為N(N-1)/2條,通信開銷急劇增加,管理難度也增加。57B.W.Boehm軟件工程的7條基本原理7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性要積極主動(dòng)地采納新的軟件技術(shù),要不斷總結(jié)經(jīng)驗(yàn)。B.W.Boehm指出:前六條基本原理,能夠?qū)崿F(xiàn)軟件的工程化生產(chǎn);第七條原理,不僅要積極主動(dòng)地采納新的軟件技術(shù),而且要注意不斷總結(jié)經(jīng)驗(yàn)。58軟件工程方法學(xué)通常把在軟件生命周期全過程中使用的一整套技術(shù)的集合稱為:方法學(xué)(methodology),也稱為:范型(paradigm)。

59Softwareengineeringlayers工具方法過程質(zhì)量焦點(diǎn)軟件工程方法學(xué)包括三個(gè)要素:工具是為軟件工程方法提供自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境;方法回答“如何做”的問題;過程規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。60軟件工程方法學(xué)目前使用得最廣泛的軟件工程方法學(xué),分別是:傳統(tǒng)方法學(xué)面向?qū)ο蠓椒▽W(xué)61傳統(tǒng)方法學(xué)傳統(tǒng)方法學(xué)也稱為:生命周期方法學(xué)、結(jié)構(gòu)化范型。結(jié)構(gòu)化方法的組成:結(jié)構(gòu)化分析方法SA結(jié)構(gòu)化設(shè)計(jì)方法SD結(jié)構(gòu)化程序設(shè)計(jì)方法SP結(jié)構(gòu)化測(cè)試ST該方法的核心是基于功能分解的模塊化層次結(jié)構(gòu)方法。62傳統(tǒng)方法學(xué)的缺點(diǎn)過分強(qiáng)調(diào)了分階段實(shí)施,使得開發(fā)過程各個(gè)階段之間存在嚴(yán)重的順序性和依賴性;很難將一個(gè)復(fù)雜的問題化簡(jiǎn)、分解;設(shè)計(jì)方法存在很大的主觀隨意性;基于功能分解的系統(tǒng)結(jié)構(gòu)難于修改和擴(kuò)充;思維成果的可重用性很差;數(shù)據(jù)和對(duì)數(shù)據(jù)的處理是分離的;63面向?qū)ο蠓椒▽W(xué)面向?qū)ο蠓椒ǖ乃膫€(gè)要點(diǎn):(1)把對(duì)象(Object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。(2)把所有對(duì)象都劃分成類(Class)。(3)按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。(4)對(duì)象彼此之間僅能通過發(fā)送消息互相聯(lián)系。64面向?qū)ο蠓椒▽W(xué)面向?qū)ο蠓椒▽W(xué)的組成:面向?qū)ο蠓治龇椒∣OA面向?qū)ο笤O(shè)計(jì)方法OOD面向?qū)ο缶幊谭椒∣OP面向?qū)ο鬁y(cè)試方法OOT面向?qū)ο蟮能浖S護(hù)65面向?qū)ο蠓治觯∣OA)OOA模型應(yīng)包括:把具有相同屬性和相同服務(wù)的對(duì)象歸結(jié)為類;用一般-特殊結(jié)構(gòu)描述一般類與特殊類之間的關(guān)系(繼承關(guān)系);用整體-部分結(jié)構(gòu)描述實(shí)體間的組成關(guān)系;用實(shí)例連接和消息連接表示實(shí)體之間的靜態(tài)聯(lián)系和動(dòng)態(tài)聯(lián)系。66面向?qū)ο笤O(shè)計(jì)(OOD)OOD包括兩方面的工作: ①把OOA模型直接搬到OOD中來; ②補(bǔ)充一些人機(jī)界面、數(shù)據(jù)存儲(chǔ)、任務(wù)管理等內(nèi)容。從OOA->OOD只需進(jìn)行局部的修改或調(diào)整,并增加幾個(gè)與實(shí)現(xiàn)有關(guān)的獨(dú)立部分即可。自然地實(shí)現(xiàn)無縫銜接,降低了工作量和出錯(cuò)率。67面向?qū)ο缶幊蹋∣OP)在“OOA→OOD→OOP”的設(shè)計(jì)模式中,OOP的分工相對(duì)簡(jiǎn)單多了;OOP的工作就是用一種OO程序設(shè)計(jì)語言把OOD模型中的每個(gè)元素描述出來。68面向?qū)ο鬁y(cè)試(OOT)OOT的主要特點(diǎn)是:測(cè)試以類為基本單位進(jìn)行。測(cè)試針對(duì)類定義范圍內(nèi)的屬性和服務(wù)、以及有限的對(duì)外接口所涉及到的部分。若父類已被測(cè)試或父類是可重用構(gòu)件,則對(duì)子類的測(cè)試重點(diǎn)只是那些新定義的屬性和服務(wù)。69面向?qū)ο蟮能浖S護(hù)OO方法為改進(jìn)軟件維護(hù)提供了有效的途徑。主要表現(xiàn)在:因?yàn)镺O方法在各個(gè)階段表示的一致性,使得實(shí)現(xiàn)的程序與問題域是一致的,便于理解和閱讀,也為糾錯(cuò)和功能擴(kuò)充提供了便利。在OO方法中,由于對(duì)象的封裝性,使一個(gè)對(duì)象的修改對(duì)其它對(duì)象的影響很小,從而可以減少錯(cuò)誤傳播所產(chǎn)生的“波動(dòng)效應(yīng)”,使得用OO方法開發(fā)的軟件易維護(hù)。70OO方法的主要優(yōu)點(diǎn)⑴與人類習(xí)慣的思維方式一致⑵穩(wěn)定性好傳統(tǒng)方法以“過程為中心”O(jiān)O方法以“對(duì)象為中心”⑶可重用性好⑷可維護(hù)性好軟件過程概念軟件生命周期軟件開發(fā)過程定義7172軟件生命周期軟件有一個(gè)孕育、誕生、成長(zhǎng)、成熟、衰亡的生存過程。這個(gè)過程即為軟件的生命周期。軟件生命周期組成:軟件定義軟件開發(fā)軟件維護(hù)73軟件生命周期的工作流程圖

74軟件生命周期(1)軟件定義時(shí)期確定軟件開發(fā)必須完成的任務(wù);論證軟件的可行性;確定用戶需求的詳細(xì)功能和性能。這個(gè)時(shí)期可以劃分為三個(gè)階段:?jiǎn)栴}定義可行性研究需求分析75軟件生命周期(2)軟件開發(fā)時(shí)期設(shè)計(jì)和實(shí)現(xiàn)軟件的定義。軟件開發(fā)時(shí)期包括四個(gè)階段:總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼及單元測(cè)試綜合測(cè)試76軟件生命周期(3)軟件維護(hù)時(shí)期:軟件維護(hù)是對(duì)投入使用的軟件的修改,實(shí)際上是對(duì)軟件的一次重新定義和開發(fā)過程。77軟件生命周期軟件生命周期方法學(xué)把軟件開發(fā)人員分為三個(gè)層次:系統(tǒng)分析員軟件工程師程序員系統(tǒng)分析員在軟件定義時(shí)期起主要作用;軟件工程師和程序員是軟件開發(fā)和維護(hù)時(shí)期的核心力量。78涉及整個(gè)軟件生命周期擴(kuò)展到軟件工作的范圍只考慮編寫程序79軟件生命周期劃分為:1.問題定義問題是什么?2.可行性研究有可行解嗎?3.需求分析必須做什么?4.概要設(shè)計(jì)如何解?5.詳細(xì)設(shè)計(jì)具體如何解?6.編碼與單元測(cè)試編碼+測(cè)試計(jì)劃、方案和結(jié)果7.綜合測(cè)試測(cè)試計(jì)劃、方案和結(jié)果8.軟件維護(hù)持久地滿足用戶需要80軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)1.問題定義“要解決的問題是什么”。

形成工程目標(biāo)和規(guī)模的書面報(bào)告。81軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)2.可行性研究“上一個(gè)階段所確定的問題是否有行得通的解決辦法”。從技術(shù)、經(jīng)濟(jì)和社會(huì)等方面研究并論證軟件系統(tǒng)的可行性。823.需求分析“目標(biāo)系統(tǒng)必須做什么”。編制軟件需求規(guī)格說明書(specification)

。軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)83軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)4.總體設(shè)計(jì)“怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”設(shè)計(jì)程序的體系結(jié)構(gòu);編寫概要設(shè)計(jì)說明書。84軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)5.詳細(xì)設(shè)計(jì)“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)”

詳細(xì)設(shè)計(jì)有時(shí)也稱模塊設(shè)計(jì),包括模塊的算法和數(shù)據(jù)結(jié)構(gòu)。編寫詳細(xì)設(shè)計(jì)說明書85軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)6.編碼和單元測(cè)試編碼: 將詳細(xì)設(shè)計(jì)轉(zhuǎn)化為程序代碼,提供源程序清單

。單元測(cè)試: 對(duì)模塊程序進(jìn)行測(cè)試,驗(yàn)證模塊功能及接口與詳細(xì)設(shè)計(jì)文檔的一致性。867.綜合測(cè)試集成測(cè)試將單元測(cè)試的模塊裝配進(jìn)行集成測(cè)試。驗(yàn)收測(cè)試由用戶對(duì)目標(biāo)系統(tǒng)按照規(guī)格說明書進(jìn)行驗(yàn)收。軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)87軟件生命周期各個(gè)階段應(yīng)該完成的基本任務(wù)8.軟件維護(hù)通過各種必要的維護(hù)活動(dòng)使系統(tǒng)持久地滿足用戶的需要。通常有四類維護(hù)活動(dòng):改正性維護(hù):診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯(cuò)誤;適應(yīng)性維護(hù):修改軟件以適應(yīng)環(huán)境的變化。完善性維護(hù):根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件使它更完善;預(yù)防性維護(hù):修改軟件為將來的維護(hù)活動(dòng)預(yù)先做準(zhǔn)備。

88軟件生存周期(LifeCycle)問題定義問題是什么?關(guān)于規(guī)模和目標(biāo)的報(bào)告書可行性研究有可行解嗎?高層邏輯模型:系統(tǒng)流程圖+DFD+數(shù)據(jù)字典+成本/效益分析需求分析必須做什么?邏輯模型:DFD+數(shù)據(jù)字典+簡(jiǎn)要的算法描述概要設(shè)計(jì)如何解層次圖詳細(xì)設(shè)計(jì)具體如何解數(shù)據(jù)結(jié)構(gòu)和算法盒圖編碼與單元測(cè)試正確的程序模塊Code+測(cè)試計(jì)劃、方案和結(jié)果綜合測(cè)試符合要求的軟件測(cè)試計(jì)劃、方案和結(jié)果軟件維護(hù)持久地滿足用戶需要完整準(zhǔn)確的維護(hù)記錄適用于大型復(fù)雜項(xiàng)目軟件開發(fā)過程軟件開發(fā)過程:軟件工程人員為了獲得軟件產(chǎn)品,在軟件工具支持下實(shí)施的一系列軟件工程活動(dòng)。軟件開發(fā)過程應(yīng)該明確定義以下元素:

(1)過程中所執(zhí)行的活動(dòng)及其順序關(guān)系。

(2)每一個(gè)活動(dòng)的內(nèi)容和步驟。

(3)團(tuán)隊(duì)人員的工作和職責(zé)。軟件開發(fā)過程一共包括七個(gè)過程,即獲取過程、供應(yīng)過程、開發(fā)過程、操作過程、維護(hù)過程、管理過程、支持過程。90也稱為軟件生命周期模型。用軟件生命周期模型來描述軟件過程。軟件生命周期模型:瀑布模型快速原型模型演化軟件過程模型:增量模型、螺旋模型、基于構(gòu)件的開發(fā)模型噴泉模型形式化方法模型Rational統(tǒng)一過程敏捷過程與極限編程軟件過程模型91瀑布模型(WaterfallModel)瀑布模型(WaterfallModel) 線性順序模型(TheLinearSequentialModel)92瀑布模型瀑布模型93瀑布模型的特點(diǎn)(1)階段間具有順序性和依賴性。(2)文檔驅(qū)動(dòng)性 要求每個(gè)階段必須完成規(guī)定的文檔并通過評(píng)審。(3)推遲實(shí)現(xiàn)的觀點(diǎn) 清楚地區(qū)分邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn)。(4)質(zhì)量保證的觀點(diǎn) 每個(gè)階段都必須完成規(guī)定的文檔并進(jìn)行評(píng)審。94瀑布模型的缺點(diǎn)瀑布模型的缺點(diǎn)是:(1)該模型缺乏靈活性。凡后一階段出現(xiàn)的問題需要通過前一階段的重新確認(rèn)來解決,由此要付出高昂的代價(jià)。(2)瀑布模型幾乎完全依賴于書面的規(guī)格說明,很可能導(dǎo)致最終開發(fā)出來的軟件產(chǎn)品不能真正滿足用戶的需要。(3)軟件開發(fā)初期就要給出軟件系統(tǒng)的全部需求,開發(fā)周期長(zhǎng),承擔(dān)的風(fēng)險(xiǎn)比較大。95快速原型模型快速原型模型,也稱原型模型。快速原型模型96快速原型模型的處理過程97快速原型的特點(diǎn):(1)原型驅(qū)動(dòng)性(2)過程的交互性和迭代性98快速原型模型的優(yōu)點(diǎn)(1)原型模型法可以得到良好的需求定義,開發(fā)者和用戶得到充分的協(xié)作。(2)原型模型系統(tǒng)有利于用戶培訓(xùn)和開發(fā)同步。(3)原型模型給用戶更改最初設(shè)想的機(jī)會(huì),使最終產(chǎn)品更為合理。(4)原型模型可以低風(fēng)險(xiǎn)開發(fā)變化較大的計(jì)算機(jī)系統(tǒng)。(5)原型模型使系統(tǒng)更易維護(hù)、對(duì)用戶更友好。(6)原型模型使總的開發(fā)費(fèi)用降低,開發(fā)時(shí)間縮短。99快速原型模型的缺點(diǎn)原型是“用口香糖和打包繩”拼湊起來的;并沒有考慮軟件的總體質(zhì)量和長(zhǎng)期的可維護(hù)性。建立原型僅是為了定義需求,之后就該拋棄。100快速原型模型適合采用原型模型的條件:(1)首先得有快速建立系統(tǒng)原型模型的軟件工具與環(huán)境。(2)原型模型適合于那些不能預(yù)先確切定義需求的軟件開發(fā)。(3)原型模型適合于那些項(xiàng)目組成員(包括分析員、設(shè)計(jì)員、程序員和用戶等)不能很好協(xié)同配合、交流或通信上存在困難的情況。

101演化軟件過程模型增量模型螺旋模型基于構(gòu)件的開發(fā)模型102增量模型(IncrementalModel)基本思想:開發(fā)時(shí)分批逐步向用戶提交產(chǎn)品,每次提交一個(gè)滿足用戶需求子集的增量構(gòu)件,直到最后一次得到滿足用戶全部需求的完整產(chǎn)品為止。103增量模型104增量模型第一個(gè)增量往往是核心的產(chǎn)品,即實(shí)現(xiàn)了基本的需求。例如,系統(tǒng)的一個(gè)重要部分需要使用正在開發(fā)的且發(fā)布時(shí)間尚未確定的新硬件,有可能計(jì)劃在早期的增量中避免使用該硬件,這樣,就可以先發(fā)布部分功能給用戶,以免過分地延遲系統(tǒng)的問世時(shí)間。105增量模型的優(yōu)點(diǎn)(1)能在較短時(shí)間內(nèi)向用戶提交可完成一些有用的工作的產(chǎn)品。(2)逐步增加產(chǎn)品功能使用戶有時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品。106增量模型的困難(1)必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)得便于按這種方式進(jìn)行擴(kuò)充。(2)增量模型本身自相矛盾一方面要求開發(fā)人員把軟件看作一個(gè)整體;另一方面又要求開發(fā)人員把軟件看作構(gòu)件序列。107螺旋模型(SpiralModel)螺旋模型的六個(gè)步驟:(1)用戶通信:建立開發(fā)人員和用戶之間的有效通信。(2)計(jì)劃:定義資源、進(jìn)度及其他相關(guān)項(xiàng)目信息。(3)風(fēng)險(xiǎn)分析:評(píng)估技術(shù)及管理的風(fēng)險(xiǎn)。(4)工程:建立應(yīng)用的一個(gè)或多個(gè)表示。(5)建立及發(fā)布:建立、測(cè)試、安裝和提供用戶支持(如文檔及培訓(xùn))。(6)用戶評(píng)估:基于在工程階段產(chǎn)生或在安裝階段實(shí)現(xiàn)的軟件表示的評(píng)估,獲得用戶反饋。一個(gè)典型的螺旋模型

108

螺旋模型(SpiralModel)109螺旋模型(SpiralModel)螺旋模型的每個(gè)周期都包含4個(gè)主要活動(dòng):制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)限制條件。風(fēng)險(xiǎn)分析:分析可選方案,分析識(shí)別風(fēng)險(xiǎn),研究解決化解風(fēng)險(xiǎn)的辦法。實(shí)現(xiàn)工程:實(shí)施軟件產(chǎn)品的開發(fā)。用戶評(píng)價(jià):對(duì)當(dāng)前工作結(jié)果進(jìn)行評(píng)價(jià),提出改進(jìn)產(chǎn)品的建議。螺旋模型適用于開發(fā)的大規(guī)模軟件項(xiàng)目。110螺旋模型的缺點(diǎn)螺旋模型的缺點(diǎn)是:很難正確評(píng)估軟件開發(fā)風(fēng)險(xiǎn)。需要有一個(gè)非常有經(jīng)驗(yàn)的小組來準(zhǔn)確地分析和檢測(cè)風(fēng)險(xiǎn)。不適合新手該模型本身相對(duì)比較新,不像瀑布模型那樣被廣泛應(yīng)用?;跇?gòu)件的開發(fā)模型基于構(gòu)件的軟件工程(component-basedsoftwareengineering,CBSE)是強(qiáng)調(diào)使用可復(fù)用的軟件“構(gòu)件”來設(shè)計(jì)和構(gòu)造基于計(jì)算機(jī)的系統(tǒng)的過程?;跇?gòu)件的開發(fā)模型Clements對(duì)CBSE給出了如下描述。

CBSE正在改變大型軟件系統(tǒng)的開發(fā)方式。CBSE體現(xiàn)了FrodBrooks和其他人支持的“購(gòu)買,而非構(gòu)造”的思想。就如同早期的子程序?qū)⒊绦騿T從考慮編程細(xì)節(jié)中解脫出來一樣,CBSE將考慮的重點(diǎn)從編碼轉(zhuǎn)移到組裝軟件系統(tǒng)。考慮的焦點(diǎn)是“集成”,而不再是“實(shí)現(xiàn)”。這樣做的基礎(chǔ)是假定在很多大型軟件系統(tǒng)中存在足夠多的共性,使得開發(fā)可復(fù)用的構(gòu)件來滿足這些共性是可行的?;跇?gòu)件的開發(fā)模型當(dāng)軟件團(tuán)隊(duì)使用傳統(tǒng)的需求獲取技術(shù)確定了待開發(fā)軟件的系統(tǒng)需求時(shí),該過程開始。體系結(jié)構(gòu)設(shè)計(jì)完成后,并不立即進(jìn)行詳細(xì)設(shè)計(jì)任務(wù),而是針對(duì)每一系統(tǒng)需求考慮以下問題:(1)現(xiàn)有的商品化構(gòu)件(commercialoff-the-shelf,COTS)是否能夠?qū)崿F(xiàn)該需求?(2)內(nèi)部開發(fā)的可復(fù)用構(gòu)件是否能夠?qū)崿F(xiàn)該需求?(3)可用構(gòu)件的接口與待構(gòu)造系統(tǒng)的體系結(jié)構(gòu)是否相容?基于構(gòu)件的開發(fā)模型基于構(gòu)件的開發(fā)模型如下圖。

基于構(gòu)件的開發(fā)模型開發(fā)步驟

不考慮構(gòu)件的開發(fā)技術(shù),基于構(gòu)件的開發(fā)模型由以下步驟組成:(1)對(duì)于該問題領(lǐng)域的基于構(gòu)件的可用產(chǎn)品進(jìn)行研究和評(píng)估。(2)考慮構(gòu)件集成的問題。(3)設(shè)計(jì)軟件架構(gòu)以容納這些構(gòu)件。(4)將構(gòu)件集成到架構(gòu)中。(5)進(jìn)行充分的測(cè)試以保證功能正常?;跇?gòu)件的開發(fā)模型典型的構(gòu)件模型(1)OMG/CORBA。對(duì)象管理組織發(fā)布了公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(OMG/CORBA),一個(gè)對(duì)象請(qǐng)求代理提供了多種服務(wù),使得可復(fù)用構(gòu)件(對(duì)象)可以與其他構(gòu)件通信。(2)MicrosoftCOM/DCOM/.NET。微軟公司開發(fā)了構(gòu)件對(duì)象模型(COM),此模型提供了構(gòu)件的規(guī)格說明,在Windows操作系統(tǒng),一個(gè)應(yīng)用系統(tǒng)中可以使用不同廠商生產(chǎn)的構(gòu)件。(3)SunJavaBean構(gòu)件。JavaBean構(gòu)件系統(tǒng)是一個(gè)可移植的、平臺(tái)獨(dú)立的、使用Java程序設(shè)計(jì)語言開發(fā)的CBSE基礎(chǔ)設(shè)施。117噴泉模型(WaterFountainModel)基本思想:噴泉模型是典型的面向?qū)ο笊芷谀P汀!皣娙泵枋隽嗣嫦驅(qū)ο筌浖_發(fā)過程的迭代和無縫特性。118噴泉模型噴泉模型的特點(diǎn):(1)模型規(guī)定軟件開發(fā)過程有5個(gè)階段,即分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試與集成。(2)模型從高層返回低層無資源消耗,反映了軟件過程迭代的自然特性。(3)以分析為基礎(chǔ),資源消耗呈塔型,在分析階段消耗的資源最多。(4)各階段相互重疊反映了軟件過程并行性。119噴泉模型(5)模型強(qiáng)調(diào)增量開發(fā),整個(gè)過程是一個(gè)迭代的逐步提煉的過程。(6)模型是對(duì)象驅(qū)動(dòng)的過程,對(duì)象是所有活動(dòng)作用的主體和項(xiàng)目管理的基本內(nèi)容。(7)由于噴泉模型在各個(gè)開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項(xiàng)目的管理。120形式化方法模型形式化方法使得軟件開發(fā)人員能夠通過采用一個(gè)嚴(yán)格的、數(shù)學(xué)的表示體系來說明、開發(fā)和驗(yàn)證基于計(jì)算機(jī)的系統(tǒng)。顧慮:形式化模型的開發(fā)目前還很費(fèi)時(shí)和昂貴;因?yàn)楹苌儆熊浖_發(fā)人員具有使用形式化方法所需的背景知識(shí);難以使用該模型作為與對(duì)其一無所知的用戶進(jìn)行通信的機(jī)制。適用范圍:對(duì)安全性請(qǐng)求很高的關(guān)鍵軟件如果發(fā)生軟件錯(cuò)誤會(huì)遭受嚴(yán)重的經(jīng)濟(jì)損失的軟件121課堂習(xí)題1.假設(shè)你要開發(fā)一個(gè)軟件,它的功能是把73624.9385這個(gè)數(shù)開平方,所得到的結(jié)果應(yīng)該精確到小數(shù)點(diǎn)后4位。一旦實(shí)現(xiàn)并測(cè)試完之后,該產(chǎn)品將被拋棄。你打算選用哪種軟件生命周期模型?122課堂習(xí)題講解1.答:對(duì)這個(gè)軟件的需求很明確,實(shí)現(xiàn)開平方功能的算法也很成熟,因此,既無須通過原型來分析需求也無須用原型來驗(yàn)證設(shè)計(jì)方案。此外,一旦實(shí)現(xiàn)并測(cè)試完成之后,該產(chǎn)品被拋棄,因此也無須使用有助于提高軟件可維護(hù)性的增量模型或螺旋模型來開發(fā)該軟件。綜上所述,為了開發(fā)這個(gè)簡(jiǎn)單的軟件,使用大多數(shù)人所熟悉的瀑布模型就可以了。123課堂習(xí)題2.假設(shè)你被任命為一家軟件公司的項(xiàng)目負(fù)責(zé)人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場(chǎng)競(jìng)爭(zhēng)激烈,公司規(guī)定了嚴(yán)格的完成期限并且已對(duì)外公布。你打算采用哪種軟件生命周期模型?為什么?124課堂習(xí)題講解2.對(duì)這個(gè)項(xiàng)目的一個(gè)重要要求是,嚴(yán)格按照已對(duì)外公布了的日期完成產(chǎn)品開發(fā)工作,因此,選擇生命周期模型時(shí)應(yīng)著重考慮哪種模型有助于加快產(chǎn)品開發(fā)的進(jìn)度。使用增量模型開發(fā)軟件時(shí)可以并行完成開發(fā)工作,因此能夠加快開發(fā)進(jìn)度。這個(gè)項(xiàng)目是開發(fā)該公司已被廣泛應(yīng)用的字處理軟件的新版本,從上述事實(shí)至少可以得出3點(diǎn)結(jié)論:第一,舊版本相當(dāng)于一個(gè)原型,通過收集用戶對(duì)舊版本的反映,較容易確定對(duì)新版本的需求,沒必要再專門建立一個(gè)原型系統(tǒng)來分析用戶的需求;第二,該公司的軟件工程師對(duì)字處理軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗(yàn),具有采用增量模型開發(fā)新版字處理軟件所需要的水平;第三,該軟件受到廣大用戶的喜愛,今后很可能還要開發(fā)更新的版本,因此,應(yīng)該把該軟件的體系結(jié)構(gòu)設(shè)計(jì)成開放式的,以利于今后的改進(jìn)和擴(kuò)充。綜上所述,采用增量模型來完成這個(gè)項(xiàng)目比較恰當(dāng)。125Rational統(tǒng)一過程

RationalUnifiedProcess(RUP)RUP(RationalUnifiedProcess,Rational統(tǒng)一過程)是由面向?qū)ο箢I(lǐng)域三位專家Booch、Rumbaugh和Jacobson提出的一種完整的軟件過程。RUP是一個(gè)通用的軟件過程框架,通過裁剪和擴(kuò)充,它可適用于各種不同類型的軟件系統(tǒng)、各種不同的應(yīng)用領(lǐng)域、各種不同的組織和各種不同的項(xiàng)目規(guī)模。126RUP&UML由面向?qū)ο蠓椒▽W(xué)做出過突出貢獻(xiàn)的三位專家Booch、Rumbaugh和Jacobson合作研究設(shè)計(jì)出統(tǒng)一建模語言UML(UnifiedModelingLanguage),已成為業(yè)界統(tǒng)一的建模語言標(biāo)準(zhǔn)。它是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適應(yīng)的建模語言。UML是一種建模語言,獨(dú)立于任何的開發(fā)過程,這時(shí)需要一個(gè)開發(fā)過程和方法作為指導(dǎo)。UML和RUP的結(jié)合已成為被業(yè)界公認(rèn)的高效的規(guī)范化軟件開發(fā)組合。

127RUPRUP重復(fù)一系列周期,每個(gè)周期由一個(gè)交付給用戶的產(chǎn)品結(jié)束。每個(gè)周期劃分為4個(gè)階段。每個(gè)階段圍繞著9個(gè)核心工作流。RUP軟件開發(fā)生命周期RUP在統(tǒng)一過程中,有6個(gè)核心工作流。

①業(yè)務(wù)建模工作流。用商業(yè)用例為商業(yè)過程建立文檔。②需求工作流。目標(biāo)是描述系統(tǒng)應(yīng)該做什么,確保開發(fā)人員構(gòu)建正確的系統(tǒng)。為此,需明確系統(tǒng)的功能需求和非功能需求(約束)。③分析和設(shè)計(jì)工作流。其目標(biāo)是說明如何做。結(jié)果是分析模型和設(shè)計(jì)模型。RUP④實(shí)現(xiàn)工作流。用分層的方式組織代碼的結(jié)構(gòu),用構(gòu)件的形式來實(shí)現(xiàn)類,對(duì)構(gòu)件進(jìn)行單元測(cè)試,將構(gòu)件集成到可執(zhí)行的系統(tǒng)中。⑤測(cè)試工作流。驗(yàn)證對(duì)象之間的交互、是否所有的構(gòu)件都集成了、是否正確實(shí)現(xiàn)了所有需求、查錯(cuò)并改正。⑥部署工作流。制作軟件的外部版本、軟件打包、分發(fā)、為用戶提供幫助和支持。RUP統(tǒng)一過程有4個(gè)階段,分別是初始階段、細(xì)化階段、構(gòu)造階段和移交階段。①初始階段。初始階段主要關(guān)注項(xiàng)目計(jì)劃和風(fēng)險(xiǎn)評(píng)估,其目的是確定是否值得開發(fā)目標(biāo)信息系統(tǒng)。②細(xì)化階段。細(xì)化階段關(guān)心定義系統(tǒng)的總體框架,其目標(biāo)是:細(xì)化初始需求(用況)、細(xì)化體系結(jié)構(gòu)、監(jiān)控風(fēng)險(xiǎn)并細(xì)化它們的優(yōu)先級(jí)、細(xì)化業(yè)務(wù)案例以及制訂項(xiàng)目管理計(jì)劃。RUP③構(gòu)造階段。構(gòu)造階段是建立系統(tǒng),構(gòu)造信息系統(tǒng)的第1個(gè)具有操作質(zhì)量的版本,以能夠交付給客戶進(jìn)行測(cè)試的版本結(jié)束,有時(shí)稱為測(cè)試版本。④移交階段。移交階段包含測(cè)試時(shí)期,以發(fā)布完整的系統(tǒng)而終止,其目標(biāo)是確保信息系統(tǒng)真正滿足客戶的需求。RUP&UML相關(guān)資料[1]陸永忠,饒璟祥.小型軟件項(xiàng)目RUP裁剪模型的研究[J].計(jì)算機(jī)工程與設(shè)計(jì).2007,28(13):3027-3030,3055.[2]王建,馮偉森,李旭偉.基于UML和RUP的中小項(xiàng)目的設(shè)計(jì)和實(shí)現(xiàn)[J].四川大學(xué)學(xué)報(bào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論