CMMI 簡介

latinren發表於2007-11-13

CMMI(Capability Maturity Model Integration)的本質是軟體管理工程的一個部分。軟體過程改善是當前軟體管理工程的核心問題, 50多年來計算的發展使人們認識到要高效率、高質量和低成本地開發軟體,必須改善軟體生產過程。基於模型的過程改進是指用採用能力模型來指導組織的過程改進,使之過程能力穩定的進行改善,該組織也能變得更加成熟。
然而,軟體組織形成一套完整而成熟的軟體過程不是一蹴而就的事情,需要經歷一系列的成熟度。軟體組織首先要進行差異分析,評定自己比較接近哪一個成熟度,然後再根據自身的情況來決定要採取哪些改進活動,來更有效地改進自己的軟體過程。這就對軟體過程的評定提出了一個客觀的標準。美國卡內基梅隆大學軟體工程學院於1987年研究成功的SW-CMM(Capability Maturity Model for Software)就是這樣的一個理論模型,其目的在於幫助軟體組織改善軟體生產流程,以探索一個保證軟體產品質量、縮短開發週期、提高效率的軟體工程模式與標準規範。
[@more@]
CMMI是一個可以改進系統工程和軟體工程的整合模式。1997年10月SEI停止對CMM的研究,改而致力於CMMI,以解決使用多個過程改進模型的問題。SEI同時宣佈CMMI將取代CMM,與2000年8月11日頒佈了CMMI-SE/SW 1.0版本,2001年12月頒佈了1.1版本,這次釋出標誌著CMMI正式啟用,並準備今年內完成CMM到CMMI的過渡。說到CMMI就不能不提CMM。
CMM
CMM框架用5個不斷進化的層次來評定軟體生產的歷史與現狀:初始級描述了不成熟,或者說是未定義的過程的組織,是混沌的過程以不可預測結果為特徵;可重複級是經過訓練的軟體過程;已定義級是標準一致的軟體過程,以組織內改進專案執行為特徵;已管理級是可預測的軟體過程,以改進組織效能為特徵;最佳化級是能持續改善的軟體過程,以可快速進行重新配置的組織效能,和定量的、持續的過程改進為特徵。任何單位所實施的軟體過程,都可能在某一方面比較成熟,在另一方面不夠成熟,但總體上必然屬於這5個層次中的某一個層次。
CMM包括兩部分"軟體能力成熟度模型"和"能力成熟度模型的關鍵過程域"。"軟體能力成熟度模型"主要是描述此模型的結構,並且給出該模型的基本構件的定義。"能力成熟度模型的關鍵過程域"詳細描述了每個關鍵過程方面涉及的過程域。
可重複級關鍵過程域:需求管理,軟體專案計劃,軟體專案跟蹤和監控,軟體子合同管理,軟體,軟體配置管理。
已定義級關鍵過程域:組織級過程焦點,組織級過程定義,培訓大綱,整合軟體管理,軟體產品工程,組間協調,同行評審。
已管理級關鍵過程域:定量過程管理,軟體質量管理。
最佳化級關鍵過程域:缺陷預防,技術更新管理,過程更改管理。
多陣列織的基本目標是達到成熟度3級。評估組織當前的成熟度級別的手段之一是軟體能力評估(SCE)。SCE透過評估軟體過程(一般以方針陳述的形式)和專案實踐來確定該組織是否言行一致。組織的過程體現瞭如實記錄所做的工作,專案實施(對該過程的特定剪裁和解釋)應該證明說到做到。
現在全球許多不同的組織以CMM為協助企業作全面的過程改進活動,除了肯定其軟體成熟度外,更像徵具有跨足國際市場的能力。現在透過CMM5級認證的組織達到了一百多家。
CMMI
CMM的成功促使其他學科也相繼開發類似的過程改進模型,例如系統工程、需求工程、人力資源、整合產品開發、軟體採購等等,從CMM衍生出了一些改善模型,比如:SW-CMM,SE-CMM,IPD-CMM等。不過,在同一個組織中多個過程改進模型的存在可能會引起衝突和混淆。CMMI就是為了解決怎麼保持這些模式之間的協調。
由業界、美國政府和卡內基·梅隆大學軟體工程研究所率先倡導的能力成熟度模型整合(CMMI)專案致力於幫助企業緩解這種困境。CMMI為改進一個組織的各種過程提供了一個單一的整合化框架,新的整合模型框架消除了各個模型的不一致性,減少了模型間的重複,增加透明度和理解,建立了一個自動的、可擴充套件的框架。因而能夠從總體上改進組織的質量和效率。CMMI主要關注點就是成本效益、明確重點、過程集中和靈活性四個方面。
與原有的能力成熟度模型類似,CMMI也包括了在不同領域建立有效過程的必要元素,反映了業界普遍認可的"最佳"實踐;專業領域覆蓋軟體工程、系統工程、整合產品開發和系統採購。在此前提下,CMMI為企業的過程構建和改進提供了指導和框架作用;同時為企業評審自己的過程提供了可參照的行業基準。
CMMI的源模型:軟體能力成熟度模型2.0版,C稿;電子行業協會臨時標準(EIA/IS)731;整合產品開發能力成熟度模型(IPD-CMM)。
CMMI的原則:
1. 強調高層管理者的支援。過程改進往往也是由高層管理者認識和提出的,大力度的、一致的支援是過程改進的關鍵。
2. 仔細確定改進目標,首先應該對給定時間內的所能完成的改進目標進行正確的估計和定義並制定計劃。選擇能夠達到的目標和能夠看到對組織的效益。
3. 選擇最佳實踐,應該基於組織現有的軟體活動和過程財富,參考其他標準模型,取其精華去其糟粕,得到新的實踐活動模型。
4. 過程改進要與組織的商務目標一致,與發展戰略緊密結合。
CMMI目標:
1. 為提高組織過程和管理產品開發、釋出和維護能力的提供保障。
2. 幫助組織客觀評價自身能力成熟度和過程域能力,為過程改進建立優先順序以及執行過程改進。
CMMI的方法:
1 決定哪個CMMI模型等級最適合組織過程改進需要。
2 選擇模型的表示法是連續式還是階段式。
3 決定組織需要用到的模型中的知識領域。
4 類似CMM提出的過程改進6步,整合化過程改進分成:開始整合過程改進,建造整合改善平臺,整合傳統過程,啟動新過程,進行改進評估。
CMMI內容
CMMI內容分為"要求"、"期望"和"提供資訊"三個級別,來衡量模型包括的質量重要性和作用。最重要的是"要求"級別,是模型和過程改進的基礎。第二級別"期望"在過程改進中起到主要作用,但是某些情況不是必須的可能不會出現在成功的組織模型中。"提供的資訊"構成了模型的主要部分,為過程改進提供了有用的指導,在許多情況下他們對需要和期望的構件做了進一步說明。
"要求"的模型構件是目標,代表了過程改進想要達到的最終狀態,它的實現表示了專案和過程控制已經達到了某種水平。當一個目標對應一個關鍵過程域,就稱為"特定目標";對應整個關鍵過程域就稱為"公用目標"。整個CMMI模型包括了54個特定目標,每個關鍵過程域都對應了一到四個特定目標。每個目標的描述都是非常簡捷的,為了充分理解要求的目標就是擴充套件"期望"的構件。
"期望"的構件是方法,代表了達到目標的實踐手段和補充認識。每個方法都能對映到一個目標上,當一個方法對一個目標是唯一就是"特定方法";而能適用於所有目標時就是"公用方法"。CMMI模型包括了186個特定方法,每個目標有兩到七個方法對應。
CMMI包括了10種"提供的資訊":目的,概括和總結了關鍵過程域的特定目標;介紹說明,介紹關鍵過程域的範圍、性質和實際方法和影響等特徵;引用,關鍵過程域之間的指向是透過引用;名字,表示了關鍵過程域的構件;方法和目標關係,關鍵過程域中方法對映到目標的關係表;註釋,註釋關鍵過程域的其他模型構件的資訊來源;典型工作產品集,定義關鍵過程域中執行方法時候產生的工作產品;子方法,透過方法活動的分解和詳細描述;學科擴充,CMMI對應學科是獨立的,這裡提供了對應特定學科的擴充套件;公用方法的詳細描述,關鍵過程域中公用方法應用實踐的詳細描述。
CMMI提供了階段式和連續式兩種表示方法,但是這兩種表示法在邏輯上是等價的。我們熟悉的SW-CMM軟體能力成熟模型就是階段式的模型,SE-CMM系統工程模型是連續式模型,而IPD-CMM整合產品開發模型結合了階段式和連續式兩者的特點。
階段式方法將模型表示為一系列"成熟度等級"階段,每個階段都有一組KPA指出一個組織應集中於何處以改善其組織過程,每個KPA用滿足其目標的方法來描述,過程改進透過在一個特定的成熟度等級中滿足所有KPA的目標而實現的。
連續式模型沒有像階段式那樣的分散階段,模型的KPA中的方法是當KPA的外部形式,並可應用於所有的KAP中,透過實現公用方法來改進過程。它不專門指出目標,而是強調方法。組織可以根據自身情況適當裁剪連續模型並以確定的KPA為改進目標。
兩種表示法的差異反應了為每個能力和成熟度等級描述過程而使用的方法,他們雖然描述的機制可能不同,但是兩種表示方法透過採用公用的目標和方法作為需要的和期望的模型元素,而達到了相同的改善目的。
======================================================================
CMMI 模型的前身是 SW-CMM 和 SE-CMM,前者就是我們指的CMM。CMMI與SW-CMM的主要區別就是覆蓋了許多領域;到目前為止包括四個下面領域:
1.軟體工程(SW-CMM)
軟體工程的物件是軟體系統的開發活動,要求實現軟體開發、執行、維護活動系統化、制度化、量化。
2.系統工程(SE-CMM)
系統工程的物件是全套系統的開發活動,可能包括也可能不包括軟體。系統工程的核心是將客戶的需求、期望和約束條件轉化為產品解決方案,並對解決方案的實現提供全程的支援。
3.整合的產品和過程開發(IPPD-CMM)
整合的產品和過程開發是指在產品生命週期中,透過所有相關人員的通力合作,採用系統化的程式來更好地滿足客戶的需求、期望和要求。如果專案或企業選擇IPPD程式,則需要選用模型中所有與IPPD相關的實踐。
4.採購(SS-CMM)
採購的內容適用於那些供應商的行為對專案的成功與否起到關鍵作用的專案。主要內容包括:識別並評價產品的潛在來源、確定需要採購的產品的目標供應商、監控並分析供應商的實施過程、評價供應商提供的工作產品以及對供應協議和供應關係進行適當的調整。
在以上模組中,企業可以選擇軟體工程,或系統工程,也可以都選擇。整合的產品和過程開發和採購主要是配合軟體工程和系統工程的內容使用。例如,純軟體企業可以選擇CMMI中的軟體工程的內容;裝置製造企業可以選擇系統工程和採購;整合的企業可以選擇軟體工程、系統工程和整合的產品和過程開發。CMMI中的大部分內容是適用各不同領域的,但是實施中會有顯著的差別,因此模型中提供了"不同領域應用詳解"。
CMM的基於活動的度量方法和瀑布過程的有次序的、基於活動的管理規範有非常密切的聯絡,更適合瀑布型的開發過程。而CMMI相對CMM更一步支援迭代開發過程和經濟動機推動組織採用基於結果的方法:開發業務案例、構想和原型方案;細化後納入基線結構、可用釋出,最後定為現場版本的釋出。雖然CMMI保留了基於活動的方法,它的確整合了軟體產業內很多現代的最好的實踐,因此它很大程度上淡化了和瀑布思想的聯絡。
在 CMMI 模型中在保留了CMM階段式模式的基礎上,出現了連續式模型,這樣可以幫助一個組織以及這個組織的客戶更加客觀和全面的瞭解它的過程成熟度。同時,連續模型的採用可以給一個組織在進行過程改進的時候帶來更大的自主性,不用再像CMM 中 一樣,受到等級的嚴格限制。這種改進的好處是靈活性和客觀性強,弱點在於由於缺乏指導,一個組織可能缺乏對關鍵過程域之間依賴關係的正確理解而片面的實施過程,造成一些過程成為空中樓閣,缺少其他過程的支撐。兩種表現方式(連續的和階段的)從他們所涵蓋的過程區域上來說並沒有不同,不同的是過程區域的組織方式以及對成熟度(能力)級別的判斷方式。
CMMI 模型中比 CMM 進一步強化了對需求的重視。在 CMM 中,關於需求只有需求管理這一個關鍵過程域,也就是說,強調對有質量的需求進行管理,而如何獲取需求則沒有提出明確的要求。在CMMI的階段模型中,3 級有一個獨立的關鍵過程域叫做需求開發,提出了對如何獲取優秀的需求的要求和方法。CMMI 模型對工程活動進行了一定的強化。在CMM中,只有3級中的軟體產品工程和同行評審兩個關鍵過程域是與工程過程密切相關的,而在CMMI中,則將需求開發,驗證,確認,技術解決方案,產品整合這些工程過程活動都作為單獨的關鍵過程域進行了要求,從而在實踐上提出了對工程的更高要求和更具體的指導。CMMI中還強調了風險管理。不像在CMM 中把風險的管理分散在專案計劃和專案跟蹤與監控中進行要求,CMMI3級裡單獨提出了一個獨立的關鍵過程域叫做風險管理

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/212824/viewspace-982323/,如需轉載,請註明出處,否則將追究法律責任。