什么是瀑布模型
又稱作為是傳統模型。嚴格按照需求->分析->設計->開發->測試的階段進行,每個階段執行時都會進行必要的約束保證質量,並有明確的文檔產出。驗收完成后才可進入到下一個階段。
瀑布模型核心思想是按工序將問題化簡,將功能的實現與設計分開,便於分工協作,即采用結構化的分析與設計方法將邏輯實現與物理實現分開。將軟件生命周期划分為制定計划、需求分析、軟件設計、程序編寫、軟件測試和運行維護等六個基本活動,並且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。
從本質來講,它是一個軟件開發架構,開發過程是通過一系列階段順序展開的,從系統需求分析開始直到產品發布和維護,每個階段都會產生循環反饋,因此,如果有信息未被覆蓋或者發現了問題,那么最好 “返回”上一個階段並進行適當的修改,開發進程從一個階段“流動”到下一個階段,這也是瀑布開發名稱的由來。
瀑布模型是最早出現的軟件開發模型,在軟件工程中占有重要的地位,它提供了軟件開發的基本框架。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應完成的內容給出該項活動的工作成果,並作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續下一項活動;否則返回前面,甚至更前面的活動。對於經常變化的項目而言,瀑布模型毫無價值
瀑布型生命周期主要階段
瀑布型生命周期的典型六個階段
1、問題的定義及規划
此階段是軟件開發方與需求方共同討論,主要確定軟件的開發目標及其可行性。
2、需求分析
在確定軟件開發可行的情況下,對軟件需要實現的各個功能進行詳細分析。需求分析階段是一個很重要的階段,這一階段做得好,將為整個軟件開發項目的成功打下良好的基礎。"唯一不變的是變化本身。",同樣需求也是在整個軟件開發過程中不斷變化和深入的,因此我們必須制定需求變更計划來應付這種變化,以保護整個項目的順利進行。
3、軟件設計
此階段主要根據需求分析的結果,對整個軟件系統進行設計,如系統框架設計,數據庫設計等等。軟件設計一般分為總體設計和詳細設計。好的軟件設計將為軟件程序編寫打下良好的基礎。
4、程序編碼
此階段是將軟件設計的結果轉換成計算機可運行的程序代碼。在程序編碼中必須要制定統一,符合標准的編寫規范。以保證程序的可讀性,易維護性,提高程序的運行效率。
5、軟件測試
在軟件設計完成后要經過嚴密的測試,以發現軟件在整個設計過程中存在的問題並加以糾正。整個測試過程分單元測試、組裝測試以及系統測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計划並嚴格按照測試計划進行測試,以減少測試的隨意性。
6、運行維護
軟件維護是軟件生命周期中持續時間最長的階段。在軟件開發完成並投入使用后,由於多方面的原因,軟件不能繼續適應用戶的要求。要延續軟件的使用壽命,就必須對軟件進行維護。軟件的維護包括糾錯性維護和改進性維護兩個方面。

改進的瀑布模型
對於項目需求繁雜或者實現方案比較復雜時,可以將需求進行拆分,按模塊/功能並行開發,全部完成后再集成處理,每個模塊仍然遵循瀑布模型的思路,即為改進的瀑布模型。
優缺點
優點:
- 為項目提供按階段划分的檢查點
- 當前一階段完成后,你只需要關注后一階段
- 軟件產品質量較高;
- 前置發現產品缺陷;
- 提供一個模板,這個模板使得分析,設計,編碼,測試和支持的方法可以在該模板下有一個共同的指導
- 項目把控能力強;
- 項目擴展性和可維護性強;
- 責任划分明確。
- 可在迭代模型中應用瀑布模型
缺點:
- 若需求復雜,人員能力要求較高;
- 各個階段的划分完全固定,階段之間產生大量的文檔,極大地增加了工作量。
- 由於開發模型是線性的,用戶只有等到整個過程的末期才能見到開發成果,從而增加了開發風險。
- 投入人力集中,造成過多的閑置;
- 用戶在系統穩定后介入,可能會出現與預想不符的情況;
- 每個階段相對獨立,信息不能及時同步;
- 通過過多的強制完成日期和里程碑來跟蹤各個項目階段。
- 項目風險延到后期開發階段才能發現
- 瀑布模型的突出缺點是不適應用戶需求的變化。。
結語
瀑布模型為軟件開發和維護提供了一種有效的管理模式,根據這一模式制定開發計划,進行成本預算,組織開發力量,以項目的階段評審和文檔控制為手段有效地對整個開發過程進行指導,所以它是以文檔作為驅動、適合於軟件需求很明確的軟件項目的模型。
瀑布模型假設,一個待開發的系統需求是完整的、簡明的、一致的,而且可以先於設計和實現完成之前產生。瀑布模型的優點是,容易理解,管理成本低;強調開發的階段性早起計划及需求調查和產品測試。不足之處是,客戶必須能夠完整、正確和清晰地表達他們的需求;在開始的兩個或三個階段中,很難評估真正的進度狀態;當接近項目結束時,出現了大量的集成和測試工作;直到項目結束之前,都不能演示系統。在瀑布模型中,需求或設計中的錯誤往往只有到了項目后期才能夠被發現,對於項目風險的控制能力較弱,從而導致項目常常延期完成,開發費用超出預算。
瀑布模型假設,一個待開發的系統需求是完整的、簡明的、一致的,而且可以先於設計和實現完成之前產生。瀑布模型的優點是,容易理解,管理成本低;強調開發的階段性早起計划及需求調查和產品測試。不足之處是,客戶必須能夠完整、正確和清晰地表達他們的需求;在開始的兩個或三個階段中,很難評估真正的進度狀態;當接近項目結束時,出現了大量的集成和測試工作;直到項目結束之前,都不能演示系統。在瀑布模型中,需求或設計中的錯誤往往只有到了項目后期才能夠被發現,對於項目風險的控制能力較弱,從而導致項目常常延期完成,開發費用超出預算。