登錄

能力成熟度模型

百科 > 軟件項(xiàng)目管理 > 能力成熟度模型

1.什么是能力成熟度模型

CMM是指“能力成熟度模型”,是對(duì)于軟件組織在定義、實(shí)施、度量、控制和改善其軟件過程的實(shí)踐中各個(gè)發(fā)展階段的描述。CMM的核心是把軟件開發(fā)視為一個(gè)過程,并根據(jù)這一原則對(duì)軟件開發(fā)和維護(hù)進(jìn)行過程監(jiān)控和研究,以使其更加科學(xué)化、標(biāo)準(zhǔn)化、使企業(yè)能夠更好地實(shí)現(xiàn)商業(yè)目標(biāo)。

CMM是一種用于評(píng)價(jià)軟件承包能力并幫助其改善軟件質(zhì)量的方法,側(cè)重于軟件開發(fā)過程的管理及工程能力的提高與評(píng)估。CMM分為五個(gè)等級(jí):一級(jí)為初始級(jí),二級(jí)為可重復(fù)級(jí),三級(jí)為已定義級(jí),四級(jí)為已管理級(jí),五級(jí)為優(yōu)化級(jí)。

其所依據(jù)的想法是:只要集中精力持續(xù)努力去建立有效的軟件工程過程的基礎(chǔ)結(jié)構(gòu),不斷進(jìn)行管理的實(shí)踐和過程的改進(jìn),就可以克服軟件生產(chǎn)中的困難。CMM它是目前國際上最流行、最實(shí)用的一種軟件生產(chǎn)過程標(biāo)準(zhǔn),已經(jīng)得到了眾多國家以及國際軟件產(chǎn)業(yè)界的認(rèn)可,成為當(dāng)今企業(yè)從事規(guī)模軟件生產(chǎn)不可缺少的一項(xiàng)內(nèi)容。

CMM為軟件企業(yè)的過程能力提供了一個(gè)階梯式的改進(jìn)框架,它基于過去所有軟件工程過程改進(jìn)的成果,吸取了以往軟件工程的經(jīng)驗(yàn)教訓(xùn),提供了一個(gè)基于過程改進(jìn)的框架;它指明了一個(gè)軟件組織在軟件開發(fā)方面需要管理哪些主要工作、這些工作之間的關(guān)系、以及以怎樣的先后次序,一步一步的做好這些工作而使軟件組織走向成熟。

軟件工程學(xué)會(huì)SEI的CMM模型的五個(gè)梯級(jí)如下:

Image:CMM.jpg

2.能力成熟度模型的歷史和發(fā)展

信息時(shí)代,軟件質(zhì)量的重要性越來越為人們所認(rèn)識(shí)。軟件是產(chǎn)品、是裝備、是工具,其質(zhì)量使得顧客滿意,是產(chǎn)品市場開拓、事業(yè)得以發(fā)展的關(guān)鍵。而軟件工程領(lǐng)域在1992年至1997年取得了前所未有的進(jìn)展,其成果超過軟件工程領(lǐng)域過去15年來的成就總和。

