1. 程式人生 > >瀑布模型、迭代模型和敏捷開發

瀑布模型、迭代模型和敏捷開發

瀑布模型
  瀑布模型核心思想是按工序將問題化簡,將功能的實現與設計分開,便於分工協作,即採用結構化的分析與設計方法將邏輯實現與物理實現分開。將軟體生命週期劃分為制定計劃、需求分析、軟體設計、程式編寫、軟體測試和執行維護等六個基本活動,並且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。
  簡單的說就是先定好需求和相關文件,然後構建框架,然後寫程式碼,然後測試,最後釋出個產品

一旦文件需求確定,開發人員就按文件開發,直到產品開發完後,才會拿出來給客戶。不過這種方式基本不適應現今快速發展的市場現狀了。

迭代模型
迭代的方式就有所不同,假如這個產品要求6個月交貨,我在第一個月就會拿出一個產品來,當然,這個產品會很不完善,會有很多功能還沒有新增進去,bug很多,還不穩定,但客戶看了以後,會提出更詳細的修改意見,這樣,你就知道自己距離客戶的需求有多遠,我回家以後,再花一個月,在上個月所作的需求分析、框架設計、程式碼、測試等等的基礎上,進一步改進,又拿出一個更完善的產品來,給客戶看,讓他們提意見。

就這樣,我的產品在功能上、質量上都能夠逐漸逼近客戶的要求,不會出現我花了大量心血後,直到最後釋出之時才發現根本不是客戶要的東西的情況。

兩種方法的比較:

瀑布模型:假如我們對使用者的需求判斷的不是很準確時——這是很常見的問題,一點也不少見——你開發了幾個月甚至是幾年,當你把產品拿給客戶看時,可能與客戶原先想要的相差很遠。

迭代模型:相較瀑布較好,但也有自己的缺陷,那就是週期長、成本很高。適合大專案、高風險專案,比如是太空梭的控制系統時,迭代的成本比專案失敗的風險成本低得多,用這種方式明顯有優勢。

敏捷開發和迭代不是一回事

敏捷開發與迭代式開發是整體與區域性的關係。打個比方,前者就像地球,而後者像歐亞大陸。

敏捷開發是一個總體概念,而迭代式開發只是幾乎所有敏捷開發所採用的一個主要的基礎實踐。敏捷開發除迭代式開發外,還包含了其他許多管理與工程技術實踐,如演進式架構設計、敏捷建模、重構、自動迴歸測試(ART)等等。