敏捷開發和瀑布開發的區別

2021-10-09 15:12:57 字數 2828 閱讀 1286

最近和朋友談起敏捷開發和瀑布開發模式,很多人認為敏捷開發是未來的專案實施的趨勢,瀑布實施太老土已經過時了。另外確實一些跨國企業如索尼,聯想也在使用敏捷的方式實施一些專案。但實際上我們看到絕大多數公司還是依然在採用瀑布的方式實施專案。我之前參與過敏捷開發的專案,但當時比較「年輕」,認識不是很深刻,於是最近又補習了下和大家一起分享下我對敏捷和瀑布的感悟。

在敏捷看來,很多情況下面,我們都無法去了解到全部的內容,或者即使是了解到,我們也不能保證這些內容是不會變化的。所以先根據主路徑,完成主要功能後,我們再通過不斷地迭代,去完善我們的工作,這樣當我們產生變化的時候,我們推翻的工作量也是少量的,可以很快的去完成新的需求變更。通過這樣的不斷地變更、重構,我們可以獲得乙個相對客戶滿意的產品。

對於瀑布的開發模型來看,似乎依然具備很可靠的工作邏輯,乙個工程或專案分為多個階段,每乙個階段都投入相應的資源,來完成本階段的工作。每乙個階段到下乙個階段,都有明確的輸入輸出產物,不同的階段根據自己所需的輸入,進行工作活動之後,產生自己階段的產出,投入到下乙個階段的工作中。如果不放心的話,每乙個階段還可以增加乙個審批環節,讓每乙個環節都可以經過可靠的審批之後,再投入到下乙個環節當中。

很多支援敏捷的同學會說瀑布缺乏與業務的溝通和迭代次數,所以如果在專案的後期才發現要更改需求的話,則專案可能會失敗或需要重新啟動。這張圖好像也解釋了瀑布開發經常所面臨的困境。

在高舉效率與擁抱變化的大旗之下,似乎敏捷模式,就是最好的開發模式。與之相比的是瀑布模式,在這樣的呼喊之中,顯得有些無法跟得上步伐,體現的是陳舊、死板的。

敏捷本身不是專案管理框架,也不是「方**」。它是一套與產品開發相關的原則和價值,特別是網際網路產品經常會採用敏捷的方法來進行開發。但是,有一些基於敏捷原則的方法,這些方法是產品開發方法,而不是專案管理框架。

說到需求變更,瀑布也可以走需求變更,提變更申請,按照環節一步一步走,去規劃工作量。雖然比敏捷是要慢一些,但是我整個流程是可靠的!為什麼就說瀑布是死板的,不符合時代的呢?

似乎瀑布的做法也沒有錯誤,我們何不按照這樣的步驟,來完成我們的工作呢?這樣的過程聽起來是如此的可靠。看,我有明確的階段;看,我有明確的審批;看,我有明確的變更流程。以瀑布模式進行開發的專案有這麼多,已經證明了這是乙個有效的實施方法,難道不是麼?

另外被敏捷所詬病的瀑布專案經常失敗通常是發生了非常嚴重的錯誤情況下才會產生。實際上只有在對專案的控制很差的情況下才會發生這種情況。瀑布型專案沒有迭代和使用者的多次反饋也是不正確的 - 很多專案可以通過產品原型圖的方式和業務部門確認操作的流程,只是很多專案中並沒有使用這種方法。

敏捷模式,兩周乙個迭代,每個迭代都能進行一定功能模組的交付,讓使用者更早的看到交付物,雖然只有部分,也可以讓使用者來提出自己的看法,產生變更的時候,開發人員也可以在下個迭代中進行修改,讓使用者進行再次的確認。

看來,兩者的碰撞就是在交付的及時性上與面對變更的成本上,所看到有極大的變化。瀑布在交付階段比較靠後,交付的模組比較完整,在面對變更的時候,變更影響範圍就比較大,變更的成本就極大。問題發現的階段越靠後,解決問題所需要付出的成本就更高。這樣,就體現出來了敏捷對瀑布在這樣的情景下面的優勢。