軟件管理工程引起廣泛注意源于20世紀(jì)70年代中期。當(dāng)時(shí)美國國防部曾立題專門研究軟件項(xiàng)目做不好的原因,發(fā)現(xiàn)70%的項(xiàng)目是因?yàn)楣芾聿簧贫?,而并不是因?yàn)榧夹g(shù)實(shí)力不夠,進(jìn)而得出一個(gè)結(jié)論,即管理是影響軟件研發(fā)項(xiàng)目全局的因素,而技術(shù)只影響局部。到了20世紀(jì)90年代中期,軟件管理工程不善的問題仍然存在,大約只有10%的項(xiàng)目能夠在預(yù)定的費(fèi)用和進(jìn)度下交付。軟件項(xiàng)目失敗的主要原因有:需求定義不明確;缺乏一個(gè)好的軟件開發(fā)過程;沒有一個(gè)統(tǒng)一領(lǐng)導(dǎo)的產(chǎn)品研發(fā)小組;子合同管理不嚴(yán)格;沒有經(jīng)常注意改善軟件過程;對(duì)軟件構(gòu)架很不重視;軟件界面定義不善且缺乏合適的控制;軟件升級(jí)暴露了硬件的缺點(diǎn);關(guān)心創(chuàng)新而不關(guān)心費(fèi)用和風(fēng)險(xiǎn);軍用標(biāo)準(zhǔn)太少且不夠完善等等。在關(guān)系到軟件項(xiàng)目成功與否的眾多因素中,軟件度量、工作量估計(jì)、項(xiàng)目規(guī)劃、進(jìn)展控制、需求變化和風(fēng)險(xiǎn)管理等都是與工程管理直接相關(guān)的因素。由此可見,軟件管理工程的意義至關(guān)重要。

1987年,美國卡內(nèi)基. 梅隆大學(xué)軟件研究所(SEI)受美國國防部的委托,率先在軟件行業(yè)從軟件過程能力的角度提出了軟件過程成熟度模型(CMM),隨后在全世界推廣實(shí)施的一種軟件評(píng)估標(biāo)準(zhǔn),用于評(píng)價(jià)軟件承包能力并幫助其改善軟件質(zhì)量的方法。它主要用于軟件開發(fā)過程和軟件開發(fā)能力的評(píng)價(jià)和改進(jìn)。它側(cè)重于軟件開發(fā)過程的管理及工程能力的提高與評(píng)估。CM自1987年開始實(shí)施認(rèn)證,現(xiàn)已成為軟件業(yè)最權(quán)威的評(píng)估認(rèn)證體系。CMM包括5個(gè)等級(jí),共計(jì)18個(gè)過程域,52個(gè)目標(biāo),300多個(gè)關(guān)鍵實(shí)踐。

3.CMM的基本思想

CMM的基本思想是,因?yàn)閱栴}是由我們管理軟件過程的方法引起的,所以新軟件技術(shù)的運(yùn)用不會(huì)自動(dòng)提高生產(chǎn)率和利潤率。CMM有助于組織建立一個(gè)有規(guī)律的、成熟的軟件過程。改進(jìn)的過程將會(huì)生產(chǎn)出質(zhì)量更好的軟件,使更多的軟件項(xiàng)目免受時(shí)間和費(fèi)用的超支之苦。

軟件過程包括各種活動(dòng)、技術(shù)和用來生產(chǎn)軟件的工具。因此,它實(shí)際上包括了軟件生產(chǎn)的技術(shù)方面和管理方面。CMM策略力圖改進(jìn)軟件過程的管理,而在技術(shù)上的改進(jìn)是其必然的結(jié)果。

必須牢記,軟件過程的改善不可能在一夜之間完成,CMM是以增量方式逐步引入變化的。CMM明確地定義了5個(gè)不同的“成熟度”等級(jí),一個(gè)組織可按一系列小的改良性步驟向更高的成熟度等級(jí)前進(jìn)。其分級(jí)、特征與要求見表-1。

Image:CMM模型.gif

成熟度等級(jí)1:初始級(jí)(Initial)。處于這個(gè)最低級(jí)的組織,基本上沒有健全的軟件工程管理制度。每件事情都以特殊的方法來做。如果一個(gè)特定的工程碰巧由一個(gè)有能力的管理員和一個(gè)優(yōu)秀的軟件開發(fā)組來做,則這個(gè)工程可能是成功的。然而通常的情況是,由于缺乏健全的總體管理和詳細(xì)計(jì)劃,時(shí)間和費(fèi)用經(jīng)常超支。結(jié)果,大多數(shù)的行動(dòng)只是應(yīng)付危機(jī),而非事先計(jì)劃好的任務(wù)。處于成熟度等級(jí)1的組織,由于軟件過程完全取決于當(dāng)前的人員配備,所以具有不可預(yù)測性,人員變化了,過程也跟著變化。結(jié)果,要精確地預(yù)測產(chǎn)品的開發(fā)時(shí)間和費(fèi)用之類重要的項(xiàng)目,是不可能的。

