CMMI( Capability Maturity Model Integration)的本質是軟件管理工程的一個部分。軟件過程改善是當前軟件管理工程的核心問題, 50多年來計算的發展使人們認識到要高效率、高質量和低成本地開發軟件,必須改善軟件生產過程。基於模型的過程改進是指用採用能力模型來指導組織的過程改進,使之過程能力穩定的進行改善,該組織也能變得更加成熟。
然而,軟件組織形成一套完整而成熟的軟件過程不是一蹴而就的事情,需要經歷一系列的成熟度。軟件組織首先要進行差異分析,評定自己比較接近哪一個成熟度,然後再根據自身的情況來決定要採取哪些改進活動,來更有效地改進自己的軟件過程。這就對軟件過程的評定提出了一個客觀的標準。美國卡內基梅隆大學軟件工程學院於1987年研究成功的SW-CMM(Capability Maturity Model for Software)就是這樣的一個理論模型,其目的在於幫助軟件組織改善軟件生產流程,以探索一個保證軟件產品質量、縮短開發週期、提高工作效率的軟件工程模式與標準規範。
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級裡單獨提出了一個獨立的關鍵過程域叫做風險管理。
沒有留言:
張貼留言