在追求卓越的過(guò)程中,組織會(huì)嘗試多種途經(jīng),采用不同的原則、方法及技術(shù)。一個(gè)對(duì)敏捷實(shí)踐感興趣的組織可能也會(huì)對(duì)PMI的OPM3、ISO或能力成熟度模型集成(CMMI)感興趣,因?yàn)檫@些都是通向卓越的手段。不過(guò),我曾經(jīng)看到一些組織同時(shí)嘗試敏捷和PMI模型,但沒(méi)有誰(shuí)成功。實(shí)際上,去年我觀察了兩個(gè)很大的公司,它們主動(dòng)在公司內(nèi)同時(shí)采用敏捷與CMMI。在兩家公司里,分別實(shí)施這兩種方法的兩個(gè)小組都把對(duì)方當(dāng)作競(jìng)爭(zhēng)對(duì)手,這令這兩家公司嚴(yán)重受挫。(譯注1)其實(shí)沒(méi)必要這樣子。CMMI與敏捷框架至少能夠而且應(yīng)該和平共處,甚至可能協(xié)同工作 - 我知道這對(duì)你們?cè)S多人來(lái)說(shuō)是一種震動(dòng)。
許多人認(rèn)為敏捷與CMMI是極端對(duì)立的,彼此抵消對(duì)方的成效。在傳統(tǒng)方式與敏捷框架之間一直持續(xù)的論戰(zhàn)中,各自的支持者紛紛列舉出與對(duì)方水火不容的觀點(diǎn)。但是這種對(duì)抗的態(tài)度不但毫無(wú)道理,也會(huì)對(duì)我們的工作-在盡可能短的時(shí)間內(nèi)開(kāi)發(fā)出高質(zhì)量的軟件-產(chǎn)生妨礙。想要獲得最好的投資收益,最好是創(chuàng)建一組混合模型和方法,選擇合適的技術(shù)來(lái)應(yīng)對(duì)特定的挑戰(zhàn)。
CMMI回顧
能力成熟度模型集成(CMMI)(注1)是一個(gè)過(guò)程改進(jìn)方法,它為組織提供了實(shí)現(xiàn)高效的過(guò)程所必需的基本元素。它可以用來(lái)指導(dǎo)一個(gè)項(xiàng)目、一個(gè)部門(mén)甚至整個(gè)組織的過(guò)程改進(jìn)。CMMI能幫助我們整合以往各自為政的組織功能,建立過(guò)程改進(jìn)的目標(biāo)與優(yōu)先級(jí),指導(dǎo)我們進(jìn)行質(zhì)量改進(jìn),還提供了評(píng)價(jià)現(xiàn)有過(guò)程的參照點(diǎn)。

