CMMI與敏捷是相互對立還是互相融合?


CMMI是一個成熟度模型,敏捷是方法論。兩者不能直接對比。敏捷來源於精益(Lean)思想。精益思想和CMMI都是來源於假說(Assumption),這兩者可以對比(見後面的解釋)。敏捷自2001年發展至今也有一些基於精益和敏捷實踐的成熟度模型(AMM)和組織轉型框架,例如:http://aaladdin.com

CMMI Assumption

A system is best managed by disaggregating it into identifiable work products that are transformed from an input to an output state to achieve specific goals.

A mature organization is one in which everything is carefully planned and then controlled to meet the plan.

Lean Assumption

A mature organization looks at the whole system; it does not focus on optimizing disaggregated parts.

A mature organization focuses on learning effectively and empowers the people who do the work to make decisions.

補充一些敏捷和CMMI的對比:

-都是優秀管理和工程實踐的結合。

-都是管理框架

-都是以持續完善組織,產出優質軟體為目的

-CMMI以完善流程為主要手段,敏捷完善個人,改善文化為主要手段

-CMMI以管理,流程為本,敏捷以人為本

-CMMI實施,執行及其不靈活,難度大;敏捷輕量級,靈活適應,需要有經驗的輔導

-CMMI被老闆喜歡;敏捷被一線的工程技術人員喜歡


敏捷和cmmi應該相互融合,而不是衝突,參考我這篇文章描述:

http://blog.sina.com.cn/s/blog_493a84550100nf0g.html


能Google的話,我就不說了。個人認為:

CMMI本身也不在於所謂的過程,而起本質是通過過程將項目的風險等降低到最小,讓項目實施的可控。

敏捷並不與之衝突,而是達到的這個目標採用的手段不同,敏捷講究持續驗證,講究迭代,其本質上也是讓項目實施的更可控,項目失敗的風險更小。


近來在InfoQ上陸續翻譯了紀念回顧敏捷十年的文章,在CMM/CMMI/Agile都有興趣的我不由得想到從1991年CMM1.0發布之時算起,今年正好也是CMM/CMMI的20年。對比看下兩者的歷史,也許會有些意思。 參見

CMM/CMMI的20年和敏捷十年 http://blog.csdn.net/zhangmike/article/details/6799167

敏捷以宣言和原則為核心(我預測宣言和原則將成為至少30年的經典),其內容在充實,其外延在增長,不少新東西湧現在敏捷界,但更發散。無論被動主動,CMMI在整理到其體系中,所以說「敏捷和CMMI各有長處,敏捷貌似更創新,CMMI貌似更系統全面,值得各采其長。」


Agile 提倡「剛剛好夠用(barely sufficient)」 或者簡化的方法來避免浪費成本。 Agile 採用以下基本的方法論:

  1. 迭代開發
  2. 以測試驅動的開發(TDD)
  3. 搭配,結對
  4. 自我組織的團隊
  5. 待開發的任務列表


二者關注點不同,應該互有助益。我的看法是,你就再怎麼敏捷,也要個過程吧?


我說一句可能與問題無關的。還記得敏捷教練說了一句話,大家聽到都很開心,「有效的推動敏捷,可以使加班減少」


融合未必是趨勢,雖然大家第一思維都是融合。

但,取而代之是必然的,這是世界的規律。

所以,我認為Agile被追隨是因為現在的環境變化所導致的,時下web2.0甚至3.0是大勢所趨,其強調的是人是參與是交互,是輕薄設計,是UE。而且,traditional Biz 也將沿著這條道路進行一次變革。

CMMI還適應嗎?不見得了!


為幫助那些使用敏捷方法的人在他們的環境上詮釋CMMI 執行方法,在一些選定的流程領域中已加入註釋。這些註釋通常被加在前言中,包含CMMI-DEV 模式的建構管理、產品整合、專案監控、專案規劃、流程與產品品質保證、需求發展、需求管理、技術解決方案及驗證流程領域。摘自CMMI1.3中文版


CMMI向大家提供了過程管理的框架,包羅萬象;但最主要的還是結合項目的實際情況,制定出合乎公司發展戰略及項目管理的流程規範,通過這些理念的傳達、方法運用、規範的執行從而達到持續改進的目的,進而完成項目目標以及公司的發展戰略。


推薦閱讀:

敏捷開發——互聯網時代的軟體開發方式
敏捷開發必須要通過用戶故事來溝通嗎?
項目是否必須在產品經理出整個產品的所有原圖之後才能開始進入開發階段?
如何應對客戶頻繁但簡單的需求變動?

TAG:能力成熟度模型集成CMM-I | 敏捷開發 |