CMM概括
一、CMM的基本框架
1.CMM的設計思想
任何軟件開發和軟件企業的發展都離不開軟件過程,而軟件過程必然要經歷一個從不成熟到成熟,從不完善到完善的發展過程。它不是一朝一夕就能成功的,需要持續不斷的對軟件過程進行改進,才能取得最終的成效。CMM就是根據這一指導思想設計出來的。為此,模型必需滿足如下四點對企業的指導作用:
1)為了正確和有序地引導軟件過程活動的開展,要建立一個能夠有效地描述和表示的軟件過程的改進框架,使其能夠對各階段軟件過程的任務和管理起指導作用。
2)以產品質量的概念和軟件工程的經驗教訓為基礎,指導企業控制開發、維護軟件的生產過程和如何制定一套與之相適應的軟件工程及管理體系。
3)指導軟件企業通過判斷自身當前的過程成熟度,針對軟件質量和軟件過程提高中最為關鍵的問題,來選擇過程的提高策略。
4)引導企業將注意力放在具體的和經過努力可實現的目標上,并努力通過模型中提供的措施和手段去實現這些目標。
2.CMM的分級標準
1) 建立分級標準的作用
CMM模型描述和分析了軟件過程能力的發展程度,確立了一個軟件過程成熟程度的分級標準,如圖2.1示。其作用:
①一方面軟件組織利用它可以評估自己當前所處的位置——過程成熟程度,并以此提出嚴格的軟件質量標準和改進過程的方法和策略,通過不斷的努力達到更高的成熟度。
②另一方面該標準也可作為用戶對軟件企業的一種評價標準,使之在選擇軟件開發商時不再是盲目的和無把握的。
2)CMM的分級結構及其過程描述
①初始級:軟件過程的特點是無秩序或說無定規的,有時甚至是混亂的。軟件過程定義幾乎處于無章法、無步驟可循的狀態,軟件產品所取得的成功往往依賴于極個別人的努力和機遇。
②可重復級:已建立了基本的項目管理過程,可用于對成本、進度和功能特性進行跟蹤。對類似的應用項目,有章可循并能重復以往所取得的成功。
③已定義級:用于管理的和工程的軟件過程均已文檔化、標準化,并形成了整個軟件組織的標準軟件過程。全部項目均采用與實際情況相吻合的、適當修改后的標準軟件過程來進行操作。
④已管理級:軟件過程和產品質量有詳細的度量標準。軟件過程和產品質量得到了定量的認識和控制。
⑤優化級:通過對來自過程、新概念和新技術等方面的各種有用信息的定量分析,能夠不斷地、持續地對促進過程進行改進。
除第一級外,每一級都設定了一組目標,如果達到了這組目標,則表明達到了這個成熟級別,自然可以向上一更為成熟的高一級別邁進。CMM體系不主張跨級別的進化,因為從第二級開始,每一個低級別的實現均是更高級別實現的基礎。
3.CMM各級的主要特性
前面已經反復提到,CMM標準共分五個等級,從第一級到第五級分別為:初始級、可重復級、定義級、管理級和優化級,從低到高,軟件開發生產的計劃精度越來越高,每單位工程的生產周期越來越短,每單位工程的成本也越來越低。需要提出的是,任何一個成熟度級別的關鍵過程域集都是本級描述的關鍵過程域集和所有下級的關鍵過程域集的并集。如3級的關鍵過程域就應有13個不同的域,其中7個是3級自己包含的,6個屬于2級成熟度,而4級應有15個域。
這五個級別具體內容包括:
第一級:初始級(The Initial Level)
初始級的軟件機構缺乏對軟件過程的有效管理,其軟件項目的成功來源于個人英雄主義而非機構行為,因此它不是可重復的。
第二級:可重復級(The Repeatable Level)
概述:
第二級軟件機構的主要特點是:項目計劃和跟蹤的穩定性,項目過程的可控性和以往成功的可重復性。更具體的說:
機構建立了管理軟件項目的策略和實現這些策略的過程。
新項目的計劃和管理基于類似項目的經驗。
過程能力的增強基于以各個項目為基礎的有紀律的基本過程管理。
不同的項目可有不同的過程,而對機構的要求是具有指導項目建立適當管理過程的策略。
每個項目都確定了基本的軟件管理控制,包括:
基于前面項目的經驗和新項目特點,做出現實的項目承諾(如預算、交付期、軟件質量等);
軟件項目管理者要跟蹤開支、日程、軟件功能;
滿足承諾的過程中的出現的問題要及時發現,妥善解決;
定義了軟件項目標準,且機構確保其被遵守。
構成:
本級的關鍵過程領域(KPA)包括:
需求管理(Requirements Management)
客戶的需求是軟件項目的基礎。軟件需求管理的目的是在客戶和軟件項目之間達成對客戶需求的一致理解。
軟件項目計劃(Software Project Planning)
為軟件工程和項目管理建立一個合理的計劃。
軟件項目的跟蹤和監督(Software Project Tacking and Oversight)
使管理者對實際的軟件項目進展過程有足夠的了解,以在項目效能偏離計劃太多是采取有效措施。
軟件子合同管理(Software Subcontract Management)
選擇合格的分包商,并有效管理之。
軟件質量保證(Software Quality Assurance)
對軟件項目過程及其間生產的各個產品進行監管以保證最終軟件質量。
軟件配置管理(Software Configuration Management)
在整個軟件生命周期里建立并維護軟件項目的工作產品的完整性。
第三級:已定義級(The Defined Level)
概述
第三級的主要特征在于軟件過程已被提升成標準化過程,從而更加具有穩定性、可重復性和可控性。處于第三級的企業具有如下一些特征:
機構采用標準的軟件過程,軟件工程和管理活動被集成為一個有機的整體。標準化的目的是使之可使管理者和技術人員有效工作。
有一組人員專門負責機構的軟件過程,并且在機構中有培訓計劃來確保stuff和manager有知識和技能完成所賦予的角色。
標準的軟件過程結合項目的特點即形成定義的軟件過程,它包括一組集成的定義良好的軟件工程和管理過程。
一個定義良好的過程包括就緒準則、輸入、完成工作過程、驗證機制、輸出和完成準則。
在已建立的產品線上cost, schedule, functionality 均可控制,軟件質量被加以跟蹤。
過程能力體現在在機構范圍內對一個定義的軟件過程活動、角色和責任的共同理解。
構成 :
第三級主要處理以下的KPA:
機構過程關注(Organization Process Focus)
確立機構對于改進機構的軟件過程能力的軟件過程活動的責任。
機構過程定義(Organization Process Definition)
開發和維護一組有用的軟件過程assets和提供一個用于定義定量過程管理的有意義的數據的基礎
培訓計劃(Training Program)
開發個體的技能和知識以使他們能夠更加有效的完成他們的角色
集成軟件管理(Integrated Software Management)
基于業務環境和項目的技術需要,從機構的標準軟件過程和相關的過程assets經過剪裁,將軟件工程和管理活動集成為一個有機的定義的軟件過程。
軟件產品工程(Software Product Engineering)
一致地完成定義良好的工程過程。它描述了項目的技術活動,如需求分析,設計,編碼和測試。
組間協調(Intergroup Coordination)
確立軟件工程組主動介入其它工程組以便項目能更好滿足客戶要求的手段
同行評審(Peer Reviews)
早而且有效的排除軟件工作產品中的缺陷。它可通過inspection,structured walkthrough等手段進行。
概括來說,第三級企業的重點是Engineering processes and organizational support。
第四級:已管理級(The Managed Level)
概述:
第四級的軟件機構中軟件過程和軟件產品都有定量的目標,并被定量地管理,因而其軟件過程能力是可預測的,其生產的軟件產品是高質量的。具體地說,第四季的機構具有如下特征:
軟件過程和產品有定量質量目標。
重要的軟件過程活動均配有生產率和質量度量;
數據庫被用來收集和分析定義軟件過程的數據;
項目的軟件過程和質量的評價有定量的基礎;
項目的產品和過程控制具有可預測性。
縮小過程效能落在可接受的定量界限內的偏差;
可區分過程效能的有效偏差和隨機偏差;
面向新領域的風險是可知并被仔細管理;
構成:
本級的關鍵過程領域包括:
定量過程管理(Quantitative Process Management)
定量地控制軟件項目的過程效能。
軟件質量管理(Software Quality Management)
定量了解項目軟件產品的質量,并達到既定的質量目標。
第五級:The Optimizing Level
概述
概括來說,第五級的主要特點是技術和過程改進被作為常規的業務活動加以計劃和管理。處于第五級的企業具有如下一些特征:
機構集中于連續的過程改進
具有標識弱點和增強過程的手段。
采用過程數據分析使用新技術的代價效益并提出改進。
項目隊伍能夠分析出錯原因并防止其再次出現。
防止浪費是第五級的重點。
改進的途徑在于已有過程的增量改進和使用新技術和新方法的革新
構成:
缺陷預防(Defect Prevention)
識別出錯原因,防止錯誤再現(通過改變定義的軟件過程)
技術變更管理(Technology Change Management)
識別有益的新技術(工具、方法和過程),并按有序的方式將其轉移至機構之中。其重點在于在變化的世界中有效的完成革新。
過程變更管理(Process Change Management)
連續改進機構所采用的軟件過程,以改進軟件質量,提高生產率和減少產品開發時間
概括來說,第五級企業的重點是連續的過程改進。
4.CMM內部結構和特性簡述
上面提到了CMM把軟件開發組織的能力成熟度分為五個等級。除了第1級外,其他每一級均由若干關鍵過程域組成,每個關鍵過程域中規定了5種公共特性:執行約定、執行能力、實施活動、度量和驗證的標準。換句話說,每一個關鍵過程域由若干關鍵實踐活動所描繪,這些實踐活動以5個公共特性進行歸類,這些公共特性是關鍵實踐描述的對象、也是基礎和依據。CMM給每個關鍵過程規定了一些具體目標,按5個公共特性歸類的關鍵慣例是按該關鍵過程的具體目標選擇和確定的。如果恰當地處理了某個關鍵過程涉及的全部關鍵慣例,這個關鍵過程的各項目標就達到了,也就表明該關鍵過程實現了。這種成熟度分級的優點在于,這些級別明確而清楚地反映了過程改進活動的輕重緩急和先后次序。(關于關鍵過程域、關鍵實踐、公共特性等概念后面會有詳細解釋)
二、CMM與軟件過程可視性
1.軟件過程的概念
軟件過程是人們用于開發和維護軟件及其相關產品的一系列活動、方法、實踐和革新。其外部視圖如P23頁圖2.2所示。
2.軟件過程可視性的重要性與級別
軟件工程和CMM都強調軟件過程可視性的極為重要性,軟件工程強調用軟件開發方法來解決軟件生產中的質量與效率的問題,而CMM則追求軟件組織成熟度的不斷提高,組織管理的不斷進化來使軟件質量、生產效率和生產周期得到明顯的改善,二者不僅目標相同,而且都強調開發的可視性來支持開發管理。因此,軟件過程可視性的提高,就成為提高軟件開發組織成熟級別的關鍵。
軟件過程的成熟度是可視的,在CMM中分成五級,反映了其不斷改進和逐步完善的過程。
在初始級中,整個軟件過程形同一團黑云,對管理人員和用戶而言,只能看到項目的要求和結果,不能看到項目的進展狀況和項目的軟件過程,是否滿足要求要到交付時刻才能知曉。
過度到可重復級,軟件過程的可視性有所好轉,開發分階段進行,用一系列的黑盒表示。用戶需求和階段產品在一定程度上可以控制。管理人員可在若干關鍵點設置管理活動和檢查質量并作出反應,用戶也可通過關鍵點了解項目進展情況。
發展到已定義級,黑盒的內部結構逐步顯示出來,組織擁有標準軟件過程并用于各軟件項目中。因此,各管理人員明確自己在過程中的管理責任和任務,并能預見可能的風險,為此作出一定的準備。由于已定義級的過程提供了很好的可視性,項目外的用戶也能快速地得到較為準確的情況。
在管理級,管理者可以根據客觀的度量,預見過程的經費支出和其他情況,定量地、有目標地做出決定。用戶也能定量地理解過程的能力和所存在的風險。整個軟件過程可以定量地指導和控制。
進化到優化級,人們可以很清楚地看到軟件過程的內部結構。為了提高生產率和質量,組織上已經形成了有效地、不斷地、系統地改進方法,并且制度化。對現有過程的認識,不僅僅考慮到過程的可能變化所產生的影響,而是能自覺地識別那些不夠有效和可能出錯的活動,加以改進與替換,達到更進一步的效果。管理人員有能力評估和定量跟蹤變化的影響和效果,用戶與開發組織關系良好。
三、CMM的階梯式進化框架
1.進化框架
CMM為軟件企業的過程能力提供了一個階梯式進化框架,它采用分層的方式來解釋它的組成部分,以適應不同成熟度企業的需要,如圖2.4示。在第二至第五個成熟等級中,每個等級包含一個內部結構的概念,關于內部結構詳細描述將在下面CMM內部結構的一欄中進行。
1)初始級 初始級的軟件過程是混亂無序的,對過程幾乎沒有定義,項目的執行是隨意的甚至是混亂的,項目的成功完全依賴個人的才能和經驗,沒有組織、標準、規程的保證,質量評判沒有客觀基準,管理方式屬于反應式的。也許,有些企業制定了一些軟件工程規范,但往往也是執行得不徹底。縱使有較好的執行,但若這些規范未能覆蓋基本的關鍵過程要求,且執行沒有政策和資源等方面的保證時,那么它仍然被視為初始級。初始級是混沌的過程。
2)可重復級 根據多年的經驗和教訓,人們總結出軟件開發的首要問題不是技術問題而是管理問題。因此,第二級的焦點集中在軟件管理過程上。一個可管理的過程則是一個可重復的過程,一個可重復的過程則能逐漸進化和成熟。第二級的管理過程包括了需求管理、項目管理、質量管理、配置管理和子合同管理五個方面。其中項目管理分為計劃過程和跟蹤與監控過程兩個過程。通過實施這些過程,從管理角度可以看到一個按計劃執行的且階段可控的軟件開發過程。
實現二級(可重復級)已經不簡單了。對一個軟件企業來說,達到二級的要求就基本上進入了規模開發,開始跳出作坊式的開發模式,能把一個項目的經驗或好的方法重現在下一個項目中,基本具備了一個現代化軟件企業的基本架構和方法,具備了承接外包項目的能力。可重復級是經過訓練的軟件過程,其等級標志是分工合同化,主要工作內容為管理各種開發文檔。可重復級的軟件過程能力可歸結為:規則化的或說定規的。
從二級一直往上走,是不間斷的改進過程。效率不斷在提高,時間控制更嚴格,品質更有保證,管理更有序。可以逐漸具備承接跨地區、跨部門的大型項目的實力。
3)已定義級 已定義級建立了組織的標準軟件過程且已文檔化,它包括了軟件工程和管理過程的所有方面,集成為一個標準一致的有機整體,提供給各個項目剪裁使用。
在第二級僅定義了管理的基本過程,而沒有定義執行的步驟標準。在第三級則要求制定企業范圍的工程化標準,而且無論是管理還是工程開發都需要一套文檔化的標準,并將這些標準集成到企業軟件開發標準過程中去。所有開發的項目均需依據這個標準過程,剪裁出項目適宜的過程,并執行這些過程。過程的剪裁不是隨意的,在使用前需經過企業有關人員的批準。定義級是標準一致的軟件過程,等級標志是流程程序化,主要工作內容是管理軟件開發過程。
4)已管理級 在已管理級,軟件產品和軟件過程均建立了量化的指標和質量的指標,評價軟件過程的產品(最終產品和中間產品)和質量,是企業評價計劃的一部分。
第四級的管理是量化的管理,是可量化級,其軟件過程具有精確的定義、連貫的評價方法。所有過程需建立相應的度量方式,所有產品的質量(包括工作產品和提交給用戶的產品)需有明確的度量指標。這些度量應是詳盡的,且可用于理解和控制軟件過程和產品,量化控制將使軟件開發真正變成為一種工業生產活動。管理級是可預測的軟件過程,等級標志是記錄表格化,主要工作內容是度量軟件開發過程和產品質量。第四級軟件產品是高質量的。
5)優化級 第五級的目標是達到一個持續改善的境界。所謂持續改善是指可根據過程執行的反饋信息來改善下一步的執行過程,即優化執行步驟。軟件過程的不斷改進成為整個企業的主要著眼點和前進的動力。如果一個企業達到了這一級,那么表明該企業能夠根據實際的項目性質、技術等因素,不斷調整軟件生產過程以求達到最佳。優化級是可持續改進的軟件過程,等級標志是資源最優化,主要工作內容是提高軟件企業資源的利用水平。
從效果而言,在上述不同階段,軟件開發 生產的成熟程度給軟件企業帶來了完全不同的效果。第一階段到第五個階段,軟件開發生產的計劃精度越來越高,每單位工程的生產周期越來越短,每單位工程的成本越來越低。
2.成熟度級別進化
每一級向上一級邁進的過程中都有其特定的改進計劃,具體情況如下。(各級的過程特征及其改進方向詳見P27~P31相關表)
1)初始級的改進方向是:①建立項目過程管理,實施規范化管理,保障項目的承諾;②進行需求管理方面的工作,建立用戶與軟件項目之間的溝通,使項目真正反映用戶的要求;③建立各種軟件項目計劃,如軟件開發計劃、軟件質量保證計劃、軟件配置管理計劃、軟件測試計劃、風險管理計劃和過程改進計劃等;④積極開展軟件質量保證活動(SQA)。
2)可重復級的改進方向是:①不再按項目制定軟件過程,而是總結各種項目的成功經驗,使之規則化,把具體經驗歸納為全組織的標準軟件過程。把改進組織的整體軟件過程能力的軟件過程活動,作為軟件開發組織的責任;②確定全組織的標準軟件過程,把軟件工程及管理活動集成到一個穩固確定的軟件過程中,從而可以跨項目改進軟件過程效果,也可以作為軟件過程剪裁的基礎;③建立軟件工程過程小組(SPEG)長期承擔評估與調整軟件過程的任務,以適應未來軟件項目的要求;④積累數據,建立組織的軟件過程庫及軟件過程相關的文檔;⑤加強培訓。
3)已定義級的改進方向是:①著手軟件過程的定量分析,以達到定量地控制軟件項目過程的效果;②通過軟件的質量管理達到軟件的質量目標。
4)已管理級的改進方向是:①防范缺陷,不僅在發現了問題時能及時改進,而且應采取特定行動防止將來出現這類缺陷;②主動進行技術改革管理、標識、選擇和評價新技術,使有效的新技術能在開發組織中實施;③進行過程變更管理,定義過程改進的目的,經常不斷地進行過程改進。
5)優化級的改進目方向是:①保持持續不斷的軟件過程改進。CMM5級是優化級,之所以稱之為優化級不是因為它比第4級更高,它強調的是一個持續不斷的優化過程。如果你在某一個階段停頓下來,那么不進則退,你就有可能會掉下去。
3.成熟度舉例——軟件成熟度企業與不成熟企業的一個側影
大家都見過或聽說過某些軟件企業人才跳槽后的故事吧。的確存在這樣的事情,這些軟件企業當出現一些關鍵的開發人員跳槽離開后,進行中的項目便癱瘓了下來,甚至前功盡棄,已運行中的項目也難以繼續維護,給企業造成很大的損失。這就是不成熟企業的一個特征。
而在CMM框架中,運用2級中的一個基本軟件工程(KPA)就可以使員工自覺而規范地管理軟件生產過程中所有的資源、階段性產品、產品源代碼、文件以及最終生成的產品。嚴格遵循這套管理方法,程序員寫完一段代碼,經過一定測試之后,一旦提交到某個公共地方時,這個東西就不是你的了,已經成為項目小組或者是整個企業的了,而且跟隨著完善的文檔控制。如果你想對它進行任何修改,都要按照規范的程序把它從公共區域提取出來。規范的過程控制,將軟件企業由于人員流動帶來的風險降到了最低,同時還促使他們養成良好的職業素養。
四、CMM的內部結構
1.內部結構組成
CMM為軟件過程能力的提高提供了一條改進的途徑。CMM由5個成熟度等級組成,每個成熟度等級有著各自的功能。除第一級外,CMM的每一級按完全相同的內部結構構成的,不同的成熟度等級反映了軟件組織的軟件過程能力和該組織可能實現預期結果的程度。
在CMM中,除第1級外,每個成熟度等級都標志了該級別的軟件組織所具有的過程能力。每個成熟度等級(第1級除外)規定了若干不同的關鍵過程域,一個軟件組織如果希望達到某一個成熟度級別,就必須完全滿足關鍵過程域所規定的要求,即滿足關鍵過程域的目標。每一個關鍵過程域都含有屬于5種類別(公共特性)中的若干關鍵實踐,通過實現這些關鍵實踐來達到關鍵過程域的目標。
2.各構成要素描述
1)關鍵過程域(KPA):是指在有關基礎設施的保證支撐下的一系列相互關聯的操作活動,這些活動反映了一個軟件組織改進軟件過程時必須集中力量改進的幾個方面。可以簡單地說,關鍵過程域是互相關聯的若干軟件實踐活動和有關基礎設施的一個集合。換句話說,關鍵過程區域標識了達到某個成熟度等級時所必須滿足的條件。在CMM中一共有18個關鍵過程域,分布在第二至五級中,每個關鍵過程域規定了一個(組)必須滿足的目標,并由五個公共特性歸類的若干關鍵實踐活動描述實現之。
2)目標:是指某個關鍵過程域中的關鍵實踐,它表示每一個關鍵過程域的范圍、邊界和意圖。目標被用來判斷一個組織或項目是否有效地實現了某個特定的關鍵過程區域所規定的內容,即目標確定了關鍵過程區域的界限、范圍、內容和關鍵實踐。
每一個KPA都規定了一組目標,若這組目標在每一個項目都能實現,則說明企業滿足了該KPA的要求。若滿足了一個級別的所有KPA要求,則表明達到了這個級別所要求的能力。例如,可重復級中需求管理關鍵過程域的目標是:在軟件需求上建立、維護同用戶的協議;軟件項目計劃關鍵過程域的目標則為:建立一個為開展和管理軟件工程的合理設計;又如,軟件項目跟蹤和監控KPA的目標是:提供對實際進程的可見和監督,以便及時采取糾正措施。
3)公共特性:表征各種實踐活動的分類,一共分為五類。這些特性(有時又稱屬性)有效地指出了一個關鍵過程域的實現范圍、結構要求和實施內容。具體是:
①執行約定(commitment to perform):又稱實施保證,實施保證是企業為了建立和實施相應KPA所必須采取的活動,這些活動主要包括制定企業范圍的政策和高層管理的責任。
②執行能力(ability to perform):執行能力是企業實施KPA的前提條件。企業必須采取措施,在滿足了這些條件后,才有可能執行KPA的執行活動。實施能力一般包括資源保證、人員培訓等內容。
③實施活動(actives performed):實施活動也叫執行活動,執行過程描述了執行KPA所需求的必要角色、任務和步驟。在五個公共屬性中,執行活動是唯一一項由項目來執行相關的屬性,其余四個屬性則涉及企業CMM能力基礎設施的建立。執行活動一般包括計劃、執行的任務、任務執行的跟蹤以及改進措施等。
④度量和分析(measurement and analysis):度量分析描述了過程的度量和度量分析要求。典型的度量和度量分析的要求是確定執行活動的狀態和執行活動的有效性。
⑤驗證實施(verifying implementation):驗證實施是驗證執行活動是否與所建立的過程一致。實施驗證涉及到管理的評審和審計以及質量保證活動。實施驗證活動可通過管理和軟件質量保證進行核查。
4)關鍵實踐(KP):是指關鍵過程域中的一些主要實踐活動。具體就是指為達到關鍵過程目標,建立起那些對軟件過程活動起關鍵作用的方針、規程、措施、標準、活動以及相關基礎設施的實踐。每個關鍵過程域由若干關鍵實踐組成,通過這些關鍵實踐來達到關鍵過程域的目標。一般情況下,關鍵實踐描述了應該“做什么”,但并不規定“如何做”去達到這些目標。有關關鍵實踐的舉例:
例如:可重復級需求管理關鍵過程域中,記錄和管理系統需求的策略的實踐活動,就是一個關鍵實踐(執行約定);建立分析責任和分配系統需求這一實踐活動,也是該過程域的一個關鍵實踐(執行能力);還有,分配需求、提供資源和資金以及開展需求培訓(執行能力),也都是該過程域的一些關鍵實踐活動。當然,該過程域還有度量需求管理活動狀態(度量與分析)……
在一些文獻中使用了“關鍵慣例”、“優秀實踐”等詞。關鍵慣例與關鍵實踐在概念上基本相同,只是“關鍵慣例”似乎更加突出了使用以往成功經驗和成果之意。“優秀實踐”也大概如此。
上面提到了CMM把軟件開發組織的能力成熟度分為5個等級。除了第1級外,其他每一級由幾個關鍵過程域組成。每一個關鍵過程域都由上述分為5種公共特性的實踐活動予以描述。關鍵過程域的分類詳見圖2.7。它列出了四個成熟度等級的共18個關鍵過程域。
3.功能綜述
從上面所示的結構模型可以看出,CMM包括兩大部分“軟件能力成熟度模型”和“能力成熟度模型的關鍵慣例”。“軟件能力成熟度模型”主要是描述此模型的結構,并且給出該模型的基本構件的定義。“能力成熟度模型的關鍵慣例”詳細描述了每個“關鍵過程方面”涉及的“關鍵慣例”。這里“關鍵過程方面”是指一組相關聯的活動,也就是關鍵過程域;每個軟件能力成熟度等級包含若干個對該成熟度等級至關重要的過程方面,它們的實施對達到該成熟度等級的目標起到保證作用。這些過程域就稱為該成熟度等級的關鍵過程域。反之,非關鍵過程域是指對達到相應軟件過程成熟度等級的目標不起關鍵作用。可以歸納為:關鍵過程域是互相關聯的若干軟件實踐活動和有關基礎設施的一個集合。而“關鍵慣例”是指使關鍵過程方面得以有效實現和制度化的作用最大的基礎設施和活動,對關鍵過程的實踐起關鍵作用的方針、規程、措施、標準、活動以及相關基礎設施的建立。關鍵實踐一般只描述“做什么”而不強制規定“如何做”。各個關鍵慣例按每個關鍵過程方面的五個“公共特性”【執行約定(對執行該過程的承諾),執行能力(執行該過程的能力),實施活動(該過程中要執行的活動),度量和分析(對該過程執行情況的度量和分析),驗證實施(證實所執行的活動符合該過程)】歸類,逐一詳細描述。當作到了某個關鍵過程的全部關鍵慣例就認為實現了該關鍵過程,如果實現了某成熟度級別以及比其低級所含的全部關鍵過程就認為達到了該級。
CMM總結:五層結構圖
我們看到,在第五級上,技術和過程的改進像普通商業活動一樣有計劃、有管理地進行。由于組織不斷的致力于改進過程的能力,所以軟件開發組織的能力可持續改進。這種改進不僅表現在對存在的軟件過程逐步改進,不表現在采用新技術和新方法方面的革新。
畫一個圖吧:(CMM的五層結構圖)
-----------------
/ 優 化 級 /
/ (5) /
-----------------
↑
| 不斷改進的過程
|
-----------------
/ 可 管 理 級 /
/ (4) /
-----------------
↑
| 能預見的過程
|
-----------------
/ 確 定 級 /
/ (3) /
-----------------
↑
| 標準一致的過程
|
-----------------
/ 可 重 復 級 /
/ (2) /
-----------------
↑
| 有紀律的過程
|
-----------------
/ 初 始 級 /
/ (1) /
-----------------
1.CMM的設計思想
任何軟件開發和軟件企業的發展都離不開軟件過程,而軟件過程必然要經歷一個從不成熟到成熟,從不完善到完善的發展過程。它不是一朝一夕就能成功的,需要持續不斷的對軟件過程進行改進,才能取得最終的成效。CMM就是根據這一指導思想設計出來的。為此,模型必需滿足如下四點對企業的指導作用:
1)為了正確和有序地引導軟件過程活動的開展,要建立一個能夠有效地描述和表示的軟件過程的改進框架,使其能夠對各階段軟件過程的任務和管理起指導作用。
2)以產品質量的概念和軟件工程的經驗教訓為基礎,指導企業控制開發、維護軟件的生產過程和如何制定一套與之相適應的軟件工程及管理體系。
3)指導軟件企業通過判斷自身當前的過程成熟度,針對軟件質量和軟件過程提高中最為關鍵的問題,來選擇過程的提高策略。
4)引導企業將注意力放在具體的和經過努力可實現的目標上,并努力通過模型中提供的措施和手段去實現這些目標。
2.CMM的分級標準
1) 建立分級標準的作用
CMM模型描述和分析了軟件過程能力的發展程度,確立了一個軟件過程成熟程度的分級標準,如圖2.1示。其作用:
①一方面軟件組織利用它可以評估自己當前所處的位置——過程成熟程度,并以此提出嚴格的軟件質量標準和改進過程的方法和策略,通過不斷的努力達到更高的成熟度。
②另一方面該標準也可作為用戶對軟件企業的一種評價標準,使之在選擇軟件開發商時不再是盲目的和無把握的。
2)CMM的分級結構及其過程描述
①初始級:軟件過程的特點是無秩序或說無定規的,有時甚至是混亂的。軟件過程定義幾乎處于無章法、無步驟可循的狀態,軟件產品所取得的成功往往依賴于極個別人的努力和機遇。
②可重復級:已建立了基本的項目管理過程,可用于對成本、進度和功能特性進行跟蹤。對類似的應用項目,有章可循并能重復以往所取得的成功。
③已定義級:用于管理的和工程的軟件過程均已文檔化、標準化,并形成了整個軟件組織的標準軟件過程。全部項目均采用與實際情況相吻合的、適當修改后的標準軟件過程來進行操作。
④已管理級:軟件過程和產品質量有詳細的度量標準。軟件過程和產品質量得到了定量的認識和控制。
⑤優化級:通過對來自過程、新概念和新技術等方面的各種有用信息的定量分析,能夠不斷地、持續地對促進過程進行改進。
除第一級外,每一級都設定了一組目標,如果達到了這組目標,則表明達到了這個成熟級別,自然可以向上一更為成熟的高一級別邁進。CMM體系不主張跨級別的進化,因為從第二級開始,每一個低級別的實現均是更高級別實現的基礎。
3.CMM各級的主要特性
前面已經反復提到,CMM標準共分五個等級,從第一級到第五級分別為:初始級、可重復級、定義級、管理級和優化級,從低到高,軟件開發生產的計劃精度越來越高,每單位工程的生產周期越來越短,每單位工程的成本也越來越低。需要提出的是,任何一個成熟度級別的關鍵過程域集都是本級描述的關鍵過程域集和所有下級的關鍵過程域集的并集。如3級的關鍵過程域就應有13個不同的域,其中7個是3級自己包含的,6個屬于2級成熟度,而4級應有15個域。
這五個級別具體內容包括:
第一級:初始級(The Initial Level)
初始級的軟件機構缺乏對軟件過程的有效管理,其軟件項目的成功來源于個人英雄主義而非機構行為,因此它不是可重復的。
第二級:可重復級(The Repeatable Level)
概述:
第二級軟件機構的主要特點是:項目計劃和跟蹤的穩定性,項目過程的可控性和以往成功的可重復性。更具體的說:
機構建立了管理軟件項目的策略和實現這些策略的過程。
新項目的計劃和管理基于類似項目的經驗。
過程能力的增強基于以各個項目為基礎的有紀律的基本過程管理。
不同的項目可有不同的過程,而對機構的要求是具有指導項目建立適當管理過程的策略。
每個項目都確定了基本的軟件管理控制,包括:
基于前面項目的經驗和新項目特點,做出現實的項目承諾(如預算、交付期、軟件質量等);
軟件項目管理者要跟蹤開支、日程、軟件功能;
滿足承諾的過程中的出現的問題要及時發現,妥善解決;
定義了軟件項目標準,且機構確保其被遵守。
構成:
本級的關鍵過程領域(KPA)包括:
需求管理(Requirements Management)
客戶的需求是軟件項目的基礎。軟件需求管理的目的是在客戶和軟件項目之間達成對客戶需求的一致理解。
軟件項目計劃(Software Project Planning)
為軟件工程和項目管理建立一個合理的計劃。
軟件項目的跟蹤和監督(Software Project Tacking and Oversight)
使管理者對實際的軟件項目進展過程有足夠的了解,以在項目效能偏離計劃太多是采取有效措施。
軟件子合同管理(Software Subcontract Management)
選擇合格的分包商,并有效管理之。
軟件質量保證(Software Quality Assurance)
對軟件項目過程及其間生產的各個產品進行監管以保證最終軟件質量。
軟件配置管理(Software Configuration Management)
在整個軟件生命周期里建立并維護軟件項目的工作產品的完整性。
第三級:已定義級(The Defined Level)
概述
第三級的主要特征在于軟件過程已被提升成標準化過程,從而更加具有穩定性、可重復性和可控性。處于第三級的企業具有如下一些特征:
機構采用標準的軟件過程,軟件工程和管理活動被集成為一個有機的整體。標準化的目的是使之可使管理者和技術人員有效工作。
有一組人員專門負責機構的軟件過程,并且在機構中有培訓計劃來確保stuff和manager有知識和技能完成所賦予的角色。
標準的軟件過程結合項目的特點即形成定義的軟件過程,它包括一組集成的定義良好的軟件工程和管理過程。
一個定義良好的過程包括就緒準則、輸入、完成工作過程、驗證機制、輸出和完成準則。
在已建立的產品線上cost, schedule, functionality 均可控制,軟件質量被加以跟蹤。
過程能力體現在在機構范圍內對一個定義的軟件過程活動、角色和責任的共同理解。
構成 :
第三級主要處理以下的KPA:
機構過程關注(Organization Process Focus)
確立機構對于改進機構的軟件過程能力的軟件過程活動的責任。
機構過程定義(Organization Process Definition)
開發和維護一組有用的軟件過程assets和提供一個用于定義定量過程管理的有意義的數據的基礎
培訓計劃(Training Program)
開發個體的技能和知識以使他們能夠更加有效的完成他們的角色
集成軟件管理(Integrated Software Management)
基于業務環境和項目的技術需要,從機構的標準軟件過程和相關的過程assets經過剪裁,將軟件工程和管理活動集成為一個有機的定義的軟件過程。
軟件產品工程(Software Product Engineering)
一致地完成定義良好的工程過程。它描述了項目的技術活動,如需求分析,設計,編碼和測試。
組間協調(Intergroup Coordination)
確立軟件工程組主動介入其它工程組以便項目能更好滿足客戶要求的手段
同行評審(Peer Reviews)
早而且有效的排除軟件工作產品中的缺陷。它可通過inspection,structured walkthrough等手段進行。
概括來說,第三級企業的重點是Engineering processes and organizational support。
第四級:已管理級(The Managed Level)
概述:
第四級的軟件機構中軟件過程和軟件產品都有定量的目標,并被定量地管理,因而其軟件過程能力是可預測的,其生產的軟件產品是高質量的。具體地說,第四季的機構具有如下特征:
軟件過程和產品有定量質量目標。
重要的軟件過程活動均配有生產率和質量度量;
數據庫被用來收集和分析定義軟件過程的數據;
項目的軟件過程和質量的評價有定量的基礎;
項目的產品和過程控制具有可預測性。
縮小過程效能落在可接受的定量界限內的偏差;
可區分過程效能的有效偏差和隨機偏差;
面向新領域的風險是可知并被仔細管理;
構成:
本級的關鍵過程領域包括:
定量過程管理(Quantitative Process Management)
定量地控制軟件項目的過程效能。
軟件質量管理(Software Quality Management)
定量了解項目軟件產品的質量,并達到既定的質量目標。
第五級:The Optimizing Level
概述
概括來說,第五級的主要特點是技術和過程改進被作為常規的業務活動加以計劃和管理。處于第五級的企業具有如下一些特征:
機構集中于連續的過程改進
具有標識弱點和增強過程的手段。
采用過程數據分析使用新技術的代價效益并提出改進。
項目隊伍能夠分析出錯原因并防止其再次出現。
防止浪費是第五級的重點。
改進的途徑在于已有過程的增量改進和使用新技術和新方法的革新
構成:
缺陷預防(Defect Prevention)
識別出錯原因,防止錯誤再現(通過改變定義的軟件過程)
技術變更管理(Technology Change Management)
識別有益的新技術(工具、方法和過程),并按有序的方式將其轉移至機構之中。其重點在于在變化的世界中有效的完成革新。
過程變更管理(Process Change Management)
連續改進機構所采用的軟件過程,以改進軟件質量,提高生產率和減少產品開發時間
概括來說,第五級企業的重點是連續的過程改進。
4.CMM內部結構和特性簡述
上面提到了CMM把軟件開發組織的能力成熟度分為五個等級。除了第1級外,其他每一級均由若干關鍵過程域組成,每個關鍵過程域中規定了5種公共特性:執行約定、執行能力、實施活動、度量和驗證的標準。換句話說,每一個關鍵過程域由若干關鍵實踐活動所描繪,這些實踐活動以5個公共特性進行歸類,這些公共特性是關鍵實踐描述的對象、也是基礎和依據。CMM給每個關鍵過程規定了一些具體目標,按5個公共特性歸類的關鍵慣例是按該關鍵過程的具體目標選擇和確定的。如果恰當地處理了某個關鍵過程涉及的全部關鍵慣例,這個關鍵過程的各項目標就達到了,也就表明該關鍵過程實現了。這種成熟度分級的優點在于,這些級別明確而清楚地反映了過程改進活動的輕重緩急和先后次序。(關于關鍵過程域、關鍵實踐、公共特性等概念后面會有詳細解釋)
二、CMM與軟件過程可視性
1.軟件過程的概念
軟件過程是人們用于開發和維護軟件及其相關產品的一系列活動、方法、實踐和革新。其外部視圖如P23頁圖2.2所示。
2.軟件過程可視性的重要性與級別
軟件工程和CMM都強調軟件過程可視性的極為重要性,軟件工程強調用軟件開發方法來解決軟件生產中的質量與效率的問題,而CMM則追求軟件組織成熟度的不斷提高,組織管理的不斷進化來使軟件質量、生產效率和生產周期得到明顯的改善,二者不僅目標相同,而且都強調開發的可視性來支持開發管理。因此,軟件過程可視性的提高,就成為提高軟件開發組織成熟級別的關鍵。
軟件過程的成熟度是可視的,在CMM中分成五級,反映了其不斷改進和逐步完善的過程。
在初始級中,整個軟件過程形同一團黑云,對管理人員和用戶而言,只能看到項目的要求和結果,不能看到項目的進展狀況和項目的軟件過程,是否滿足要求要到交付時刻才能知曉。
過度到可重復級,軟件過程的可視性有所好轉,開發分階段進行,用一系列的黑盒表示。用戶需求和階段產品在一定程度上可以控制。管理人員可在若干關鍵點設置管理活動和檢查質量并作出反應,用戶也可通過關鍵點了解項目進展情況。
發展到已定義級,黑盒的內部結構逐步顯示出來,組織擁有標準軟件過程并用于各軟件項目中。因此,各管理人員明確自己在過程中的管理責任和任務,并能預見可能的風險,為此作出一定的準備。由于已定義級的過程提供了很好的可視性,項目外的用戶也能快速地得到較為準確的情況。
在管理級,管理者可以根據客觀的度量,預見過程的經費支出和其他情況,定量地、有目標地做出決定。用戶也能定量地理解過程的能力和所存在的風險。整個軟件過程可以定量地指導和控制。
進化到優化級,人們可以很清楚地看到軟件過程的內部結構。為了提高生產率和質量,組織上已經形成了有效地、不斷地、系統地改進方法,并且制度化。對現有過程的認識,不僅僅考慮到過程的可能變化所產生的影響,而是能自覺地識別那些不夠有效和可能出錯的活動,加以改進與替換,達到更進一步的效果。管理人員有能力評估和定量跟蹤變化的影響和效果,用戶與開發組織關系良好。
三、CMM的階梯式進化框架
1.進化框架
CMM為軟件企業的過程能力提供了一個階梯式進化框架,它采用分層的方式來解釋它的組成部分,以適應不同成熟度企業的需要,如圖2.4示。在第二至第五個成熟等級中,每個等級包含一個內部結構的概念,關于內部結構詳細描述將在下面CMM內部結構的一欄中進行。
1)初始級 初始級的軟件過程是混亂無序的,對過程幾乎沒有定義,項目的執行是隨意的甚至是混亂的,項目的成功完全依賴個人的才能和經驗,沒有組織、標準、規程的保證,質量評判沒有客觀基準,管理方式屬于反應式的。也許,有些企業制定了一些軟件工程規范,但往往也是執行得不徹底。縱使有較好的執行,但若這些規范未能覆蓋基本的關鍵過程要求,且執行沒有政策和資源等方面的保證時,那么它仍然被視為初始級。初始級是混沌的過程。
2)可重復級 根據多年的經驗和教訓,人們總結出軟件開發的首要問題不是技術問題而是管理問題。因此,第二級的焦點集中在軟件管理過程上。一個可管理的過程則是一個可重復的過程,一個可重復的過程則能逐漸進化和成熟。第二級的管理過程包括了需求管理、項目管理、質量管理、配置管理和子合同管理五個方面。其中項目管理分為計劃過程和跟蹤與監控過程兩個過程。通過實施這些過程,從管理角度可以看到一個按計劃執行的且階段可控的軟件開發過程。
實現二級(可重復級)已經不簡單了。對一個軟件企業來說,達到二級的要求就基本上進入了規模開發,開始跳出作坊式的開發模式,能把一個項目的經驗或好的方法重現在下一個項目中,基本具備了一個現代化軟件企業的基本架構和方法,具備了承接外包項目的能力。可重復級是經過訓練的軟件過程,其等級標志是分工合同化,主要工作內容為管理各種開發文檔。可重復級的軟件過程能力可歸結為:規則化的或說定規的。
從二級一直往上走,是不間斷的改進過程。效率不斷在提高,時間控制更嚴格,品質更有保證,管理更有序。可以逐漸具備承接跨地區、跨部門的大型項目的實力。
3)已定義級 已定義級建立了組織的標準軟件過程且已文檔化,它包括了軟件工程和管理過程的所有方面,集成為一個標準一致的有機整體,提供給各個項目剪裁使用。
在第二級僅定義了管理的基本過程,而沒有定義執行的步驟標準。在第三級則要求制定企業范圍的工程化標準,而且無論是管理還是工程開發都需要一套文檔化的標準,并將這些標準集成到企業軟件開發標準過程中去。所有開發的項目均需依據這個標準過程,剪裁出項目適宜的過程,并執行這些過程。過程的剪裁不是隨意的,在使用前需經過企業有關人員的批準。定義級是標準一致的軟件過程,等級標志是流程程序化,主要工作內容是管理軟件開發過程。
4)已管理級 在已管理級,軟件產品和軟件過程均建立了量化的指標和質量的指標,評價軟件過程的產品(最終產品和中間產品)和質量,是企業評價計劃的一部分。
第四級的管理是量化的管理,是可量化級,其軟件過程具有精確的定義、連貫的評價方法。所有過程需建立相應的度量方式,所有產品的質量(包括工作產品和提交給用戶的產品)需有明確的度量指標。這些度量應是詳盡的,且可用于理解和控制軟件過程和產品,量化控制將使軟件開發真正變成為一種工業生產活動。管理級是可預測的軟件過程,等級標志是記錄表格化,主要工作內容是度量軟件開發過程和產品質量。第四級軟件產品是高質量的。
5)優化級 第五級的目標是達到一個持續改善的境界。所謂持續改善是指可根據過程執行的反饋信息來改善下一步的執行過程,即優化執行步驟。軟件過程的不斷改進成為整個企業的主要著眼點和前進的動力。如果一個企業達到了這一級,那么表明該企業能夠根據實際的項目性質、技術等因素,不斷調整軟件生產過程以求達到最佳。優化級是可持續改進的軟件過程,等級標志是資源最優化,主要工作內容是提高軟件企業資源的利用水平。
從效果而言,在上述不同階段,軟件開發 生產的成熟程度給軟件企業帶來了完全不同的效果。第一階段到第五個階段,軟件開發生產的計劃精度越來越高,每單位工程的生產周期越來越短,每單位工程的成本越來越低。
2.成熟度級別進化
每一級向上一級邁進的過程中都有其特定的改進計劃,具體情況如下。(各級的過程特征及其改進方向詳見P27~P31相關表)
1)初始級的改進方向是:①建立項目過程管理,實施規范化管理,保障項目的承諾;②進行需求管理方面的工作,建立用戶與軟件項目之間的溝通,使項目真正反映用戶的要求;③建立各種軟件項目計劃,如軟件開發計劃、軟件質量保證計劃、軟件配置管理計劃、軟件測試計劃、風險管理計劃和過程改進計劃等;④積極開展軟件質量保證活動(SQA)。
2)可重復級的改進方向是:①不再按項目制定軟件過程,而是總結各種項目的成功經驗,使之規則化,把具體經驗歸納為全組織的標準軟件過程。把改進組織的整體軟件過程能力的軟件過程活動,作為軟件開發組織的責任;②確定全組織的標準軟件過程,把軟件工程及管理活動集成到一個穩固確定的軟件過程中,從而可以跨項目改進軟件過程效果,也可以作為軟件過程剪裁的基礎;③建立軟件工程過程小組(SPEG)長期承擔評估與調整軟件過程的任務,以適應未來軟件項目的要求;④積累數據,建立組織的軟件過程庫及軟件過程相關的文檔;⑤加強培訓。
3)已定義級的改進方向是:①著手軟件過程的定量分析,以達到定量地控制軟件項目過程的效果;②通過軟件的質量管理達到軟件的質量目標。
4)已管理級的改進方向是:①防范缺陷,不僅在發現了問題時能及時改進,而且應采取特定行動防止將來出現這類缺陷;②主動進行技術改革管理、標識、選擇和評價新技術,使有效的新技術能在開發組織中實施;③進行過程變更管理,定義過程改進的目的,經常不斷地進行過程改進。
5)優化級的改進目方向是:①保持持續不斷的軟件過程改進。CMM5級是優化級,之所以稱之為優化級不是因為它比第4級更高,它強調的是一個持續不斷的優化過程。如果你在某一個階段停頓下來,那么不進則退,你就有可能會掉下去。
3.成熟度舉例——軟件成熟度企業與不成熟企業的一個側影
大家都見過或聽說過某些軟件企業人才跳槽后的故事吧。的確存在這樣的事情,這些軟件企業當出現一些關鍵的開發人員跳槽離開后,進行中的項目便癱瘓了下來,甚至前功盡棄,已運行中的項目也難以繼續維護,給企業造成很大的損失。這就是不成熟企業的一個特征。
而在CMM框架中,運用2級中的一個基本軟件工程(KPA)就可以使員工自覺而規范地管理軟件生產過程中所有的資源、階段性產品、產品源代碼、文件以及最終生成的產品。嚴格遵循這套管理方法,程序員寫完一段代碼,經過一定測試之后,一旦提交到某個公共地方時,這個東西就不是你的了,已經成為項目小組或者是整個企業的了,而且跟隨著完善的文檔控制。如果你想對它進行任何修改,都要按照規范的程序把它從公共區域提取出來。規范的過程控制,將軟件企業由于人員流動帶來的風險降到了最低,同時還促使他們養成良好的職業素養。
四、CMM的內部結構
1.內部結構組成
CMM為軟件過程能力的提高提供了一條改進的途徑。CMM由5個成熟度等級組成,每個成熟度等級有著各自的功能。除第一級外,CMM的每一級按完全相同的內部結構構成的,不同的成熟度等級反映了軟件組織的軟件過程能力和該組織可能實現預期結果的程度。
在CMM中,除第1級外,每個成熟度等級都標志了該級別的軟件組織所具有的過程能力。每個成熟度等級(第1級除外)規定了若干不同的關鍵過程域,一個軟件組織如果希望達到某一個成熟度級別,就必須完全滿足關鍵過程域所規定的要求,即滿足關鍵過程域的目標。每一個關鍵過程域都含有屬于5種類別(公共特性)中的若干關鍵實踐,通過實現這些關鍵實踐來達到關鍵過程域的目標。
2.各構成要素描述
1)關鍵過程域(KPA):是指在有關基礎設施的保證支撐下的一系列相互關聯的操作活動,這些活動反映了一個軟件組織改進軟件過程時必須集中力量改進的幾個方面。可以簡單地說,關鍵過程域是互相關聯的若干軟件實踐活動和有關基礎設施的一個集合。換句話說,關鍵過程區域標識了達到某個成熟度等級時所必須滿足的條件。在CMM中一共有18個關鍵過程域,分布在第二至五級中,每個關鍵過程域規定了一個(組)必須滿足的目標,并由五個公共特性歸類的若干關鍵實踐活動描述實現之。
2)目標:是指某個關鍵過程域中的關鍵實踐,它表示每一個關鍵過程域的范圍、邊界和意圖。目標被用來判斷一個組織或項目是否有效地實現了某個特定的關鍵過程區域所規定的內容,即目標確定了關鍵過程區域的界限、范圍、內容和關鍵實踐。
每一個KPA都規定了一組目標,若這組目標在每一個項目都能實現,則說明企業滿足了該KPA的要求。若滿足了一個級別的所有KPA要求,則表明達到了這個級別所要求的能力。例如,可重復級中需求管理關鍵過程域的目標是:在軟件需求上建立、維護同用戶的協議;軟件項目計劃關鍵過程域的目標則為:建立一個為開展和管理軟件工程的合理設計;又如,軟件項目跟蹤和監控KPA的目標是:提供對實際進程的可見和監督,以便及時采取糾正措施。
3)公共特性:表征各種實踐活動的分類,一共分為五類。這些特性(有時又稱屬性)有效地指出了一個關鍵過程域的實現范圍、結構要求和實施內容。具體是:
①執行約定(commitment to perform):又稱實施保證,實施保證是企業為了建立和實施相應KPA所必須采取的活動,這些活動主要包括制定企業范圍的政策和高層管理的責任。
②執行能力(ability to perform):執行能力是企業實施KPA的前提條件。企業必須采取措施,在滿足了這些條件后,才有可能執行KPA的執行活動。實施能力一般包括資源保證、人員培訓等內容。
③實施活動(actives performed):實施活動也叫執行活動,執行過程描述了執行KPA所需求的必要角色、任務和步驟。在五個公共屬性中,執行活動是唯一一項由項目來執行相關的屬性,其余四個屬性則涉及企業CMM能力基礎設施的建立。執行活動一般包括計劃、執行的任務、任務執行的跟蹤以及改進措施等。
④度量和分析(measurement and analysis):度量分析描述了過程的度量和度量分析要求。典型的度量和度量分析的要求是確定執行活動的狀態和執行活動的有效性。
⑤驗證實施(verifying implementation):驗證實施是驗證執行活動是否與所建立的過程一致。實施驗證涉及到管理的評審和審計以及質量保證活動。實施驗證活動可通過管理和軟件質量保證進行核查。
4)關鍵實踐(KP):是指關鍵過程域中的一些主要實踐活動。具體就是指為達到關鍵過程目標,建立起那些對軟件過程活動起關鍵作用的方針、規程、措施、標準、活動以及相關基礎設施的實踐。每個關鍵過程域由若干關鍵實踐組成,通過這些關鍵實踐來達到關鍵過程域的目標。一般情況下,關鍵實踐描述了應該“做什么”,但并不規定“如何做”去達到這些目標。有關關鍵實踐的舉例:
例如:可重復級需求管理關鍵過程域中,記錄和管理系統需求的策略的實踐活動,就是一個關鍵實踐(執行約定);建立分析責任和分配系統需求這一實踐活動,也是該過程域的一個關鍵實踐(執行能力);還有,分配需求、提供資源和資金以及開展需求培訓(執行能力),也都是該過程域的一些關鍵實踐活動。當然,該過程域還有度量需求管理活動狀態(度量與分析)……
在一些文獻中使用了“關鍵慣例”、“優秀實踐”等詞。關鍵慣例與關鍵實踐在概念上基本相同,只是“關鍵慣例”似乎更加突出了使用以往成功經驗和成果之意。“優秀實踐”也大概如此。
上面提到了CMM把軟件開發組織的能力成熟度分為5個等級。除了第1級外,其他每一級由幾個關鍵過程域組成。每一個關鍵過程域都由上述分為5種公共特性的實踐活動予以描述。關鍵過程域的分類詳見圖2.7。它列出了四個成熟度等級的共18個關鍵過程域。
3.功能綜述
從上面所示的結構模型可以看出,CMM包括兩大部分“軟件能力成熟度模型”和“能力成熟度模型的關鍵慣例”。“軟件能力成熟度模型”主要是描述此模型的結構,并且給出該模型的基本構件的定義。“能力成熟度模型的關鍵慣例”詳細描述了每個“關鍵過程方面”涉及的“關鍵慣例”。這里“關鍵過程方面”是指一組相關聯的活動,也就是關鍵過程域;每個軟件能力成熟度等級包含若干個對該成熟度等級至關重要的過程方面,它們的實施對達到該成熟度等級的目標起到保證作用。這些過程域就稱為該成熟度等級的關鍵過程域。反之,非關鍵過程域是指對達到相應軟件過程成熟度等級的目標不起關鍵作用。可以歸納為:關鍵過程域是互相關聯的若干軟件實踐活動和有關基礎設施的一個集合。而“關鍵慣例”是指使關鍵過程方面得以有效實現和制度化的作用最大的基礎設施和活動,對關鍵過程的實踐起關鍵作用的方針、規程、措施、標準、活動以及相關基礎設施的建立。關鍵實踐一般只描述“做什么”而不強制規定“如何做”。各個關鍵慣例按每個關鍵過程方面的五個“公共特性”【執行約定(對執行該過程的承諾),執行能力(執行該過程的能力),實施活動(該過程中要執行的活動),度量和分析(對該過程執行情況的度量和分析),驗證實施(證實所執行的活動符合該過程)】歸類,逐一詳細描述。當作到了某個關鍵過程的全部關鍵慣例就認為實現了該關鍵過程,如果實現了某成熟度級別以及比其低級所含的全部關鍵過程就認為達到了該級。
CMM總結:五層結構圖
我們看到,在第五級上,技術和過程的改進像普通商業活動一樣有計劃、有管理地進行。由于組織不斷的致力于改進過程的能力,所以軟件開發組織的能力可持續改進。這種改進不僅表現在對存在的軟件過程逐步改進,不表現在采用新技術和新方法方面的革新。
畫一個圖吧:(CMM的五層結構圖)
-----------------
/ 優 化 級 /
/ (5) /
-----------------
↑
| 不斷改進的過程
|
-----------------
/ 可 管 理 級 /
/ (4) /
-----------------
↑
| 能預見的過程
|
-----------------
/ 確 定 級 /
/ (3) /
-----------------
↑
| 標準一致的過程
|
-----------------
/ 可 重 復 級 /
/ (2) /
-----------------
↑
| 有紀律的過程
|
-----------------
/ 初 始 級 /
/ (1) /
-----------------
總結
- 上一篇: Linux学习日志DAY8
- 下一篇: C++模板元编程(0)什么是模板元编程,