比較幾種常見的軟體開發過程模型的特點、優缺點、和適用情況:
一、瀑布模型
瀑布模型的特點:
1、 簡單、直觀、易用
2、 開發進程比較嚴格,一個階段接著一個階段順序進行
3、 模型中沒有反饋,上一階段任務完成,進入下一個階段以後,下一個階段不會對上一個階段的工作作出反饋
4、 模型執行過程中需要嚴格控制
5、 允許基準和配置早期接受控制
6、 一個新的項目不適合瀑布模型,除非處於項目的後期
7、 使用者直到項目結束才能看到產品的品質;使用者不是漸漸地熟悉系統
8、 不允許變更或者限制變更早期的需求
9、 瀑布模型整體上比較理想化
瀑布模型的優點:有利於大型軟體開發過程中人員的組織、管理,有利於軟體開發方法和工具的研究,從而提高了大型軟體項目開發的品質和效率。
瀑布模型的缺點:(1)開發過程一般不能逆轉,否則代價太大;(2)實際的項目開發很難嚴格按該模型進行;(3)客戶往往很難清楚地給出所有的需求,而該模型卻要求如此。(4)軟體的實際情況必須到項目開發的後期客戶才能看到,這要求客戶有足夠的耐心。
瀑布模型的使用範圍:(1)使用者的需求非常清楚全面,且在開發過程中沒有或很少變化;(2)開發人員對軟體的應用領域很熟悉;(3)使用者的使用環境非常穩定;(4)開發工作對使用者參與的要求很低。
二、原型模型
原型模型的特點:
1、 需求定義時,需要快速構建一個原型系統
2、 使用者根據快速構建的原型系統的優缺點,給開發人員提出反饋意見
3、 根據反饋意見修改軟體需求規格說明,以便系統可以更正確地反應使用者的需求
4、 可以減少項目的各種假設以及風險等。
原型模型的優點:(1)可以得到比較良好的需求定義,容易適應需求的變化;(2)有利於開發與培訓的同步;(3)開發費用低、開發週期短且對使用者更友好。
原型模型的缺點:(1)客戶與開發人員對原型理解不同;(2) 準確的原型設計比較困難;(3) 不利於開發人員的創新。
原型模型的使用範圍:(1)對所開發的領域比較熟悉而且有快速的原型開發工具;(2)項目招投標時,可以以原型模型作為軟體的開發模型;(3)進行產品移植或升級時,或對已有產品原型進行客戶化工作時,原型模型是非常適合的。
三、增量模型
增量模型的特點:
1、 可以避免一次性投資太多帶來的風險,將主要的功能或者風險大的功能首先實現,然後逐步完善,保證投入的有效性。
2、 可以更快地開發出可以操作的系統
3、 可以減少開發過程中使用者需求的變更
4、 一些增量可能需要重新開發(如果早期開發的需求不穩定或者不完整)
增量模型的優點:(1)採用增量模型的優點是人員分配靈活,剛開始不用投入大量人力資源;(2)如果核心產品很受歡迎,則可增加人力實現下一個增量;(3)可先發布部分功能給客戶,對客戶起到鎮靜劑的作用。
增量模型的缺點:(1)並行開發構件有可能遇到不能整合的風險,軟體必須具備開放式的體繫結構;(2)增量模型的靈活性可以使其適應這種變化的能力大大優於瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟體過程的控制失去整體性。
增量模型的使用範圍:(1)項目開始時明確了大部分需求,但是需求可能會發生變化的項目;(2)對於市場和使用者把握不是很准,需要逐步瞭解項目的情況;(3)對於有龐大和複雜功能的系統進行功能改進時需要一步一步實施項目的。
四、螺旋模型
螺旋模型是針對風險比較大的項目而設計的一種模型。設計這個模型的主要目的是克服瀑布模型的缺點。它通過一系列瀑布模型的不斷迴圈來逐步規避風險。
每個迴圈步驟包括如下四個階段:
制定計劃──確定軟體目標,選定實施方案,弄清項目開發的限制條件;
風險分析──分析所選方案,考慮如何識別和消除風險;
實施工程──實施軟體開發、編碼、測試等;
客戶評估──評價開發工作,提出修正建議。
螺旋模型的特點:
1、 表現為瀑布模型的多次迭代
2、 可以將每個階段進行更細的劃分
3、 可以進行靈活設計
4、 通過風險管理進行驅動
5、 使用者可以更早看到產品
6、 使用者可以不斷對產品進行評估
7、 使用者可以與開發人員進行緊密的結合
8、 項目的投資不用一次性投入
9、 可以給開發人員更多的反饋資訊
螺旋模型的優點:(1)設計上的靈活性,可以在項目的各個階段進行變更;(2)以小的分段來構建大型系統,使成本計算變得簡單容易;(3)客戶始終參與每個階段的開發,保證了項目不偏離正確方向以及項目的可控性;(4) 隨著項目推進,客戶始終掌握項目的最新資訊 , 從而他或她能夠和管理層有效地互動。
螺旋模型的缺點:(1)採用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的項目開發中,如果未能夠及時標識風險,勢必造成重大損失;(2)過多的迭代次數會增加開發成本,延遲提交時間。
螺旋模型的使用範圍:
1、 螺旋模型只適合於大規模的軟體項目。
2、 採用了新技術的項目
3、 風險是主要的制約因素的項目
4、 不確定因素和風險限制了項目進度的項目
5、 使用者對自己的需求不是很明確的項目
6、 需要對一些基本的概念進行驗證的項目
7、 可能發生一些重大變更的項目