《打造敏捷開發模式》第三章:什麼是瀑布開發

什麼是瀑布開發?

瀑布開發適用於按序線性開發的項目,尤其是有明確開發生命周期(SDLC)的項目,比如軟體工程、IT項目。我們可以用甘特圖來記錄每項任務的開始和結束。

瀑布開發過程分為7個階段,每當一個階段的任務完成後,研發團隊才會開始下一階段工作。瀑布開發如果在某個階段中出錯就必須回到規劃階段從頭再來,而不是返回上個階段。團隊在每次進入下階段前,可能都需要客戶對產品需求進行審查和批准。

瀑布開發的優點

瀑布所擁有的線性和剛性兩個特點,以及所用到深度開發文檔,使其適用於簡單且沒有變動的項目。

瀑布的優點包括:

· 易於使用和管理:由於瀑布開發在每個項目中都遵循相同的順序,因此易於使用。用瀑布開始項目前,團隊不需要任何知識預備或培訓。由於瀑布開發在每個階段都有指定的交付產品並對產品進行評審,因此易於管理和控制。

· 交付時間嚴格:瀑布開發有明確的項目起止時間,因此很容易和客戶、利益方分享並跟蹤項目進度。在開始研發前我們對產品需求、產品設計進行深入研究,幫助團隊減少錯過交付日的風險。

· 有詳細的文檔留底:瀑布要求每個階段都要有文檔記錄,從而更好地理解代碼和測試背後的邏輯。如果利益方想要詳細了解過程中的某個階段時,這些文檔也就派上用場了。

瀑布開發的缺點

瀑布最大缺點在於難以應對需求的改變。由於瀑布是一個線性開發模式,不能夠在相鄰兩階段內來回切換,即使出錯也不能退回上一階段, 只能一條路走到黑。瀑布有下面這些缺點:

· 不適應改變:當團隊完成某階段的所有任務後,由於是線性開發,也就意味著這個階段回不了頭了。當他們在測試階段才發現少了某個功能時,退回再修復需要付非常大的代價。

· 直到後期才交付軟體:項目必須要先進行前置的2到4個階段才會開始研發。等於相關者要到項目後期才能看到能交付的產品。

· 收集準確的要求可能是一個挑戰:瀑布開發的第一階段是由項目經理和客戶、利益相關方探討產品需求。在項目初期對產品做非常精準的定位本身就很難。甚至很多時候客戶不知道他們想要什麼,他們會隨著項目的開展才能慢慢了解。

瀑布開發的階段

瀑布開發有七個階段,都必須按序進行。例如,如果研發團隊正處於測試階段,他們不能回到需求階段。

01. 概念階段:這個階段需要提出一個想法。概念階段包括項目的粗略評估,為什麼它是有益的,和相應的產品預算。

02. 啟動階段:一旦想法落地,下一步我們需要找合適的項目團隊來執行,和他們確認產品目標、產品範圍、產品目的和最終交付的結果。

03. 需求收集階段:收集和分析需求並評估項目是否真的可行。所有這些信息都記錄在需求說明文檔中。

04. 產品設計階段:在這一階段研發團隊已經開始編寫代碼了。我們要對需求進行研究和評估,並準備設計系統。這時團隊的目標是要清楚要做什麼和產品雛形應該什麼樣。

05. 研發階段:真正開始研發寫代碼的階段,產品在設計階段所產出的流程圖或演算法在這階段都需要被翻譯為程序語言。

06. 測試階段:代碼完成後,需要測試軟體是否有任何錯誤。測試完成後,軟體將交付給客戶。有些團隊可能會選擇包含用戶驗收測試(UAT),用戶在將測試軟體部署到公眾之前對其進行測試。

07. 維護階段:一旦客戶在現實世界中使用該軟體,他們可能會發現其他問題。開發團隊需要解決,更改或修改軟體才能繼續有效。

迭代瀑布開發

傳統瀑布模型中,團隊這一理念貫穿項目的每個階段。例如,團隊一起對整個項目進行分析,然後一起為整個項目進行設計等。

在迭代瀑布模型中,仍然需要很多前期規劃。一旦計劃完成,團隊會遵循和傳統瀑布相同的模式,但會為用戶故事逐一做分析、設計和研發。

然後進行下一個用戶故事再重複這個過程。這個過程能夠有效的將任務進行分解,幫助研發團隊更好去執行。

瀑布如何處理軟體需求

瀑布開發開始項目前需要提前了解軟體的所有需求。所有的需求沒有收集齊時,整個項目就不會開始進入下一階段。

有些瀑布開發項目會有專門團隊去和客戶溝通,通過調查問卷、面談、電話、白板或建模工具來收集他們的需求。

一旦確定了最初的需求,團隊應該生成一個需求說明文檔(有時他們可能會創建多個)。本文檔向團隊傳達最終需要交付的內容,以便每個人都了解項目的範圍。

推薦內容

《打造敏捷開發模式》第一章:什麼是敏捷

《打造敏捷開發模式》第二章:什麼是Scrum

文章來源:smartsheet

由明道團隊編譯、整理

您可以點擊下方【成為敏捷開發大師】訂閱更多敏捷開發的資料,我們將定期向您郵箱推送相關文章、培訓資料和案例。

成為敏捷開發大師?

jinshuju.net圖標
推薦閱讀:

互聯網簡訊-20180820
互聯網簡訊-20180903
專訪Nono: 摹客設計系統的第一批體驗者
從豆瓣電影評分演算法說起,聊聊排名演算法
互聯網簡訊-20180829

TAG:敏捷開發 | 產品經理 | 項目管理 |