上篇分析了我作過的一個真實的項目的研發過程當中的種種問題,那麼這篇就來說解一下咱們如何針對這些問題作敏捷改造。git
小瀑布模式的缺點在於它的溝通成本、等待成本、返工成本依然很高,所以咱們能夠考慮從這3個角度出發去作改進。後端
我畫了一個圖來展現小瀑布模式和敏捷開發的詳細對比。工具
圖中紫色管道是小瀑布模式,藍色管道是敏捷開發,兩個管道是相同的團隊管道容量,換句話說,兩種模式的工做載量是相等的。單元測試
橫向是時間線,從左到右,按需求提出開始直到此需求上線,即爲此需求的生命週期。測試
首先,先說一下爲何這3個成本很高。spa
溝通成本設計
產品經理一般須要1-2小時來與業務方進行需求溝通,溝通完了以後,產品經理會有一個初步方案,而後會與團隊內部的技術人員,測試人員等,一塊兒評審這個需求,若是這中間有任何疑問,產品經理就須要不停的反覆在業務方與技術人員中間進行溝通。所以溝通成本是比較高的。生命週期
產品經理一般也須要1-2小時來與技術人員一塊兒作技術評審,時間比較長,不少問題細節須要來回反覆確認,溝通成本很高。資源
總結一下就是,因爲需求粒度比較大,每一個環節都比較重,有大量的細節須要討論和確認,所以帶來了較高的溝通成本。開發
等待成本
開發只有等產品文檔徹底設計好了,才能開始開發,因爲需求粒度過大,此設計過程相對過長,所以開發的等待時間也長,沒有充分利用開發資源。
同理,測試也是,只有等開發提測了才能作測試。但測試在此以前,會先寫測試用例,所以測試資源浪費還算較小。
但另一個問題是,測試一次性要寫很是多的用例測試,一次性測那麼多用例,測試的完整性徹底依賴於測試人員的耐心。
返工成本
測試若是發現問題,會讓開發返工,因爲需求粒度比較大,常常出現測試發現多個問題的狀況,那麼就會來回的屢次返工與測試。
甚至有時候返工會直接返到業務方去從新確認需求的細節。
那麼敏捷是如何改進這個過程的呢?
首先敏捷是提倡小步快跑,擁抱變化。目前因爲需求粒度比較大,沒法小步快跑,同時開發到中間的時候的,需求忽然變化,應對起來也比較慢。
那咱們就能夠根據下圖來進行改造。
上圖中最大的變化就是把原來的需求A拆解成了3個story。
敏捷提倡小步快跑,那麼管理需求也同樣,只有需求足夠小,才更利於咱們快速理解和分析。而user story(用戶故事)則是敏捷裏面的一個能夠工做的最小單位。
用戶故事在軟件開發過程當中被做爲描述需求的一種表達形式;爲了規範用戶故事的表達,便於溝通;包含角色、活動、價值三個要素。
瀑布式的需求管理和敏捷需求管理的區別在於:
拆解成小的用戶故事以後有以下一些好處:
從下圖就能夠看出,每一個環節相比以前都是提早的。敏捷的目的是可以讓團隊擁抱變化,快速響應。
原來的分支管理比較混亂,可能形成的問題已經在前面分析過了。
這裏就說說分支管理的最佳實踐是什麼。
每次git的commit message的推薦格式:Card ID: message
每完成一張故事卡,理論上均可以持續部署到生產環境。而不該該等待全部需求都完成了,或者等先後端都完成了,再作上線部署。
圖裏的敏捷開發必定比上面的小瀑布快嗎?不必定,這裏還有幾個因素是須要考慮的。
總結起來,敏捷是經過小步快跑的方式,提高了響應變化的速度,以達到提高總體交付速度與質量的目的。
本文只是經過一個真實的客戶案例,來分析如何基於當前現狀作敏捷改造,本文並無寫徹底部敏捷改造的內容,由於敏捷包含的內容實在太多了,若是你們感興趣能夠給我留言,後面我會繼續分享這個案例中涉及到的其餘敏捷改造。