????????軟件生命周期模型規(guī)定了把生命周期劃分成那些階段臣淤,以及各個階段的執(zhí)行順序橄霉,也稱為“軟件過程模型”。
瀑布模型:
瀑布模型的特點:
1邑蒋,階段間具有順序性和依賴性:必須等前一個階段的工作完成后姓蜂,才能開始下一個階段的工作;前一階段的輸出文檔是下一個階段的輸入文檔医吊。
2钱慢,推遲實現(xiàn)的觀點:清楚地區(qū)分邏輯設(shè)計和物理設(shè)計,盡可能推遲程序的物理實現(xiàn)卿堂。
3束莫,質(zhì)量保證觀點:每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務(wù)草描;每個階段結(jié)束前都要對所完成的文檔進行評審览绿,以便盡早發(fā)現(xiàn)問題,改正錯誤陶珠。
瀑布模型是一種文檔驅(qū)動模型:
優(yōu)點:
1挟裂,可以保證整個軟件產(chǎn)品較高的質(zhì)量,保證缺陷能夠提前的被發(fā)現(xiàn)和解決;
2揍诽,保證系統(tǒng)在整體上的充分把握,使系統(tǒng)具備良好的擴展性和可維護性.
缺點:
1诀蓉,缺乏靈活性栗竖,當(dāng)客戶對軟件需求不明確,或者需求經(jīng)常變化的情況下渠啤,可能導(dǎo)致最終開發(fā)出來的軟件不能真正滿足客戶需要狐肢。
2,對于中小型的項目沥曹,需求設(shè)計和開發(fā)人員往往在項目開始后就會全部投入到項目中份名,而不是分階段投入,因此采用瀑布模型會導(dǎo)致項目人力資源過多的閑置的情況妓美,這也是必須要考慮的問題僵腺。
快速原型模型:
????????當(dāng)你的用戶沒有信息系統(tǒng)的使用經(jīng)驗,你的系統(tǒng)分析員也沒有過多的需求分析和挖掘經(jīng)驗的時候壶栋,需求分析和調(diào)研過程則更需要是一個啟發(fā)式的過程辰如。而原型則是這種很好的啟發(fā)式方法,可以快速的挖掘用戶需求并達成需求理解上的一致贵试。否則即使雙方都簽字認可的需求往往仍然不是客戶真正想要的東西琉兜。
????????快速原型模型需要快速建立一個能反映用戶主要需求的原型系統(tǒng),讓用戶在計算機上試用它毙玻,通過實踐來了解目標(biāo)系統(tǒng)的概貌豌蟋,用戶試用之后會提出修改建議,開發(fā)人員按照用戶的意見快速的修改原型桑滩,再請用戶試用梧疲,提出修改意見,如此反復(fù)施符,直到獲取用戶的真正需求往声,一旦需求確定了,開發(fā)人員便可以根據(jù)原型寫出規(guī)格說明文檔戳吝。
增量模型:
????????把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計浩销,編碼,集成和測試听哭。每次把新的構(gòu)建集成到現(xiàn)有軟件中時慢洋,所得到的軟件必須是可測試的。
優(yōu)點是:
1陆盘,能在較短時間內(nèi)向用戶提交一個可以滿足一些需求的軟件普筹;
2,逐步增加產(chǎn)品功能可以使用戶有較充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品隘马,從而減少一個全新軟件可能帶給客戶的沖擊太防。
????????瀑布模型和快速原型模型都是一次把一個滿足所有需求的產(chǎn)品提交給客戶。增量模型是分批逐步向用戶提交產(chǎn)品酸员,每次提交一個滿足用戶需求子集的可運行的產(chǎn)品蜒车。這就要求軟件體系結(jié)構(gòu)必須是開放的讳嘱,新的增量構(gòu)件集成到原有系統(tǒng)時,不會破壞已經(jīng)開發(fā)出來的產(chǎn)品酿愧。
????????架構(gòu)設(shè)計是軟件開發(fā)中一個重要的關(guān)注點沥潭。軟件開發(fā)要以架構(gòu)為核心。因此在架構(gòu)設(shè)計完成后系統(tǒng)會被分為相關(guān)的子系統(tǒng)和功能模塊嬉挡。每個功能模塊間的接口都可以定義清楚钝鸽。在這種情況下,當(dāng)模塊B的詳細設(shè)計做完成后往往就沒有必要等到其它模塊的詳細設(shè)計都要完全作完才開始編碼庞钢,因此在架構(gòu)設(shè)計完成后可以將系統(tǒng)分為多個模塊并行開發(fā)拔恰,每個模塊仍然遵循先設(shè)計和編碼測試的瀑布模型思路。
????????業(yè)界比較標(biāo)準(zhǔn)的增量模型往往要求在軟件需求規(guī)格說明書全部出來后后續(xù)的設(shè)計開發(fā)再進行增量基括。同時每個增量也可以是獨立發(fā)布的小版本仁连。由于系統(tǒng)的總體設(shè)計往往對一個系統(tǒng)的架構(gòu)和可擴展性有重大的影響,因此我們推薦的增量最好是在架構(gòu)設(shè)計完成后再開始進行增量阱穗,這樣可以更好的保證系統(tǒng)的健壯性和可擴展性。
迭代模型:
????????增量和迭代有區(qū)別但兩者又經(jīng)常一起使用使鹅。所以這里要先解釋下增量和迭代的概念揪阶。假設(shè)現(xiàn)在要開發(fā) A,B,C,D四個大的業(yè)務(wù)功能,每個功能都需要開發(fā)兩周的時間。則對于增量方法而言可以將四個功能分為兩次增量來完成患朱,第一個增量完成A,B功能鲁僚,第二次增量完成C,D功能;而對于迭代開發(fā)來將則是分兩次迭代來開發(fā)裁厅,第一次迭代完成A,B,C,D四個基本業(yè)務(wù)功能但不含復(fù)雜的業(yè)務(wù)邏輯冰沙,而第二個功能再逐漸細化補充完整相關(guān)的業(yè)務(wù)邏輯。在第一個月過去后采用增量開始時候A,B全部開發(fā)完成而C,D還一點都沒有動执虹;而采用迭代開發(fā)的時候A,B,C,D四個的基礎(chǔ)功能都已經(jīng)完成拓挥。
????????每次迭代都包含了需求,設(shè)計和開發(fā)袋励,測試等各個過程侥啤,而且每次迭代完成后都是一個可以交付的原型。迭代不是并行茬故,在每次迭代過程中仍然要遵循需求->設(shè)計->開發(fā)的瀑布過程盖灸。迭代周期的長度跟項目的周期和規(guī)模有很大的關(guān)系。小型項目可以一周一次迭代磺芭,而對于大型項目則可以2-4周一次迭代赁炎。如果項目沒有一個很好的架構(gòu)師,很難規(guī)劃出每次迭代的內(nèi)容和要到達的目標(biāo)钾腺,驗證相關(guān)的交付和產(chǎn)出徙垫。因此迭代模型雖然能夠很好的滿足與用戶的交付讥裤,需求的變化,但確是一個很難真正用好的模型松邪。
????????迭代模型更多的從總體方面系統(tǒng)的思考問題坞琴,從最早就可以給出相對完善的框架或原型,后期的每次迭代都是針對上次迭代的逐步精化逗抑。
螺旋模型:
????????螺旋模型的基本思想是剧辐,使用原型模型和其他方法來盡量降低項目的風(fēng)險,可以看成是每個階段之前都增加了風(fēng)險分析過程的快速原型模型邮府。適用于內(nèi)部開發(fā)的大規(guī)模軟件項目荧关。
????????螺旋模型最大的價值在于整個開發(fā)過程是迭代和風(fēng)險驅(qū)動的。通過將瀑布模型的多個階段轉(zhuǎn)化到多個迭代過程中褂傀,以減少項目的風(fēng)險忍啤。螺旋模型實現(xiàn)了隨著項目成本投入不斷增加,風(fēng)險逐漸減小仙辟。以幫我我們加強項目的管理和跟蹤同波,在每次迭代結(jié)束后都需要對產(chǎn)出物進行評估和驗證,當(dāng)發(fā)現(xiàn)無法繼續(xù)進行下去時可以及早的終止項目叠国。螺旋模型復(fù)雜的地方在于盡責(zé),專心和知識淵博的管理未檩。因為對于每一次迭代我們要制定出清晰的目標(biāo),分析出相關(guān)的關(guān)鍵風(fēng)險和計劃中可以驗證和測試的交付物并不是一件容易的事情粟焊。
1.決定目標(biāo),替代方案和約束? 冤狡;
2.識別和解決項目的風(fēng)險 ;
?3.評估技術(shù)方案和替代解決方案项棠;
4.開發(fā)本次迭代的交付物和驗證迭代產(chǎn)出的正確性悲雳;
5.計劃下一次迭代;
6.提交下一次迭代的步驟和方案香追。