瀑布模型
瀑布模型核心思想是按工序將問題化簡,將功能的實現與設計分開,便於分工協作,即採用結構化的分析與設計方法將邏輯實現與物理實現分開。將軟體生命周期劃分為制定計畫、需求分析、軟體設計、程式編寫、軟體測試和運行維護等六個基本活動,並且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。
從本質來講,它是一個軟體開發架構,開發過程是通過一系列階段順序展開的,從系統需求分析開始直到產品發布和維護,每個階段都會產生循環反饋,因此,如果有信息未被覆蓋或者發現了問題,那么最好 “返回”上一個階段並進行適當的修改,開發進程從一個階段“流動”到下一個階段,這也是瀑布開發名稱的由來。
瀑布模型是最早出現的軟體開發模型,在軟體工程中占有重要的地位,它提供了軟體開發的基本框架。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應完成的內容給出該項活動的工作成果,並作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續下一項活動;否則返回前面,甚至更前面的活動。對於經常變化的項目而言,瀑布模型毫無價值
演化模型
演化模型是一種全局的軟體(或產品)生存周期模型。屬於疊代開發風範。
該模型可以表示為:第一次疊代(需求->設計->實現->測試->集成)->反饋->第二次疊代(需求->設計->實現->測試->集成)->反饋->……
即根據用戶的基本需求,通過快速分析構造出該軟體的一個初始可運行版本,這個初始的軟體通常稱之為原型,然後根據用戶在使用原型的過程中提出的意見和建議對原型進行改進,獲得原型的新版本。重複這一過程,最終可得到令用戶滿意的軟體產品。採用演化模型的開發過程,實際上就是從初始的原型逐步演化成最終軟體產品的過程。演化模型特別適用於對軟體需求缺乏準確認識的情況。
螺旋模型
螺旋模型將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特別適合於大型複雜的系統。
螺旋模型沿著螺線進行若干次疊代,圖中的四個象限代表了以下活動:
(1)制定計畫:確定軟體目標,選定實施方案,弄清項目開發的限制條件;
(2)風險分析:分析評估所選方案,考慮如何識別和消除風險;
(3)實施工程:實施軟體開發和驗證;
(4)客戶評估:評價開發工作,提出修正建議,制定下一步計畫。
螺旋模型由風險驅動,強調可選方案和約束條件從而支持軟體的重用,有助於將軟體質量作為特殊目標融入產品開發之中。
限制條件
但是,螺旋模型也有一定的限制條件,具體如下:
(1)螺旋模型強調風險分析,但要求許多客戶接受和相信這種分析,並做出相關反應是不容易的,因此,這種模型往往適應於內部的大規模軟體開發。
(2)如果執行風險分析將大大影響項目的利潤,那么進行風險分析毫無意義,因此,螺旋模型只適合於大規模軟體項目。
(3)軟體開發人員應該擅長尋找可能的風險,準確地分析風險,否則將會帶來更大的風險
一個階段首先是確定該階段的目標,完成這些目標的選擇方案及其約束條件,然後從風險角度分析方案的開發策略,努力排除各種潛在的風險,有時需要通過建造原型來完成。如果某些風險不能排除,該方案立即終止,否則啟動下一個開發步驟。最後,評價該階段的結果,並設計下一個階段。
螺旋模型的缺點:
很難讓用戶確信這種演化方法的結果是可以控制的.
噴泉模型
噴泉模型是一種以用戶需求為動力,以對象為驅動的模型,主要用於採用對象技術的軟體開發項目。該模型認為軟體開發過程自下而上周期的各階段是相互疊代和無間隙的特性。軟體的某個部分常常被重複工作多次,相關對象在每次疊代中隨之加入漸進的軟體成分。無間隙指在各項活動之間無明顯邊界,如分析和設計活動之間沒有明顯的界限,由於對象概念的引入,表達分析、設計、實現等活動只用對象類和關係,從而可以較為容易地實現活動的疊代和無間隙,使其開發自然地包括復用。
噴泉模型不像瀑布模型那樣,需要分析活動結束後才開始設計活動,設計活動結束後才開始編碼活動。該模型的各個階段沒有明顯的界限,開發人員可以同步進行開發。其優點是可以提高軟體項目開發效率,節省開發時間,適應於面向對象的軟體開發過程。由於噴泉模型在各個開發階段是重疊的,因此在開發過程中需要大量的開發人員,因此不利於項目的管理。此外這種模型要求嚴格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況。