瀑布模型(經(jīng)典生命周期)提出了軟件開發(fā)的系統(tǒng)化的、順序的方法。其流 程從用戶需求規(guī)格說明開始,通過策劃、建模、構(gòu)建和部署的過程,最終提供一 個完整的軟件并提供持續(xù)的技術(shù)支持。
優(yōu)點:
1. 強調(diào)開發(fā)的階段性,各階段具有順序性和依賴性
2. 強調(diào)早期調(diào)研和需求分析,推遲編碼實現(xiàn)的觀點
3. 提供了一個摸板,這個摸板使得分析、設(shè)計、編碼、測試和支持的方法可以 在該摸板下有一個共同的指導(dǎo)
缺點:
1. 文檔驅(qū)動,用戶無法及時了解產(chǎn)品的情況
2. 依賴早期調(diào)研和需求分析,很難適應(yīng)在許多項目開始階段必然存在的不確定 性。
3. 流程單一,必須要完成前一階段的任務(wù),才能進行下一階段,開發(fā)過程中的 成功經(jīng)驗無法用于本產(chǎn)品。
4. 測試在后期引入,對于系統(tǒng)存在的重大缺陷,如果在可執(zhí)行程序評審之前沒 有被發(fā)現(xiàn),將可能造成重大損失。
5. 組織龐大,人員閑置。
適用范圍:需求確定,工作能夠采用線性的方式完成的軟件。
增量過程模型包括增量模型、RAD 模型。
(一)增量模型 增量過程模型以迭代的方式運用瀑布模型,把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計、編碼、集成和測試。
每個構(gòu)件由多個相互作用的模塊構(gòu)成,并且能夠完成特定的功能。使用增量模型時,第一個增量往往是核心功能。
優(yōu)點:
1.能在較短的時間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。
2.逐步增加產(chǎn)品功能可以使用戶有充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個 全新的軟件可能給客戶組織帶來的沖擊。
3. 規(guī)避技術(shù)風(fēng)險
4. 可并行開發(fā)構(gòu)件,加快開發(fā)的進度
缺點:
1. 沒有考慮軟件的整體質(zhì)量和長期的可維護性。
2. 大部分情況是不合適的操作算法被采用目的為了演示功能,不合適的開發(fā)工 具被采用僅僅為了它的方便,還有不合適的操作系統(tǒng)被選擇等等。
3. 由于達不到質(zhì)量要求產(chǎn)品可能被拋棄,而采用新的模型重新設(shè)計
適用范圍:項目在既定的商業(yè)要求期限之前不可能找到足夠的開發(fā)人員;
(二)RAD模型
RAD 模型是一種側(cè)重于短暫的開發(fā)周期的增量軟件過程模型,它是瀑布模 型的“高速”變體,通過基于構(gòu)建的構(gòu)建方法實現(xiàn)快速開發(fā)。
開發(fā)團隊能夠在非常短的時間內(nèi)創(chuàng)造出“全功能系統(tǒng)”
優(yōu)點:
1.開發(fā)速度快,質(zhì)量有保證。
2.對信息系統(tǒng)特別有效。
缺點:
1. 對于大型的可伸縮的項目,RAD 需要大量的人力資源來創(chuàng)建多個相對的獨立 的 RAD 團隊
2. 如果開發(fā)者和用戶沒有為短時間內(nèi)急速完成整個系統(tǒng)做好準備,RAD 項目將會失敗。
3. 如果一個系統(tǒng)不能合理的模塊化,RAD 構(gòu)件建立會有很多問題。
4. 如果系統(tǒng)需求是高性能,并且需要通過調(diào)整構(gòu)件接口的方式來提高性能,不 能采用 RAD 模型
5. 技術(shù)風(fēng)險很高的情況下
適用范圍:1、 不適合技術(shù)風(fēng)險很高的開發(fā),不適合系統(tǒng)需求是高性能,并且需 要通過調(diào)整構(gòu)件接口的方式來提高性能的產(chǎn)品開發(fā)。
2、 適用于工期緊張,又可細分功能,還要有合適的構(gòu)件
演化過程模型包括原型開發(fā),螺旋模型,協(xié)同開發(fā)模型。
(一)原型開發(fā) 從需求收集開始,開發(fā)者和客戶在一起定義軟件的總體目標,標識已知的需求并且規(guī)劃出需要進一步定義的區(qū)域。
然后是“快速設(shè)計”,它集中于軟件中那些 對客戶可見的部分的表示,這將導(dǎo)致原型的創(chuàng)建,并由客戶評估并進一步精化待 開發(fā)軟件的需求。
逐步調(diào)整原型使其滿足客戶的需求,這個過程是迭代的。其流 程從聽取客戶意見開始、隨后是建造/修改原型、客戶測試運行原型、然后回頭 往復(fù)循環(huán)直到客戶對原型滿意為止。
由于這種模型可以讓客戶快速的感受到實際 的系統(tǒng)(雖然這個系統(tǒng)不帶有任何質(zhì)量的保證),所以客戶和開發(fā)者都比較喜歡 這種過程模型(對于那些僅僅用來演示軟件功能的公司而言或從來不考慮軟件質(zhì)
量和不害怕長期維護的公司而言)。
優(yōu)點:
1、能讓人(開發(fā)者或客戶)很快見到產(chǎn)品,有成就感。
2、能漸進地啟發(fā)客戶提出新的要求或任務(wù)。
缺點:
1、 沒有考慮軟件的整體質(zhì)量和長期的可維護性。
2、 大部分情況是不合適的操作算法被采用目的為了演示功能,不合適的開發(fā)工具被采用僅僅為了它的方便,還有不合適的操作系統(tǒng)被選擇等等。
3、 由于達不到質(zhì)量要求產(chǎn)品可能被拋棄,而采用新的模型重新設(shè)計。
(二)螺旋模型 螺旋模型是一種演進式軟件過程模型,結(jié)合了原型的迭代性質(zhì)和瀑布模型的系統(tǒng)性和可控性的特點,具有快速開發(fā)越來越完善軟件版本的潛力。
開發(fā)步驟:沿螺線自內(nèi)向外,每旋轉(zhuǎn)一圈便開發(fā)出更為完善的一個新的軟件版本。
例如,在第一圈,確定了初步的目標、方案和限制條件以后,轉(zhuǎn)入右上象限,對風(fēng)險進行識別和分析。
如果風(fēng)險分析表明,需求有不確定性,那么在右下 的工程象限內(nèi),所建的原型會幫助開發(fā)人員和客戶,考慮其它開發(fā)模型,并對需求做進一步修正??蛻魧こ坛晒龀鲈u價之后,給出修正建議。
在此基礎(chǔ)上需 再次計劃,并進行風(fēng)險分析。在每一圈螺線上,風(fēng)險分析的終點做出是否繼續(xù)下 去的判斷。
假如風(fēng)險過大,開發(fā)者和用戶無法承受,項目有可能終止。多數(shù)情況 下沿螺線的活動會繼續(xù)下去,自內(nèi)向外,逐步延伸,最終得到所期望的系統(tǒng)。
優(yōu)點:
1. 強調(diào)風(fēng)險
2. 強調(diào)階段質(zhì)量
3. 提供糾錯的機會
缺點:
1. 每個階段都要提出被選方案,進行風(fēng)險分析,研發(fā)周期長,效率低
2. 必須要轉(zhuǎn)業(yè)的風(fēng)險分析人員的參與
適用范圍:大型項目
(三)協(xié)同開發(fā)模型 協(xié)同開發(fā)模型(協(xié)同工程),可以表示唯一系列的框架活動、軟件工程動作和任務(wù) 以及相應(yīng)的狀態(tài)。
適用范圍:所有類型的軟件開發(fā)
專用過程模型
包括基于構(gòu)件的開發(fā)、形式化方法模型、面向方面的軟件開發(fā)。
(一)基于構(gòu)件的開發(fā)基于構(gòu)件的開發(fā)模型具有許多螺旋模型的特點,本質(zhì)上是演化模型,需要以 迭代方式構(gòu)建軟件。不同之處在于,基于構(gòu)件開發(fā)模型采用預(yù)先打包的軟件構(gòu)件 開發(fā)程序。
開發(fā)過程:對所需構(gòu)件進行評估 → 考慮構(gòu)件的集成 → 設(shè)計系統(tǒng)的軟件框 架→將構(gòu)件放入框架→進行測試
優(yōu)點:
1. 構(gòu)件可復(fù)用。提高了開發(fā)效率。
2. 采用了面向?qū)ο蟮募夹g(shù)
3. 能夠使軟件復(fù)用
缺點:過分依賴于構(gòu)件,構(gòu)件庫的質(zhì)量影響著產(chǎn)品質(zhì)量。
(二)形式化方法模型 形式化方法模型包含了一組活動,他們導(dǎo)致了計算機軟件的數(shù)學(xué)規(guī)約。
形式化方法使得軟件工程師們能夠通過應(yīng)用一個嚴格的數(shù)學(xué)符號體系來規(guī)約、開發(fā)、 和驗證基于計算機的系統(tǒng)。
這種方法的一個變種,稱為凈室軟件工程,已經(jīng)被 一些組織所采用。
在開發(fā)中使用形式化方法時,它們提供了一種機制,能夠消除 使用其它軟件過程模型難以克服的很多問題。
二義性、不完整性、不一致性能被 更容易地發(fā)現(xiàn)和糾正,而不是通過專門的評審,是通過對應(yīng)用的數(shù)學(xué)分析。
形式化方法提供了可以產(chǎn)生無缺陷軟件的承諾。
優(yōu)點:
1、形式化規(guī)約可直接作為程序驗證的基礎(chǔ),可以盡早的發(fā)現(xiàn)和糾正錯誤(包括 那些其它情況下不能發(fā)現(xiàn)的錯誤)。
2、開發(fā)出來的軟件具有很高的安全性和健壯性,特別適合安全部門或者軟件錯 誤會造成經(jīng)濟損失的開發(fā)者。
3、能夠開發(fā)出無缺陷軟件。
缺點:
1、 開發(fā)費用昂貴,而且需要的時間較長。
2、 需要大量的培訓(xùn)。
3、 不能將這種模型作為對客戶通信的機制,因為客戶對這些數(shù)學(xué)語言一無所 知。
適用范圍:不適用于技術(shù)水平不高的客戶。
(三)面向方面的軟件開發(fā) 將系統(tǒng)分成若干相對較獨立的組成部分,這些部分稱為方面。
優(yōu)點:超越了子程序和繼承的方法。 缺點:技術(shù)還不成熟
統(tǒng)一過程模型是一種“用例驅(qū)動、以體系結(jié)構(gòu)為核心、迭代及增量”的軟件 過程框架,由 UML 方法和工具支持。它是一種增量模型,定義了五個階段:
a、起始階段,包括用戶溝通和計劃活動,強調(diào)定義和細化用例
b、 細化階段,包括用戶溝通和建?;顒樱攸c是創(chuàng)建分析和設(shè)計模型。
c、構(gòu)件階段,細化模型設(shè)計,并將設(shè)計模型轉(zhuǎn)化為軟件構(gòu)件實現(xiàn)
d、 轉(zhuǎn)化階段,將軟件從開發(fā)人員傳遞給最終用戶,并由用戶完成 beta 測試和驗 收測試
e、生產(chǎn)階段,持續(xù)地監(jiān)控軟件的運行,并提供技術(shù)支持。
優(yōu)點:
1. 任何功能開發(fā)后就進入測試過程,及早進行驗證
2. 早期風(fēng)險識別,采取預(yù)防措施
缺點:
1. 需求必須在開始之前完全弄清楚,否怎有可能在架構(gòu)上出現(xiàn)錯誤
2. 必須有嚴格的過程管理,以免使過程退化為原始的試→錯→改模式
3.如果不加控制的讓用戶過早接觸沒有測試完全,版本不穩(wěn)定的產(chǎn)品可能對用 戶和開發(fā)團隊都帶來負面的影響