軟件開發模型總結歸納(瀑布模型、螺旋模型、迭代模型、增量模型、敏捷模型)

0. 軟件的生命週期

  軟件的生命週期是指從軟件產品的設想開始到軟件不在使用而結束的時間。
  軟件的生命週期分爲6個階段,即需求分析、計劃、設計、編碼、測試、運行維護

1. 瀑布模型

在這裏插入圖片描述
  瀑布模型是最早出現的軟件開發模型,是所有其他軟件開發模型的基礎框架。與軟件的生命週期不同的是,它缺少了軟件運行維護階段。
描述: 每個階段都只執行一次,因此是線性順序的軟件開發模型。
  正是由於每個階段只執行一次,所以前面的需求分析和設計尤爲重要。
優點:

  1. 爲項目提供了按階段劃分的檢查點,強調開發的階段性。
  2. 強調早期的計劃及需求調查。
  3. 強調產品測試。

缺點:

  1. 在各個階段之間極少有反饋。
  2. 只有在項目週期的後期才能看到結果,所以風險往往至後期的測試階段才顯露,因此失去了及早的糾正過程。
  3. 單一流程,開發中的經驗教訓不能反饋應用於本產品的過程。

適用項目: 需求比較明確且變更很少的項目。

2. 螺旋模型

一般在軟件開發初期階段需求不是很明確時,採用漸進式的開發模型。螺旋模型是漸進式開發模型的代表之一。
在這裏插入圖片描述
描述: 以原型爲基礎沿螺線旋轉、每轉一圈都經過計劃/風險分析/實施/評估等過程且得到相應新版本、經過若干次螺旋上升得到最終版本。
螺旋模型沿着螺旋線進行若干次迭代,圖中的四個象限代表了一下活動:
(1)制定計劃:確定軟件目標,選定實施方案,弄清項目開發的限制條件;
(2)風險分析:分析評估所選方案,考慮如何識別和清楚風險;
(3)實施工程:實施軟件開發和驗證;
(4)客戶評估:評價開發工作,提出修正建議,制定下一步計劃。
  迭代開發的模式給軟件測試帶來了新的要求,它不允許有一段獨立的測試時間和階段,測試必須跟着開發的迭代而迭代,所以迴歸測試的很重要。
優點:

  1. 強調嚴格的風險分析,但要求許多客戶接受和相信這種分析,並做出相關反應是不容易的,因此,這種模型往往適用於規模龐大,風險大的項目
  2. 強調各個開發階段的質量
  3. 這種的開發模式會提供機會探討項目是否有價值繼續下去。

缺點:

  1. 由於引入了非常嚴格的風險識別、風險分析和風險控制,將會大大消耗人力、資源,如果嚴重的影響了項目的利潤,風險分析將毫無意義。
  2. 軟件開發人員應該擅長尋找可能的風險,準確地分析風險,否則將會帶來更大的風險。
  3. 軟件建設週期長,但軟件技術發展比較快,所以可能會和當前的技術水平有較大的的差距,無法滿足當前用戶需求。

適用項目: 對新近開發,需求不明確的情況下,適合用螺旋模型進行開發,便於風險控制和需求變更。

3. 迭代模型

在這裏插入圖片描述
  開發迭代是一次完整地經過所有工作流程的過程:(至少包括)需求工作流程、分析設計工作流程、實施工作流程和測試工作流程。實質上,迭代模型是類似小型的瀑布式項目。
每一個迭代都會產生一個可以發佈的產品,這個產品是最終產品的一個子集。
描述:
4. 一次迭代過程包括了所有軟件開發流程。
5. 每一次迭代均產生一個可發佈的產品。
6. 該產品爲最終產品的一個子集。
適用項目: 適合於事先不能完整定義產品的所有需求,計劃多期開發的項目。

4. 增量模型

在這裏插入圖片描述
描述:

  1. 採用隨時間進展而交錯的線性序列。
  2. 每個序列產生一個可發佈的增量。
  3. 每一個增量產生一個可操作的產品。
  4. 第一個增量是核心產品。

優點: 開始時不用投入大量人力資源,可以事先推出核心產品以穩定用戶,可以有計劃的管理技術風險。
缺點: 需要開放式體系結構,可能會產生設計效果差、開發效率低的情況。
適合項目: 需求經常發生改變的軟件開發過程。

增量和迭代模型的區別:
  增量是逐塊建造的概念,例如:畫一幅人物畫,我們可以先畫人的頭部,再畫身體,再畫手腳……。
  迭代是反覆求精的概念,例如:同樣是畫人物畫,我們可以先畫整體輪廓,在勾勒出基本雛形,再細化、着色……。

5. 敏捷模型

描述: 敏捷模型是一種輕量、高效、低風險、更強調團隊協作和溝通的開發方式,適合於中小型開發團隊,客戶需求模糊或多變。
特點:

  • 強調人與人之間的溝通。
  • 輕文檔(弱化文檔,但不是不需要文檔)
  • 客戶需要全程參與
  • 需求可以的變化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章