成熟度等級(jí)2:可重復(fù)級(jí)(Repeatable)。在這一級(jí),有些基本的軟件項(xiàng)目的管理行為、設(shè)計(jì)和管理技術(shù)是基于相似產(chǎn)品中的經(jīng)驗(yàn),故稱為“可重復(fù)”。在這一級(jí)采取了一定措施,這些措施是實(shí)現(xiàn)一個(gè)完備過程所必不可缺少的第一步。典型的措施包括仔細(xì)地跟蹤費(fèi)用和進(jìn)度。不像在第一級(jí)那樣,在危機(jī)狀態(tài)下方行動(dòng),管理人員在問題出現(xiàn)時(shí)便可發(fā)現(xiàn),并立即采取修正行動(dòng),以防它們變成危機(jī)。關(guān)鍵的一點(diǎn)是,如沒有這些措施,要在問題變得無法收拾前發(fā)現(xiàn)它們是不可能的。在一個(gè)項(xiàng)目中采取的措施也可用來為未來的項(xiàng)目擬定實(shí)現(xiàn)的期限和費(fèi)用計(jì)劃。

成熟度等級(jí)3:已定義級(jí)(Defined)。在第3級(jí),已為軟件生產(chǎn)的過程編制了完整的文檔。軟件過程的管理方面和技術(shù)方面都明確地做了定義,并按需要不斷地改進(jìn)過程,而且采用評(píng)審的辦法來保證軟件的質(zhì)量。在這一級(jí),可引用CASE環(huán)境來進(jìn)一步提高質(zhì)量和產(chǎn)生率。而在第—級(jí)過程中,“高技術(shù)”只會(huì)使這一危機(jī)驅(qū)動(dòng)的過程更混亂。

成熟度等級(jí)4:已管理級(jí)(Managed)。一個(gè)處于第4級(jí)的公司對(duì)每個(gè)項(xiàng)目都設(shè)定質(zhì)量和生產(chǎn)目標(biāo)。這兩個(gè)量將被不斷地測量,當(dāng)偏離目標(biāo)太多時(shí),就采取行動(dòng)來修正。利用統(tǒng)計(jì)質(zhì)量控制,管理部門能區(qū)分出隨機(jī)偏離和有深刻含義的質(zhì)量或生產(chǎn)目標(biāo)的偏離(統(tǒng)計(jì)質(zhì)量控制措施的一個(gè)簡單例子是每千行代碼的錯(cuò)誤率。相應(yīng)的目標(biāo)就是隨時(shí)間推移減少這個(gè)量)。

成熟度等級(jí)5:優(yōu)化級(jí)(Optimizing)?!獋€(gè)第5級(jí)組織的目標(biāo)是連續(xù)地改進(jìn)軟件過程。這樣的組織使用統(tǒng)計(jì)質(zhì)量和過程控制技術(shù)作為指導(dǎo)。從各個(gè)方面中獲得的知識(shí)將被運(yùn)用在以后的項(xiàng)目中,從而使軟件過程融入了正反饋循環(huán),使生產(chǎn)率和質(zhì)量得到穩(wěn)步的改進(jìn)。

整個(gè)企業(yè)將會(huì)把重點(diǎn)放在對(duì)過程進(jìn)行不斷的優(yōu)化,采取主動(dòng)的措施去找出過程的弱點(diǎn)與長處,以達(dá)到預(yù)防缺陷的目標(biāo)。同時(shí),分析各有關(guān)過程的有效性資料,作出對(duì)新技術(shù)的成本與效益的分析,并提出對(duì)過程進(jìn)行修改的建議。達(dá)到該級(jí)的公司可自發(fā)的不斷改進(jìn),防止同類缺陷二次出現(xiàn)。

