CMMI全稱是Capability Maturity Model Integration,CMMI是個好東西來的,但行內人士對她的認識並不全面,甚至有種種的誤解。盡管網上有很多CMMI相關介紹,但一般都是比較苦澀難懂的。本文將用生動通俗的語句,讓大家初步看清楚CMMI的真面面孔。
CMMI是什么東西?
CMMI英文全稱是Capability Maturity Model Integration,直接翻譯就是能力成熟度模型,直接看這幾個中文字,你還是沒有辦法搞清楚CMMI是什么東西的。
大家可能在網上見過很多《成功人士的七個習慣》(可能還有很多類似的名字)的文章吧?有人總結了成功人士的成功的原因,總結出他們的習慣,如果我們也能具備這些習慣,那么我們也很可能成為成功人士。類似的,CMMI可以看作是成功企業如何做好軟件的一些習慣、做法、准則等的集合,是如何做好軟件的最佳實踐的集合。如果企業也能按照CMMI的要求做好,那么企業就很可能成為成功的企業。
CMMI里面所有的要求,都是來自於成功企業的最佳實踐的,她的先進性我們不必懷疑,如果我們沒有做好,那不是CMMI本身的問題,而是我們自己沒有理解好或者是沒有執行好的原因。
說到CMMI,就不可避免會提到另外3個字母SEI,SEI全稱是Software Engineering Institute的全稱,直譯就是軟件工程學院,是美國的一所大學,CMMI標准就是他們搞出來的。
CMMI目前最新版本是V1.2,如果你是現在才開始了解CMMI的,那么你完全沒有必要去搞清楚V1.1與V1.2的差別,更加沒有必要去比較CMM與CMMI的差別,直接了解CMMI V1.2就可以了,你只需要知道CMM是CMMI的前身,而CMMI V1.1雖然比CMM要新很多,但現在已經不用了。現在在互聯網上還有很多比較CMM與CMMI的文章的,除非你很想了解或者你有很多時間,建議不必去看這些內容。
連續式 vs 階段式
CMMI有兩種表述方式:連續式與階段式,兩種方式只是從不同的角度來闡述CMMI,其實質上表達的內容是一致的。就好像我們做數據庫設計的時候,可能會設計不同的視圖來查看相同數據表的數據,只是角度不一樣。
大家可能會問,好好的CMMI,為什么要搞兩種表達方式呢?不怕把大家搞糊塗嗎?
確實這兩種方式把不少人給搞糊塗了,這是SEI的一個敗筆。以前的CMM是只有階段式的表達方式的,連續式是后來提出來的,SEI內部分成兩派,一派支持連續式,一派支持階段式,互不相讓,最后達不成一致,就出來了現在這個樣子,連續式與階段式兩者共存。
連續式其實更加能反應過程改進的本質,並且能更好地引導企業把過程改進做到實處,但連續式比較難以理解。階段式是直接繼承CMM的,大家都比較容易理解,而且階段式有一個級別,在商業上更好宣傳,但很容易導致企業為了過級而過級。
連續式和階段式同時也是評估的兩個不同角度,用連續式評估,企業會得到很多個PA的Level,用階段式評估,企業會得到一個整體的Level。
對CMMI還不是很熟的人士,先了解這么多就可以了,以后再慢慢了解。
CMMI 1至5級簡述
這里我們用比較容易理解的階段式的角度,來描述一下CMMI的級別。
在模型中,所有軟件組織的軟件能力成熟度划分為5個等級——第1到第5級。數字越大,成熟度越高,高成熟度等級代表比較強的綜合軟件能力。
5個成熟度等級分別是:
第1級:初始級
第2級:受管理級
第3級:已定義級
第4級:定量管理級
第5級:持續優化級
CMMI的五個台階(五個等級)
台階一:CMMI一級,完成級。
在完成級水平上,企業對項目的目標與要做的努力很清晰,項目的目標得以實現。但是由於任務的完成帶有很大的偶然性,企業無法保證在實施同類項目的時候仍然能夠完成任務。企業在一級上的項目實施對實施人員有很大的依賴性。
台階二:CMMI二級,管理級。
在管理級水平上,企業在項目實施上能夠遵守既定的計划與流程,有資源准備,權責到人,對相關的項目實施人員有相應的培訓,對整個流程有監測與控制,並與上級單位對項目與流程進行審查。企業在二級水平上體現了對項目的一系列的管理程序。這一系列的管理手段排除了企業在一級時完成任務的隨機性,保證了企業的所有項目實施都會得到成功。
台階三:CMMI三級,定義級。
在定義級水平上,企業不僅能夠對項目的實施有一整套的管理措施,並保障項目的完成;而且,企業能夠根據自身的特殊情況以及自己的標准流程,將這套管理體系與流程予以制度化這樣,企業不僅能夠在同類的項目上生到成功的實施,在不同類的項目上一樣能夠得到成功的實施。科學的管理成為企業的一種文化,企業的組織財富。
台階四:CMMI四級,量化管理級。
在量化管理級水平上,企業的項目管理不僅形成了一種制度,而且要實現數字化的管理。對管理流程要做到量化與數字化。通過量化技術來實現流程的穩定性,實現管理的精度,降低項目實施在質量上的波動。
台階五:CMMI五級,優化級。
在優化級水平上,企業的項目管理達到了最高的境界。企業不僅能夠通過信息手段與數字化手段來實現對項目的管理,而且能夠充分利用信息資料,對企業在項目實施的過程中可能出現的次品予以預防。能夠主動地改善流程,運用新技術,實現流程的優化。
由上述的五個台階我們可以看出,每一個台階都是上面一階台階的基石。要上高層台階必須首先踏上較低一層台階。企業在實施CMMI的時候,路要一步一步地走。一般地講,應該先從二級入手。在管理上下功夫。
第1級是不需要評估的,哪怕你們是手工作坊開發的軟件公司,也可以說是CMMI1級。從2級開始到5級,SEI在每個級別都有詳細的標准。
那怎樣才算達到某個級別呢?
要通過高級別的評估,要滿足這個級別以下所有級別的標准。
例如:
一個進行4級評估的企業,評估的時候首先是看是否達到2級要求,然后是3級要求,然后才是4級要求。
評估的時候,如果2級的標准達到,但3級的要求達不到,就算4級的要求達到了,也只能算2級。
每個級別又代表怎樣的意思呢?下表簡要地說明了1到5級的差異:

