軟體開發模型(Software Development Model)是指軟體開發全部過程、活動和任務的結構架構。軟體開發包括需求、設計、編碼和測試等階段,有時也包括維護階段。 軟體開發模型能清晰、直觀地表達軟體開發全過程,明確規定了要完成的主要活動和任務,用來作為軟體項目工作的基礎。對於不同的軟體系統,可以採用不同的開發方法、使用不同的程式設計語言以及各種不同技能的人員參與工作、運用不同的管理方法和手段等,以及允許採用不同的軟體工具和不同的軟體工程環境。
瀑布模型
瀑布模型又叫軟體生存周期模型,瀑布模型核心思想是按工序將問題化簡,將功能的實現與設計分開,便於分工協作,即采 瀑布模型,用結構化的分析與設計方法將邏輯實現與物理實現分開。將軟體生命週期劃分為制定計劃、需求分析、軟體設計、程式編寫、軟體測試和運行維護等六個基本活動,並且規定了它們自上而下、相互銜接的固定次序,所以如果項目經常變化,不適合使用瀑布模型開發。
瀑布模型的優點
1為項目開發提供了按階段劃分的檢查點;
2當前一階段完成後,只需要去關注後續階段;
3可在迭代模型中應用瀑布模型。
瀑布模型的缺點
1項目各個階段之間很少有反饋;
2隻有在專案生命週期的後期才能看到結果,與使用者期待不同;
3產生很多文檔,增加了工作量;
4早期的錯誤可能要等到開發後期的測試階段才能發現,進而帶來嚴重的後果。
原型模型
原型模型通過向使用者提供原型擷取使用者的反饋,使開發出的軟體能夠真正反映使用者的需求。同時,原型模型採用逐步求精的方法完善原型,使得原型能夠“快速”開發,避免了像瀑布模型一樣在冗長的開發過程中難以對使用者的反饋作出快速的響應。
原型模型的特點
(1)開發人員和使用者在“原型”上達成一致。這樣一來,可以減少設計中的錯誤和開發中的風險,也減少了對使用者培訓的時間,而提高了系統的實用、正確性以及使用者的滿意程度。
(2)縮短了開發週期,加快了工程進度
(3)降低成本。
原型模型的缺點
由原型圖可以看出,在開發的過程中有可能返回頂部重新開發。
螺旋模型
它將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,適合於大型複雜的系統。螺旋模型採用一種周期性的方法來進行系統開發,這會導致開發出眾多的中間版本。該模型是快速原型法,以進化的開發方式為中心,在每個項目階段使用瀑布模型法。這種模型的每一個周期都包括需求定義、風險分析、工程實現和評審4個階段,
螺旋模型基本做法是在“瀑布模型”的每一個開發階段前引入一個非常嚴格的風險識別、風險分析和風險控制,它把軟體項目分解成一個個小項目。每個小項目都標識一個或多個主要風險,直到所有的主要風險因素都被確定。螺旋模型很大程度上是一種風險驅動的方法體系,因為在每個階段之前及經常發生的迴圈之前,都必須首先進行風險評估。在實踐中,螺旋法技術和流程變得更為簡單。在某個方案中如果某些風險不能排除,該方案立即終止,否則啟動下一個開發步驟。由於風險分析占很大部分,所以如果執行風險分析將大大影響項目的利潤,那麼進行風險分析毫無意義,因此,螺旋模型只適合於大規模軟體項目。螺旋模型的項目適用:對於新近開發,需求不明確的情況下,適合用螺旋模型進行開發,便於風險控制和需求變更。
下表是螺旋法能夠解決的各種問題:
| 問題 |
解決方案 |
| 使用者需求不夠充分 |
允許並鼓勵使用者反饋資訊 |
| 溝通不明 |
在項目早期就消除嚴重的曲解 |
| 剛性的體系 |
開發首先關注重要的業務和問題 |
| 主觀臆斷 |
通過測試和品質保證,作出客觀的評估 |
| 潛在的不一致 |
在項目早期就發現不一致問題 |
| 糟糕的測試和品質保證 |
從第一次迭代就開始測試 |
| 採用瀑布法開發 |
在早期就找出並關注風險 |
每輪迴圈包含如下六個步驟:
1. 確定目標,可選項,以及強制條件。
2. 識別並化解風險。
3. 評估可選項。
4. 開發並測試當前階段。
5. 規划下一階段。
6. 確定進入下一階段的方法步驟。