有趣的是,創(chuàng)建CMMI的初衷是為了應(yīng)付一些軟件開(kāi)發(fā)相關(guān)的問(wèn)題,而提出敏捷實(shí)踐也是為了解決這些問(wèn)題。在80年代早期,在SEI的資助下美國(guó)空軍成立了一項(xiàng)研究來(lái)分析為什么許多軟件合同都會(huì)超出工期和預(yù)算。他們的結(jié)論是:糟糕的過(guò)程。而另一方面,承包商認(rèn)為無(wú)法按照預(yù)定的工期和預(yù)算完成合同的原因在于需求不斷變更。研究中,為了在軟件開(kāi)發(fā)生命周期的后期應(yīng)付這些變更而不增加返工,一個(gè)小組試圖建立更多的過(guò)程,而另一個(gè)小組嘗試應(yīng)用不同的方法。這項(xiàng)研究一直持續(xù)到1998年,這一年,作為CMMI的補(bǔ)充,TSP誕生了。針對(duì)CMMI提出的“需要做什么”的目標(biāo),TSP指導(dǎo)團(tuán)隊(duì)“如何去做”,這加快了它的普及。但很多人忽視了敏捷實(shí)踐也能指導(dǎo)我們“如何去做”。
對(duì)新一代的敏捷實(shí)踐者來(lái)說(shuō),CMMI似乎太臃腫、太枯燥、太缺乏創(chuàng)造性了。有人批評(píng)CMMI太官僚,過(guò)于關(guān)注過(guò)程而不是問(wèn)題本身,削弱了應(yīng)付日益嚴(yán)峻的需求變更的能力。同樣,也有人批評(píng)敏捷對(duì)開(kāi)發(fā)過(guò)程控制不力,導(dǎo)致隱性的變更和混亂。
批評(píng)者還聲稱(chēng)在CMMI提出的經(jīng)典工程方法中,一些令項(xiàng)目成功的人類(lèi)認(rèn)知能力、組織及文化等方面的基本要素都沒(méi)有考慮到。對(duì)于這些批評(píng)者(也是敏捷實(shí)踐者)來(lái)說(shuō),從裝配線(xiàn)式的過(guò)程模型中解脫出來(lái),關(guān)注人與人的交流就是一種進(jìn)步。Paulk(2001)(注2)更深入地探討了為何這兩種方法并非絕對(duì)沖突,并闡述了一個(gè)開(kāi)發(fā)小組如何在遵循極限編程原則的同時(shí)擁抱CMM第3級(jí)。在第3級(jí)中,兩種方法都可以衍生出不同的措施。Boehm andTurner(注3)強(qiáng)調(diào)不但要平衡地應(yīng)用這兩種方法相關(guān)的措施,而且要知道如何正確地應(yīng)用才能顯著改進(jìn)組織的開(kāi)發(fā)過(guò)程。
CMMi提出,在組織中必須建立開(kāi)發(fā)過(guò)程,必須采用同行評(píng)審來(lái)提高質(zhì)量,必須有版本控制系統(tǒng)。如果我們發(fā)現(xiàn)一個(gè)跨國(guó)公司至今仍缺乏這些基本的“常識(shí)性”的控制手段,肯定不只我一個(gè)人會(huì)感到震驚和失望。如果能合理地應(yīng)用兩種方法中的原則、方法及技術(shù),我們不至于陷入兩難的境地。然而,要在現(xiàn)有的成熟度級(jí)別上同時(shí)應(yīng)用敏捷,以及為敏捷團(tuán)隊(duì)找到最佳的成熟度級(jí)別都會(huì)是挑戰(zhàn)。
實(shí)施敏捷的最佳時(shí)機(jī)
一項(xiàng)敏捷實(shí)踐應(yīng)該經(jīng)過(guò)裁剪以適應(yīng)組織實(shí)際的成熟度級(jí)別;特別是,如果組織的成熟度處于CMMI第3級(jí),實(shí)施敏捷不但可以獲得敏捷帶來(lái)的重要好處,還可以減少返工,并全面提高推行CMMI的積極性。如果實(shí)施的軟件開(kāi)發(fā)過(guò)程既能遵循CMMI規(guī)范,又能符合敏捷原則,我們就可以真正獲得CMMI提出的可重復(fù)性和可預(yù)測(cè)性的好處。敏捷特意設(shè)計(jì)得非常靈活,因此它可以在不違反敏捷宣言所規(guī)定的主要目標(biāo)的前提下,裁剪為遵循CMMI規(guī)范的軟件開(kāi)發(fā)過(guò)程。
當(dāng)成熟度處于CMMI第3級(jí),組織應(yīng)該已經(jīng)選定了適合團(tuán)隊(duì)及環(huán)境的過(guò)程,這些過(guò)程主要關(guān)注如何交付可正常運(yùn)行的軟件。此外,針對(duì)特定的項(xiàng)目,還要從組織的標(biāo)準(zhǔn)過(guò)程集中裁剪出相應(yīng)的標(biāo)準(zhǔn)、過(guò)程描述及流程。因此,實(shí)施敏捷的主要工作就是為集成敏捷實(shí)踐而修改那些標(biāo)準(zhǔn)過(guò)程。實(shí)施敏捷的風(fēng)險(xiǎn)集中在管理開(kāi)銷(xiāo)上,因?yàn)榻M織的管理模式可能會(huì)限制團(tuán)隊(duì)的自主決策權(quán)及靈活性。
在CMMI第3級(jí)上實(shí)施敏捷的挑戰(zhàn)
如果成熟度未達(dá)CMMi第3級(jí),說(shuō)明組織缺乏穩(wěn)定的項(xiàng)目管理、需求分析及配置管理相關(guān)的過(guò)程。正因?yàn)槠髽I(yè)各個(gè)方面都缺乏訓(xùn)練,要實(shí)施敏捷還得提供缺失的軟件開(kāi)發(fā)過(guò)程。如果組織的成熟度未達(dá)CMMI第2級(jí),過(guò)程常常會(huì)因?yàn)槿藶樵蚧蛲鈦?lái)事件而被迫改變。在這樣的環(huán)境中,敏捷項(xiàng)目可能會(huì)成功,但成功的經(jīng)驗(yàn)不見(jiàn)得能重用。如果組織沒(méi)有一種穩(wěn)定的環(huán)境,可能是因?yàn)榻M織還不清楚建立這樣的環(huán)境需要哪些東西。這導(dǎo)致成功依賴(lài)于個(gè)人的專(zhuān)業(yè)知識(shí)、能力及英雄主義,而這些成效卻可能被團(tuán)隊(duì)的其它因素抵消。
CMMI第2級(jí)中的一些過(guò)程號(hào)稱(chēng)是可重復(fù)的,然而它們未必能在組織的所有項(xiàng)目中重用。實(shí)施敏捷實(shí)踐和度量可以為組織提供達(dá)到CMMI第3級(jí)所需的管理架構(gòu)和訓(xùn)練。在這一級(jí),盡管實(shí)施敏捷可能導(dǎo)致成本增加,但也能獲得與單獨(dú)實(shí)施同樣的好處。通過(guò)使用Burndown圖和任務(wù)板,敏捷進(jìn)度跟蹤讓組織很容易看到這種訓(xùn)練的效果,從而加快采用它的速度。敏捷框架的總體思想、方法及實(shí)踐自然地解決了CMMI第2級(jí)的時(shí)間和成本超支的風(fēng)險(xiǎn),能明顯縮短提升到第3級(jí)的時(shí)間。我曾經(jīng)成功地通過(guò)實(shí)施敏捷把成熟度級(jí)別從0提升到第2級(jí),提高了客戶(hù)滿(mǎn)意度,最終達(dá)到了預(yù)期的效果。
如果組織的成熟度高于第3級(jí),流程已經(jīng)基本可以在組織內(nèi)通用了。這種情況下除非大幅改動(dòng)那些在CMMI第4級(jí)中必需的成文的流程,否則敏捷所帶來(lái)的靈活性將非常有限。其實(shí),管理層希望能迅速找到合適的度量來(lái)控制項(xiàng)目的成本、進(jìn)度與范圍,而敏捷項(xiàng)目的進(jìn)度已經(jīng)是可視的,這與管理層的意圖已經(jīng)非常吻合了。此外,成熟度第3級(jí)與第4級(jí)之間的一個(gè)重大差別就是采用某組過(guò)程后的效果的可預(yù)測(cè)性:對(duì)于后者來(lái)說(shuō),過(guò)程的效果是通過(guò)統(tǒng)計(jì)及其它量化技術(shù)來(lái)控制的,可定量地預(yù)測(cè)。所以現(xiàn)在我還沒(méi)興趣在成熟度已達(dá)CMMI第4級(jí)的組織中推行敏捷。
結(jié)論
至此已經(jīng)寫(xiě)了夠多的內(nèi)容來(lái)講明CMM與敏捷實(shí)踐之間的關(guān)系和協(xié)作效果。為了取得最好的效果,學(xué)習(xí)CMMI的各個(gè)過(guò)程域、各個(gè)成熟度級(jí)別并掌握如何在敏捷與CMMI之間過(guò)渡的能力非常重要。