2級比較容易做到,要做到3級要做的事情多很多,一般來說建議2、3級一起來做。3級到4級跨度很大,要做到4級非常不容易。如果4級做得比較好,要做到5級難度不算很大。以下是各級難度的示意圖:
過程域(PA)、目標(Goal)與實踐(Practice)
CMMI2級到5級,每個級別都包含幾個到十幾個PA(Process Area),直接翻譯就叫做:過程域。
PA簡單地說就是要做好軟件開發的某一個方面,如果要達到某個級別的要求,就要達到該級別所有PA的要求。一個PA包含幾個Goal(目標),如果要達到某個PA的要求,就意味着要達到該PA每個Goal的要求。
每個Goal怎樣才算達到要求呢?每個Goal又包含幾個到十幾個Practice(實踐),如果這些Practice都做到了,就認為該Goal達到要求了。
級別、PA、Goal與Practice的關系示意圖如下:
2級有7個PA,3級有11個PA,4級有2個PA,5級有2個PA,一共22個PA,Practice的總數量超過400個。如果要達到5級的要求,意味着必須滿足這400多個Practice的要求。
評估辦法
評估一個企業達到多少級別的要求,其實就是看相應的Practice是否達到要求。評估辦法根據嚴謹的程度,分為以下辦法:
SCAMPI C
SCAMPI B
SCAMPI A
SCAMPI A是最嚴謹的,進行正式評估的時候,必須采用該辦法。下面我們簡單體會一下SCAMPI A評估方法。
舉一個日常的例子,比方說你今天中午吃了飯,但別人不知道,別人要判斷你是不是吃了飯,用SCAMPI A的辦法來判斷的話,需要提供以下證據:
1)書面直接證據,能證明你吃了飯的書面的直接的證據。如果你去餐廳吃飯的,你的帳單就可以用來做直接證據,如果你在家做飯,那就麻煩,可能沒有能留下直接書面證據了。
2)書面間接證據:比方說你在家做飯,之前去買菜了,你買菜的賬單就可以作為間接書面證據。
3)訪談證據:如果別人問你,今天中午有沒有吃飯,你能准確說出來,並且沒有疑點,那就認為證據有效了,或者是如果你和別人吃飯,別人能說出跟你吃了飯,也認為證據有效了。
以上3方面的證據,第一個證據書面直接證據,是必須要有的,同時第2和第3類證據,至少要有一個。以上證據都具備,才能認為你吃了飯。
我想大家可能要“吐血”了,為了要證明吃了飯,居然要這樣麻煩!當然吃飯只是一個例子,我們進行CMMI評估的時候,每一個Practice都需要提供這樣的證據。
准備評估沒有什么捷徑,就是老老實實按照CMMI的要求去做,認真做好過程改進的工作,認真准備書面證據,訪談的時候就按照實際的做法老老實實的回答。
企業商業目標與CMMI
有一種業內普遍的誤解,好像CMMI級別越高,項目的成本就越高。那么我們要問,為什么我們還要去追求高級別呢?企業到底為什么要去評估CMMI?
業內也有另外一種誤解,CMMI是用來提高軟件質量的。那么CMMI不用來加快軟件開發進度,節省成本嗎?軟件開發從來就是質量、進度、成本的平衡,CMMI只關注一個方面嗎?
公司的商業目標,簡單地說兩個字可以概括——“賺錢”!為了賺錢,我們有很多辦法:
提高質量,我們的質量不需要很高,比競爭對手高就可以了。
加快進度,我們的進度也不需要很快,但至少要比競爭對手快。
減少成本,成本也不必減少很多,關鍵是能支持公司運作,能帶來利潤就可以了。
CMMI是為企業的商業目標服務的!既不是純粹提高質量,也不是光增加公司的成本而不提高效益。CMMI是為了提高企業的生產力!
如果貴公司實施了CMMI,而沒有提高生產力的話,改進是失敗的,違背CMMI的初衷的。CMMI是個好東西,我們沒有做好,並不是CMMI的錯,是我們沒有理解好或者是執行好。
要讓CMMI切實為企業帶來價值,難度很高,如何才能做到?這些內容可以寫一本書。本文希望能澄清大家的一些思想誤區,掃掃CMMI的文盲,為切實發揮CMMI的作用做好准備