敏捷開發已在國內大多數的企業成功推行,它包括了管理實踐和技術實踐,但在很多公司,對於敏捷開發的衡量標准和活動的執行的標准仍有爭議,有人說敏捷不需要流程,敏捷沒有質量評價標准,敏捷只關注進度......這些觀點均存在於各大公司的開發團隊中,那么,跟CMMI一樣,敏捷有沒有度量的標准呢?
根據共創力公司的咨詢與培訓的案例,結合業務著名的通信公司華為的實踐,我們把敏捷分為五個層次:-1(阻礙)、0(中立)、1(協作)、2(操作)、3(適應)。
-
-1阻礙:當前的過程限制了敏捷的實行
-
0中立:既不阻礙也不有利於敏捷軟件開發
-
1協作:具備實施敏捷軟件開發的基礎
-
2操作:通過對相關技術的掌握和相應的紀律支持了敏捷軟件開發的持續實施
-
3適應:當前團隊的過程已經足夠成熟,能夠良好地響應變化
對於敏捷成熟度的評估主要從以下幾個方面衡量:
管理實踐方面:需求管理、團隊文化、迭代管理 ;
技術實踐方面:軟件構建、測試、簡單設計;
上圖是一個敏捷的評估模型,針對每一個評估項有如下的問題可以對標:
1)需求管理:
1、需求是怎么獲取的?
2、需求如何跟蹤?優先級是如何確定的?優先級在整個版本開發過程中會有什么樣的變化?有哪些因素會導致優先級變化?
3、 需求變更是怎么進行的?會有哪些人參與?
4、需求實現人員與需求提出人員之間是如何交流的?交流頻率是什么樣的?
5. 誰來定義驗收條件?誰做驗收測試?什么時候做?
6、需求估計什么時候做?誰會參與估計?
7、用的什么需求管理工具?
8、當需求需要進行澄清時,怎么辦?
2)團隊協作:
1、版本的人員間信息獲取渠道有哪些?不同角色之間的信息需求是如何滿足的?
2、開發人員是否結對?怎樣結對?在什么情況下結對?一般結對時間有多長?
3、是否交換結對?多長時間一次?
4、團隊成員如何認領任務?
5、在文檔權限、代碼權限上,不同的角色是不是有區別?
6、to PM: 哪個人的突然離開會造成項目損害?為什么?你如何應對?
7、項目狀態是否大家都清楚?
8、是不是有規律的做迭代回顧?回顧中討論什么事情?討論結果如何處理?
9、在哪里/通過何種形式可以找到項目相關的信息和知識?
10、當你解決了一個技術問題,你如何與他人分享你的經驗?
11、知識共享有沒有建立?
12、面對面交流是否頻繁 ?
13、新員工進入團隊如何獲得幫助?
14、團隊內部以及團隊與外部的交流會議是否例行?
15、開發人員通過評審代碼的方式,是否能達到質量保證和知識傳遞的目的?
16、開發人員是否只了解自己的工作?
17、配置庫的權限如何分配?是不是都有權限訪問?
3)迭代管理
1、計划的精細程度?整個項目只有一個計划,還是每個迭代都有計划?
2、計划有多長?幾個月,還是幾個星期?
3、在項目進行中發現業務重心發生轉移,如何應對?
4、交付是否分為若干次發布?
5、迭代計划誰來參與制定,根據什么制定?
6、每個迭代多長?周期固定么?
7、項目狀態報告如何獲取?
8、如何更新進度?你如何了解項目進度?
9、迭代是否交付可工作的軟件,是否交付價值?
10、團隊成員是否熟悉迭代流程和Story流程?
11、迭代中的Story能否獨立測試?
12、是否有有效的可視化管理手段?
13、團隊成員是否有迭代的意識?
14、是否有風險管理機制?
15、如何處理需求變更?
4)軟件構建
1 成功構建的標准是什么?
2 構建是自動化的嗎?每個人的構建過程是一致的嗎?
3 構建的頻率是多少?每次構建的大概時間是多少?
4 使用什么樣的版本管理工具?
5 配置管理工具是否支持原子提交?
6 每日構建結果報告怎么通知?
7、提交沖突如何解決?
8、開發人員一般多長時間提交一次代碼?
9、開發人員每天check in 代碼有沒有什么規則?
10、CI搭建在什么機器上,是不是有專人維護CI環境?持續集成的硬件資源環境是否充足?
11、CI需要執行哪些測試?
12、是否有嚴格的持續集成紀律?
13、如果有本地構建的話,本地構建包含哪些內容,時間大概多長?
14、CI構建的輸出報告有哪些內容,是否有人關注?
15、自動化測試成功比率?自動化測試用例數量?
5)測試
1、當前的開發過程中,開發和測試人員主要開展哪些工作?之間是如何配合的?
2、當前版本的測試活動主要有哪些?分別涵蓋哪些內容,由誰進行?每類測試活動的周期比例(重點關注story測試、迭代驗收測試、系統驗收測試等)
3、版本的測試策略與計划是如何制定的?都包含哪些內容?
4、測試用例是否能繼承,繼承后的修改量是否巨大?
5、測試能夠做到自動化嗎?哪些測試能自動化?
6、測試活動在整個版本中人力是怎么一個分布趨勢?測試E2E效率如何?(代碼行/測試人天)
7、開發人員是否寫測試?寫哪些測試?
8、測試能夠穩定的重復執行么?
9、隨着項目演進,大家積極維護重構測試嗎?
10、什么時候寫測試?哪些角色寫測試?
11、有回歸測試包嗎?其中包含了哪些測試?
12、使用什么工具來跟蹤bug?
13、開發和測試人員怎樣合作重現並修復bug?
14、什么時候寫單元測試?單元測試覆蓋率是多少?是不是所有人都寫單元測試?是否有單元測試培訓?
15、開發和測試是否結對ST,怎么做測試?
16、測試環境是不是共享?
17、開發者測試、story測試、迭代測試等分別使用什么工具來跟蹤bug?各階段測試bug分布比例?
6)簡單設計
1、設計文檔包括哪些文檔?
2、設計文檔怎么寫出來的?哪些人參與?
3、那個文檔對開發的指導性較強?怎么指導開發?
4、會不會出現后面設計變動較大的情況?
5、設計需要更改的時候怎么處理?描述一下場景
6、什么時候進行重構?重構的頻率是什么樣子的?
7、重構有哪些具體實踐?是否代碼優化?
8、如何保證重構的正確性?
9、描述一下重構是怎么做的
10、什么工具輔助重構?
11、接口、數據結構的演進怎么做的?
12、架構如何演進,是SE決定還是與大家討論?