能力成熟度模型(Capability Maturity Model for Software,英文縮寫為SW-CMM,簡稱CMM)
什么是能力成熟度模型
CMM是指“能力成熟度模型”,是對于軟件組織在定義、實施、度量、控制和改善其軟件過程的實踐中各個發展階段的描述。CMM的核心是把軟件開發視為一個過程,并根據這一原則對軟件開發和維護進行過程監控和研究,以使其更加科學化、標準化、使企業能夠更好地實現商業目標。
CMM是一種用于評價軟件承包能力并幫助其改善軟件質量的方法,側重于軟件開發過程的管理及工程能力的提高與評估。CMM分為五個等級:一級為初始級,二級為可重復級,三級為已定義級,四級為已管理級,五級為優化級。
其所依據的想法是:只要集中精力持續努力去建立有效的軟件工程過程的基礎結構,不斷進行管理的實踐和過程的改進,就可以克服軟件生產中的困難。CMM它是目前國際上最流行、最實用的一種軟件生產過程標準,已經得到了眾多國家以及國際軟件產業界的認可,成為當今企業從事規模軟件生產不可缺少的一項內容。
CMM為軟件企業的過程能力提供了一個階梯式的改進框架,它基于過去所有軟件工程過程改進的成果,吸取了以往軟件工程的經驗教訓,提供了一個基于過程改進的框架;它指明了一個軟件組織在軟件開發方面需要管理哪些主要工作、這些工作之間的關系、以及以怎樣的先后次序,一步一步的做好這些工作而使軟件組織走向成熟。
軟件工程學會SEI的CMM模型的五個梯級如下:
能力成熟度模型的歷史和發展
信息時代,軟件質量的重要性越來越為人們所認識。軟件是產品、是裝備、是工具,其質量使得顧客滿意,是產品市場開拓、事業得以發展的關鍵。而軟件工程領域在1992年至1997年取得了前所未有的進展,其成果超過軟件工程領域過去15年來的成就總和。
軟件管理工程引起廣泛注意源于20世紀70年代中期。當時美國國防部曾立題專門研究軟件項目做不好的原因,發現70%的項目是因為管理不善而引起,而并不是因為技術實力不夠,進而得出一個結論,即管理是影響軟件研發項目全局的因素,而技術只影響局部。到了20世紀90年代中期,軟件管理工程不善的問題仍然存在,大約只有10%的項目能夠在預定的費用和進度下交付。軟件項目失敗的主要原因有:需求定義不明確;缺乏一個好的軟件開發過程;沒有一個統一領導的產品研發小組;子合同管理不嚴格;沒有經常注意改善軟件過程;對軟件構架很不重視;軟件界面定義不善且缺乏合適的控制;軟件升級暴露了硬件的缺點;關心創新而不關心費用和風險;軍用標準太少且不夠完善等等。在關系到軟件項目成功與否的眾多因素中,軟件度量、工作量估計、項目規劃、進展控制、需求變化和風險管理等都是與工程管理直接相關的因素。由此可見,軟件管理工程的意義至關重要。
1987年,美國卡內基. 梅隆大學軟件研究所(SEI)受美國國防部的委托,率先在軟件行業從軟件過程能力的角度提出了軟件過程成熟度模型(CMM),隨后在全世界推廣實施的一種軟件評估標準,用于評價軟件承包能力并幫助其改善軟件質量的方法。它主要用于軟件開發過程和軟件開發能力的評價和改進。它側重于軟件開發過程的管理及工程能力的提高與評估。CM自1987年開始實施認證,現已成為軟件業最權威的評估認證體系。CMM包括5個等級,共計18個過程域,52個目標,300多個關鍵實踐。
CMM的基本思想
CMM的基本思想是,因為問題是由我們管理軟件過程的方法引起的,所以新軟件技術的運用不會自動提高生產率和利潤率。CMM有助于組織建立一個有規律的、成熟的軟件過程。改進的過程將會生產出質量更好的軟件,使更多的軟件項目免受時間和費用的超支之苦。
軟件過程包括各種活動、技術和用來生產軟件的工具。因此,它實際上包括了軟件生產的技術方面和管理方面。CMM策略力圖改進軟件過程的管理,而在技術上的改進是其必然的結果。
必須牢記,軟件過程的改善不可能在一夜之間完成,CMM是以增量方式逐步引入變化的。CMM明確地定義了5個不同的“成熟度”等級,一個組織可按一系列小的改良性步驟向更高的成熟度等級前進。其分級、特征與要求見表-1。
成熟度等級1:初始級(Initial)。處于這個最低級的組織,基本上沒有健全的軟件工程管理制度。每件事情都以特殊的方法來做。如果一個特定的工程碰巧由一個有能力的管理員和一個優秀的軟件開發組來做,則這個工程可能是成功的。然而通常的情況是,由于缺乏健全的總體管理和詳細計劃,時間和費用經常超支。結果,大多數的行動只是應付危機,而非事先計劃好的任務。處于成熟度等級1的組織,由于軟件過程完全取決于當前的人員配備,所以具有不可預測性,人員變化了,過程也跟著變化。結果,要精確地預測產品的開發時間和費用之類重要的項目,是不可能的。
成熟度等級2:可重復級(Repeatable)。在這一級,有些基本的軟件項目的管理行為、設計和管理技術是基于相似產品中的經驗,故稱為“可重復”。在這一級采取了一定措施,這些措施是實現一個完備過程所必不可缺少的第一步。典型的措施包括仔細地跟蹤費用和進度。不像在第一級那樣,在危機狀態下方行動,管理人員在問題出現時便可發現,并立即采取修正行動,以防它們變成危機。關鍵的一點是,如沒有這些措施,要在問題變得無法收拾前發現它們是不可能的。在一個項目中采取的措施也可用來為未來的項目擬定實現的期限和費用計劃。
成熟度等級3:已定義級(Defined)。在第3級,已為軟件生產的過程編制了完整的文檔。軟件過程的管理方面和技術方面都明確地做了定義,并按需要不斷地改進過程,而且采用評審的辦法來保證軟件的質量。在這一級,可引用CASE環境來進一步提高質量和產生率。而在第—級過程中,“高技術”只會使這一危機驅動的過程更混亂。
成熟度等級4:已管理級(Managed)。一個處于第4級的公司對每個項目都設定質量和生產目標。這兩個量將被不斷地測量,當偏離目標太多時,就采取行動來修正。利用統計質量控制,管理部門能區分出隨機偏離和有深刻含義的質量或生產目標的偏離(統計質量控制措施的一個簡單例子是每千行代碼的錯誤率。相應的目標就是隨時間推移減少這個量)。
成熟度等級5:優化級(Optimizing)?!獋€第5級組織的目標是連續地改進軟件過程。這樣的組織使用統計質量和過程控制技術作為指導。從各個方面中獲得的知識將被運用在以后的項目中,從而使軟件過程融入了正反饋循環,使生產率和質量得到穩步的改進。
整個企業將會把重點放在對過程進行不斷的優化,采取主動的措施去找出過程的弱點與長處,以達到預防缺陷的目標。同時,分析各有關過程的有效性資料,作出對新技術的成本與效益的分析,并提出對過程進行修改的建議。達到該級的公司可自發的不斷改進,防止同類缺陷二次出現。
在表中可以看出,CMM為軟件的過程能力提供了一個階梯式的改進框架,它基于以往軟件工程的經驗教訓,提供了一個基于過程改進的框架圖,它指出一個軟件組織在軟件開發方面需要那些主要工作,這些工作之間的關系,以及開展工作的先后順序,一步一步的做好這些工作而使軟件組織走向成熟。CMM的思想來源于已有多年歷史的項目管理和質量管理,自產生以來幾經修訂,成為軟件業具有廣泛影響的模型,并對以后項目管理成熟度模型的建立產生了重要的影響。盡管已有個人或團體提出了各種各樣的成熟度模型,但還沒有一個象CMM那樣在業界確立了權威標準的地位。但PMI于2003年發布的OPM3以其立體的模型及涵蓋范圍的廣泛有望成為項目管理界的標準。
實施CMM的必要性
軟件開發的風險之所以大,是由于軟件過程能力低,其中最關鍵的問題在于軟件開發組織不能很好地管理其軟件過程,從而使一些好的開發方法和技術起不到預期的作用。而且項目的成功也是通過工作組的杰出努力,所以僅僅建立在可得到特定人員上的成功不能為全組織的生產和質量的長期提高打下基礎,必須在建立有效的軟件如管理工程實踐和管理實踐的基礎設施方面,堅持不懈地努力,才能不斷改進,才能持續地成功。
軟件質量是一模糊的、捉摸不定的概念。我們常常聽說:某某軟件好用, 某某軟件不好用;某某某軟件功能全、結構合理, 某某某軟件功能單一、操作困難……這些模模糊糊的語言不能算作是軟件質量評價,更不能算作是軟件質量科學的定量的評價。軟件質量,乃至于任何產品質量,都是一個很復雜的事物性質和行為。產品質量,包括軟件質量,是人們實踐產物的屬性和行為,是可以認識,可以科學地描述的。可以通過一些方法和人類活動,來改進質量。
實施CMM是改進軟件質量的有效方法:控制軟件生產過程、提高軟件生產者組織性和軟件生產者個人能力的有效合理的方法軟件工程和很多研究領域及實際問題有關,主要相關領域和因素有:需求工程(REQUIREMENTS ENGINEERING)。理論上,需求工程是應用已被證明的原理、技術和工具,幫助系統分析人員理解問題或描述產品的外在行為。軟件復用(SOFTWARE REUSE),定義為利用工程知識或方法,由一已存在的系統,來建造一新系統。這種技術,可改進軟件產品質量和生產率。還有軟件檢查、軟件計量、軟件可靠性、軟件可維修性、軟件工具評估和選擇等。
轉載自:http://wiki.mbalib.com/wiki/能力成熟度模型