質量體系 CMMI
CMMI初識
CMM-Capability Maturity Model,能力成熟度模型。CMMI-Capability Maturity Model Integration,能力成熟度模型集成。 CMMI是美國產業界、政府和卡內基梅隆大學軟件工程研究所(CMU/SEI)於2002年1月推出的集成了軟件工程(SW)、系統工程(SE)、集成化產品和過程開發(IPPD)等學科的綜合成熟度模型;
CMMI 與CMM 最大的不同點在於:CMM只是側重於軟件方面,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。
階段式 ,成熟度級別:應用亍跨多喪過程域的組織過程改迚的成果。五個成熟度級別1-5。
連續式 ,能力級別:應用亍單個過程域中的組織過程改進的成果。四個能力級別0-3。
CMMI 1至5級簡述
這裏我們用比較容易理解的階段式的角度,來描述一下CMMI的級別。
在模型中,所有軟件組織的軟件能力成熟度劃分為5個等級——第1到第5級。數字越大,成熟度越高,高成熟度等級代表比較強的綜合軟件能力。
5個成熟度等級分別是:
第1級:初始級
第2級:受管理級
第3級:已定義級
第4級:定量管理級
第5級:持續優化級
第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的作用做好準備
質量體系 CMMI