日前,國務院發布的《鼓勵軟件產業和集成電路產業發展的若幹政策》中第17條中表示,將對軟件出口型企業CMM認證費用予以適當支持,那麽CMM是什麽呢? CMM是能力成熟度模型(capabilityMaturityModel)的縮寫,是壹種用於評價軟件承包能力並幫助其改善軟件質量的方法,側重於軟件開發過程的管理及工程能力的提高與評估。CMM分為五個等級:壹級為初始級,二級為可重復級,三級為已定義級,四級為已管理級,五級為優化級。 CMM是由美國卡內基梅隆大學軟件工程研究所1987年研制成功的,是目前國際上最流行最實用的軟件生產過程標準和軟件企業成熟度等級認證標準。目前,我國已有軟件企業通過了CMM標準認證。
********************************************
CMM是軟件過程能力成熟度模型(Capacity Maturity Model)
不過這東西被上壹期csdn雜誌上壹篇文章鄙視過。
CMM簡介
CMM是軟件過程能力成熟度模型(Capacity Maturity Model)的簡稱,是卡內基-梅隆大學軟件工程研究院為了滿足美國聯邦政府評估軟件供應 商能力的要求,於1986年開始研究的模型,並於1991年正式推出了CMM 1.0 版。CMM自問世以來備受關註,在壹些發達國家和地區得到了廣泛應用,成為衡量軟件公司軟件開發管理水平的重要參考因素和軟件過程改進事實上的工業標準。據了解,美國、印度、日本等國家已有數十家公司通過了CMM不同等級的認證。
1986年11月,SEI應美國聯邦政府的要求,在Mitre公司的協助下,於1987年9月開發了壹套軟件能力成熟度框架和壹套軟件成熟度問卷,用來評估軟件供應商的能力。這就是最早用於探索軟件過程成熟度的壹個工具。
四年以後,也就是1991年,SEI自己總結了CMM成熟度框架和初版成熟度問卷的實踐經驗,並以此為基礎推出民用CMM1.0版。
CMM1.0版合用兩年之後,1992年4月,SEI舉行了CMM壹個的研討會,參加研討會的有大約200名富有經驗的軟件專家。SEI在廣泛聽取他們的意見之後,又於1993年推出 CMM1.1版。這也是目前世界上比較流行和通用的CMM版本。
十幾年來,此項工作壹直在不斷進行。按照SEI原來的計劃,CMM的改進版本2.0應該在1997年11月完成,然後在取得版本2.0得實踐反饋意見之後,在1999年完成準CMM2.0版本。但是,美國國防部辦公室要求SEI推遲發布CMM2.0版本,而要先完成壹個更為緊迫得項目CMMI。
CMMI(Capability Maturity Model Integration)即能力成熟度模型集成,這也是美國國防部的壹個設想,他們想把現在所有的以及將被發展出來的各種能力成熟度模型,集成到壹個框架中去。這個框架有兩個功能,第壹,軟件獲取方法的改革;第二,建立壹種從集成產品與過程發展的角度出發、包含健全的系統開發原則的過程改進。
隨著人們對CMM研究的不斷深入,其他學科也結合本系統的特點,陸續推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統工程能力成熟度模型等等。為了以示區別,國內外很多資料把CMM叫做SW-CMM。
軟件過程成熟度的提高是壹個漸進的過程,需要壹個長遠的、可持續發展的過程作為保證。為建立壹個面向過程持續提高的基礎和文化,有些軟件企業可能要花費很大的精力和時間。但是這種努力對任何壹個軟件企業來說都是非常必要的。
CMM目前代表著軟件發展的壹種思路,壹種提高軟件過程能力的途徑。盡管它存在著某些不足。例如,成熟級別、關鍵過程域、公***屬性和關鍵實踐還需要在軟件行業進壹步深入地討論和修訂,但它確實為軟件行業的發展提供了壹個良好的框架,而且是濃度軟件過程能力提高的有用工具。
增強我國軟件企業的競爭力,提高國產軟件的水平是國人的***同願望,但目前我國軟件水平,尤其是軟件開發能力和軟件生產能力還很差,這也是不爭的事實。那麽,如何提高我國軟件的開發和生產能力,從而提高軟件整體水平?軟件企業實施CMM也許不失為壹條有效的途徑。
壹個企業的軟件能力更取決於該企業的過程能力,特別是在軟件開發和生產中的成熟度。其過程能力越是成熟,該企業的軟件生產能力 就越有保證。目前,我國已有壹些軟件企業正在嘗試實施CMM。
當然,CMM不是萬能的,並不壹定對所有的軟件企業都適合,實施CMM的企業也有失敗的例子。我們希望通過本專欄能使更多的企業了解CMM,盡快找到適合本企業的發展之路,從而提高中國軟件企業的競爭力。
**********************************************
畫壹個圖吧:(CMM的五層結構圖)
-----------------
/ 優 化 級 /
/ (5) /
-----------------
↑
| 不斷改進的過程
|
-----------------
/ 可 管 理 級 /
/ (4) /
-----------------
↑
| 能預見的過程
|
-----------------
/ 確 定 級 /
/ (3) /
-----------------
↑
| 標準壹致的過程
|
-----------------
/ 可 重 復 級 /
/ (2) /
-----------------
↑
| 有紀律的過程
|
-----------------
/ 初 始 級 /
/ (1) /
-----------------
*********************************************
CMM即Capability Maturity Model,中文翻譯為能力成熟度模型", 是軟件工程研究的壹個重要裏程碑。CMM的研究始於1986年11月,當時為了滿足美國聯邦政府評估軟件供應商能力的要求,美國卡內基·梅隆大學的軟件工程研究院(SEI)牽頭,在Mitre公司的協助下,用不到壹年的時間,於1987年9月發布了壹份能力成熟度框架(Capability Maturity Framework),以及壹套成熟度問卷(Maturity Questionnaire).
很多人認為這套問卷就代表了CMM模型,其實它只是用於探索軟件過程成熟度的壹個工具,真正的模型出現在四年以後。SEI總結了自1987年以來對成熟度框架和初版成熟度問卷的實戰經驗,並以此為基礎,推出了CMM1.0版。這個推出於1991年的CMM1.0 集中了四年來對軟件公司評估的經驗以及廣泛的用戶反饋,在成熟度框架的基礎上建立了壹個可用的模型,這個模型可以更加有效地幫助軟件企業建立和實施過程改進計劃。
CMM1.0版使用兩年之後,於1992年四月進行了壹個研討會,參加研討會的有約兩百名富有經驗的軟件專業人員。在廣泛聽取了他們的反饋意見之後,SEI於1993年推出了CMM1.1版。近幾年來,CMM又推出了2.0版本,同時進入了ISO體系,稱為ISO/IEC15504或SPICE. SPICE從1995年起進入實地測試階段,可能於2001年發布。
CMM致力於軟件開發過程的管理及工程能力的提高與評估。該模型在美國和北美地區已得到廣泛應用同時正在被越來越多的歐洲和亞洲等國家的大型信息技術企業所采納,實際上已成為軟件開發過程改進與評估的事實上的工業標準。
CMM將軟件過程的成熟度分為5個等級,以下是5個等級的軟件機構的特征:
(1)初始級(initial) 工作無序,項目進行過程中常放棄當初的計劃。管理無章,缺乏健全的管理制度。開發項目成效不穩定,優秀管理人員的管理方法可能取得有效,但他壹離去,工作秩序面目全非,產品的性能和質量依賴於個人能力和行為。
(2)可重復級(Repeatable) 管理制度化,建立了基本的管理制度和規程,管理工作有章可循。 初步實現標準化,開發工作較好地實施標準。 變更依法進行,做到基線化。穩定可跟蹤,新項目的計劃和管理基於過去的實踐經驗,具有重復以前成功項目的環境和條件。
(3)已定義級(Defined) 開發過程,包括技術工作和管理工作,均已實現標準化、文檔化。 建立了完善的培訓制度和專家評審制度 全部技術活動和管理活動均可控制 對項目進行中的過程、崗位和職責均有***同的理解 。
(4)已管理級(Managed) 產品和過程已建立了定量的質量目標。過程中活動的生產率和質量是可量度的。已建立過程數據庫。已實現項目產品和過程的控制。可預測過程和產品質量趨勢,如預測偏差,實現及時糾正。
(5)優化級(Optimizing) 可集中精力改進過程,采用新技術、新方法。擁有防止出現缺陷、識別薄弱環節以及加以改進的手段。可取得過程有效性的統計數據,並可據進行分析,從而得出最佳方法。
軟件大國印度,十分重視軟件開發過程的管理及與其相關的理論與標準的發展。據統計,在印度的2000多家軟件公司中有75家軟件公司通過了ISO9000認證, 60多家軟件公司通過了CMM認證,其中達到CMM5級壹家,4級三家,3級4家。
CMM與ISO9000的區別主要有以下幾點:
1.CMM是專門針對軟件產品開發及服務的,而ISO9000則有寬得多的範圍。
2.CMM強調軟件開發過程的成熟度,即過程的不斷改進和提高,而ISO9000則僅描述可接收的質量體系的最低標準。
3.CMM3級的覆蓋範圍要大於ISO9000的覆蓋範圍
引進CMM的意義:
1. 對軟件企業:
提高軟件開發的管理能力:CMM提供了軟件企業自我評估的方法和自我提高的手段
提高軟件生產率
加強軟件生產的國際競爭力
2. 對軟件項目發包單位和軟件用戶:
提供了對軟件開發商開發管理水平的評估手段,有助於軟件開發項目的風險識別。
***********************************************
隨著人們對CMM研究的不斷深入,其他學科也結合本系統的特點,陸續推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統工程能力成熟度模型等等:
(1) SW-CMM (Software CMM) 軟件CMM
(2) SE-CMM (System Engineering CMM) 系統工程CMM
(3) SA-CMM (Software Acquisition CMM) 軟件采購CMM
(4) IPT-CMM (Integrated Product Team CMM) 集成產品群組CMM
(5) P-CMM (People CMM) 人力資源能力成熟度模型
為了以示區別,國內外很多資料把CMM叫做SW-CMM。按照SEI原來的計劃,CMM的改進版本2.0應該在1997年11月完成,然後在取得版本2.0得實踐反饋意見之後,在1999年完成準CMM2.0版本。但是,美國國防部辦公室要求SEI推遲發布CMM2.0版本,而要先完成壹個更為緊迫的項目CMMI。
CMMI(Capability Maturity Model Integration)即能力成熟度集成模型,這也是美國國防部的壹個設想,他們想把現在所有的以及將被發展出來的各種能力成熟度模型,集成到壹個框架中去。這個框架有兩個功能,第壹,軟件采購方法的改革;第二,建立壹種從集成產品與過程發展的角度出發、包含健全的系統開發原則的過程改進。就軟件而言,CMMI是SW-CMM的修訂本。它兼收了SW-CMM 2.0版C稿草案和SPA中更合理、更科學和更周密的優點。SEI在發表CMMI-SE/SW 1.0版時,宣布大約用兩年的時間完成從CMM到CMMI的過渡。
CMMI項目更為工業界和政府部門提供了壹個集成的產品集,其主要目的是消除不同模型之間的不壹致和重復,降低基於模型改善的成本。CMMI將以更加系統和壹致的框架來指導組織改善軟件過程,提高產品和服務的開發、獲取和維護能力
*********************************************
CMM的發展過程
1984年美國國防部為降低采購風險,委托卡耐基—梅隆大學軟件工程研究院(SEI)制定了軟件過程改進、評估模型,也稱為SEI SW-CMM。該模型於1991年正式推出,迅速得到廣大軟件企業及其顧客的認可。從1987年SEI推出SW-CMM框架開始,1991年推出 CMM 1.0 版,1993年推出CMM 1.1 版,2000年推出CMMI-SE/SW 1.0版。我國也於2001年4月發布了《SJ/T 11234-2001 軟件過程能力評估模型》和《SJ/T 11235-2001 軟件能力成熟度模型》兩個標準。我國政府壹直重視軟件產業的規範和發展,國務院於2000年6月頒發的“18號文件”第五章第十七條明確提出鼓勵軟件出口型企業通過ISO9000系列質量保證體系認證和CMM認證,其認證費用通過中央外貿發展基金適當予以支持。目前各省市、高新區、軟件園都有對通過CMM的企業給予資金獎勵的制度。
**********************************************
CMM的含義與作用
CMM是Capability Maturity Model for Software的簡稱,中文叫“軟件能力成熟度模型”,是對組織軟件過程能力的描述。CMM的核心是把軟件開發視為壹個過程,並根據這壹原則對軟件開發和維護進行過程監控和研究,以使其更加科學化、標準化,使企業能夠更好的實現商業目標。它側重於軟件過程開發的管理及軟件工程能力的改進與評估,因此CMM被用作評價軟件承包商能力並幫助組織改善軟件過程質量,是目前國際上最流行、最實用的壹種軟件過程改進模型,成為當今企業從事規模軟件生產不可缺少的壹項內容。CMM的目的是幫助軟件企業對軟件工程過程進行管理和改進,增強開發與改進能力,從而能按時地、不超預算地開發出高質量的軟件。企業實施CMM模型並評估可為企業帶來如下好處:指導軟件組織提高軟件開發管理能力;降低軟件承包商和采購者的風險;評估軟件承包商的軟件開發管理能力;幫助軟件企業識別開發和維護軟件的有效過程和關鍵實踐;幫助軟件企業識別為達到CMM更高成熟等級所必須的關鍵實踐;增加軟件企業的國際競爭能力。
**********************************************
什麽是CMM的核心?這是長期在有誌於軟件工程與過程改進的人中存在的壹個問題。本人在壹次CMM培訓中準備了壹個案例,希望能夠生動而淺顯地解釋這個問題,在此與大家***享,也希望大家能提出更多問題。如要轉載,請順手給我發個Email:JennyLi@netease.com,非常感謝。案例背景:有壹間房子,裏面有壹些人,壹些杯子和水壺,以及用於燒水的用具,所有的人都需要喝開水。CMM 1級:過程:找到杯子和水壺倒水喝問題:找不到杯子,沒水喝找不到水壺,沒水喝水壺沒水——不知道該怎麽辦壹天要喝多少水——不知道倒壹杯水要花多少時間,每個人每天為倒水花多少時間——不知道思考:買個飲水機能解決問題嗎?CMM 2級:過程:杯子放在茶幾上水壺放在餐臺上如果水壺沒水,在廚房燒水杯子用完要清洗,並放回茶幾培訓:廚房燒水,清洗杯子度量壹天要燒幾壺水,每個人每次/每天倒水要花多少時間有人檢查是否所有人用完杯子後都清洗並放回餐臺管理者關註這些活動的執行狀態與成效問題:燒水太花時間水要等涼了才能喝效率不穩定:有人每天花20分鐘倒水,有人每天花80分鐘思考:買個飲水機能有幫助嗎?CMM 3級:過程:所有人都先在茶幾取杯子,再去餐臺倒水統壹用大杯子每人每次倒兩杯水,與人分享指派專人定時燒水,放在涼水壺裏指派專人定時收集和清洗杯子問題:怎樣才能做得更好?思考:買個飲水機劃算嗎?CMM 4級:過程:建立評價模型:節省1分鐘=節省1元錢,如果每人每天節省1分鐘,則100個人1個月(30天)可以節省3000元——只要每月花費不超過3000元,我們就可以嘗試新過程定義量化的管理目標:3個月內將每人每天用於倒水的時間減少2分鐘以現在每人每天用於倒水的時間建立基線:平均10分鐘,最少5分鐘,最多20分鐘每個人為自己制定優於平均值的目標:本人每天用於倒水的時間不超過6分鐘度量並監控每天用於倒水的時間,壹旦超過6分鐘,要分析根本原因,並制定調整措施;最後結果是8分鐘,超出預定的目標,但比平均值要好3個月後調整基線:平均8分鐘,最低4分鐘,最高15分鐘問題:不改進不行了!思考:買個飲水機是最好的方案嗎?CMM 5級:過程:發現問題的根本原因:倒水的時間之所以不能再少,是因為房間太大,走到餐臺太遠找出能夠解決根本原因的所有方法,用評價模型進行評價選擇壹種方法,並制定改進的目標:買10個飲水機放在客廳裏,每人每天節省2分鐘制定相應的過程:如果買飲水機,則需要定期定購桶裝水,定期對飲水機出水口進行清洗和消毒,請人及時更換空水桶試行過程:先找幾個人試用,看看是否能達到預期目標推廣:讓所有人都用飲水機繼續發現其它的根本原因……問題:怎樣發現更多根本原因怎樣引進更多新方法思考:還有什麽比飲水機更好的方法嗎?
比喻二:
壹級:壹群人沒有經過訓練,也不知道有沒有經驗,下水之後亂撲騰,有的人浮起來,有的人沈下去了。這就是壹級的無序狀態,結果是不可知的二級:大家都在遊泳池或者小池塘裏下過幾次水,基本上在這樣的條件下不會出事了。但是動作亂七八糟,有狗刨有說不出名字的動作。也就是二級的能夠重復以前的成功經驗三級:經過研究,確定了幾種標準泳姿,知道自由泳最快,蛙泳最省力等等。這就是三級,有了標準的過程定義四級:大家都掌握標準動作之後,互相之間的成績就可以比較了。通過測量大家的遊泳成績(當然不同泳姿的成績要分開)、肌肉力量等等,分析特別好的和特別差的,找出好的原因和差的原因,大家的技術水平不斷提高。這就是四級的量化控制,通過數據來管理和改進五級:大家的技術水平都很高了,動作都很完美。我們就通過創造新的泳姿,引入新式遊泳衣等等創新來提高成績。這就是五級的持續改進
**********************************************
CMM的結構
SW-CMM為軟件企業的過程能力提供了壹個階梯式的進化框架,階梯***有五級。第壹級實際上是壹個起點,任何準備按CMM質進化的企業壹般都處於這個起點上,並通過這個起點向第二級邁進。除第壹級外,每壹級都設定了壹組目標,如果達到了這組目標,則表明達到了這個成熟級別,可以向下壹個級別邁進。CMM系不主張跨越級別的進化,因為從第二級起,每壹個低的級別實現均是高的級別實現的基礎。
SW-CMM提供階梯式的進化框架
1.初始級 初始級的軟件過程是未加定義的隨意過程,項目的執行是隨意甚至是混亂的。也許,有些企業制定了壹些軟件工程規範,但若這些規範未能覆蓋基本的關鍵過程要求,且執行沒有政策、資源等方面的保證時,那麽它仍然被視為初始級。
2.可重級 根據多年的經驗和教訓,人們總結出軟件開發的首要問題不是技術問題而是管理問題。因此,第二級的焦點集中在軟件管理過程上。壹個可管理的過程則是壹個可重級的過程,壹個可重級的過程則能逐漸進化和成熟。第二級的管理過程包括了需求管理、項目管理、質量管理、配置管理和子合同管理五個方面。其中項目管理分為計劃過程和跟蹤監控過程兩個過程。通過實施這些過程,從管理角度可以看到壹個按計劃執行的且階段可控的軟件開發過程。
3.定義級 在第二級僅定義了管理的基本過程,而沒有定義執行的步驟標準。在第三級則要求制定企業範圍的工程化標準,而且無論是管理還是工程開發都需要壹套文檔化的標準,並將這些標準集成到企業軟件開發標準過程中去。所有開發的項目需根據這個標準過程,剪裁出該項目的過程,並執行這些過程。過程的剪裁不是隨意的,在使用前需經過企業有關人員的批準。
4.管理級 第四級的管理是量化的管理。所有過程需建立相應的度量方式,所有產品的質量(包括工作產品和提交給用戶的產品)需有明確的度量指標。這些度量應是詳盡的,且可用於理解和控制軟件過程和產品,量化控制將使軟件開發真正變成為工業生產活動。
5.優化級 第五級的目標是達到壹個持續改善的境界。所謂持續改善是指可根據過程執行的反饋信息來改善下壹步的執行過程,即優化執行步驟。如果壹個企業達到了這壹級,那麽表明該企業能夠根據實際的項目性質、技術等因素,不斷調整軟件生產過程以求達到最佳。
從效果而言,在上述不同階段,軟件開發生產的成熟程度給軟件企業帶來了完全不同的效果。第壹階段到第五個階段,軟件開發生產的計劃精度越來越高,每單位工程的生產周期越來越短,每單位工程的成本越來越低。
關鍵過程域(KPA)
除第壹級外,SW-CMM的每壹級是按完全相同的結構成的。每壹級包含了實現這壹級目標的若幹關鍵過程域(KPA),每個KPA進壹步包含若幹關鍵實施活動(KP),無論哪個KPA,它們的實施活動都統壹按五個公***屬性進行組織,即每壹個KPA都包含五類KP。
1.目標 每壹個KPA都確定了壹組目標,若這組目標在每壹個項目都能實現,則說明企業滿足了該KPA的要求。若滿足了壹個級別的所有KPA要求,則表明達到了這個級別所要求的能力。
2.實施保證 實施保證是企業為了建立和實施相應KPA所必須采取的活動,這些活動主要包括制定企業範圍的政策和高層管理的責任。
3.實施能力 實施能力是企業實施KPA的前提條件。企業必須采取措施,在滿足了這些條件後,才有可能執行KPA的執行活動。實施能力壹般包括資源保證、人員培訓等內容。
4.執行活動 執行過程描述了執行KPA所需求的必要角色和步驟。在五個公***屬性中,執行活動是唯壹項目執行相關的屬性,其余四個屬性則涉及企業CMM能力基礎設施的建立。執行活動壹般包括計劃、執行的任務、任務執行的跟蹤等。
5.度量分析 度量分析描述了過程的度量和度量分析要求。典型的度量和度量分析的要求是確定執行活動的狀態和執行活動的有效性。
6.實施驗證 實施驗證是驗證執行活動是否與建立的過程壹致。實施驗證涉及到管理的評審和審計以及質量保證活動。
在實施CMM時,可以根據企業軟件過程存在問題的不同程度確定實現KPA的次序,然後按所確定次序逐步建立、實施相應過程。在執行某壹個KPA時,對其目標組也可采用逐步滿足的方式。過程進化和逐步走向成熟是CMM體系的宗旨。