軟件生產(chǎn)過程理論告訴我們,軟件質(zhì)量往往取決于軟件過程的能力水平,企業(yè)在軟件過程中所采用的各種技術(shù)應適合該過程的成熟度水平。軟件過程是一個可度量的,可控制的,不斷改進的流程。CMM強調(diào)企業(yè)應對軟件過程進行連續(xù)的改進,在這一改進過程中,分級結(jié)構(gòu)將提供不同等級中的目標和核心領(lǐng)域來規(guī)范這一過程并為企業(yè)評論和改進自身生產(chǎn)能力提供客觀標準。
CMM成熟程度理論不可以被看作純粹的關(guān)于軟件生產(chǎn)技術(shù)的標準,也不可以被看作普通的管理理論,它實際上是對軟件開發(fā)實踐所設計的整個工程流程的規(guī)定和分析,它的體系既包括軟件工程過程本身,也包括對這一過程的管理。
CMM為企業(yè)軟件能力提供了一個階段式的五級進程。任何開始采納CMM體系的機構(gòu)都一并歸與第一級的起點,即初始級(Initiallevel)除第一節(jié)外,每一級都設定了各自的目標組。如果達到了這一目標,則可向下一級推進,由于每一個級別都必須建立在實現(xiàn)了低于它的全部級別的基礎(chǔ)之上,CMM等級的提高只能是一個漸進有序的過程。
CMM的評估包括五個等級,共計18個核心過程域,52個目標,300多個核心實踐,每一級別的評估由美國卡萊基*梅隆大學軟件工程研究所授權(quán)的主評估師領(lǐng)導的評估小組進行。其成員來自企業(yè)內(nèi)部,評估過程包括企業(yè)員工培訓,問卷填寫,文檔與數(shù)據(jù)分析,相關(guān)項目組成員面試,擬定評估報告。評估結(jié)束由主評估師簽訂生效。
CMM五級標準按由低到高的成熟度分別為:
第一級 初始級 (Initial level)
第二級 可重復級 (Repeatable level)
第三級 定義級 (Defined level)
第四級 管理級 (Managed level)
第五級 優(yōu)化級 (Optimizing level)
此級是個人英雄主義的天下,絕無可重復性,也無甚積累,項目的執(zhí)行是隨意甚至混亂的,軟件開發(fā)過程未經(jīng)定義,即使有某些規(guī)范也并未嚴格執(zhí)行,企業(yè)不具備穩(wěn)定的軟件開發(fā)與維護環(huán)境,面對開發(fā)中所遇的各類具體實施問題往往選擇放棄原定計劃仍由編程人員憑個人經(jīng)驗與主觀感覺應對,對客戶的承諾多數(shù)無法兌現(xiàn),許諾客戶的產(chǎn)品與服務質(zhì)量并無客觀的預測與監(jiān)控體系保證實現(xiàn)。在此,能力只是個人行為不是組織行為,一旦人員流動或變動,整個企業(yè)的開發(fā)能力也隨之而去。整個企業(yè)沒有穩(wěn)定的過程規(guī)則可依據(jù)。現(xiàn)有的種種規(guī)章制度也互不協(xié)調(diào)或矛盾。開發(fā)人員的工作方式是救火式,那里有漏洞就往哪里填補,很少收集關(guān)于開發(fā)過程的數(shù)據(jù),新技術(shù)的引進也要冒極大風險。總之,整個企業(yè)的軟件生產(chǎn)是不可重復,不可預見,不成體系,不可積累及不穩(wěn)定的。
本階段改進重點包括:建立軟件項目開發(fā)過程并進行有效管理;建立需求管理,明確客戶要求;建立各類項目計劃;建立完善的文檔體系,嚴格執(zhí)行質(zhì)量監(jiān)控;按CMM二級所規(guī)定的各項核心實踐進行開發(fā)。
確定了基本的軟件生產(chǎn)管理和控制,能針對特定軟件項目制定開發(fā)過程及管理措施,能將以往項目開發(fā)經(jīng)驗用于類似的新項目,有一套不同的軟件生產(chǎn)過程提供不同項目選擇。軟件生產(chǎn)成本和工期能得以客觀預測并被有效追蹤,過程標準在項目實施中能保證被遵循。項目的開發(fā)是有計劃的,有控制的,并可重復的行為,總原則是:一個可管理的過程是一個可重復的過程并能逐漸改進和成熟。 第二級的管理過程包括需求管理,項目計劃,項目追蹤和監(jiān)控,子合同管理,質(zhì)量保證與配置管理等六個方面。在該級的企業(yè)可以給客戶較有保證的承諾,因為企業(yè)可在以往同類項目的成功經(jīng)驗上總結(jié)和建立起一整套過程準則來保證成功地重復。項目管理采用基準(Baseline)來標識進展并對成本和進度進行追蹤,企業(yè)通過子合同管理同客戶建立了有效的供求關(guān)系,面對開發(fā)缺陷有規(guī)則可以依據(jù)來糾正錯誤,個人英雄行為被稀釋并分解到企業(yè)整體的規(guī)則和管理框架之中,文檔的準備和項目數(shù)據(jù)的收集也相應完備。 本階段改進重點包括:將各項目的過程經(jīng)驗總結(jié)為整個企業(yè)的標準過程,是整個企業(yè)的過程能力得以提高,注意,跨項目間的過程管理協(xié)調(diào)和支持,樹立齊全組織的過程標準概念,建立軟件工程過程小組(SEPG),對各項目的過程和質(zhì)量進行評估和監(jiān)控,使軟件過程得以正確地調(diào)整。建立軟件工程數(shù)據(jù)庫和文檔庫,加強培訓。 3. 定義級 本階段改進重點:應準備對整個軟件過程,包括生產(chǎn)和管理兩方面的定量評測分析,以便盡可能將軟件工程所涉及的定性因素轉(zhuǎn)變?yōu)槎繕藴?,從而對軟件進行定量控制和預測。應使整個企業(yè)的軟件能力在定量基礎(chǔ)上可預測和控制。 4.管理級 本階段改進重點:注意采取必要措施與方案減少項目缺陷,盡量建立起缺陷防范的有效機制,引進技術(shù)變動管理以發(fā)揮新技術(shù)的功用,引進自動化工具以減少軟件工程中人為誤差,實行過程管理,不斷改進已有的過程體系。 5.優(yōu)化級 CMM描述的五個等級的軟件過程反映了從混亂無序的軟件生產(chǎn)到有紀律的開發(fā)過程,再到標準化、可管理和不斷完善的開發(fā)過程的階梯式結(jié)構(gòu)。任何一個軟件機構(gòu)的項目生產(chǎn)都可以納入其中,除第一級初始級外,每一級成熟度都由若干核心過程域構(gòu)成,這些核心過程域分別針對軟件開發(fā)過程的某一方面闡述了這一等級的軟件過程在此方面應達到的目標組的核心實踐。所有核心實踐又可劃分為五種共性:完成目標組所需的承諾、執(zhí)行能力、執(zhí)行活動、測量分析、實驗驗證。當然,任何一個級別的核心過程域都不僅包括本級所有的核心實踐。例如,第四級管理級的實現(xiàn)必須完成第四級本身具備的兩個核心過程以及第三級中的七個核心過程域和第二級中的六個核心過程域,共十五個核心過程域。 核心過程域又稱關(guān)鍵過程域(Key ProcessArea,KPA),每一個KPA都與一些目標相關(guān),代表某種對過程的要求,我們可根據(jù)KPA對軟件過程進行評估并找到改進的重點所在??梢姡谝患塊PA外,CMM的每一級都按相同結(jié)構(gòu)組成,KPA不僅標明了某級成熟度所要求的目標和評估標準,也說明了要達到此級成熟標準所需解決的具體要點。實施每個核心過程域所包含的核心實踐(KeyPractices),就是實現(xiàn)此核心過程域所制定的目標并提高軟件過程能力。如前所述,各個核心過程域中的核心實踐都可按公共屬性進行分類,每個KPA都包括五類核心實踐。應該指出,核心實踐只是規(guī)定了軟件過程必須達到什么樣的標準而未規(guī)定這些標準應如何實現(xiàn),因此,對同樣的過程水平,不同企業(yè),不同項目可采納不同的過程和實施方式去完成。下面,我們將就五類不同的核心實踐給予具體說明: 1.執(zhí)行保證(Commitment to perform):為完成核心過程域中的目標組成所需的承諾又稱執(zhí)行保證,它是企業(yè)執(zhí)行特定的核心過程域(KPA)所擬定的指導開發(fā)過程的規(guī)則和項目管理責任。 2.執(zhí)行能力(Ability to perform):指企業(yè)執(zhí)行核心過程域的前提條件,包括企業(yè)資源、過程制定、人員培訓等多種措施。對PKA的執(zhí)行必須建立在此基礎(chǔ)之上,才可保證所規(guī)劃的目標得以實現(xiàn)。 3.執(zhí)行能力(Activities performed):它說明了執(zhí)行核心過程域所需采納的必要行動和步驟,與項目執(zhí)行息息相關(guān),包括計劃、跟蹤、檢測等,這是核心實踐的五種歸類中與項目執(zhí)行唯一相關(guān)的屬性,其余四個屬性都關(guān)注于軟件組織的基礎(chǔ)能力建設。 4.測量分析(Measurement and Analysis):是關(guān)于過程的定量度測和度測分析,以確定所執(zhí)行活動的效果并根據(jù)此作出分析判斷。 5.實施驗證(VerifyImplementation):在過程執(zhí)行的中途及末尾對過程實施進行驗證以確保執(zhí)行活動與制定的過程相一致。它包括檢測、復審等一系列質(zhì)量保證活動,這些質(zhì)量保證活動需要通過項目組以外的獨立的質(zhì)檢人員和管理人員來保證驗證的有效執(zhí)行,從而確保產(chǎn)品符合計劃要求。如果我們把執(zhí)行活動看作是與項目執(zhí)行相關(guān)的屬性,則其他所有屬性可一起視為企業(yè)成熟度能力基礎(chǔ)建設。 在實施CMM過程中,可根據(jù)各個企業(yè)面臨的不同問題決定實現(xiàn)核心過程域的先后秩序并按此秩序逐步進行。而在實施每一個具體的核心過程域時,對其目標組及核心實踐也可確定執(zhí)行的先后順序,逐步實現(xiàn)總體目標。最后,我們將第二、三、四、五等等級始終的核心過程域簡介如下:
過程在整個企業(yè)范圍內(nèi)得以確立。企業(yè)制定了一套軟件過程規(guī)則對所有軟件工程和管理行為給與指導。企業(yè)有了標準化的過程并可在所開發(fā)的項目中,依據(jù)具體項目的需要,將標準過程調(diào)整為合適的項目過程。企業(yè)內(nèi)部設置了軟件工程小組(SEPG)負責過程的制定,修改,調(diào)整和監(jiān)督。這一小組直接向企業(yè)最高領(lǐng)導層匯報。企業(yè)還有培訓機構(gòu)專門對全企業(yè)員工進行過程培訓。各項目組的開發(fā)經(jīng)驗可相互借鑒并支持,對項目成本,工期及質(zhì)量均可最終控制。有關(guān)軟件工程及管理工程的過程文件被編制并成為企業(yè)標準,所有項目都必須按照這些標準過程或經(jīng)調(diào)整后的項目過程來實施,從而保障了每一次工程開發(fā)的投入和時間,項目計劃,產(chǎn)品功能及軟件質(zhì)量得以控制。軟件過程在此得到的穩(wěn)定的,重復的和持續(xù)性的應用,使開發(fā)風險大為下降。各項目組人員參與軟件過程的制定和修改,并引進符合項目過程的新的軟件開發(fā)技術(shù),在各項目開發(fā)過程中收集的數(shù)據(jù)被系統(tǒng)共享??偠灾?,第三級的主要特點在于軟件過程已被編制為各個標準化過程,并在企業(yè)范圍內(nèi)執(zhí)行,從而使軟件生產(chǎn)和管理更具可重復性,可控制性,穩(wěn)定性和持續(xù)性。
第四級的過程是量化的過程,所有項目和產(chǎn)品的質(zhì)量都有明確的定量化衡量標準,軟件也被置于這樣一個度量體系中進行分析、比較和監(jiān)控,所有定量指標都被盡可能地詳細采集并描述,使之可具體用于軟件產(chǎn)品的控制之中,軟件開發(fā)真正成為一種工業(yè)化生產(chǎn)行為,由專門的軟件過程數(shù)據(jù)庫收集和分析軟件過程中的各類數(shù)據(jù)并以此為對軟件活動的質(zhì)量評估的基準。企業(yè)所有項目的生產(chǎn)過程在定量化的基礎(chǔ)上大大提高了可控制性和可預測性,生產(chǎn)過程中可能面對的偏差被控制在一定的量化范圍內(nèi)并被分析和解決,新技術(shù)的采納也在量化基礎(chǔ)上有控制的地進行,從而控制了風險。在此級中,所有的軟件過程和產(chǎn)品都樹立了定量的目標并被定量的管理,使軟件組織的能力可以很好地預測。此階段中所有定量標準都是明確定義并持續(xù)一致的,可以用于對軟件過程和管理的評估與調(diào)節(jié)。所有修正和調(diào)節(jié)方法(包括對偏差及缺陷的校正分析)都是基于變化指標上,新的軟件開發(fā)技術(shù)也在定量的基礎(chǔ)上被評估。項目組成員對整個過程及其管理體系有高度一致的理解并已學會運用數(shù)據(jù)庫等方法定量地看待和理解軟件工程。本級主要特點是定量化,可預測化和高質(zhì)量。
第五級的軟件過程應是持續(xù)改進的過程,并且有一整套有效機制確保軟件工程誤差接近最小或零。每一個過程在具體項目的運用中,可根據(jù)周邊和反饋信息來判斷下一步實施所需的最佳過程,以持續(xù)改善過程使之最優(yōu)化。因此,企業(yè)能不斷調(diào)整軟件生產(chǎn)過程,按優(yōu)化方案改進并執(zhí)行所需過程。這樣,企業(yè)的精力集中于持續(xù)的過程改進之中。新技術(shù)的采用也被作為日?;顒蛹右砸?guī)劃,各項目組已具備盡早和盡快識別工程缺陷并改正錯誤的手段。這需要完善的數(shù)據(jù)庫和長期積累的量化指標來協(xié)助實現(xiàn),新技術(shù)和自動化工具也使軟件工程人員能夠預防軟件缺陷并找到其根源以防止錯誤再現(xiàn),企業(yè)資源在第五級階段被有效利用并節(jié)約。一般來講,企業(yè)在優(yōu)化級所遵循的持續(xù)改進措施既包括對已有過程的漸進改善,也包括應用新技術(shù)和工具所產(chǎn)生的革新式改進,整個企業(yè)的過程定義、分析、校正和處理能力也大大加強,這些都需建立在第四級的定量化標準之上。項目組都能主動找到產(chǎn)生軟件問題的根源,也能對導致人力和時間浪費等低效率因素進行改進,防止浪費再發(fā)生。整個機構(gòu)都有強烈的團隊意識,每個人都致力于過程改進、缺陷防范和高品質(zhì)的追求。本階段總的特點是新技術(shù)的采用和過程的不斷改進被作為企業(yè)的常規(guī)工作,以實現(xiàn)缺陷防范的目標。
第二級(可重復級)
第三級(定義級)
第四級(管理級)
第五級(優(yōu)化級)