敏捷開發的一些東西
提升團隊的交付能力?如何實踐敏捷軟體開發。這個是很多團隊必須面對的問題,也是讓專案經理比較頭疼的問題。如果一個專案不能有一個很好的交付,那麼專案就是失敗的。
下面是一個關於對於提升團隊交付能力的一些實踐建議或者準則。
這些準則是百度的路寧老師總結,非常感謝路寧老師在百度開發者大會上的分享。
一,制定基於交付物的增量交付計劃
上圖是路寧老師在演講中用到軟軟體編碼過程的迭代過程,橫軸代表個時間段,每一個代表一週時間,縱軸是代表同一時間正在進行的工作狀態。
迭代式模型和瀑布模型的比較:迭代模型,在每一次迭代都會算作一次小的交付,而瀑布式一次上線。靈活性和成功的機率可以明顯的看出來。
第二點:組成全功能團隊,拋棄內部合同,MRD評審,批量提需求。
這個過程包括:idea產生 -〉預估專案,對需求排優先順序 -〉 分析 、驗收條件 -〉 迭代啟動會 -〉需求牆 -〉故事啟動 -〉 開發 -〉mini驗收 -〉測試,fix bug -〉show case -〉上線。在這個過程中團隊成員要合理組合,不同的階段組合可能不同。
第三點:建立圍繞交付物的合作流程。
敏捷開發社群對交付物完成的定義是: Done, Done!客戶滿意,上線成功。
第四:制定需求完成和迭代完成的標準
可能會遇到這樣的問題:各個開發角色間相互等待,總有幾個人容易成為瓶頸。
一個人負責一個模組:如果有一個人離職或者請假,專案就無法繼續進行,會造成等待狀態,使專案無法按時交付。
所有人都可以做任何部分:這樣的好處是造成相互等待的情況減少。
提高單兵作戰能力,培養所有人可做所有部分。
第五:善用雲基礎服務
重複搭建和維護千篇一律的各種平臺:專案管理平臺,bug跟蹤平臺,應用部署平臺,持續整合平臺,版本管理工具。
Project Hosting(git hub)
App Engine(EC2, GAE, Heroku, BAE)
CI Cloud (Travis CI)
Testing Cloud(MTC)
第六:持續整合
後期整合耗時且風險大
由於每次整合消耗大,無法頻繁釋出。
Jenkins, Team
City, go, pulse, Travis CI, BAMBOO ,cruise
第七:自動化驗收測試
se
第九,應用single branch分支管理策略
每一個功能一個分支,學習開源專案的分支管理策略。
第十:資料庫的版本控制,建立獨立的沙盒
dbdeploy.com