




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程主講:林芳Qq:1329155520課件:/cmRBEA6CPdMuy訪問密碼d614第一章軟件工程概述本章主要內容:軟件危機軟件工程軟件生命周期軟件過程本章重點:軟件工程軟件生命周期軟件生命周期模型1.1軟件危機1.1.1軟件工程發(fā)展史1.1.2軟件危機1.1.1軟件工程發(fā)展史19世紀初在法國人約瑟夫雅各JosephMarieJaquard設計的織布機里已經具有了初步的程序設計的思想英國著名詩人拜倫Byron的女兒、數學家愛達奧古斯塔拉夫拉斯伯爵夫人AdaAugustaLovelace,在幫助巴貝奇研究分析機時指出分析機可以像織布機一樣進行編程,并發(fā)現進行程序設計和編程的基本要素,被認為是有史以來的第一位程序員。而著名的計算機語言Ada就是以她的名字命名的。在計算機的發(fā)展史上,二值邏輯和布爾代數的使用,是一個重要的突破。其理論基礎是由英國數學家布爾奠定的。早期利用計算機器解決問題的一般過程是針對特定的問題制造解決該問題的機器設計所需的指令并把完成該指令的代碼序列傳送到卡片或機械輔助部件上使計算機器運轉執(zhí)行預定的操作程序設計的形式有不同程度的改變,但革命性的變革則是1948年,香農重新發(fā)現了二值演算之后,發(fā)生的二值邏輯代數,被引入程序設計過程。程序的表現形式就是存儲在不同信息載體上的0和1的序列。1.1.1軟件工程發(fā)展史從1946年第一臺計算機產生,軟件工程發(fā)展分為4個階段程序設計階段(20世紀40年代中期-60年代中期)“軟件=程序+文檔”階段(20世紀60年代中期-70年代中期)軟件工程階段:20世紀70年代中期-20世紀90年代第4代技術階段程序設計階段(20世紀40年代中期-60年代中期)
主要致力于硬件的設計和生產。計算機程序是作為解決特定問題的工具和信息分析工具而存在的,并不是一個獨立的產業(yè),軟件基本不受重視。軟件=程序。“軟件=程序+文檔”階段(20世紀60年代中期-70年代中期)20世紀60年代中期-60年代末期20世紀60年代末期-70年代中期20世紀60年代中期-60年代末期軟件需求量增大,軟件作為獨立產品;1968年MartinGoetz獲得了世界上第一個軟件專利。1969年春ADR公司就IBM壟斷軟件產業(yè)提出了訴訟,促使IBM在1969年6月30日宣布結束一些軟件和硬件的捆綁銷售,為軟件產品單獨定價。20世紀60年代中期-60年代末期軟件規(guī)模與復雜性大大增加這個階段軟件技術的發(fā)展為解決這個問題奠定了基礎。軟件的技術也在不斷發(fā)展:引入了多道程序技術、多用戶系統(tǒng)、人機交互概念、數據庫管理系統(tǒng);有了操作系統(tǒng)和編譯技術;不再直接用機器碼編程,而使用各種符號語言來編程,如高級語言BASIC、FORTRAN、ALGOL、COBOL等。20世紀60年代中期-60年代末期開發(fā)方式仍沿用個體化方式,出現了“軟件危機”二十世紀六十年代IBM公司開發(fā)了System/360系列機器。盡管這些機器在性能上有明顯的差異,但是他們有統(tǒng)一的操作系統(tǒng)——OS/360,讓單一OS適用于整個系列的產品是System/360成功的關鍵。OS/360的成功陸續(xù)地催化出MFT、MVT、SVS、MVS、MVS/XA、MVS/ESA、OS/390和z/OS等大型機的操作系統(tǒng)。OS/360問題開發(fā)難度大,IBM在1963-1966年開發(fā)OS/360,IBM為這個計劃總共投入50億美元的研發(fā)費用,花5000人-年工作量,最多同時有1000人投入開發(fā)工作,源程序近100萬行。質量差,維護困難:每次發(fā)行新版本都要更正前一個版本1000個程序錯誤。
《人月神話》焦油坑這個系統(tǒng)在開發(fā)和維護過程中存在很多問題,在開發(fā)OS/360過程中遇到的問題在FredBrooks寫的軟件工程經典之作《人月神話》中詳細地敘述了。史前史中,沒有別的場景比巨獸在焦油坑中垂死掙扎的場面更令人震撼。上帝見證著恐龍、猛犸象、劍齒虎在焦油中掙扎。它們掙扎得越是猛烈,焦油糾纏得越緊,沒有任何猛獸足夠強壯或具有足夠的技巧,能夠掙脫束縛,它們最后都沉到了坑底。
1963年美國飛往火星的火箭爆炸,造成1000萬美元的損失。原因是FORTRAN程序:
DO5I=1,3
誤寫為:DO5I=1.
3
1967年蘇聯“聯盟一號”載人宇宙飛船在返航時,由于軟件忽略一個小數點,在進入大氣層時因打不開降落傘而燒毀。20世紀60年代末期-70年代中期
產生了結構化程序設計理論。從程序中分離出數據結構與算法。形成了完整的軟件系統(tǒng)。發(fā)展了各種程序設計語言。提出并使用“軟件工程”這個術語。“軟件工程”這個詞是由NATO(NorthAtlanticTreatyOrganization北大西洋公約組織屬下的一個研究組在1967年提出的,這個研究組提議召開一次會議,專門討論“軟件所面臨的問題”。1968年,由NATO科學委員會主辦的這次會議在德國加米施(Garmish)召開,會議提交的報告就被命名為《軟件工程》。1968年NATO提出軟件工程的概念,倡導以工程的原理、原則和方法進行軟件開發(fā),以期解決當時出現的"軟件危機"。3、軟件工程時代(20世紀70年代中期~今)計算機滲透到人類活動各個領域。軟件的生產方式是工程化的生產,軟件工程標準規(guī)范還不完善軟件開發(fā)技術有很大進步,軟件生產率大大提高,但未能獲得突破性進展軟件產品供不應求,軟件維護要耗費大量的成本,軟件危機日益嚴重,沒有完全擺脫軟件危機4、第4代技術階段現在的軟件已經不再是單機系統(tǒng),計算機體系結構從主機結構轉向C/S環(huán)境、B/S環(huán)境。開發(fā)技術有了新的發(fā)展:計算機輔助軟件工程CASE將工具和代碼生成器結合起來,為許多軟件系統(tǒng)提供了可靠的解決方案;面向對象技術已在許多領域迅速取代了傳統(tǒng)的軟件開發(fā)方法;專家系統(tǒng)和人工智能軟件有了實際應用;人工神經網絡軟件展示了信息處理的美好前景;并行計算、網絡計算機、虛擬現實技術、多媒體技術和現代通信技術使人們開始采用和原來完全不同的方法進行工作。此外,光計算機、化學計算機、生物計算機和量子計算機等新一代計算機也在研制之中,這將使軟件工程帶來一場新的革命。1.1.2軟件危機(1)軟件危機定義軟件危機定義:軟件開發(fā)和維護過程中遇到的一系列嚴重問題。軟件危機包含兩方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有軟件。1.1.2軟件危機(2)軟件危機表現1)
軟件成本高
做個算術題:美國一家公司在1982年計劃用FORTRAN語言開發(fā)一個在VAX750計算機上運行的應用程序,估計這個程序的長度為10000條FORTRAN指令。如果平均每人每天可以開發(fā)出10條(注意:開發(fā)工作量包括問題定義、需求分析、總體設計、詳細設計、編碼和測試,不僅僅是編寫代碼。),回答如下問題:回答如下問題:1)開發(fā)這個應用程序需要多少人日?答:10000/10=1000(人日)2)假設程序員的月平均工資為4000美元,每月按20個工作日計算,這個軟件的成本是多少?答:1000/20*4000=200000(美元)3)1982年VAX750計算機硬件價格為125000美元,在那一年這個軟件的成本在總成本中占比多少?答:200000/(200000+125000)=61.5%
4)20年后,一臺性能遠遠優(yōu)于VAX750的微型計算機的價格約為2000美元,這時軟件開發(fā)生產率已提高到平均每人每天40條指令,程序員的月平均工資為8000美元,那么這時開發(fā)上述程序,該軟件的成本在總成本中占比多少?答:軟件成本:10000/40/20*8000=100000(美元)總成本中占比:100000/(100000+2000)=98%
1.1.2軟件危機(2)軟件危機表現1)
軟件成本高
1008060402001955硬件軟件19701985總費用的百分比計算機系統(tǒng)硬件/軟件成本變化趨勢1.1.2軟件危機(3)2)軟件研制進度無法預先估計
3)軟件產品質量差
4)軟件常常是不可維護
5)軟件發(fā)展跟不上硬件的發(fā)展和用戶的要求
產生軟件危機的原因1、軟件本身的特點軟件是個邏輯實體,不是物理實體,具有抽象性→管理和控制軟件困難軟件規(guī)模龐大→軟件開發(fā)困難軟件故障是在開發(fā)過程中產生而在測試時沒有發(fā)現的問題→軟件故障修改困難軟件維護會產生新的錯誤→軟件維護困難1.1.2軟件危機(4)1.1.2軟件危機(5)2、人為因素,軟件開發(fā)和維護的方法不正確
1)軟件開發(fā)技術落后、生產方式落后、開發(fā)工具落后
2)對用戶要求沒有完整準確認識就匆忙著手編寫程序
3)只重視程序而忽視軟件配置其余成分:
4)輕視維護:維護費用占軟件總費用的55%-70%
1.1.2軟件危機(6)緩解軟件危機的途徑1、更新觀念:采用工程化的方法和途徑來開發(fā)與維護軟件2、汲取系統(tǒng)工程的理念,采用必要的組織管理和技術管理措施3、應該不斷地發(fā)現、完善、推廣、使用再實踐中總結出來的開發(fā)軟件的成功的技術和方法。4、開發(fā)和使用更好的軟件工具,提高軟件生產率。
1.2軟件工程學1.2.1什么是軟件?1.2.2什么是軟件工程?1.2.3軟件工程的目標1.2.4軟件工程學的內容1.2.5軟件過程1.2.6軟件工程基本原理1.2.1什么是軟件?1.軟件的定義軟件是指計算機程序及其有關的數據和文檔。程序:能夠完成預定功能的可執(zhí)行的指令序列。數據:程序能適當處理的信息,具有適當的數據結構。文檔:開發(fā)、使用和維護程序所需要的圖文資料。有了程序,為什么需要文檔?直接閱讀程序有難度。程序只是軟件開發(fā)和維護過程中,其中一小階段的成果。軟件生產的各個階段必需完成的有關計算機程序的功能、設計和使用的文字或圖形資料,這些資料稱為“文檔”。軟件文檔是以人們可讀的形式出現的技術數據和信息。特別當軟件成為商品時,文檔是必不可少的。2.軟件的特點軟件是一種邏輯產品生產方式主要是研制,而不是硬件制造軟件不允許有誤差軟件維護復雜
3.軟件的分類—按功能進行劃分系統(tǒng)軟件操作系統(tǒng)數據庫管理系統(tǒng)設備驅動程序通信處理程序等支撐軟件文本編輯程序文件格式化程序磁盤向磁帶向數據傳輸的程序程序庫系統(tǒng)支持需求分析、設計、實現、測試和管理的軟件
應用軟件商業(yè)數據處理軟件工程與科學計算軟件計算機輔助設計/制造軟件系統(tǒng)仿真軟件智能產品嵌入軟件醫(yī)療、制藥軟件事務管理、辦公自動化軟件計算機輔助教學軟件3.軟件的分類—按規(guī)模進行劃分類別參加人員數研制期限源程序行數
微型 1 1~4周0.5k小型1 1~6月1k~2k中型2~5 1~2年5k~50k大型5~20 2~3年50k~100k甚大型100~10004~5年1M(=1000k)極大型2000~50005~10年1M~10M
3.軟件的分類按工作方式劃分:實時處理軟件分時軟件交互式軟件批處理軟件按服務對象的范圍劃分:項目軟件產品軟件按使用的頻度進行劃分:一次使用頻繁使用按軟件失效的影響進行劃分:高可靠性軟件一般可靠性軟件1.2.2什么是軟件工程?軟件工程定義
1968年在聯邦德國召開的NATO(NorthAtlanticTreatyOrganization)國際會議上正式提出并使用“軟件工程”這個術語。定義1:軟件工程是為了經濟地獲得能夠在實際機器上高效運行的可靠軟件而建立和使用的一系列的工程化原則。[Bauer1972]定義2:軟件工程是以工程的形式應用計算機科學和數學原理,從而經濟有效地解決軟件問題[CMU/SEI-90-TR-03]定義3:軟件工程是將系統(tǒng)性的、規(guī)范化的、可定量的方法應用于軟件的開發(fā)、運行和維護。[IEEE1990]定義4:采用工程的概念、原理、技術和方法來開發(fā)與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發(fā)出高質量的軟件并有效地維護它。理解:
1)軟件工程是系統(tǒng)方法而不是神秘的個人技巧。
2)軟件工程的目標是經濟、成功地開發(fā)出高質量地軟件。
3)軟件工程包含技術和管理兩方面的內容。軟件工程的本質特性軟件工程關注于大型程序的構造軟件工程的中心課題是控制復雜性軟件經常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關鍵軟件必須有效地支持它的用戶在軟件工程領域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產品1.2.3軟件工程的目標軟件工程是一門工程性的學科,軟件工程的目的是成功地構造一個大型軟件系統(tǒng)。所謂成功是指達到以下標準:有較低的開發(fā)成本。能達到用戶所要求的軟件功能。有很好的軟件性能。軟件有較好的可移植性、穩(wěn)定性、健壯性和可靠性。有較好的可維護性,較低的維護成本。能按計劃規(guī)定的進度開發(fā),及時交付使用。1.2.4軟件工程學的內容軟件工程學的主要內容:軟件開發(fā)技術包含:軟件工程方法學軟件工具軟件開發(fā)環(huán)境;軟件工程管理學包含:軟件工程經濟學軟件管理學。理論方面研究1.軟件工程方法學軟件工程方法學是編制軟件的系統(tǒng)方法,它確定軟件開發(fā)的各個階段,規(guī)定每一階段的活動、產品、驗收的步驟和完成準則。各種軟件工程方法的適用范圍不盡相同。目前使用得最廣泛的軟件工程方法學可以分為傳統(tǒng)方法學面向對象方法學計算機世界現實世界結構化開發(fā)方法SASDSPOOAOODOOP面向對象開發(fā)方法(1)傳統(tǒng)方法學采用結構化技術,來完成軟件開發(fā)任務,把軟件開發(fā)工作劃分成若干個階段傳統(tǒng)方法學歷史悠久,是廣大軟件開發(fā)人員所熟悉的,在開發(fā)某些軟件時十分有效。傳統(tǒng)方法可以再分為:面向數據流設計方法面向數據結構設計方法。(2)面向對象方法學面向對象方法學是在傳統(tǒng)方法學的基礎上發(fā)展起來的。面向對象方法學的要素是對象、類、繼承以及消息通信。可以用下列方程來概括:面向對象=對象+類+繼承+消息通信面向對象方法學是多次反復、迭代開發(fā)的過程。軟件工程方法學有三個要素,包括方法、工具和過程。質量焦點過程方法工具質量焦點:任何工程方法必須以有組織的質量保證為基礎。質量的理念刺激不斷過程改進,導致出現更加成熟的軟件工程方法。它是軟件工程的根基。過程:軟件工程的基礎是過程。規(guī)定了完成任務的工作階段、工作內容、產品、驗收的步驟和完成準則。軟件工程過程是將技術層結合在一起的凝聚力,使得軟件能夠合理地和及時地開發(fā)出來。方法:完成軟件開發(fā)任務的技術手段,軟件工程方法層提供了建造軟件在技術上需要“怎么做”。工具:在工具層對過程和方法提供了自動和半自動的支持。2.軟件工具軟件工具(softwaretools)是指為了支持計算機軟件的開發(fā)和維護而研制的程序系統(tǒng)。使用軟件工具的目的是提高軟件設計的質量和軟件生產效率,降低軟件開發(fā)、維護的成本。軟件工具用于軟件開發(fā)的整個過程。3.軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境是方法和工具的結合。在1985年第八屆國際軟件工程會議上,關于“軟件開發(fā)環(huán)境”的定義是:“軟件開發(fā)環(huán)境是相關的一組軟件工具集合,它支持一定的軟件開發(fā)方法或按照一定的軟件開發(fā)模型組織而成”。軟件開發(fā)環(huán)境的設計目標是提高軟件生產率和改善軟件質量。計算機輔助軟件工程(ComputerAidedSoftwareEngineering,CASE)是一組工具和方法的集合,可以輔助軟件生命周期各階段進行的軟件開發(fā)活動。4.軟件工程管理軟件工程管理學包含軟件工程經濟學:包括成本估算、效益評價、風險分析、投資回收分析、質量評價等。軟件管理學:包括軟件費用管理、人員組織、工程計劃管理、軟件配置管理等。(1)費用管理從經濟角度分析,開發(fā)一個軟件系統(tǒng)是否劃算,是軟件使用單位負責人決定是否開發(fā)這個項目的主要依據,要從軟件開發(fā)成本、運行費用、經濟效益等方面來估算整個系統(tǒng)的投資和回收情況。軟件開發(fā)成本主要包含開發(fā)人員的工資報酬,開發(fā)階段的各項支出;軟件運行費用取決于系統(tǒng)的操作費用和維護費用;系統(tǒng)的經濟效益是指因使用新系統(tǒng)而節(jié)省的費用和增加的收入。由于運行費用和經濟效益兩者在軟件的整個使用期內都存在,總的效益和軟件使用時間的長短有關,所以,應合理地估算軟件的壽命。一般在進行成本/效益分析時一律假設軟件使用期為五年。(2)人員組織軟件開發(fā)不是個體勞動,需要各類人員協(xié)同配合、共同完成工程任務,因而應該有良好的組織、周密的管理。(3)工程計劃管理軟件工程計劃是在軟件開發(fā)的早期確定的。在計劃實施過程中,如果需要,應對工程進度作適當的調整。在軟件開發(fā)結束后應寫出軟件開發(fā)總結,以便今后能制定出更切實際的軟件開發(fā)計劃。(4)軟件配置管理軟件工程各階段所產生的全部文檔和軟件本身構成軟件配置。每當完成一個軟件工程步驟,就涉及軟件工程配置,必須使軟件配置始終保持其精確性。軟件配置管理就是在系統(tǒng)的整個開發(fā)、運行和維護時期控制配置的狀態(tài)和變動,驗證配置項的完整性和正確性。1.2.5軟件過程國際標準化組織(InternationalStandardizationOrganization,ISO)是世界性的標準化專門機構。ISO9000把軟件過程定義為:“把輸入轉化為輸出的一組彼此相關的資源和活動”。軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。軟件開發(fā)過程(softwaredevelopmentprocess)是把用戶要求轉化為軟件需求,把軟件需求轉化為設計,用代碼來實現設計、對代碼進行測試,完成文檔編制并確認軟件可以投入運行使用的過程。軟件過程定義了運用方法的順序、應該交付的文檔、開發(fā)軟件的管理措施和各階段任務完成的標志。1.2.6軟件工程基本原理用分階段的生命周期計劃嚴格管理堅持進行階段評審.高中低變化出現的時期早中晚不同時期引入同一變動付出的代價代價1.2.6軟件工程基本原理實行嚴格的產品控制采用現代程序設計技術結果應能清楚地審查開發(fā)小組的人員應該少而精承認不斷改進軟件工程實踐的必要性1.3軟件生命周期1.3.1軟件生命周期定義1.3.2軟件生命周期劃分階段的原則1.3.3軟件生命周期各階段的任務1.3.1軟件生命周期定義軟件產品從定義開始,經過開發(fā)、使用和維護,直到最后被淘汰的整個過程稱為軟件生存周期。
為什么稱為軟件生命周期?T軟件生命周期人的生命周期T費用費用貢獻效益為什么要劃分階段?是實現軟件生產過程化的重要步驟。能夠簡化每個階段的工作。容易確立系統(tǒng)開發(fā)計劃。還可以明確系統(tǒng)各類開發(fā)人員的分工與職責范圍。
1.3.2軟件生命周期劃分階段的原則各階段的任務彼此間盡可能相對獨立。這樣便于逐步完成每個階段的任務,能夠簡化每個階段的工作,容易確立系統(tǒng)開發(fā)計劃。同一階段的工作任務性質盡可能相同。這樣有利于軟件工程的開發(fā)和組織管理,明確系統(tǒng)各類開發(fā)人員的分工與職責范圍,以便協(xié)同工作,保證質量。1.3.3軟件生命周期各階段的任務軟件生存周期階段劃分:軟件計劃:問題定義、可行性研究、需求分析軟件開發(fā):設計、實現和測試軟件維護:維護
實際從事軟件開發(fā)時,軟件規(guī)模、種類、開發(fā)環(huán)境及開發(fā)時所使用的技術方法等因素,都影響階段的劃分。(1)問題定義確定系統(tǒng)的目標、規(guī)模和基本任務。(2)可行性研究從經濟、技術、法律等方面分析確定系統(tǒng)是否值得開發(fā),及時建議停止項目開發(fā),避免人力、物力、時間的浪費。(3)需求分析確定軟件系統(tǒng)應具備的具體功能。通常用數據流圖、數據字典和簡明算法描述表示系統(tǒng)的邏輯模型,防止系統(tǒng)的設計與用戶的實際需求不相符的后果。(4)概要設計確定系統(tǒng)設計方案,軟件的體系結構。確定軟件由哪些模塊組成以及這些模塊之間的相互關系。(5)詳細設計描述應該如何具體地實現系統(tǒng)。詳細設計每個模塊,確定實現模塊所需要的算法和數據結構。(6)軟件實現階段進行程序設計(編碼)和模塊測試。(7)綜合測試階段通過各種類型的測試,查出軟件設計中的錯誤并改正,確保軟件質量;還要在用戶的參與下進行驗收,才可交付使用。(8)軟件運行、維護軟件運行期間,通過各種必要的維護使系統(tǒng)改正錯誤、或修改擴充功能使軟件適應環(huán)境變化,以便延長軟件的使用壽命,提高軟件的效益。每次維護的要求及修改步驟都應詳細準確地記錄下來,作為文檔保存。1.4軟件過程軟件過程:為了獲得高質量軟件所需要完成的一系列任務的框架,他規(guī)定了完成各項任務的工作步驟。軟件開發(fā)模型:描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型。軟件開發(fā)模型確立了軟件開發(fā)和演繹中各階段的次序限制,以及各階段活動的準則,確立了開發(fā)過程所遵守的規(guī)定和限制。1.4.1瀑布模型1.4.2快速原型模型(RapidPrototypeModel)1.4.3增量模型1.4.4噴泉模型1.4.5螺旋模型(SpiralModel)1.4.6RUP(統(tǒng)一過程)1.4.7敏捷過程與極限編程1.4.8微軟過程1.4.9軟件開發(fā)模型的選擇1.4.1瀑布模型(waterfallmodel)
屬于傳統(tǒng)的結構化開發(fā)模式,是一種將軟件生存周期各活動階段規(guī)定為依線性順序聯接的、系統(tǒng)的和順序的開發(fā)方法。傳統(tǒng)的瀑布模型
按照傳統(tǒng)的瀑布模型開發(fā)軟件,有下述三個特點:(1)階段間具有順序性和依賴性(2)推遲實現的觀點(3)質量保證的觀點傳統(tǒng)的瀑布模型
為了保證質量,瀑布模型堅持兩個重要做法:每個階段都要完成規(guī)定的文檔。每個階段都要對已完成的文檔進行復審,以便及早發(fā)現隱患,排除故障。文檔的作用:作為階段工作成果和結束標志;向管理人員提供軟件開發(fā)過程中的進展和情況,把軟件開發(fā)過程中的一些“不可見的”事物轉換成“可見的”文字資料;記錄開發(fā)過程中的技術信息,便于協(xié)調以后的軟件開發(fā)、使用和修改;提供對軟件的有關運行、維護和培訓的信息,便于各類人員之間相互了解彼此的工作;向潛在用戶報告軟件的功能和性能,使他們能判定該軟件能否服務于自己的需要。瀑布模型的優(yōu)點:
它可強迫開發(fā)人員采用規(guī)范的開發(fā)方法。它嚴格地規(guī)定了每個階段必須提交的文檔。它要求每個階段所交出的一切產品都必須經過質量保證小組的仔細驗證。瀑布模型缺點:1)對于應用軟件項目,需求難以完整、準確:2)缺乏靈活:3)開發(fā)代價高:4)沒有體現開發(fā)人員之間通信和軟件工具之間聯系和開發(fā)工作之間并行、串行。1.4.2快速原型模型(RapidPrototypeModel)為什么要原型?正確的需求定義是系統(tǒng)成功的關鍵。由于以下幾個方面原因:用戶與開發(fā)者之間以及他們之間的交流存在巨大的文化差異;用戶不熟悉信息技術,可能提出非常含糊的需要,而這種需求有可能被開發(fā)人員隨意解釋;經驗證明,一旦用戶開始使用計算機系統(tǒng),他們對目標系統(tǒng)的理解可能又會發(fā)生變化。快速原型模型就是解決這方面的問題。快速原型的定義所謂快速原型是快速建立起來的可以在計算機上運行的程序,它能完成的功能往往是最終的軟件產品所能完成的功能的一個子集。特點:軟件產品的開發(fā)基本上是線性順序進行的
原型開發(fā)的過程快速原型模型的特點只要快速原型法使用得當,就能減少軟件的總成本,縮短開發(fā)周期。所以快速原型模型是目前比較流行的實用開發(fā)模型。開發(fā)按線性順序進行,從模型圖可以看出,快速原型模型是不帶反饋環(huán)的,在需求確定之后,后面的開發(fā)按線性順行進行。原型的開發(fā)工具應根據目的而使用,快速原型模型原型的分類漸增式原型:也稱增量模型。用于驗證軟件需求的原型:用于驗證設計方案的原型:1.4.3增量模型使用增量模型開發(fā)軟件時,把軟件產品作為一系列的增量構件來設計、編碼、集成和測試。增量模型例如,使用增量模型開發(fā)字處理軟件:第一個增量構件可能提供基本的文件管理、編輯和文檔生成功能;第二個增量構件提供更完善的編輯和文檔生成功能;第三個增量構件實現拼寫和語法檢查功能;第四個增量構件完成高級的頁面排版功能。
優(yōu)點:能在較短時間內向用戶提交可完成一些有用的工作的產品,是增量模型的一個優(yōu)點。逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。困難:軟件體系結構的設計:如何分解增量構件?應該使構件規(guī)模適中,規(guī)模過大或過小都不好。最佳的分解方法因軟件產品特點和開發(fā)人員的習慣而異。在把每個新的增量構件集成到現有軟件體系結構中時,必須不破壞原來已經開發(fā)出的產品。分解的唯一必須遵守的約束條件是,當把新構件集成到現有軟件中時,所形成的產品必須是可測試的。1.4.4螺旋模型(spiralmodel)
螺旋模型的基本思想是,使用原型及其他方法來盡量降低風險。
簡化的螺旋模型完整的螺旋模型如圖所示1.4.5噴泉模型(fountainmodel)主要用于采用對象技術的軟件開發(fā)項目。它克服了瀑布模型不支持軟件重用和多項開發(fā)活動集成的局限性,噴泉模型使開發(fā)過程具有迭代性和無間隙性。
噴泉模型特點:1.開發(fā)過程有分析、系統(tǒng)設計、軟件設計和實現4個階段,各階段相互重疊,它反映了軟件過程并行性的特點。不同活動之間項目成就與時間關系項目工作分析時間設計實現測試2.以分析為基礎,反映了軟件過程迭代性的自然特性,從高層返回低層無資源消耗。3.強調增量開發(fā),整個過程是一個迭代的逐步提煉的過程。1.4.6RUP(統(tǒng)一過程)
RationalUnifiedProcess(以下簡稱RUP),Rational公司提出的軟件開發(fā)方法。主要由IvarJacobson的TheObjectoryApproch和TheRationalApproch發(fā)展而來。同時,它又是文檔化的軟件工程產品,所有RUP的實施細節(jié)及方法導引均以Web文檔的方式集成在一張光盤上,由Rational公司開發(fā)、維護并銷售,當前版本是5.0。RUP吸收了多種開發(fā)模型的優(yōu)點,具有很好的可操作性和實用性。從它一推出市場,憑借Booch、IvarJacobson、以及Rumbagh在業(yè)界的領導地位以及與統(tǒng)一建模語言(UnifiedModelLanguage,以下簡稱UML)的良好集成、多種CASE工具的支持、不斷的升級與維護,迅速得到業(yè)界廣泛的認同,越來越多的組織以它作為軟件開發(fā)模型框架。基于UML的RUP把軟件開發(fā)分成四個階段:初始階段細化階段構造階段提交階段RUP三大特點:軟件開發(fā)是一個疊代過程。軟件開發(fā)是由UseCase驅動的。軟件開發(fā)是以架構設計(ArchitecturalDesign)為中心的。1.4.7敏捷過程與極限編程什么是敏捷過程?一種以人為核心、迭代、循序漸進的開發(fā)方法。敏捷開發(fā)是由一些業(yè)界專家針對一些企業(yè)現狀提出了一些讓軟件開發(fā)團隊具有快速工作、響應變化能力的價值觀和原則,并于2001初成立了敏捷聯盟。他們正在通過親身實踐以及幫助他人實踐,揭示更好的軟件開發(fā)方法。
在敏捷開發(fā)中,軟件項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征。簡言之,就是把一個大項目分為多個相互聯系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
通過這項工作,他們認為:個體和交互勝過過程和工具可以工作的軟件勝過面面俱到的文檔輕量開發(fā)方法是相對于傳統(tǒng)的重量開發(fā)方法而言。簡單地理解,“量”的輕重是指用于軟件過程管理和控制的、除程序量以外的“文檔量”的多少。輕量開發(fā)方法認識到,在當前很多情況下,按傳統(tǒng)觀念建立的大量文檔,一方面需要消耗大量開發(fā)資源,同時卻已失去幫助“預見、管理、決策和控制的依據”的作用。因此必須重新審視開發(fā)環(huán)節(jié),去除臃腫累贅,輕裝上陣。客戶合作勝過合同談判響應變化勝過遵循計劃極限編程(XP,eXtremeProgramming)極限編程是敏捷過程中最富盛名的一個。極限:把好的開發(fā)實踐運用到極致。XP從實踐中來,是對實踐的總結,也是經過實踐檢驗的。廣泛應用于需求模糊且經常改變的場合。極限編程(ExtremeProgramming,簡稱XP)是由KentBeck在1996年提出的。KentBeck在九十年代初期與WardCunningham共事時,就一直共同探索著新的軟件開發(fā)方法,希望能使軟件開發(fā)更加簡單而有效。Kent仔細地觀察和分析了各種簡化軟件開發(fā)的前提條件、可能性以及面臨的困難。1996年三月,Kent終于在為DaimlerChrysler所做的一個項目中引入了新的軟件開發(fā)觀念——XP。極限編程采用的有效的開發(fā)實踐客戶作為開發(fā)團隊的成員至少有一名客戶代表在項目的整個開發(fā)周期中與開發(fā)人員在一起緊密配合工作,客戶代表負責確定需求、回答開發(fā)人員的問題并且設計功能驗收測試方案。使用用戶素材用戶素材就是正在進行的關于需求的談話內容。根據用戶素材合理安排實現該項需求的時間。短交付周期每兩周完成一次的迭代過程實現了用戶的一些需求,交付出目標系統(tǒng)的一個可工作的版本。通過向有關的用戶演示迭代生成的系統(tǒng),獲得他們的反饋意見。驗收測試通過執(zhí)行由客戶指定的驗收測試來捕獲用戶素材的細節(jié)。結對編程由兩名開發(fā)人員在同一臺計算機上共同編寫解決同一個問題的程序代碼,通常一個人編碼,另一個人對代碼進行審查與測試,以保證代碼的正確性與可讀性。結對編程是加強開發(fā)人員相互溝通與評審的一種方式。測試驅動開發(fā)強調“測試先行”。在編碼之前應該首先設計好測試方案,然后再編程,直到所有測試獲得通過之后才可以結束工作。集體所有強調程序代碼屬于整個開發(fā)小組所有,小組每個成員都有更改代碼的權利,每個成員都對全部代碼的質量負責。持續(xù)集成主張在一天之內多次集成系統(tǒng),而且隨著需求的變更,應該不斷進行回歸測試。可持續(xù)的開發(fā)速度規(guī)定開發(fā)人員每周工作時間不超過40小時,連續(xù)加班不可以超過兩周。開放的工作空間全體參與者(開發(fā)人員、客戶等)一起在一個開放的場所中工作,項目組成員在這個場所自由地交流和討論。及時調整計劃計劃應該是靈活的、循序漸進的。制定出項目計劃后,必須根據項目進展情況及時調整。簡單的設計設計與計劃在本次迭代過程中完成的用戶素材完全匹配,設計時不需要考慮未來的用戶素材。在一次次迭代過程中,項目組成員不斷變更系統(tǒng)設計,使之相對于正在實習的用戶素材而言始終處于最優(yōu)狀態(tài)重構在不改變系統(tǒng)行為的前提下,重新調整和優(yōu)化系統(tǒng)的內部結構,以降低復雜性、消除冗余、增加靈活性和提高性能。應該注意,不要過分依賴重構,不能輕視設計,對于大中型系統(tǒng)而言,推遲設計或者不做設計,那將是一場災難。使用隱喻隱喻是把整個系統(tǒng)聯系在一起的全局視圖,它描述系統(tǒng)如何運作,以及用何種方式把新功能加入到系統(tǒng)中。與其他方式的不同:
對比其它方法
,敏捷方法有時候被誤認為是無計劃性和紀律性的方法,實際上更確切的說法是敏捷方法,強調適應性而非預見性。
適應性的方法集中在快速適應現實的變化。當項目的需求起了變化,團隊應該迅速適應。這個團隊可能很難確切描述未來將會如何變化.
對比迭代方法相比迭代式開發(fā)兩者都強調在較短的開發(fā)周期提交軟件,敏捷方法的周期可能更短,并且更加強調隊伍中的高度協(xié)作。
對比瀑布式開發(fā),兩者沒有很多的共同點,瀑布模型式是最典型的預見性的方法,嚴格遵循預先計劃的需求、分析、設計、編碼、測試的步驟順序進行。步驟成果作為衡量進度的方法,例如需求規(guī)格,設計文檔,測試計劃和代碼審閱等等。相對來講,敏捷方法則在幾周或者幾個月的時間內完成相對較小的功能,強調的是能將盡早將盡量小的可用的功能交付使用,并在整個項目周期中持續(xù)改善和增強。敏捷過程具有對變化和不確定性的更快速、更敏捷的反應特性,而且在快速的同時仍然保持可持續(xù)的開發(fā)速度。因此比較適合于開發(fā)可用資源及開發(fā)時間都有苛刻約束的小項目。1.4.8微軟過程規(guī)劃階段確定產品目標;獲取競爭對手的信息;完成對客戶和市場的調研分析;確定新版本產品應該具備的特性;相對于前一版本,新版本應該解決的問題和需要增加的功能設計階段編寫系統(tǒng)特性規(guī)格說明書:軟件特性、系統(tǒng)結構、各構件間的相關性及接口標準高層系統(tǒng)設計,繪制系統(tǒng)結構圖,確定風險因素劃分子系統(tǒng)制定產品開發(fā)計劃開發(fā)階段:編寫代碼和文檔穩(wěn)定階段:測試和調試發(fā)布階段微軟過程與RUP比較相對于RUP而言,可以把微軟過程看做是RUP的一個精簡配置版本。整個微軟過程由若干個生命周期的持續(xù)遞進循環(huán)組成,每個生命周期分為5個階段。RUP的初始階段完成微軟過程規(guī)劃階段的工作精化階段完成設計工作構建階段完成開發(fā)和穩(wěn)定工作移交階段完成發(fā)布工作微軟過程的每個階段精簡為一次迭代完成,每次迭代所完成的工作相對于經歷RUP的若干個核心工作流程:規(guī)劃階段中一次迭代主要經歷的工作流程為:業(yè)務建模、需求和項目管理;設計階段中一次迭代經歷的工作流程為:業(yè)務建模、需求、分析設計和項目管理;開發(fā)階段中一次迭代經歷的工作流程為:需求、分析設計和實現;穩(wěn)定階段中一次迭代經歷的工作流程為:測試發(fā)布階段中一次迭代經歷的工作流程為:部署、配置與變更管理和項目管理。微軟過程與敏捷過程比較相對于敏捷過程,可以把微軟過程看做是它的一個擴充版本。微軟過程補充規(guī)定了其每個生命周期內各個階段的具體工作流程。與敏捷過程類似,微軟過程的適用范圍也是具有有限資源和有限開發(fā)時間約束的項目。1.4.9軟件開發(fā)模型的選擇通過3個例子大家討論如何進行軟件項目開發(fā)模型測選擇。例1假設要求你開發(fā)一個軟件,該軟件的功能是把讀入的浮點數開平方,所得到的結果精確到小數點后4位。一旦實現并且測試完成后,該產品將被拋棄。選擇用哪種軟件生命周期模型,說明理由?這個軟件需求很明確,實現開平方功能的算法也很成熟,因此,既無需通過分析需求也無需用原型來驗證設計方案。此外,一旦實現并測試完成,該產品將被拋棄,因此也無需使用有助于提高軟件可維護性的增量模型或螺旋模型來開發(fā)。綜上所述,為了開發(fā)這個簡單軟件,使用大多數人所熟悉的瀑布模型就可以了。例2假設你被任命為一家軟件公司的項目負責人,你的工作是管理該公司已被廣泛應用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴格的完成期限并且已對外公布。你打算用哪種軟件生命周期模型,說明理由?這個項目的一個重要要求是:嚴格的按照已對外公布完成期限。因此選擇生命周期模型時應該著重考慮哪種模型有助于加快產品開發(fā)的進度。使用增量模型開發(fā)軟件時可以并行完成開發(fā)工作,因此能夠加快開發(fā)進度。這個項目是開發(fā)該公司已被廣泛應用的字處理軟件的新版本,那么有3個結論:第一:舊版本相當于一個原型,通過收集用戶對舊版本的反映,較容易確定對新版本的需求,沒必要再專門建立一個原型系統(tǒng)來分析用戶的需求;第二:該公司的軟件工程師對字處理軟件很熟悉,有開發(fā)字處理軟件的豐富經驗,具有采用增量模型開發(fā)新版字處理軟件所需要的技術水平;第三,該軟件受到廣大用戶的喜愛,今后很可能還要開發(fā)更新的版本,因此,應該把該軟件的體系結構設計成開放式的,以利于今后的改進和擴充。綜上所述,采用增量模型來完成這個項目比較恰當。例3航天型號軟件研制過程模型航天型號研制經歷方案階段、模樣、初樣、試樣(正樣)、定型型號軟件研制通常也經歷模樣、初樣、試樣(正樣)模樣、初樣、正樣軟件是針對同一個軟件開展的循環(huán)研制,側重面不同。結合原型、漸進模型,以原型-基本型-更新型來形成航天型號軟件研制過程模型基本思想首先在需求尚不明確的情況下,對已知的需求和尚不能確定的需求進行分析整理,在此基礎上簡單地設計、編制軟件,產生一個軟件的原型;并對原型進行多方面的研究、分析和討論,以便確定所采取的技術實現方案是否可行,需求還要做哪些補充、修改和完善,從而獲得一個內容較完整、接口較明確的軟件需求和一個切實可行的軟件實現技術途徑。在軟件原型研制的基礎上,進行一次完整、嚴格的軟件研制工作,獲得一個高質量的軟件基本型;最后在軟件基本型的基礎上,針對更新的軟件需求,采用軟件更新與更改的的方法,對軟件進行更新,獲得軟件的更新型模樣、初樣、試樣-正樣模樣初樣正樣原型基本型更新型更新版本1更新版本2……原型軟件原型研制的目的是明確接口、確定需求、試驗系統(tǒng)方案需求分析:根據系統(tǒng)的任務分解和技術要求,對已知需求、應有需求、未確認需求等進行綜合分析,形成粗略的原型軟件需求規(guī)格說明。設計:對軟件的總體結構和接口進行設計,形成軟件設計說明。編碼調試:編制程序并調試通過。分析總結:運行軟件,并與系統(tǒng)總體、相應接口單位進行詳細的分析討論,對軟件需求進行補充、修改和完善,并確定技術途徑的可行性。對高質量要求的軟件研制,軟件原型研制所獲的程序應廢棄,不帶入以后的研制階段。基本型基本型研制的任務是根據基本確定的軟件需求,全面開展軟件的研制工作,形成一個基本滿足系統(tǒng)對軟件各項要求的基本型軟件,以直接應用于型號或
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省榆林市府谷縣2024-2025學年初三綜合題(二)生物試題(理工類)試題含解析
- 長沙醫(yī)學院《籃球B(2)》2023-2024學年第一學期期末試卷
- 江西省宜春市樟樹中學2024-2025學年高三4月調研測試(二模)生物試題含解析
- 深圳北理莫斯科大學《食品工程專題》2023-2024學年第二學期期末試卷
- 聯想傳奇圖書館多媒體文獻
- 有機化學原料在環(huán)保型復合材料的研制考核試卷
- 電子出版物批發(fā)商的數字化轉型路徑考核試卷
- 水果罐頭加工中的食品安全知識普及與宣傳考核試卷
- 玻璃熔制過程質量控制考核試卷
- 玻璃制造企業(yè)的人力資源培養(yǎng)與績效管理考核試卷
- 中學2021年秋季開學疫情防控工作方案及要求4篇
- 體格檢查-腹部檢查(臨床診斷課件)
- DB11-T 1448-2017 城市軌道交通工程資料管理規(guī)程
- 2025年鼎和財產保險股份有限公司招聘筆試參考題庫含答案解析
- 第一單元 從感知到物聯 第1課開啟物聯網之門 說課稿2024-2025學年 人教版新教材 初中信息技術八年級上冊
- 性病防治工作計劃
- DBJ33T 1300-2023 建筑施工現場安全防護設施設置技術規(guī)程
- 醫(yī)院培訓課件:《電擊除顫-電復律》
- 2025年教科版科學五年級下冊教學計劃(含進度表)
- ICU后綜合征的預防與護理
- 2025年司法鑒定科學研究院事業(yè)編制招聘14人歷年高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論