在表中可以看出,CMM為軟件的過程能力提供了一個(gè)階梯式的改進(jìn)框架,它基于以往軟件工程的經(jīng)驗(yàn)教訓(xùn),提供了一個(gè)基于過程改進(jìn)的框架圖,它指出一個(gè)軟件組織在軟件開發(fā)方面需要那些主要工作,這些工作之間的關(guān)系,以及開展工作的先后順序,一步一步的做好這些工作而使軟件組織走向成熟。CMM的思想來源于已有多年歷史的項(xiàng)目管理質(zhì)量管理,自產(chǎn)生以來幾經(jīng)修訂,成為軟件業(yè)具有廣泛影響的模型,并對(duì)以后項(xiàng)目管理成熟度模型的建立產(chǎn)生了重要的影響。盡管已有個(gè)人或團(tuán)體提出了各種各樣的成熟度模型,但還沒有一個(gè)象CMM那樣在業(yè)界確立了權(quán)威標(biāo)準(zhǔn)的地位。但PMI于2003年發(fā)布的OPM3以其立體的模型及涵蓋范圍的廣泛有望成為項(xiàng)目管理界的標(biāo)準(zhǔn)。

4.實(shí)施CMM的必要性

軟件開發(fā)的風(fēng)險(xiǎn)之所以大,是由于軟件過程能力低,其中最關(guān)鍵的問題在于軟件開發(fā)組織不能很好地管理其軟件過程,從而使一些好的開發(fā)方法和技術(shù)起不到預(yù)期的作用。而且項(xiàng)目的成功也是通過工作組的杰出努力,所以僅僅建立在可得到特定人員上的成功不能為全組織的生產(chǎn)和質(zhì)量的長期提高打下基礎(chǔ),必須在建立有效的軟件如管理工程實(shí)踐和管理實(shí)踐的基礎(chǔ)設(shè)施方面,堅(jiān)持不懈地努力,才能不斷改進(jìn),才能持續(xù)地成功。

軟件質(zhì)量是一模糊的、捉摸不定的概念。我們常常聽說:某某軟件好用, 某某軟件不好用;某某某軟件功能全、結(jié)構(gòu)合理, 某某某軟件功能單一、操作困難……這些模模糊糊的語言不能算作是軟件質(zhì)量評(píng)價(jià),更不能算作是軟件質(zhì)量科學(xué)的定量的評(píng)價(jià)。軟件質(zhì)量,乃至于任何產(chǎn)品質(zhì)量,都是一個(gè)很復(fù)雜的事物性質(zhì)和行為。產(chǎn)品質(zhì)量,包括軟件質(zhì)量,是人們實(shí)踐產(chǎn)物的屬性和行為,是可以認(rèn)識(shí),可以科學(xué)地描述的??梢酝ㄟ^一些方法和人類活動(dòng),來改進(jìn)質(zhì)量。

實(shí)施CMM是改進(jìn)軟件質(zhì)量的有效方法:控制軟件生產(chǎn)過程、提高軟件生產(chǎn)者組織性和軟件生產(chǎn)者個(gè)人能力的有效合理的方法軟件工程和很多研究領(lǐng)域及實(shí)際問題有關(guān),主要相關(guān)領(lǐng)域和因素有:需求工程(REQUIREMENTS ENGINEERING)。理論上,需求工程是應(yīng)用已被證明的原理、技術(shù)和工具,幫助系統(tǒng)分析人員理解問題或描述產(chǎn)品的外在行為。軟件復(fù)用(SOFTWARE REUSE),定義為利用工程知識(shí)或方法,由一已存在的系統(tǒng),來建造一新系統(tǒng)。這種技術(shù),可改進(jìn)軟件產(chǎn)品質(zhì)量和生產(chǎn)率。還有軟件檢查、軟件計(jì)量、軟件可靠性、軟件可維修性、軟件工具評(píng)估和選擇等。

評(píng)論  |   0條評(píng)論