??
CMM
是指“
能力成熟度模型
”,其英文全稱為
Capability Maturity Model for Software
,英文縮寫為SW-CMM,簡稱CMM。它是對于
軟件
組織在定義、實施、
度量
、控制和改善其
軟件過程
的實踐中各個發(fā)展階段的描述。CMM的核心是把
軟件開發(fā)
視為一個過程,并根據(jù)這一原則對軟件開發(fā)和維護進行過程監(jiān)控和研究,以使其更加科學(xué)化、標(biāo)準(zhǔn)化、使企業(yè)能夠更好地實現(xiàn)商業(yè)目標(biāo)。
?????? CMM是是一種用于評價軟件承包能力并幫助其改善軟件質(zhì)量的方法,側(cè)重于軟件開發(fā)過程的管理及工程能力的提高與評估。CMM分為五個等級:一級為初始級,二級為可重復(fù)級,三級為已定義級,四級為已管理級,五級為優(yōu)化級。
CMM是由美國卡內(nèi)基梅隆大學(xué)軟件工程研究所1987年研制成功的,是目前國際上最流行最實用的軟件生產(chǎn)過程標(biāo)準(zhǔn)和軟件企業(yè)成熟度等級認(rèn)證標(biāo)準(zhǔn)。目前,我國已有軟件企業(yè)通過了CMM標(biāo)準(zhǔn)認(rèn)證 。
????? SW-CMM(Capability Maturity Model For Software 軟件生產(chǎn)能力成熟度模型,以下簡稱"CMM"),是87年由美國卡內(nèi)基梅隆大學(xué)軟件工程研究所(CMU SEI)研究出的一種一種用于評價軟件承包商能力并幫助改善軟件質(zhì)量的方法,其目的是幫助軟件企業(yè)對軟件工程過程進行管理和改進,增強開發(fā)與改進能力,從而能按時地、不超預(yù)算地開發(fā)出高質(zhì)量的軟件。
?????? 其所依據(jù)的想法是:只要集中精力持續(xù)努力去建立有效的軟件工程過程的基礎(chǔ)結(jié)構(gòu),不斷進行管理的實踐和過程的改進,就可以克服軟件生產(chǎn)中的困難。CMM它是目前國際上最流行、最實用的一種軟件生產(chǎn)過程標(biāo)準(zhǔn),已經(jīng)得到了眾多國家以及國際軟件產(chǎn)業(yè)界的認(rèn)可,成為當(dāng)今企業(yè)從事規(guī)模軟件生產(chǎn)不可缺少的一項內(nèi)容。
CMM目前通用流行的版本是1.1(Version1.1)。《按照軟件工程研究所(SEI)的原來計劃,CMM的改進版版本2.0(V2.0)是要在1997年的11月完成的。但是,美國國防部辦公室要求軟件工程研究所(SEI)延遲發(fā)放公布CMM版本2.0,直至他們完成另一個更為緊迫的項目-CMMI。
????? CMMI(Capability Maturity Model Integration能力成熟度模型集成),是美國國防部的一個設(shè)想。他們希望把所有現(xiàn)存的與將被發(fā)展出來的各種能力成熟度模型,集成到一個框架中去。這個框架用于解決兩個問題:第一,軟件獲取辦法的改革;第二,從集成產(chǎn)品與過程發(fā)展的角度出發(fā),建立一種包含健全的系統(tǒng)開發(fā)原則的過程改進。
CMM為軟件企業(yè)的過程能力提供了一個階梯式的改進框架,它基于過去所有軟件工程過程改進的成果,吸取了以往軟件工程的經(jīng)驗教訓(xùn),提供了一個基于過程改進的框架;它指明了一個軟件組織在軟件開發(fā)方面需要管理哪些主要工作、這些工作之間的關(guān)系、以及以怎樣的先后次序,一步一步的做好這些工作而使軟件組織走向成熟。
一、CMM的誕生
信息時代,軟件質(zhì)量的重要性越來越為人們所認(rèn)識。軟件是產(chǎn)品、是裝備、是工具,其質(zhì)量使得顧客滿意,是產(chǎn)品市場開拓、事業(yè)得以發(fā)展的關(guān)鍵。而軟件工程領(lǐng)域在1992年至1997年取得了前所未有的進展,其成果超過軟件工程領(lǐng)域過去15年來的成就總和。
軟件管理工程引起廣泛注意源于20世紀(jì)70年代中期。當(dāng)時美國國防部曾立題專門研究軟件項目做不好的原因,發(fā)現(xiàn)70%的項目是因為管理不善而引起,而并不是因為技術(shù)實力不夠,進而得出一個結(jié)論,即管理是影響軟件研發(fā)項目全局的因素,而技術(shù)只影響局部。到了20世紀(jì)90年代中期,軟件管理工程不善的問題仍然存在,大約只有10%的項目能夠在預(yù)定的費用和進度下交付。軟件項目失敗的主要原因有:需求定義不明確;缺乏一個好的軟件開發(fā)過程;沒有一個統(tǒng)一領(lǐng)導(dǎo)的產(chǎn)品研發(fā)小組;子合同管理不嚴(yán)格;沒有經(jīng)常注意改善軟件過程;對軟件構(gòu)架很不重視;軟件界面定義不善且缺乏合適的控制;軟件升級暴露了硬件的缺點;關(guān)心創(chuàng)新而不關(guān)心費用和風(fēng)險;軍用標(biāo)準(zhǔn)太少且不夠完善等等。在關(guān)系到軟件項目成功與否的眾多因素中,軟件度量、工作量估計、項目規(guī)劃、進展控制、需求變化和風(fēng)險管理等都是與工程管理直接相關(guān)的因素。由此可見,軟件管理工程的意義至關(guān)重要。
軟件管理工程和其它工程管理相比有其特殊性。首先,軟件是知識產(chǎn)品,進度和質(zhì)量都難以度量,生產(chǎn)效率也難以保證。其次,軟件系統(tǒng)復(fù)雜程度也是超乎想象的。因為軟件復(fù)雜和難以度量,軟件管理工程的發(fā)展還很不成熟。
軟件管理工程的發(fā)展,在經(jīng)歷了從70年代開始以結(jié)構(gòu)化分析與設(shè)計、結(jié)構(gòu)化評審、結(jié)構(gòu)化程序設(shè)計以及結(jié)構(gòu)化測試為特征的結(jié)構(gòu)化生產(chǎn)時代,到90年代中期,以CMM模型的成熟模型和日益為市場接受為標(biāo)志,已經(jīng)進入以過程成熟模型CMM、個體軟件過程PSP和群組軟件過程TSP為標(biāo)志的以過程為中心的時代,而軟件發(fā)展第三個時代,及軟件工業(yè)化生產(chǎn)時代,從90年代中期軟件過程技術(shù)的成熟和面向?qū)ο?/a>技術(shù)、構(gòu)件技術(shù)的發(fā)展為基礎(chǔ),已經(jīng)漸露端倪,估計到2005年,可以實現(xiàn)真正的軟件工業(yè)化生產(chǎn),這個趨勢應(yīng)該引起軟件企業(yè)界和有關(guān)部門的高度重視,及早采取措施,跟上世界軟件發(fā)展的腳步。軟件生產(chǎn)轉(zhuǎn)向以改善軟件過程為中心,是世界各國軟件產(chǎn)業(yè)或遲或早都要走的道路。
軟件過程改善是當(dāng)前軟件管理工程的核心問題。50多年來計算事業(yè)的發(fā)展使人們認(rèn)識到要高效率、高質(zhì)量和低成本地開發(fā)軟件,必須改善軟件生產(chǎn)過程。軟件管理工程走過了一條從70年代開始以結(jié)構(gòu)化分析與設(shè)計、結(jié)構(gòu)化評審、結(jié)構(gòu)化程序設(shè)計以及結(jié)構(gòu)化測試到90年代中期以過程成熟模型CMM、個體軟件過程PSP和群組軟件過程TSP為標(biāo)志的以過程為中心向著軟件過程技術(shù)的成熟和面向對象技術(shù)、構(gòu)件技術(shù)的發(fā)展為基礎(chǔ)的真正軟件工業(yè)化生產(chǎn)的道路。軟件生產(chǎn)轉(zhuǎn)向以改善軟件過程為中心,是世界各國軟件產(chǎn)業(yè)或遲或早都要走的道路。軟件工業(yè)已經(jīng)或正在經(jīng)歷著"軟件過程的成熟化",并向"軟件的工業(yè)化"漸進過渡。規(guī)范的軟件過程是軟件工業(yè)化的必要條件。
軟件過程研究的是如何將人員、技術(shù)和工具等組織起來,通過有效的管理手段,提高軟件生產(chǎn)的效率,保證軟件產(chǎn)品的質(zhì)量。由此誕生了軟件過程的三個流派:CMU-SEI的CMM/PSP/TSP;ISO 9000質(zhì)量標(biāo)準(zhǔn)體系;ISO/IEC 15504(SPICE)。
CMM/PSP/TSP即軟件能力成熟度模型/ 個體軟件過程/群組軟件過程,是1987年美國 Carnegie Mellon 大學(xué)軟件工程研究所(CMU/SEI)以W.S.Humphrey為首的研究組發(fā)表的研究成果"承制方軟件工程能力的評估方法";SO 9000質(zhì)量標(biāo)準(zhǔn)體系是在70年代由歐洲首先采用的,其后在美國和世界其他地區(qū)也迅速地發(fā)展起來。目前,歐洲聯(lián)合會積極促進軟件質(zhì)量的制度化,提出了如下ISO9000軟件標(biāo)準(zhǔn)系列:ISO9001、ISO9000-3、ISO9004-2、ISO9004-4、ISO9002;ISO/IEC 15504(SPICE)是1991年國際標(biāo)準(zhǔn)化組織采納了一項動議,開展調(diào)查研究,按照CMU-SEI的基本思路,產(chǎn)生的技術(shù)報告ISO/IEC 15504--信息技術(shù)軟件過程評估
目前,學(xué)術(shù)界和工業(yè)界公認(rèn)美國 Carnegie Mellon 大學(xué)軟件工程研究所(CMU/SEI) 以W.S.Humphrey為首主持研究與開發(fā)的軟件能力成熟度模型CMM是當(dāng)前最好的軟件過程,已成為業(yè)界事實上的軟件過程的工業(yè)標(biāo)準(zhǔn)。
二、CMM的發(fā)展
1987年美國 Carnegie Mellon 大學(xué)軟件工程研究所(CMU/SEI)以W.S.Humphrey為首的研究組發(fā)表了CMM/PSP/TSP 技術(shù),為軟件管理工程開辟了一條新的途經(jīng)。
CMM框架用5個不斷進化的層次來評定軟件生產(chǎn)的歷史與現(xiàn)狀:其中初始層是混沌的過程,可重復(fù)層是經(jīng)過訓(xùn)練的軟件過程,定義層是標(biāo)準(zhǔn)一致的軟件過程,管理層是可預(yù)測的軟件過程,優(yōu)化層是能持續(xù)改善的軟件過程。任何單位所實施的軟件過程,都可能在某一方面比較成熟,在另一方面不夠成熟,但總體上必然屬于這5個層次中的某一個層次。而在某個層次內(nèi)部,也有成熟程度的區(qū)別。在CMM框架的不同層次中,需要解決帶有不同層次特征的軟件過程問題。因此,一個軟件開發(fā)單位首先需要了解自己正處于哪一個層次,然后才能夠?qū)ΠY下藥地針對該層次的特殊要求解決相關(guān)問題,這樣才能收到事半功倍的軟件過程改善效果。任何軟件開發(fā)單位在致力于軟件過程改善時,只能由所處的層次向緊鄰的上一層次進化。而且在由某一成熟層次向上一更成熟層次進化時,在原有層次中的那些已經(jīng)具備的能力還必須得到保持與發(fā)揚。
軟件產(chǎn)品質(zhì)量在很大程度上取決于構(gòu)筑軟件時所使用的軟件開發(fā)和維護過程的質(zhì)量。軟件過程是人員密集和設(shè)計密集的作業(yè)過程:若缺乏有素訓(xùn)練,就難以建立起支持實現(xiàn)成功是軟件過程的基礎(chǔ),改進工作亦將難以取得成效。CMM描述的這個框架正是勾列出從無定規(guī)的混沌過程向訓(xùn)練有素的成熟過程演進的途徑。
CMM包括兩部分"軟件能力成熟度模型"和"能力成熟度模型的關(guān)鍵慣例"。"軟件能力成熟度模型"主要是描述此模型的結(jié)構(gòu),并且給出該模型的基本構(gòu)件的定義。"能力成熟度模型的關(guān)鍵慣例"詳細描述了每個"關(guān)鍵過程方面"涉及的"關(guān)鍵慣例"。這里"關(guān)鍵過程方面"是指一組相關(guān)聯(lián)的活動;每個軟件能力成熟度等級包含若干個對該成熟度等級至關(guān)重要的過程方面,它們的實施對達到該成熟度等級的目標(biāo)起到保證作用。這些過程域就稱為該成熟度等級的關(guān)鍵過程域,反之有非關(guān)鍵過程域是指對達到相應(yīng)軟件成熟度等級的目標(biāo)不起關(guān)鍵作用。歸納為:互相關(guān)聯(lián)的若干軟件實踐活動和有關(guān)基礎(chǔ)設(shè)施的一個集合。而"關(guān)鍵慣例"是指使關(guān)鍵過程方面得以有效實現(xiàn)和制度化的作用最大的基礎(chǔ)設(shè)施和活動,對關(guān)鍵過程的實踐起關(guān)鍵作用的方針、規(guī)程、措施、活動以及相關(guān)基礎(chǔ)設(shè)施的建立。關(guān)鍵實踐一般只描述"做什么"而不強制規(guī)定"如何做"。各個關(guān)鍵慣例按每個關(guān)鍵過程方面的5個"公共特性"(對執(zhí)行該過程的承諾,執(zhí)行該過程的能力,該過程中要執(zhí)行的活動,對該過程執(zhí)行情況的度量和分析,及證實所執(zhí)行的活動符合該過程)歸類,逐一詳細描述。當(dāng)作到了某個關(guān)鍵過程的的全部關(guān)鍵慣例就認(rèn)為實現(xiàn)了該關(guān)鍵過程,實現(xiàn)了某成熟度級及其以低級所含的全部關(guān)鍵過程就認(rèn)為達到到了了該級。
上面提到了CMM把軟件開發(fā)組織的能力成熟度分為5個的等級。除了第1級外,其他每一級由幾個關(guān)鍵過程方面組成。每一個關(guān)鍵過程方面都由上述5種公共特性予以表征。CMM給每個關(guān)鍵過程了一些具體目標(biāo)。按每個公共特性歸類的關(guān)鍵慣例是按該關(guān)鍵過程的具體目標(biāo)選擇和確定的。如果恰當(dāng)?shù)靥幚砹四硞€關(guān)鍵過程涉及的全部關(guān)鍵慣例,這個關(guān)鍵過程的各項目標(biāo)就達到了,也就表明該關(guān)鍵過程實現(xiàn)了。這種成熟度分級的優(yōu)點在于,這些級別明確而清楚地反映了過程改進活動的輕重緩急和先后順序。
能力等級 |
特點 |
關(guān)鍵過程 |
第一級 基本級 |
軟件過程是混亂無序的,對過程幾乎沒有定義,成功依靠的是個人的才能和經(jīng)驗,管理方式屬于反應(yīng)式 |
? |
第二級 重復(fù)級 |
建立了基本的項目管理來跟蹤進度.費用和功能特征,制定了必要的項目管理,能夠利用以前類似的項目應(yīng)用取得成功 |
需求管理,項目計劃,項目跟蹤和監(jiān)控,軟件子合同管理,軟件配置管理,軟件質(zhì)量保障 |
第三級 確定級 |
已經(jīng)將軟件管理和過程文檔化,標(biāo)準(zhǔn)化,同時綜合成該組織的標(biāo)準(zhǔn)軟件過程,所有的軟件開發(fā)都使用該標(biāo)準(zhǔn)軟件過程 |
組織過程定義,組織過程焦點,培訓(xùn)大綱,軟機集成管理,軟件產(chǎn)品工程,組織協(xié)調(diào),專家審評 |
第四級 管理級 |
收集軟件過程和產(chǎn)品質(zhì)量的詳細度量,對軟件過程和產(chǎn)品質(zhì)量有定量的理解和控制 |
定量的軟件過程管理和產(chǎn)品質(zhì)量管理 |
第五級 優(yōu)化級 |
軟件過程的量化反饋和新的思想和技術(shù)促進過程的不斷改進 |
缺陷預(yù)防,過程變更管理和技術(shù)變更管理 |
對于CMM的作用歸納兩個主要方面: 科學(xué)地評價軟件開發(fā)單位的軟件能力成熟等級; 幫助軟件開發(fā)單位進行自檢,了解自己的強項和弱項,從而不斷完善和改進單位的軟件開發(fā)過程,確保軟件質(zhì)量,提高軟件開發(fā)能效率。
由于CMM并未提供有關(guān)實現(xiàn)CMM關(guān)鍵過程域所需的具體知識和技能,因此,美國 Carnegie Mellon 大學(xué)軟件工程研究所(CMU/SEI) 以W.S.Humphrey為首主持研究與開發(fā)了個體軟件過程PSP(Personal software process)和群組軟件過程TSP(TeamSoftware Process),形成CMM/PSP/TSP體系。
PSP 個體軟件過程(Personal Software Process)是由美國Carnegie Mellon大學(xué)軟件工程研究所(CMU/SEI)的Watts s. Humphrey領(lǐng)導(dǎo)開發(fā)的,于1995年它的推出,在軟件工程界引起了極大的轟動,可以說是由定向軟件工程走向定量軟件工程的一個標(biāo)志。PSP是一種可用于控制、管理和改進個人工作方式的自我改善過程,是一個包括軟件開發(fā)表格、指南和規(guī)程的結(jié)構(gòu)化框架。 PSP為基于個體和小型群組軟件過程的優(yōu)化提供了具體而有效的途徑,例如如何制訂計劃,如何控制質(zhì)量,如何與其他人相互協(xié)作等等。在軟件設(shè)計階段, PSP的著眼點在于軟件缺陷的預(yù)防,其具體辦法是強化設(shè)計結(jié)束準(zhǔn)則,而不是設(shè)計方法的選擇。PSP保障軟件產(chǎn)品質(zhì)量的一個重要途徑是提高設(shè)計質(zhì)量。
PSP能夠說明個體軟件過程的原則;幫助軟件工程師作出準(zhǔn)確的計劃;確定軟件工程師為改善產(chǎn)品質(zhì)量要采取的步驟;建立度量個體軟件過程改善的基準(zhǔn);確定過程的改變對軟件工程師能力的影響。
TSP 群組軟件過程TSP(Team Software Process)指導(dǎo)項目組中的成員如何有效地規(guī)劃和管理所面臨的項目開發(fā)任務(wù),并且告訴管理人員如何指導(dǎo)軟件開發(fā)隊伍。始終以最佳狀態(tài)來完成工作。TSP實施集體管理與自己管理自己相結(jié)合的原則,最終目的在于指導(dǎo)開發(fā)人員如何在最少的時間內(nèi),以預(yù)定的費用生產(chǎn)出高質(zhì)量的軟件產(chǎn)品,所采用的方法是對群組開發(fā)過程的定義、度量和改進。
TSP致力于開發(fā)高質(zhì)量的產(chǎn)品,建立、管理和授權(quán)項目小組,并且指導(dǎo)他們?nèi)绾卧跐M足計劃費用的前提下,在承諾的期限范圍內(nèi),不斷生產(chǎn)并交付高質(zhì)量的產(chǎn)品。
CMM是過程改善的第一步,它提供了評價組織的能力、識別優(yōu)先改善需求和追蹤改善進展的管理方式。企業(yè)只有開始CMM改善后,才能接受需要規(guī)劃的事實,認(rèn)識到質(zhì)量的重要性,才能注重對員工經(jīng)常進行培訓(xùn),合理分配項目人員,并且建立起有效的項目小組。然而,它實現(xiàn)的成功與否與組織內(nèi)部有關(guān)人員的積極參加和創(chuàng)造性活動密不可分。
PSP能夠指導(dǎo)軟件工程師如何保證自己的工作質(zhì)量,估計和規(guī)劃自身的工作,度量和追蹤個人的表現(xiàn),管理自身的軟件過程和產(chǎn)品質(zhì)量。經(jīng)過PSP學(xué)習(xí)和實踐的正規(guī)訓(xùn)練,軟件工程師們能夠在他們參與的項目工作之中充分運用PSP,從而有助于CMM目標(biāo)的實現(xiàn)。
TSP結(jié)合了CMM的管理方法和PSP的工程技能,通過告訴軟件工程師如何將個體過程結(jié)合進小組軟件過程,并將后者與 組織進而整個管理系統(tǒng)相聯(lián)系;通過告訴管理層如何支持和授權(quán)項目小組,堅持高質(zhì)量的工作,并且依據(jù)數(shù)據(jù)進行項 目的管理,向組織展示如何應(yīng)用CMM的原則和PSP的技能去生產(chǎn)高質(zhì)量的產(chǎn)品。
總之,單純實施CMM,永遠不能真正做到能力成熟度的升級,只有將實施CMM與實施PSP和TSP有機地結(jié)合起來,才能發(fā)揮最大的效力。因此,軟件過程框架應(yīng)該是CMM/PSP/TSP的有機集成。
三、實施CMM的必要性
軟件開發(fā)的風(fēng)險之所以大,是由于軟件過程能力低,其中最關(guān)鍵的問題在于軟件開發(fā)組織不能很好地管理其軟件過程,從而使一些好的開發(fā)方法和技術(shù)起不到預(yù)期的作用。而且項目的成功也是通過工作組的杰出努力,所以僅僅建立在可得到特定人員上的成功不能為全組織的生產(chǎn)和質(zhì)量的長期提高打下基礎(chǔ),必須在建立有效的軟件如管理工程實踐和管理實踐的基礎(chǔ)設(shè)施方面,堅持不懈地努力,才能不斷改進,才能持續(xù)地成功。
軟件質(zhì)量是一模糊的、捉摸不定的概念。我們常常聽說:某某軟件好用, 某某軟件不好用;某某某軟件功能全、結(jié)構(gòu)合理, 某某某軟件功能單一、操作困難……這些模模糊糊的語言不能算作是軟件質(zhì)量評價,更不能算作是軟件質(zhì)量科學(xué)的定量的評價。軟件質(zhì)量,乃至于任何產(chǎn)品質(zhì)量,都是一個很復(fù)雜的事物性質(zhì)和行為。產(chǎn)品質(zhì)量,包括軟件質(zhì)量,是人們實踐產(chǎn)物的屬性和行為,是可以認(rèn)識,可以科學(xué)地描述的。可以通過一些方法和人類活動,來改進質(zhì)量。
實施CMM是改進軟件質(zhì)量的有效方法:控制軟件生產(chǎn)過程、提高軟件生產(chǎn)者組織性和軟件生產(chǎn)者個人能力的有效合理的方法軟件工程和很多研究領(lǐng)域及實際問題有關(guān),主要相關(guān)領(lǐng)域和因素有:需求工程(RE:REQUIREMENTS ENGINEERING)。理論上,需求工程是應(yīng)用已被證明的原理、技術(shù)和工具,幫助系統(tǒng)分析人員理解問題或描述產(chǎn)品的外在行為。軟件復(fù)用(SR:SOFTWARE REUSE)。定義為利用工程知識或方法,由一已存在的系統(tǒng),來建造一新系統(tǒng)。這種技術(shù),可改進軟件產(chǎn)品質(zhì)量和生產(chǎn)率。還有軟件檢查、軟件計量、軟件可靠性、軟件可維修性、軟件工具評估和選擇等。
四、CMM在中國的現(xiàn)狀
中國生產(chǎn)力促進協(xié)會、北航SEI、中科院研究SEI等科研機構(gòu)已于近幾年在北京、上海、廣州和深圳等地先后舉辦過多次報告會和研討會,組織過課程學(xué)習(xí)和應(yīng)用實驗,開展了軟件過程方面的研究與開發(fā)工作,并發(fā)表了多篇的研究成果和學(xué)術(shù)論文,在軟件質(zhì)量保障平臺支撐環(huán)境也取得了一定的成果。
近兩年來,CMM在我國獲得了各界越來越多關(guān)注,業(yè)界有過多次關(guān)于CMM的討論,2000年6月國務(wù)院頒發(fā)的《鼓勵軟件產(chǎn)業(yè)和集成電路產(chǎn)業(yè)發(fā)展的若干政策》對中國軟件企業(yè)申請CMM認(rèn)證給予了積極的支持和推動作用,第17條規(guī)定"對軟件出口型企業(yè)CMM認(rèn)證費用予以適當(dāng)支持。"2000年中國村電腦節(jié)上還有CMM專題論壇,吸引了眾多業(yè)內(nèi)人士。鼎新、東大阿爾派、聯(lián)想、方正、金蝶、用友、浪潮、創(chuàng)智、華為、東大阿爾派等大型集團或企業(yè)等都從1997---2000年起批企業(yè)都在進行研究、實驗或?qū)嵤╊A(yù)評估。其中鼎新公司從1997年著手進行CMM認(rèn)證工作。1999年7月通過第三方認(rèn)證機構(gòu)的CMM2認(rèn)證。東大阿爾派公司于2000年10月通過第三方認(rèn)證機構(gòu)的CMM2認(rèn)證。2001年1月,聯(lián)想軟件經(jīng)過英國路透集團的嚴(yán)格評估,順利通過CMM2認(rèn)證。2001年6月26日,沈陽東軟軟件股份有限公司(原沈陽東大阿爾派軟件股份有限公司)正式通過了CMM3級認(rèn)證,成為中國首家通過CMM3級的軟件企業(yè)。
總體上講,國內(nèi)對軟件過程理論的討論與實踐正在展開,目標(biāo)是使軟件的質(zhì)量管理和控制達到國際先進水平,中國的軟件產(chǎn)業(yè)獲得可持續(xù)發(fā)展的能力。專家分析,在未來兩三年內(nèi),國內(nèi)軟件業(yè)勢必將出現(xiàn)實施CMM的高潮。從這一趨勢看,中國的軟件企業(yè)已經(jīng)開始走上標(biāo)準(zhǔn)化、規(guī)范化、國際化的發(fā)展道路,中國軟件業(yè)已經(jīng)面臨一個整體突破的時代。
但是我們應(yīng)該看到目前國內(nèi)對軟件管理工程存在的最大問題是認(rèn)識不足。管理實際上是一把手工程,需要高層管理人員的足夠重視。而且軟件過程的重大修改也必須由高層管理部門啟動,這是軟件過程改善能否進行到底的關(guān)鍵。此外,軟件過程的改善還有待于全體有關(guān)人員的積極參與。
除了要認(rèn)識到過程改善工作是一把手工程這個關(guān)鍵因素外,還應(yīng)認(rèn)識到軟件過程成熟度的升級本身就是一個過程,且有一個生命周期。過程改善工作需要循序漸進,不能一蹴而就,需要持續(xù)改善,不能停滯不前;需要聯(lián)系實際,不能照本宣科;需要適應(yīng)變革,不能凝固不變。一個有效的途徑是自頂向下的課程培訓(xùn),即從高層主管依次普及到下面的工程師。
五、CMM體系結(jié)構(gòu)
????? 一個企業(yè)軟件能力類似于一個人在一個特定領(lǐng)域的能力,是逐步獲得和增長的。如果一個人在其領(lǐng)域的發(fā)展過程中能得到一個很好的指南,那么他或她就會不斷達到一個個設(shè)定的目標(biāo),并變得成熟起來,否則可能會盲目發(fā)展,離自己的目標(biāo)越來越遠,甚至南轅北轍。一個企業(yè)的軟件能力發(fā)展也同樣需要一個良好的指南,SW-CMM正是這樣一個指南,它以幾十年產(chǎn)品質(zhì)量概念和軟件工業(yè)的經(jīng)驗及教訓(xùn)為基礎(chǔ),為企業(yè)軟件能力不斷走向成熟提供了有效的步驟和框架。
????? 框架
????? SW-CMM為軟件企業(yè)的過程能力提供了一個階梯式的進化框架,階梯共有五級。第一級實際上是一個起點,任何準(zhǔn)備按CMM體系進化的企業(yè)都自然處于這個起點上,并通過這個起點向第二級邁進。除第一級外,每一級都設(shè)定了一組目標(biāo),如果達到了這組目標(biāo),則表明達到了這個成熟級別,可以向下一個級別邁進。CMM體系不主張跨越級別的進化,因為從第二級起,每一個低的級別實現(xiàn)均是高的級別實現(xiàn)的基礎(chǔ)。
1.初始級
????? 初始級的軟件過程是未加定義的隨意過程,項目的執(zhí)行是隨意甚至是混亂的。也許,有些企業(yè)制定了一些軟件工程規(guī)范,但若這些規(guī)范未能覆蓋基本的關(guān)鍵過程要求,且執(zhí)行沒有政策、資源等方面的保證時,那么它仍然被視為初始級。
2.可重復(fù)級
????? 根據(jù)多年的經(jīng)驗和教訓(xùn),人們總結(jié)出軟件開發(fā)的首要問題不是技術(shù)問題而是管理問題。因此,第二級的焦點集中在軟件管理過程上。一個可管理的過程則是一個可重復(fù)的過程,一個可重復(fù)的過程則能逐漸進化和成熟。第二級的管理過程包括了需求管理、項目管理、質(zhì)量管理、配置管理和子合同管理五個方面。其中項目管理分為計劃過程和跟蹤與監(jiān)控過程兩個過程。通過實施這些過程,從管理角度可以看到一個按計劃執(zhí)行的且階段可控的軟件開發(fā)過程。
3.定義級
????? 在第二級僅定義了管理的基本過程,而沒有定義執(zhí)行的步驟標(biāo)準(zhǔn)。在第三級則要求制定企業(yè)范圍的工程化標(biāo)準(zhǔn),而且無論是管理還是工程開發(fā)都需要一套文檔化的標(biāo)準(zhǔn),并將這些標(biāo)準(zhǔn)集成到企業(yè)軟件開發(fā)標(biāo)準(zhǔn)過程中去。所有開發(fā)的項目需根據(jù)這個標(biāo)準(zhǔn)過程,剪裁出與項目適宜的過程,并執(zhí)行這些過程。過程的剪裁不是隨意的,在使用前需經(jīng)過企業(yè)有關(guān)人員的批準(zhǔn)。
4.管理級
????? 第四級的管理是量化的管理。所有過程需建立相應(yīng)的度量方式,所有產(chǎn)品的質(zhì)量(包括工作產(chǎn)品和提交給用戶的產(chǎn)品)需有明確的度量指標(biāo)。這些度量應(yīng)是詳盡的,且可用于理解和控制軟件過程和產(chǎn)品。量化控制將使軟件開發(fā)真正變成為一種工業(yè)生產(chǎn)活動。
5.優(yōu)化級
????? 第五級的目標(biāo)是達到一個持續(xù)改善的境界。所謂持續(xù)改善是指可根據(jù)過程執(zhí)行的反饋信息來改善下一步的執(zhí)行過程,即優(yōu)化執(zhí)行步驟。如果一個企業(yè)達到了這一級,那么表明該企業(yè)能夠根據(jù)實際的項目性質(zhì)、技術(shù)等因素,不斷調(diào)整軟件生產(chǎn)過程以求達到最佳。
????? 結(jié)構(gòu)
????? 除第一級外,SW-CMM的每一級是按完全相同的結(jié)構(gòu)構(gòu)成的。每一級包含了實現(xiàn)這一級目標(biāo)的若干關(guān)鍵過程域(KPA),每個KPA進一步包含若干關(guān)鍵實施活動(KP),無論哪個KPA,它們的實施活動都統(tǒng)一按五個公共屬性進行組織,即每一個KPA都包含五類KP。
1.目標(biāo)
????? 每一個KPA都確定了一組目標(biāo)。若這組目標(biāo)在每一個項目都能實現(xiàn),則說明企業(yè)滿足了該KPA的要求。若滿足了一個級別的所有KPA要求,則表明達到了這個級別所要求的能力。
2.實施保證
????? 實施保證是企業(yè)為了建立和實施相應(yīng)KPA所必須采取的活動,這些活動主要包括制定企業(yè)范圍的政策和高層管理的責(zé)任。
3.實施能力
????? 實施能力是企業(yè)實施KPA的前提條件。企業(yè)必須采取措施,在滿足了這些條件后,才有可能執(zhí)行KPA的執(zhí)行活動。實施能力一般包括資源保證、人員培訓(xùn)等內(nèi)容。
4.執(zhí)行活動
????? 執(zhí)行過程描述了執(zhí)行KPA所需求的必要角色和步驟。在五個公共屬性中,執(zhí)行活動是唯一與項目執(zhí)行相關(guān)的屬性,其余四個屬性則涉及企業(yè)CMM能力基礎(chǔ)設(shè)施的建立。執(zhí)行活動一般包括計劃、執(zhí)行的任務(wù)、任務(wù)執(zhí)行的跟蹤等。
5.度量分析
????? 度量分析描述了過程的度量和度量分析要求。典型的度量和度量分析的要求是確定執(zhí)行活動的狀態(tài)和執(zhí)行活動的有效性。
6.實施驗證
????? 實施驗證是驗證執(zhí)行活動是否與所建立的過程一致。實施驗證涉及到管理方面的評審和審計以及質(zhì)量保證活動。
????? 在實施CMM時,可以根據(jù)企業(yè)軟件過程存在問題的不同程度確定實現(xiàn)KPA的次序,然后按所確定次序逐步建立、實施相應(yīng)過程。在執(zhí)行某一個KPA時,對其目標(biāo)組也可采用逐步滿足的方式。過程進化和逐步走向成熟是CMM體系的宗旨。
六、CMM實施的思考
上面重點介紹了CMM,但是提醒注意的是,并不是實施了CMM,軟件項目的質(zhì)量就能有所保障。CMM是一種資質(zhì)認(rèn)證,它可以證明一個軟件企業(yè)對整個軟件開發(fā)過程的控制能力。按照CMM的思想進行管理與通過CMM認(rèn)證并不能劃等號。CMM認(rèn)證并不僅僅是在評估軟件企業(yè)的生產(chǎn)能力,整個評估過程同時還在幫助企業(yè)完善已經(jīng)按照CMM建立的科學(xué)工作流程,發(fā)現(xiàn)企業(yè)在軟件質(zhì)量、生產(chǎn)進度以及成本控制等方面可能存在的問題,并且及時予以糾正。認(rèn)證的過程是糾正企業(yè)偏差的過程,一定不能把CMM認(rèn)證當(dāng)作一種考試、一種文憑,而是要看成一項有利于企業(yè)今后發(fā)展的投資,借此來改變中國軟件業(yè)長久以來形成的積弊。
實施CMM對軟件企業(yè)的發(fā)展起著至關(guān)重要的作用,CMM過程本身就是對軟件企業(yè)發(fā)展歷程的一個完整而準(zhǔn)確的描述,企業(yè)通過實施CMM,可以更好地規(guī)范軟件生產(chǎn)和管理流程,使企業(yè)組織規(guī)范化。企業(yè)通過CMM不是為了滿足其他公司的要求,而是為了讓企業(yè)更好地發(fā)展,為企業(yè)進一步擴大規(guī)模打下堅實的基礎(chǔ)。如果企業(yè)只是為了獲得一紙證書而通過CMM,那么就已經(jīng)本末倒置了,對企業(yè)的長久發(fā)展反而有害。試想如果企業(yè)的態(tài)度不夠端正,即使通過CMM認(rèn)證,企業(yè)又怎么能夠保證它在以后的操作過程當(dāng)中繼續(xù)堅持CMM規(guī)范呢?CMM只是一個讓企業(yè)更好發(fā)展的規(guī)范,不應(yīng)該成為企業(yè)炒作自己的工具,企業(yè)需要的是優(yōu)化自己的管理、提高產(chǎn)品的質(zhì)量,而非一張CMM證書。
CMM不是萬能的,它的成功與否,與一個組織內(nèi)部有關(guān)人員的積極參與和創(chuàng)造性活動是密不可分的,而且CMM并未提供實現(xiàn)有關(guān)子過程域所需要的具體知識和技能。在國內(nèi)要想取得過程改進成功,必須做好以下的幾點:軟件過程改進必須有高級主管的支持與委托,并積極地管理過程改進的進展;中層管理的積極支持;責(zé)任分明,過程改進小組的威望高;基層的支持與參與極端重要;利用定量的可觀察數(shù)據(jù),盡快使過程改進成果可見,從而激勵參與者的興趣;將實施CMM與實施PSP和TSP有機地結(jié)合起來;為企業(yè)的商業(yè)利益服務(wù),并要求同時相符的企業(yè)文化變革。
應(yīng)該看到,過程改善工作必然具有一切過程所具有的固有特征,即需要循序漸進,不能一蹴而就需要持續(xù)改善,不能停滯不前;需要聯(lián)系實際,不能照本宣讀需要適應(yīng)變革,不能凝固不變。將CMM/PSP/TSP引人軟件企業(yè)最有效的途徑首先要對單位主管和主要開發(fā)人員進行系統(tǒng)的培訓(xùn)。另外一個有效的途徑是自頂向下的課程培訓(xùn),即從高層主管依次普及到下面的工程師。培訓(xùn)包括最基本的軟件工程和CMM培訓(xùn)知識;專業(yè)領(lǐng)域知識等方面的培訓(xùn);軟件過程方面的培訓(xùn)。不過強調(diào)一點,我們必須根據(jù)自身的實際制定可行的方案。不深入研究就照搬別的企業(yè)的模式是很難起到提高軟件產(chǎn)品質(zhì)量水平的真正目的的。
CMM模型劃分為5個級別,共計18個關(guān)鍵過程域,52個目標(biāo),300多個關(guān)鍵實踐。每一個CMM等級的評估周期(從準(zhǔn)備到完成)約需12-30個月。此期間應(yīng)抽調(diào)企業(yè)中有管理能力、組織能力和軟件開發(fā)能力的骨干人員,成立專門的CMM實施領(lǐng)導(dǎo)小組或?qū)iT的機構(gòu)。同時設(shè)立軟件工程過程組、軟件工程組、系統(tǒng)工程組、系統(tǒng)測試組、需求管理組、軟件項目計劃組、軟件項目跟蹤與監(jiān)督、軟件配置管理組、軟件質(zhì)量保證組、培訓(xùn)組。各個小組完成自己的任務(wù)同時協(xié)調(diào)其他小組的工作。然后制定和完善軟件過程, 按照CMM規(guī)范評估這個過程。CMM正式評估由CMU/SEI授權(quán)的主任評估師領(lǐng)導(dǎo)一個評審小組進行,評估過程包括員工培訓(xùn)、問卷調(diào)查和統(tǒng)計、文檔審查、數(shù)據(jù)分析、與企業(yè)的高層領(lǐng)導(dǎo)討論和撰寫評估報告等,評估結(jié)束時由主任評估師簽字生效。此后最關(guān)鍵的就是根據(jù)評估結(jié)果改進軟件過程,使CMM評估對于軟件過程改進所應(yīng)具有的作用得到最好的發(fā)揮。
現(xiàn)在國內(nèi)軟件產(chǎn)業(yè)的發(fā)展可以說已經(jīng)具有一定規(guī)模了,但除了北大方正、東大阿爾派、用友等大企業(yè)外,做軟件工程項目更多的是一些規(guī)模在數(shù)十人左右的中小企業(yè), 目前處于CMM的初級階段,沒有基礎(chǔ)和經(jīng)驗。也許有人會問,像這樣一些人力物力資源匱乏的企業(yè),如何進行軟件開發(fā)項目的管理呢?我建議這些中小企業(yè)可以以CMM為框架,先從PSP做起,然后在些基礎(chǔ)上逐漸過渡到TSP,以保證CMM/PSP/TSP確實在企業(yè)中生根開花。總之,我們必須從軟件過程、過程工程的角度來看待CMM的發(fā)展,從經(jīng)濟學(xué)的觀點來分析這個過程的價值。我相信在實施CMM/PSP/TSP的過程中,只要堅持改善軟件工程的管理,并在實踐中注意總結(jié)適合自身的經(jīng)驗,一定能取得很好的效果。
posted on 2006-12-21 22:58
EricWong 閱讀(281)
評論(0) 編輯 收藏 所屬分類:
others