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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1軟件工程

SoftwareEngineering

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

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

系統(tǒng)分析員/系統(tǒng)設計員工程化訓練規(guī)范、準則、項目管理3課程內容軟件工程導論:包括軟件與軟件工程的概念、傳統(tǒng)的開發(fā)方法、面向對象的開發(fā)方法、實現(xiàn)與測試、質量與質量保證、軟件計劃與管理、軟件開發(fā)工具與環(huán)境等內容。軟件建模技術:面向對象的軟件建模與構造的基本概念、原理和方法。軟件項目組織與管理:軟件項目管理領域中所含的計劃方法、活動排序與跟蹤、質量保證、配置管理、風險防御、質量度量方法、軟件人員的管理方法等內容。4課程內容第1章軟件工程概述第2章軟件開發(fā)方法簡介第3-5章

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

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

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

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

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

開展了有關軟件生產技術、軟件復用技術、軟件生產管理的研究和實踐;提出具有廣泛應用前景的面向對象方法和相關的語言(Smalltalk、C++);近年來,軟件工程的研究從過程轉向產品更加注重程序的開發(fā)范型和軟件生產。高智能、自動化CASE成為軟件工程技術研究的熱點

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

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

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

如今,計算機硬件產品已系列化、自動化、標準化,"即插即用"。

生產效率幾百萬倍的提高。生產能力過剩。

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

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

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

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

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

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

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

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

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

由此產生"軟件危機"。

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

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

為了研究、解決軟件危機,誕生了一門新興學科--軟件工程學。把軟件作為工程對象,從技術措施和組織管理兩個方面來研究、解決軟件危機。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

。軟件生命周期各個階段應該完成的基本任務83軟件生命周期各個階段應該完成的基本任務4.總體設計“怎樣實現(xiàn)目標系統(tǒng)?”設計程序的體系結構;編寫概要設計說明書。84軟件生命周期各個階段應該完成的基本任務5.詳細設計“應該怎樣具體地實現(xiàn)這個系統(tǒng)”

詳細設計有時也稱模塊設計,包括模塊的算法和數(shù)據結構。編寫詳細設計說明書85軟件生命周期各個階段應該完成的基本任務6.編碼和單元測試編碼: 將詳細設計轉化為程序代碼,提供源程序清單

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

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

(1)過程中所執(zhí)行的活動及其順序關系。

(2)每一個活動的內容和步驟。

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

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

108

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

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

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

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

RationalUnifiedProcess(RUP)RUP(RationalUnifiedProcess,Rational統(tǒng)一過程)是由面向對象領域三位專家Booch、Rumbaugh和Jacobson提出的一種完整的軟件過程。RUP是一個通用的軟件過程框架,通過裁剪和擴充,它可適用于各種不同類型的軟件系統(tǒng)、各種不同的應用領域、各種不同的組織和各種不同的項目規(guī)模。126RUP&UML由面向對象方法學做出過突出貢獻的三位專家Booch、Rumbaugh和Jacobson合作研究設計出統(tǒng)一建模語言UML(UnifiedModelingLanguage),已成為業(yè)界統(tǒng)一的建模語言標準。它是一種定義良好、易于表達、功能強大且普遍適應的建模語言。UML是一種建模語言,獨立于任何的開發(fā)過程,這時需要一個開發(fā)過程和方法作為指導。UML和RUP的結合已成為被業(yè)界公認的高效的規(guī)范化軟件開發(fā)組合。

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

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

溫馨提示

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

評論

0/150

提交評論