CMM是壹種評估軟件承包能力並幫助其提高軟件質量的方法,側重於軟件開發過程的管理和工程能力的提高與評估。CMM分為五級:第壹級是初始級,第二級是可重復級,第三級是定義級,第四級是管理級,第五級是優化級。
CMM由美國卡內基梅隆大學軟件工程研究所於1987年研制成功。它是國際上最流行、最實用的軟件生產過程標準和軟件企業成熟度等級認證標準。目前,我國現有的軟件企業都已經通過了CMM標準認證。
SW-CMM(Capability Maturity Model for Software Productivity Maturity Model,以下簡稱“CMM”)是美國卡耐基梅隆大學軟件工程研究所(CMU SEI)於1987年開發的壹種方法,用於評估軟件承包商的能力,幫助提高軟件質量。其目的是幫助軟件企業管理和改進軟件工程過程,增強其開發和改進能力,從而在預算內按時開發出高質量的軟件。
它基於這樣壹種思想,即只要我們集中精力建立有效的軟件工程過程基礎設施,並不斷進行管理實踐和過程改進,我們就可以克服軟件生產中的困難。CMM是國際上最流行、最實用的軟件生產過程標準,得到了許多國家和國際軟件業的認可,成為企業從事大型軟件生產不可或缺的內容。
目前比較流行的CMM版本是1.1(版本1.1)。根據軟件工程研究所(SEI)的原始計劃,CMM的改進版本2.0 (V2.0)將於1997+01年6月完成。然而,美國國防部辦公室要求軟件工程研究所(SEI)推遲發布CMM 2.0版本,直到他們完成另壹個更緊急的項目——CMMI。
CMMI(Capability Maturity Model Integration能力成熟度模型集成)是美國國防部的壹個想法。他們希望將所有現有的和未來的能力成熟度模型集成到壹個框架中。這個框架用來解決兩個問題:壹是軟件采購方式的改革;其次,從集成產品和過程開發的角度,建立壹個包括完善的系統開發原則的過程改進。
CMM為軟件企業的過程能力提供了壹個逐步改進的框架。CMM基於以往軟件工程過程改進的所有成果,借鑒以往軟件工程的經驗,提供了壹個基於過程改進的框架。它指出了壹個軟件組織在軟件開發中需要管理哪些主要任務,這些任務之間的關系,以及按照什麽樣的順序,壹步壹步地去做這些任務,才能使軟件組織走向成熟。
壹、CMM的誕生
在信息時代,軟件質量的重要性越來越被人們所認識。軟件是產品,是設備,是工具,它的質量讓客戶滿意,是產品市場開拓和事業發展的關鍵。軟件工程領域從1992到1997取得了前所未有的進步,其成就超過了過去15年軟件工程領域成就的總和。
從20世紀70年代中期開始,軟件管理工程吸引了廣泛的關註。當時美國國防部專門研究了軟件項目差的原因,發現70%的項目是管理不善造成的,而不是技術力量不足,然後得出結論,管理是影響軟件R&D項目全局的因素,而技術只影響部分。到了90年代中期,軟件管理工程差的問題依然存在,只有大約65,438+00%的項目能夠按照預定的成本和進度交付。軟件項目失敗的主要原因是:需求定義不清;缺乏良好的軟件開發過程;沒有統壹的產品研發團隊;分包管理不嚴格;不總是註意改進軟件過程;很少關註軟件架構;軟件界面定義不清,缺乏適當的控制;軟件升級暴露了硬件的不足;關心創新但不關心成本和風險;軍標太少,不完善。在與軟件項目成功相關的諸多因素中,軟件度量、工作量估算、項目計劃、進度控制、需求變更和風險管理都與項目管理直接相關。因此,軟件管理工程的意義是非常重要的。
與其他工程管理相比,軟件管理工程有其特殊性。首先,軟件是知識產品,進度和質量難以衡量,生產效率也難以保證。其次,軟件系統的復雜程度超乎想象。由於軟件復雜且難以度量,軟件管理工程的發展還不成熟。
軟件管理工程的發展從20世紀70年代開始經歷了以結構化分析與設計、結構化評審、結構化程序設計和結構化測試為特征的結構化生產時代,到了90年代中期,以CMM模型的成熟和日益被市場接受為標誌,進入了以過程成熟模型CMM、個體軟件過程PSP和群體軟件過程TSP為標誌的以過程為中心的時代。基於90年代中期軟件過程技術的成熟和面向對象技術、組件技術的發展,逐漸出現了軟件開發的第三個時代,即軟件的工業化生產時代。預計到2005年,可以實現軟件的真正工業化生產。這壹趨勢應引起軟件企業界和有關部門的高度重視,應盡快采取措施跟上世界軟件發展的步伐。軟件生產向註重改進軟件過程的轉移是全世界軟件產業遲早要走的路。
軟件過程改進是當前軟件管理工程的核心問題。近50年來計算的發展使人們認識到,要高效率、高質量、低成本地開發軟件,就必須改進軟件生產過程。軟件管理工程從20世紀70年代到90年代中期,經歷了壹條以過程為中心,以結構化分析與設計、結構化評審、結構化程序設計和結構化測試為基礎,以過程成熟度模型CMM、個體軟件過程PSP和群體軟件過程TSP為標誌,走向軟件過程技術成熟和面向對象技術、組件技術發展的道路。軟件生產向註重改進軟件過程的轉移是全世界軟件產業遲早要走的路。軟件業已經經歷或正在經歷“軟件過程的成熟”,正在逐步過渡到“軟件的產業化”。標準化的軟件過程是軟件產業化的必要條件。
軟件過程研究如何組織人、技術和工具,通過有效的管理手段提高軟件生產的效率,保證軟件產品的質量。由此誕生了軟件過程的三大流派:CMU-SEI的CMM/PSP/TSP;ISO 9000質量標準體系;ISO/IEC 15504(SPICE).
CMM/PSP/TSP,即軟件能力成熟度模型/個體軟件過程/群體軟件過程,是美國卡耐基梅隆大學軟件工程研究所(CMU/SEI)以W.S.Humphrey為首的研究小組於1987年發表的研究成果《承包商軟件工程能力評估方法》。SO 9000質量標準體系於20世紀70年代首先被歐洲采用,隨後在美國和世界其他地區迅速發展。目前,歐洲聯盟積極推動軟件質量制度化,提出了以下系列ISO9000軟件標準:ISO9001、ISO9000-3、ISO9004-2、ISO9004-4和ISO9002;;ISO/IEC 15504(SPICE)是國際標準化組織在1991遵循CMU-SEI的基本思想產生的技術報告ISO/IEC 15504-信息技術軟件過程評估。
目前,學術界和業界公認由W.S.Humphrey領導的軟件能力成熟度模型CMM是目前最好的軟件過程,並成為業界事實上的軟件過程工業標準。
二、CMM的發展
從65438到0987,以W.S.Humphrey為首的研究組發表了CMM/PSP/TSP技術,為軟件管理工程開辟了壹條新的道路。
CMM框架用五個演進的層次來評價軟件生產的歷史和現狀:初始層是混沌的過程,可重復層是經過訓練的軟件過程,定義層是標準壹致的軟件過程,管理層是可預測的軟件過程,優化層是可以持續改進的軟件過程。任何壹個單位實現的軟件過程,可能壹方面成熟,壹方面不成熟,但整體上壹定屬於這五個層次中的壹個。而且在壹定程度內,成熟度也是有差異的。在不同層次的CMM框架中,需要解決具有不同層次特征的軟件過程問題。所以壹個軟件開發單位首先需要知道自己是哪個層次的,然後才能根據這個層次的特殊要求來解決相關問題,這樣才能事半功倍。任何軟件開發單元只有致力於軟件過程改進,才能從本級進化到下壹級。而且,在從壹個成熟的層次向更成熟的層次進化的過程中,那些在原有層次中已經存在的能力,必須保持並發揚光大。
軟件產品的質量在很大程度上取決於構建軟件時所使用的軟件開發和維護過程的質量。軟件過程是壹個人員密集和設計密集的操作過程:沒有訓練有素的人員,將很難建立和支持軟件過程的成功,改進工作也很難取得成效。CMM描述的框架是描述從隨機混沌過程向訓練有素的成熟過程演化的方法。
CMM包括“軟件能力成熟度模型”和“能力成熟度模型的關鍵實踐”兩部分。“軟件能力成熟度模型”主要描述了該模型的結構,並給出了其基本組成部分的定義。“能力成熟度模型的關鍵實踐”詳細描述了每個“關鍵過程方面”所涉及的“關鍵實踐”。這裏的“關鍵過程方面”是指壹組相關的活動;每壹個軟件能力成熟度級別都包含了對成熟度級別至關重要的幾個過程方面,它們的實現對成熟度級別目標的實現起到了保證作用。這些過程領域被稱為成熟度級別的關鍵過程領域,而非關鍵過程領域的存在意味著它們在實現相應的軟件級別能力成熟度模型的目標中不起關鍵作用。概括為:相互關聯的軟件實踐活動和相關基礎設施的集合。“關鍵實踐”是指能夠有效實現關鍵過程並使之制度化的最重要的基礎設施和活動,以及在關鍵過程實踐中起關鍵作用的原則、程序、措施、活動和相關基礎設施的建立。關鍵實踐壹般只描述“做什麽”,不規定“怎麽做”。根據每個關鍵過程的五個“共同* * *特征”(實施過程的承諾、實施過程的能力、過程中要實施的活動、過程實施的測量和分析、確認實施的活動符合過程)對每個關鍵實踐進行分類,並逐壹進行詳細描述。當壹個關鍵過程的所有關鍵實踐都達到時,認為該關鍵過程已經實現,當壹個成熟度等級和它所包含的處於較低等級的所有關鍵過程都已經實現時,認為該等級已經達到。
如上所述,CMM將軟件開發組織的能力成熟度分為五個級別。除了級別1,其他每個級別都由幾個關鍵流程方面組成。每個關鍵流程方面都具有上述五個共同特征。CMM對每個關鍵過程給出了壹些具體的目標。根據每個共同特征分類的關鍵實踐是根據關鍵過程的特定目標選擇和確定的。如果壹個關鍵過程所涉及的所有關鍵實踐都處理得當,那麽該關鍵過程的目標就會實現,也就意味著該關鍵過程已經實現。這種成熟度分類的優點是,這些級別清楚明確地反映了過程改進活動的優先級和順序。