軟件開發行業有許多不一樣的方法 - 一些是舊方法的新方法,另外一些方法採用了相對較新的方法。該領域中最經常使用的兩種方法是敏捷,如Scrum,Kanban和Lean等,以及傳統的瀑布模型,如結構化方法或更新的RUP。canvas
大多數遵循這兩種模式的軟件公司都認爲他們選擇的方法在方面是優越的,因此在咱們回答這個問題以前,「哪個更成功?咱們應該看看它們的主要區別。架構
瀑布是軟件開發過程的線性方法。這些都表明了軟件開發的一個獨特階段,每一個階段一般在下一個階段開始以前完成。每一個開發階段之間一般也有一個里程碑。app
所以,瀑布模型保持只有在檢查並驗證其前一階段時才應移動到階段,以下圖所示:框架
例如:測試
在Royce的原始瀑布模型中,按順序遵循如下階段:優化
敏捷使用精益思想衍生出來,在信息技術環境中應用「精益」概念。精益方法的關鍵重點是:編碼
敏捷方法是通過驗證的項目管理方法,它鼓勵如下關鍵概念:spa
敏捷開發階段包括傳統規劃,分析需求,設計,編碼,測試和部署,但它們造成一個循環而不是一條線。這意味着流程靈活,可重複,能夠按任何順序和並行發生。這容許收集用戶反饋,針對不一樣環境的連續測試以及在運行時更改項目的範圍。.net
瀑布方法的最大優點是固定成本和可預測性。你知道價格,何時交付。其最重要的弱點是其缺少靈活性。敏捷方法很是靈活,能夠演變成與最初設想的產品大相徑庭的產品。設計
傳統的瀑布方法創建在時間,成本和範圍三重約束的基礎上。調整這些變量中的任何一個都會強制改變至少其中一個變量。交付成功的項目取決於平衡這三個競爭變量。但正如咱們所知,簡單地爲項目添加資源並不總能帶來預期的目標。事實上,若是在軟件項目的後期添加資源,它實際上會產生不利影響。
敏捷方法採用不一樣的方法,將三重約束顛倒過來。敏捷方法不是將範圍視爲一開始就是固定的,而是將時間(迭代)和成本(團隊成員)設置爲固定; 而後調整範圍以關注最高優先級。創建敏捷是由於指望範圍會隨着時間的推移而發展。目標是在預算成本和時間內知足客戶最重要的要求。隨着項目的進展,敏捷容許新的需求或從新肯定優先級。
Standish Group的最新報告涵蓋了他們在2013年至2017年間研究的項目。在這段時間內,敏捷和瀑布的成功,挑戰和失敗的總體突破以下所示,敏捷項目成功的可能性大約是後者的2倍,失敗的可能性下降1/3。
(來源:vitalitychicago.com - 比較瀑布和敏捷項目成功率)
自2001年「敏捷宣言」誕生以來,敏捷就有不少嗡嗡聲。事實上,敏捷方法只是一種思惟方式,可使團隊和組織進行創新,快速響應不斷變化的需求,同時下降風險。組織能夠靈活地使用許多可用的框架,如Scrum,看板,精益,XP等等。
精益組織瞭解客戶價值,並關注其關鍵流程以不斷提升客戶價值。最終目標是經過一個零浪費的完美價值創造過程爲客戶提供完美的價值。
5步精益方法
指導精益方法實施的五步思考過程很容易記住,但並不老是很容易實現:
Scrum是一種管理項目的敏捷方式,一般是軟件開發。使用Scrum進行敏捷軟件開發一般被視爲一種方法論; 但不是將Scrum視爲方法論,而是將其視爲管理流程的框架。
看板是日本的「視覺信號」或「卡片」。豐田線路工人使用看板來表示製造過程當中的步驟。做爲精益的一部分,該系統的高度視覺性使得團隊能夠更輕鬆地溝通須要完成的工做和什麼時候完成。它還標準化了線索和精煉過程,有助於減小浪費和最大化價值。與scrum sprint board相似,看板跟蹤「作 - 作 - 完成」活動,但它限制了「正在進行的」活動的數量(該數量由團隊經理定義,不能超過)。
有四個基本的看板原則:
初學者的其餘Scrum指南