時間和成本,看起來就是敏捷和瀑布在選擇時主要考慮的兩個方面。未來能更好的指導未來的選擇,下面還列出了更詳細的敏捷和瀑布的優劣勢。

開發的階段性成果會在開發過程中盡早的進行審查,專案的風險會降低;

適用於需求不明確情況,因為需求不明確,所以需要在不斷迭代的過程中來逐步理清需求。

靈活性較高,幾乎可以在任何時間進行需求變更;

敏捷鼓勵開發人員與業務使用者之間進行多頻次的溝通,業務使用者的不合理需求以及開發人員的錯誤理解都會在這些頻繁的溝通中進行不斷審查和更新,

敏捷的協作通常要高得多,通常能開發出更高質量的產品;

適用於快速變化的專案,特別是面向前端業務人員的crm專案更容易根據業務的變化而變化。

敏捷的概念接受度還不算太高,初次嘗試可能不會非常成功;

最終交付的內容無法**,預期和實際完成的內容經常會有很大差異;

敏捷需要高水平的協作以及開發人員和使用者之間的定期溝通。 業務和it人員在溝通前需要做大量的準備工作,但很多情況下業務的溝通時間無法保證;

當存在乙方**商的情況,敏捷會面臨更大的挑戰性。 客戶通常希望盡早了解他們的專案投入。 預估專案時間和成本難度較高;

在敏捷專案中,最大的問題可能是業務部門永遠不希望有最終的截止時間。

在管理良好的專案中,瀑布可以在早期提供交付的信心;

專案團隊成員不需要在同一地點頻繁溝通;

在需要大量的設計或分析的情況下瀑布是一種更合適的方法;

如果在基本產品開發之外存在許多介面和依賴關係,瀑布式專案會使用工具來建模和管理這些介面和依賴關係。

許多企業和業務人員確實不容易在前期定義清楚需求,早期計畫中所依據的假設需求可能存在很大風險;

溝通的風險要高得多 - 特別是很多專案都是前期單向的溝通,後期專案和業務人員的預期差別很大;

瀑布專案的風險一般都很高,因為基於無效假設基礎上的需求可能會讓專案無限度擴大。 所以你會看到很多瀑布專案都出現成本超出預算或延遲的情況。

敏捷和瀑布的實施方法差別還是很大的,瀑布幾乎可以應用於任何型別的專案,尤其是大型的專案。

敏捷方法今年來越來越受歡迎,尤其是當前saas軟體當道,特別像salesforce這樣自帶開發平台的saas產品可以非常容易的搭建初始原型並進行快速迭代,所以我們才會看到有越來越多的企業採用敏捷的方式來進行專案實施。總的來說敏捷並不能完全替代瀑布,它只是給了我們另外一種好的選擇。

敏捷開發和瀑布開發的區別

個人覺得 敏捷開發強調以人為中心,快速迭代,客戶參與多溝通,減少不必要的文件,包括scrum和xp 優點 快速適應變化,做出的專案比較接近客戶需要的 缺點 文件不多,如果人員流動大,維護相對更難 瀑布開發強調文件,就是不同階段按照順序自上而下而來,如需求 設計 編碼 測試 單元測試 系統測試 維護,...

瀑布式開發和敏捷開發區別

敏捷開發,首先把客戶最關注的軟體原型先做出來,交付或者上線,在實際場景中去修改彌補需求中的不足,快速修改,再次發布版本。再次上線或者交付。通過一些敏捷實踐方式,細化story,可以提供更小的迭代。如此迴圈,直到使用者 客戶 滿意。適用於需求不明確的專案 創新性的專案或者需要搶占市場的專案。瀑布式開發...

敏捷開發和瀑布開發的混搭

現在這家公司的開發流程很奇怪,和以前的公司很不一樣 一 首先拿到乙個客戶需求,這個客戶需求 or 可能就只有一句話 做 x運維成本太高了,管理也很混亂,能不能給做個管理系統給控制一下 由於這個客戶很重要,所以雖然需求很不明確,連系統該做成啥樣都不知道,但是領導還是決定要做。於是專案組就啟動了。這個時...