瀑布模型的核心思想是按照流程簡化問題,將功能的實現和設計分開,便於分工合作,即采用結構化的分析和設計方法
將邏輯實現與物理實現分開。軟件生命周期分為六個基本活動:規劃、需求分析、軟件設計、編程、軟件測試和運維。
也為它們提供了壹個固定的順序,從上到下連接起來,就像瀑布壹樣,壹步壹步落下。
瀑布模型有以下優點。
1)為項目提供了壹個按階段劃分的檢查點。
2)當前階段完成後,妳只需要關註後面的階段。
3)在叠代模型中,每次叠代都非常類似於壹個小瀑布模型。
瀑布模型采用增量叠代。每次叠代都會產生壹個可運行的版本,同時添加更多的函數。每個叠代都必須進行質量和集成測試。
4)它提供了壹個模板,使得分析、設計、編碼和測試在這個模板下有相同的指導。
瀑布模型有以下缺點。
1)每個階段的劃分是完全固定的,階段之間產生大量的文檔,大大增加了工作量。
2)由於開發模型是線性的,用戶直到整個過程結束才能看到開發結果,增加了開發風險。
3)通過過多的強制性完成日期和裏程碑來跟蹤每個項目階段。
4)瀑布模型的突出缺點是不能適應用戶需求的變化。
叠代包括產生產品發布(穩定且可用的產品版本)的所有開發活動,以及使用該發布所必需的所有其他外圍元素。
在某種程度上,壹次叠代是壹個完整的過程,它經歷了所有的工作流:計劃、需求分析、設計、編碼和測試。
發布流程。本質上類似於壹個小瀑布項目。每壹次叠代都會產生壹個可以發布的產品,它是最終產品的子集。
優勢
與傳統的瀑布模型相比,叠代過程具有以下優點:
1)以增量的方式降低開發風險。如果壹個叠代之後的軟件沒有達到客戶的要求,那麽損失的只是這個開發很差的叠代的成本。
2)降低了產品不能按照既定進度進入市場的風險。通過在開發的早期識別風險,妳可以盡早解決它們,而不是在開發的後期倉促行事。
3)加快了整個開發工作的進度。因為開發人員知道問題的重點,所以他們的工作效率會更高。
4)由於用戶的需求在壹開始無法完全定義,通常會在後續階段細化。因此,這種叠代過程的模型更容易適應需求的變化。
劣勢
對產品人員的節奏控制能力(制定周目標、分析需求優先級、處理臨時需求)有很高的要求,否則很容易在周發布日陷入加班和死亡的節奏。
我接觸過幾家互聯網創業公司,發現在快速叠代上有壹個明顯的誤區:就是只關註產品功能層面的快速叠代,而忽略了系統架構層面的快速叠代。
結果就是在系統後端架構還很亂的時候,甚至沒有後端架構的時候,產品上已經堆了壹堆功能。
這相當於蓋樓在地面上有壹個傾斜的基礎。建得越高,越危險。當妳發現妳的後端系統得了絕癥,需要改造的時候,妳發現它已經運行了各種功能,而且很難再恢復。
不關註後端架構的叠代是壹個常見的問題,原因不外乎:
1)初期產品用戶少,性能不是主要瓶頸。
2)團隊沒有優秀的架構師,優化不夠。
3)後端架構優化是壹個緩慢的工作,無法像產品功能層面的叠代那樣快速感知,對於強產品驅動而非技術驅動的公司也不夠重視。
4)後端架構優化是壹項精細的工作,不像產品功能那樣有明顯的“輸出”。對於不懂技術,不懂以KPI為導向的企業文化的領導,員工優化後端的意願並不強烈。
5)產品交付進度壓力比較大,沒有時間考慮架構的優化,精力都集中在如何實現功能上。
下圖顯示了每個叠代的產品外觀。隨著叠代次數的增加,產品的功能越來越豐富。因為每次叠代都是根據用戶反饋調整需求,所以最終的產品也必須對用戶需求負責。