一.CMMI概述 CMMI將軟件過程中的很多步驟都通過步驟規(guī)范起來,它給出了過程改進(jìn)的模型和大框架如各過程域的特定目標(biāo)及特定實踐和共性目標(biāo)及共性實踐,并沒有告訴我們具體應(yīng)該怎么去做。因為軟件過程中的每一步都需要經(jīng)過思考、決策、有依據(jù)才能得出過程的結(jié)果,所以減少了每一步發(fā)生錯誤的可能性。 CMMI是Capacity Maturity Model Integrated的簡稱,即集成的軟件能力成熟度模型,CMM是CMMI的早期版本,它主要用于軟件工程,而CMMI是一種綜合性模型,它是工程實施和管理方法,它在軟件與系統(tǒng)集成以外的如科研、工程等領(lǐng)域都得到了廣泛的應(yīng)用。 CMMI是一個由理論和經(jīng)驗部分組成的模型。它有連續(xù)式和階段式兩種表述方式,其中連續(xù)式主要用于衡量一個企業(yè)的項目能力,而階段式主要用來衡量一個企業(yè)的成熟度。在連續(xù)式表述下,企業(yè)在接受評估時可以選擇自己希望評估的過程域和項目來進(jìn)行評估,所以評估通過率相對比較大,但它反映的那個相對比較窄,因為它僅僅反映該企業(yè)的該過程域及項目或類似項目達(dá)到了對應(yīng)的等級。而用階段式來進(jìn)行評估時,需由評估師自己來挑選內(nèi)部的任何項目或其中的某一部分來進(jìn)行評估。 階段式的CMMI有5個等級,如下: 第一級(初始級):在該等級下,項目的目標(biāo)雖然得以實現(xiàn),但它的實現(xiàn)帶有很多的偶然性和風(fēng)險性,該級對人員的依賴性比較大,性能依賴個人的能力,且隨個人固有的性能、知識和動機(jī)的不同而變化。 第二級(受管理級):在該等級下,意味著組織要確保策劃、文檔化、執(zhí)行、監(jiān)督和控制項目級的過程,并且需要為過程建立明確的目標(biāo),并能實現(xiàn)成本、進(jìn)度和質(zhì)量目標(biāo)等。在這種情況下,組織已經(jīng)營造了一個穩(wěn)定的、受控的開發(fā)環(huán)境,項目已經(jīng)在受控制的狀態(tài)下運行。該級包括如下7個過程域:需求管理(RM)、項目策劃(PP)、項目監(jiān)督與控制(PMC)、供方協(xié)定管理(SAM)、測量與分析(MA)、過程和產(chǎn)品質(zhì)量保證(PPQA)和配置管理(CM)。 第三級(已定義級):在等級三下,項目執(zhí)行過程是通過裁剪組織的標(biāo)準(zhǔn)過程集合和組織過程財富庫產(chǎn)生的“已定義過程”,并具備與該過程相適應(yīng)的運行環(huán)境。該級有如下11個過程域:需求開發(fā)(RD)、技術(shù)解決(TS)、產(chǎn)品集成(PI)、驗證(VAE)、確認(rèn)(VAL)、組織過程聚焦(OPF)、組織過程定義(OPD)、組織培訓(xùn)(OT)、集成項目管理(IPM)、風(fēng)險管理(RSKM)和決策分析和決定(DAR)。 第四級(定量管理級):在等級四下,組織建立了產(chǎn)品質(zhì)量、服務(wù)質(zhì)量以及過程性能的定量目標(biāo),運用統(tǒng)計技術(shù)和定量目標(biāo)作為判斷過程管理成功的標(biāo)準(zhǔn)。在過程的生命周期里,對產(chǎn)品質(zhì)量、服務(wù)質(zhì)量和過程性能做到統(tǒng)計意義上的了解和管理。同時過程波動的特殊原因采取措施,保持過程的穩(wěn)定性,該級包括如下兩個過程域:組織過程性能和定量項目管理。 第五級(持續(xù)優(yōu)化級):該等級的突出特征是過程性能的持續(xù)改進(jìn)。組織建立起整個組織的定量過程的定量過程改進(jìn)目標(biāo),并且把它們作為過程改進(jìn)的判斷標(biāo)準(zhǔn);這些目標(biāo)將適時修改,以反映不斷變化的本組織的商業(yè)目標(biāo)。也就是對過程的普通原始采用系統(tǒng)的措施,提升過程本身的能力或性能;實際實施的過程和組織的標(biāo)準(zhǔn)過程集合都是改進(jìn)活動的對象。該級包括如下兩個過程域:組織革新和部署;原因分析和決定。 二.CMMI給我們帶來了什么好處? 概括來說,CMMI給我們帶來了如下好處:改進(jìn)進(jìn)度和預(yù)算的可預(yù)測性、改進(jìn)開發(fā)周期、提高生產(chǎn)率、改進(jìn)質(zhì)量(質(zhì)量缺陷)、增加客戶的滿意度、提高員工的士氣、增加投資回報和低質(zhì)量成本。 對于不同的人來說,CMMI給他們帶來的好處各有不同,例如,對于企業(yè)的老板來說,CMMI不僅提高了企業(yè)整體的管理水平,而且為企業(yè)引進(jìn)了科學(xué)高效的管理觀念、創(chuàng)造了更好的利益。而對于項目經(jīng)理來說,對CMMI技術(shù)的學(xué)習(xí)掌握能夠提高自身的項目管理能力,因此能夠更好的提高項目質(zhì)量,低成本、按期限的完成既定的任務(wù)等等。 CMMI的實施包括如下幾個步驟:差距分析、過程定義、過程部署和實施、預(yù)先評估和正式評估五步。它的實施能夠提高我國企業(yè)的管理水平,使我國的企業(yè)在管理上能夠盡快地引入國際上的先進(jìn)技術(shù)。調(diào)整了我國企業(yè)的管理體制,使其從無序變成有序、主觀變成客觀、人治變?yōu)榉ㄖ苹蛑贫然芾?。CMMI應(yīng)用將產(chǎn)生的直接效果是提高了工程項目的質(zhì)量、降低了工程的成本,保證了工程的周期、提高我國企業(yè)的在國內(nèi)與國際市場上的競爭能力。 越來越多的大型企業(yè)開始要求其工程承包商具有一定的CMMI級別。級別高的企業(yè)在贏得項目的競標(biāo)中具有一定的優(yōu)勢。因此,如果沒有CMMI的等級評估,企業(yè)就會失去很多商機(jī)。另一方面,企業(yè)通過CMMI評估也是為了提升企業(yè)內(nèi)部的管理水平,降低企業(yè)的工程成本,得到更加豐厚的回報,對企業(yè)來說受益不少。 就實踐中的公司來說,CMMI的實施也會給公司項目管理者帶來了福音。如從CMMI實施中進(jìn)行差距分析來說,測量與分析、風(fēng)險管理、組織培訓(xùn)等地方明顯做得不夠。因為沒有測量與分析的數(shù)據(jù)的采集,導(dǎo)致過程中的很多地方無法進(jìn)行估量。因為對風(fēng)險管理得不夠,使得風(fēng)險散播到項目過程中的各個地方,無法從某處獲得對風(fēng)險的集中管理。因為上級的組織培訓(xùn)的不重視,導(dǎo)致很多技能不能被相關(guān)人員較快較好的掌握。除此以外,還存在很多的問題,CMMI的實施給公司項目管理者帶來了福音。 三.對CMMI的推動和若干問題的思考 1. 實施CMMI最好采用什么方式來驅(qū)動? 答案是以公司的商業(yè)目標(biāo)和實際需求來驅(qū)動,有些公司的經(jīng)營戰(zhàn)略上,質(zhì)量是核心競爭力,質(zhì)量關(guān)注會多一些是過程改進(jìn)的重點,有些將價格低作為公司的核心競爭力,成本關(guān)注會多一些是過程改進(jìn)的重點,真正遵循IDEAL(I-初始;D-診斷;E-建立;A-執(zhí)行;L-學(xué)習(xí))組織過程改進(jìn)模型。 CMMI只是告訴我們需要做什么(目標(biāo)和實踐),給出了過程改進(jìn)的模型和大框架,但具體如何做,以及采用什么工具、方法和技術(shù)等去做,這些答案需要我們自己去找。 我們不應(yīng)該過分的追求一定要采用那一種方法或工具來做好某件事情,為達(dá)成目標(biāo)應(yīng)該來說方法或工具是很多的,公司應(yīng)根據(jù)公司實際的情況來選擇,例如設(shè)計圖我們并不一定需要采用專門的Rose的工具來做;對需求等的跟蹤并不一定要采用專門的需求跟蹤工具來做,很多時候Excel就能夠達(dá)到很好的跟蹤效果。在以公司的商業(yè)目標(biāo)和實際需求來驅(qū)動的過程中,可以靈活的采用適合的方法或工具,不應(yīng)該太過拘泥,只要可以達(dá)成的公司的商業(yè)目標(biāo)和實際需求,同時又很合適自己公司就是好的過程,從這點上看,還有一個表現(xiàn),即使不同公司的商業(yè)目標(biāo)和實際需求是一致,也許不同公司對過程有也不同的想法和做法,所謂條條大路通羅馬就是這個意思。 2. CMMI與ISO9001存在哪些區(qū)別? ISO9001現(xiàn)在很多人理解為僅僅是認(rèn)證,我個人認(rèn)為ISO9001更重要的是一個質(zhì)量方面的過程改進(jìn)模型;ISO9001標(biāo)準(zhǔn)的4.1明確的提出,標(biāo)準(zhǔn)的目標(biāo)有兩個:(第一是需要證實其具有穩(wěn)定地提供滿足顧客要求和適用的法律法規(guī)要求的產(chǎn)品的能力;第二是通過體系的有效應(yīng)用,包括體系持續(xù)改進(jìn)(的)過程的有效應(yīng)用,以及保證符合顧客要求和(與)適用的法律法規(guī)要求,旨在增強(qiáng)顧客滿意。)其中第二條講的就是過程改進(jìn),一個公司在剛開始實施過程改進(jìn)時,公司的人員的由于能力不夠或經(jīng)驗不豐富,你說策劃的做法不是第一策劃就一定好,一般一定有不足的地方,也就是過程本身不完美,過程能力或性能的不夠,過程本身就會做出不良的產(chǎn)品和工作,所以需要不斷根據(jù)公司的質(zhì)量方針和目標(biāo)不斷改進(jìn),改進(jìn)到過程本身具備滿足目標(biāo)的能力或性能,這時由于過程能力或性能夠,過程本身做出的產(chǎn)品和工作就是符合要求的,這就是真正意義上的質(zhì)量保證(本身不出錯)。從過程改進(jìn)的角度來說,CMMI與ISO9001的出發(fā)點和目標(biāo)是一致的; 區(qū)別: 一是:ISO9001僅僅是質(zhì)量過程改進(jìn)模型;而CMMI是組織過程改進(jìn)模型可以包括質(zhì)量、進(jìn)度、成本等方面的過程改進(jìn); 二是:取得ISO 9000認(rèn)證不意味著完全滿足CMMI的某等級要求。取得CMMI第二級或第三級也不能籠統(tǒng)地認(rèn)為可以滿足ISO 9000的要求。因為兩個模型的內(nèi)容有輕微的差異;如ISO9001說顧客財產(chǎn)管理,CMMI沒有此方面的比較具體的要求。 3. CMMI過時了嗎? 迭代開發(fā)技術(shù)、軟件產(chǎn)業(yè)最佳實踐、和經(jīng)濟(jì)動機(jī)推動組織采用基于結(jié)果的方法:開發(fā)業(yè)務(wù)案例、構(gòu)想和原型方案;細(xì)化后納入基線結(jié)構(gòu)、可用發(fā)布,最后定為現(xiàn)場版本的發(fā)布。雖然CMMI保留了基于活動的方法,它的確集成了軟件產(chǎn)業(yè)內(nèi)很多現(xiàn)代的最好的實踐,因此它很大程度上淡化了和瀑布思想的聯(lián)系。 分析CMMI和迭代開發(fā)之間有什么聯(lián)系,方法之一就是看CMMI模型的每個PA是否為這種開發(fā)方法激發(fā)了合理的軟件管理原理。如項目策劃過程域的三個目標(biāo)(建立和維護(hù)項目計劃因素的估計值、建立和維護(hù)項目計劃、建立和維護(hù)對項目計劃的承諾)對于迭代開發(fā)來說仍然是非常需要的,并不是多余,所以CMMI和迭代思想聯(lián)系得很緊密,所以說CMMI并沒有過時。 4.CMMI與ISO9001、敏捷開發(fā)的關(guān)系? 最近幾年來,敏捷開發(fā)已經(jīng)成為一項主流開發(fā)技術(shù)。很多成功的企業(yè)都在使用這個技術(shù)。那么CMMI與ISO9001、敏捷之間存在怎么樣的關(guān)系呢?分析如下: CMMI回顧:在80年代早期,在SEI的資助下美國空軍成立了一項研究來分析為什么許多軟件合同都會超出工期和預(yù)算。他們的結(jié)論是:糟糕的過程。由此,產(chǎn)生了CMM&CMMI。能力成熟度模型CMMI是一個過程改進(jìn)方法和模型,它為組織提供了實現(xiàn)高效的軟件交付過程所必需的基本元素,關(guān)注通過切實改進(jìn)過程域的成熟度,實現(xiàn)過程改進(jìn)的目標(biāo)。它可以用來指導(dǎo)一個項目、一個部門甚至整個組織的過程改進(jìn)。CMMI能幫助我們整合以往各自為政的組織功能,建立過程改進(jìn)的目標(biāo)與優(yōu)先級,指導(dǎo)我們進(jìn)行質(zhì)量改進(jìn),還提供了評價現(xiàn)有過程的參照點。 ISO9001回顧:近年來,國際上影響最為深遠(yuǎn)的質(zhì)量管理標(biāo)準(zhǔn)當(dāng)屬國際標(biāo)準(zhǔn)化組織于1987年公布的ISO9000系列標(biāo)準(zhǔn),這一國際標(biāo)準(zhǔn)發(fā)源于歐洲經(jīng)濟(jì)共同體,但很快就波及美國、日本及世界各國。到目前為止,已有70多個國家在它們的企業(yè)中采用和實施這一系列標(biāo)準(zhǔn)。 敏捷回顧:使用敏捷式方法要求IT和業(yè)務(wù)方面的參與者緊密溝通,更快的交付業(yè)務(wù)需求從而更快的獲取效益。降低改變的成本、提高系統(tǒng)的靈活性,以及降低投資的風(fēng)險。敏捷式開發(fā)能在質(zhì)量上有很大的提高。大概在60年代的時候,軟件開發(fā)是沒有計劃性的,基本是寫出來,誰也不知道什么時候能交付,但也就是在那個時候,軟件工程學(xué)的概念在美國召開的一次會議上頭一次被提出來,傳統(tǒng)工程學(xué)通常是把項目分成三步或者四步,先把需求確立起來,進(jìn)行設(shè)計構(gòu)建。應(yīng)用到軟件里是開始先由分析人員對需求進(jìn)行分析,然后設(shè)計,架構(gòu)師把整體的東西設(shè)計出來,再確定下來交給編程的團(tuán)隊,編程的團(tuán)隊按照需求規(guī)格,把東西給做出來,所有的這些東西都是由不同的人在不同的時間完成的。 這種模式的優(yōu)點是:開發(fā)計劃性非常強(qiáng),因為你知道什么人在什么時候做什么事情。但也存在一些缺點,這些缺點主要由軟件開發(fā)和傳統(tǒng)的建筑工程學(xué)的不同引起??蛻粜枨蟮牟粩嘧兓?,特別是商業(yè)軟件,跟隨市場的變化,客戶需求也在不斷變化??蛻舯旧碓谀X子里并不是很清楚自身需要什么,在它看到了產(chǎn)品后,在使用的過程中,他對自己想要的東西才有了一些更加確定的想法,知道了怎樣的東西才是自己所需要的。但在這個階段的需求變化使得項目步履維艱、使得成本大幅度增加。所以工程學(xué)里一個核心的概念,變化是最可怕的一件事情,從設(shè)計角度也好、分析的角度也好,不管怎么,不要變化,這樣就使成本增加。 敏捷式開發(fā)最核心的東西是它不排斥變化,對變化采取的是適應(yīng)性的態(tài)度。敏捷式的開發(fā)針對一小部分進(jìn)行設(shè)計測試,對每一個循環(huán)時間非常短,軟件從小到大,從很小的一點到不斷的增加擴(kuò)大,而且增長的過程中是對軟件不斷修改的過程。 敏捷開發(fā)還有一個很大的特點就是它是以人為本,而不是以方法為本的。我們的軟件開發(fā)是腦力勞動,而不是簡單的工作。如果你設(shè)計出一套方法來,不管什么方法,讓每個人去適應(yīng)的方法,最后開發(fā)效應(yīng)反而不如你組建一個具有進(jìn)取心的團(tuán)隊,這個團(tuán)隊通常情況下是先選擇一種方法,細(xì)節(jié)也一樣,在開發(fā)過程中,不斷對方法反思,直到達(dá)到這個團(tuán)隊的最高開發(fā)效應(yīng)為止。 敏捷是一個高度協(xié)作的、演進(jìn)的以及關(guān)注質(zhì)量的軟件開發(fā)方法,是一種允許快速業(yè)務(wù)變更的開發(fā)實踐。敏捷的核心是敏捷的4個核心價值觀和12條原則,外圍則是滿足不同團(tuán)隊需求的各種敏捷實踐,敏捷的不同之處在于其更關(guān)注團(tuán)隊協(xié)作、關(guān)注質(zhì)量、關(guān)注可工作的軟件。敏捷來源于實踐而不是理論。 在追求卓越的過程中,組織會嘗試多種途經(jīng),采用不同的原則、方法及技術(shù)。一個對敏捷實踐感興趣的組織可能也會對PMI的OPM3、ISO或能力成熟度模型集成(CMMI)感興趣,反之亦然,因為這些都是通向卓越的手段。CMMI與敏捷框架在很多方面能夠和平共處,互相補(bǔ)充,甚至可能協(xié)同工作。 從本質(zhì)上講,CMMI、ISO和Agile都是人們?yōu)榱私鉀Q在軟件生產(chǎn)過程中出現(xiàn)的質(zhì)量低下、進(jìn)度延遲、預(yù)算超支等問題,而產(chǎn)生的標(biāo)準(zhǔn)或過程改進(jìn)的模型或方法實踐,只是它們的關(guān)注點有所不同而已。CMMI和ISO關(guān)注為了實現(xiàn)組織軟件生產(chǎn)目標(biāo),我們應(yīng)該做什么?但卻不關(guān)注如何做。而敏捷開發(fā)作為一個實踐性方法,更關(guān)注怎么做。因此,在具體操作過程中,可以通過有效結(jié)合,能夠使組織更快、更好地實現(xiàn)過程改進(jìn)目標(biāo)。為了能夠有效結(jié)合各種CMMI和敏捷開發(fā),組織必須明確它們的區(qū)別和聯(lián)系,以及每種方法的主要關(guān)注點。
如上表所示,CMMI和敏捷開發(fā)的主要沖突來自于雙方產(chǎn)生的環(huán)境、目標(biāo)客戶和團(tuán)隊文化要素,例如CMMI早期客戶,主要關(guān)注大型項目、復(fù)雜系統(tǒng)、使命關(guān)鍵(Mission Critical)系統(tǒng),而敏捷開發(fā)主要關(guān)注小項目、簡單應(yīng)用和靈活多變的系統(tǒng);CMMI的假想市場和用戶主要面向成熟市場,面向那些關(guān)注流程創(chuàng)新的企業(yè),而敏捷開發(fā)主要關(guān)注在新興市場和多變的市場環(huán)境;文化方面,CMMI強(qiáng)調(diào)流程和管理,而敏捷更強(qiáng)調(diào)高度信任的氛圍中,被激勵起來的個人之間的協(xié)作創(chuàng)新。 但在整體上,CMMI和敏捷開發(fā)能夠很好地相互補(bǔ)充、相互支持。首先在關(guān)注點上CMMI關(guān)注組織級或企業(yè)級改進(jìn),關(guān)注回答項目應(yīng)該做什么,而不是具體怎么做的方法,而敏捷開發(fā)則更關(guān)注項目級改進(jìn),關(guān)注項目具體怎么做的方法和最佳實踐,這使雙方在定位方面形成很好的相互補(bǔ)充的態(tài)勢,一方面CMMI為敏捷提供組織級擴(kuò)展的能力和必須的組織治理框架,便于組織級對敏捷最佳實踐的推廣和重用;另一方面,敏捷為CMMI提供了項目級的具體實踐方法,確保團(tuán)隊在CMMI框架下能夠快速響應(yīng),不斷創(chuàng)新,持續(xù)交付價值。兩者的有效結(jié)合,能夠有效實現(xiàn)個人績效向團(tuán)隊績效、向組織績效的轉(zhuǎn)變過程。同時,也可以通過敏捷實踐,規(guī)避CMMI實施過程中重文檔、重流程的不良傾向,使CMMI實施時更加關(guān)注組織的實際價值、關(guān)注客戶、關(guān)注創(chuàng)新。 結(jié)論 至此已經(jīng)講明CMM與敏捷實踐之間的關(guān)系和協(xié)作效果。為了取得最好的效果,學(xué)習(xí)CMMI的各個過程域、各個成熟度級別并掌握如何在敏捷與CMMI之間過渡的能力非常重要。 |