CMMI認(rèn)證進(jìn)入我國(guó)軟件領(lǐng)域的這十多年來(lái),對(duì)我國(guó)軟件產(chǎn)業(yè)的健康發(fā)展作出了巨大貢獻(xiàn)。但一些軟件企業(yè)只是以獲得證書(shū)為根本目的,而忘記CMMI認(rèn)證的出發(fā)點(diǎn)是改進(jìn)軟件生產(chǎn)過(guò)程。這致使我國(guó)一些通過(guò)CMMI5級(jí)的企業(yè)的項(xiàng)目平均延期率依然在25%以上,并且數(shù)據(jù)并不穩(wěn)定。尤為不幸的是,目前沒(méi)有任何公開(kāi)數(shù)據(jù)表明我國(guó)通過(guò)CMMI高級(jí)別認(rèn)證的企業(yè),提高了生產(chǎn)效率,降低了成本,提高了產(chǎn)品質(zhì)量。
CMM/CMMI在中國(guó)的過(guò)程改進(jìn)領(lǐng)域到底是一個(gè)偉大的經(jīng)典還是一個(gè)因水土不服而失敗的理論?CMMI后的軟件過(guò)程改進(jìn)又將如何演繹?
CMMI(Capability Maturity Model Integration, 即能力成熟度模型集成模型)自20世紀(jì)90年代中期傳入中國(guó)以來(lái),有些軟件企業(yè)只是一味地追求高級(jí)別CMMI認(rèn)證,以為拿到更高級(jí)CMMI證書(shū)就獲得了進(jìn)入外包市場(chǎng)的國(guó)際通行證,而忽視了對(duì)軟件生產(chǎn)過(guò)程真正持續(xù)的改進(jìn)。從而導(dǎo)致CMMI認(rèn)證在中國(guó)出現(xiàn)一些令人擔(dān)憂的現(xiàn)象。
怪相一:證書(shū)擺桌面 體系放一邊
通過(guò)對(duì)某一軟件園進(jìn)行調(diào)查,對(duì)通過(guò)CMMI評(píng)估的8家企業(yè)進(jìn)行走訪,發(fā)現(xiàn)有5家企業(yè)在通過(guò)評(píng)估后基本上放棄了。CMMI評(píng)估的證書(shū)高高掛在墻上,做過(guò)程改進(jìn)的人員已經(jīng)不見(jiàn)蹤影,企業(yè)也不再按照原來(lái)的體系執(zhí)行了。其實(shí)這5家企業(yè)本就沒(méi)想真正去改進(jìn)過(guò)程。那為什i還要去做CMMI評(píng)估呢?因?yàn)槠髽I(yè)有補(bǔ)助。不少地方鼓勵(lì)企業(yè)實(shí)施過(guò)程改進(jìn),并陸續(xù)出臺(tái)資助政策。當(dāng)企業(yè)通過(guò)評(píng)估后,可從不同部門獲得資助。有些企業(yè)為拿到資助,突擊通過(guò)CMMI的評(píng)估,于是便出現(xiàn)了“證書(shū)擺桌面,體系放一邊”的現(xiàn)象。
怪相二:證書(shū)拿到手 體系大調(diào)修
有過(guò)兩家企業(yè)在通過(guò)CMM或CMMI評(píng)估后,在很短的時(shí)間內(nèi)就對(duì)過(guò)程體系進(jìn)行了大幅度的裁剪。其中一家公司的負(fù)責(zé)人講:“原來(lái)定的體系太煩瑣,為了通過(guò)評(píng)估,我們?cè)瓉?lái)忍了,現(xiàn)在必須裁剪!”難道只有煩瑣才能通過(guò)CMMI的評(píng)估嗎?難道簡(jiǎn)約就不可能通過(guò)CMMI的評(píng)估嗎?
CMMI評(píng)估要求主任評(píng)估師必須具有10年以上的軟件工程經(jīng)驗(yàn),評(píng)估組的成員必須平均具有6年以上工程經(jīng)l,評(píng)估組累計(jì)不少于25年工程經(jīng)驗(yàn),每個(gè)生命周期階段要有兩個(gè)人具有實(shí)踐經(jīng)驗(yàn),至少要有一個(gè)成員有6年以上的管理經(jīng)驗(yàn),評(píng)估組累計(jì)要有10年以上管理經(jīng)驗(yàn)。這些要求其實(shí)是為了更好地進(jìn)行專業(yè)判斷,避免機(jī)械照搬。
CMMI要求企業(yè)建立裁剪指南。在實(shí)踐中,裁剪指南往往比體系本身更重要。僵化的體系是不可能真正在組織里推行下去的,要保持體系的靈活與敏捷,就必須定義詳細(xì)的、實(shí)際的裁剪指南,并在實(shí)踐中逐步完善。
怪相三:工期依然拖 缺陷照常多
企業(yè)實(shí)施CMMI到一定階段后,EPG抱怨領(lǐng)導(dǎo)意識(shí)有問(wèn)題,領(lǐng)導(dǎo)在言談舉止中對(duì)過(guò)程改進(jìn)的支持力度不夠。而領(lǐng)導(dǎo)卻說(shuō)該授權(quán)的也授權(quán)了,該獎(jiǎng)勵(lì)的也獎(jiǎng)勵(lì)了,該懲罰的也懲罰了,但是項(xiàng)目依然拖期,仍a存在質(zhì)量問(wèn)題,就認(rèn)為EPG沒(méi)有解決核心問(wèn)題。問(wèn)題究竟出在什么地方呢?
過(guò)程改進(jìn)的目的可以概括為“多、快、好、省”:多,即項(xiàng)目組能滿足客戶的需求越多越好,企業(yè)能承接的項(xiàng)目越多越好;快,即能夠提高企業(yè)的估算能力、應(yīng)變能力,使項(xiàng)目能夠按期完工,減少拖期現(xiàn)象;好,即提高交付的產(chǎn)品質(zhì)量,減少售后維護(hù)的工作量;省,即降低項(xiàng)目的開(kāi)發(fā)成本,提高企業(yè)的贏利能力。
對(duì)于不同企業(yè)而言,在上述4個(gè)目的中可能側(cè)重點(diǎn)有所不同。當(dāng)實(shí)施過(guò)程改進(jìn)時(shí),一定要緊緊圍繞企業(yè)的改進(jìn)目標(biāo)做工作,針對(duì)企業(yè)領(lǐng)導(dǎo)關(guān)注的問(wèn)題、企業(yè)最薄弱的環(huán)節(jié)實(shí)施改進(jìn),這樣才能事半功倍,快速見(jiàn)效,否則見(jiàn)不到實(shí)際效果,任何管理方法都不會(huì)長(zhǎng)久,任何領(lǐng)導(dǎo)也不會(huì)堅(jiān)持。
很多情況下,企業(yè)在過(guò)程改進(jìn)時(shí),找到了病根,卻沒(méi)有找到有效的解決方案。比如單元測(cè)試和代碼走查是提高軟件質(zhì)量的有效措施,已經(jīng)在工程界得到了充分認(rèn)可,但是在軟件生產(chǎn)企業(yè)中推廣時(shí),往往會(huì)遇到開(kāi)發(fā)人員的阻撓。開(kāi)發(fā)人員會(huì)認(rèn)為做單元測(cè)試與代碼走查浪費(fèi)了大量的時(shí)間,不如直接做黑盒的功能測(cè)試更簡(jiǎn)單?成員采取各種各樣的手段,努力使這些業(yè)內(nèi)的最佳實(shí)踐變成企業(yè)的最佳實(shí)踐。上面提到的EPG與企業(yè)領(lǐng)導(dǎo)之間的互相抱怨問(wèn)題,很大程度上歸因于此。
怪相四:文檔一篇篇 不見(jiàn)有人看
有已經(jīng)通過(guò)CMMI3級(jí)評(píng)估的軟件生產(chǎn)企業(yè),完成一個(gè)項(xiàng)目需要項(xiàng)目組填寫(xiě)接近90份文檔。當(dāng)做CMMI的差距分析時(shí),發(fā)現(xiàn)在那些文檔<有大量顯而易見(jiàn)的錯(cuò)誤。而這些文檔還要給項(xiàng)目經(jīng)理、QA人員及高層主管等多個(gè)角色去看,卻沒(méi)有人發(fā)現(xiàn)這些很明顯的錯(cuò)誤。其實(shí)這些人根本就沒(méi)有去看這些文檔!既然沒(méi)有人去讀,何必要寫(xiě)呢?
CMMI評(píng)估需要企業(yè)提供3種證據(jù):直接證據(jù)、間接證據(jù)和人證。每條實(shí)踐都必須有直接證據(jù)。直接證據(jù)包括了產(chǎn)出的文檔、使用的工具等等。由于f接證據(jù)是必須的,于是,為了滿足評(píng)估的需要,很多企業(yè)做了上百個(gè)文檔來(lái)滿足模型的要求,其實(shí)這是不對(duì)的。模型是強(qiáng)調(diào)直接證據(jù),但是并非文檔越多越好。文檔只是用來(lái)證明某個(gè)實(shí)踐你做到了,只要達(dá)到了這個(gè)目的就可以了。而且一個(gè)文檔可以滿足多條實(shí)踐的要求,可以作為多條實(shí)踐f證據(jù),這是最經(jīng)濟(jì)的做法。只要內(nèi)容有了,也并非在乎文檔的多少與格式。
實(shí)施CMMI之前,項(xiàng)目組往往不寫(xiě)文檔或者很少寫(xiě)文檔;實(shí)施CMMI之后,寫(xiě)的文檔又可能太多—這是兩個(gè)極端,需要平衡。
怪相五:流程很優(yōu)秀 效果不見(jiàn)有
有一家專門從事軟件外包的公司,通過(guò)CMMI3級(jí),流程定義得很簡(jiǎn)潔、實(shí)用,企業(yè)的執(zhí)行力也很強(qiáng),但是項(xiàng)目的實(shí)際效果卻不好。為什么呢?經(jīng)過(guò)仔細(xì)審查項(xiàng)目組的需求、設(shè)計(jì)、測(cè)n用例、源代碼等文檔,發(fā)現(xiàn)需求的描述有遺漏,有錯(cuò)誤;設(shè)計(jì)文檔沒(méi)有滿足基本的設(shè)計(jì)原則;測(cè)試用例不完備,覆蓋率比較低;源代碼中需要重構(gòu)的地方比比皆是。在調(diào)查中還發(fā)現(xiàn)項(xiàng)目組的成員都比較年輕,工程經(jīng)驗(yàn)大都少于兩年。盡管企業(yè)也進(jìn)行了需求工程、設(shè)計(jì)模式等技術(shù)培訓(xùn),但經(jīng)n不是靠培訓(xùn)就能解決的。因此,即使有好的流程,仍然有可能開(kāi)發(fā)不出好的軟件系統(tǒng)。
另外一家公司,沒(méi)有通過(guò)CMMI的評(píng)估,公司內(nèi)有3個(gè)部門,其中一個(gè)部門積累了一個(gè)基于.NET的可復(fù)用的MIS軟件框架,該框架已由少數(shù)精英開(kāi)發(fā)了4年,積累了4年,發(fā)布了多個(gè)版本。實(shí)現(xiàn)一個(gè)新需求時(shí),只要定制界面,編寫(xiě)存儲(chǔ)過(guò)程就可以了。當(dāng)一個(gè)新員工進(jìn)入該部門后,基于該框架,大概花費(fèi)1周的時(shí)間就可以編寫(xiě)出能夠交付給客戶執(zhí)行的代碼,該部門的開(kāi)發(fā)效率很高。其實(shí)對(duì)于該企業(yè)來(lái)講,引入CMMI并非當(dāng)務(wù)之急,打破部門之間的壁壘,將該軟件框架推廣到其他兩個(gè)部門可能投入、產(chǎn)出比會(huì)更高。人、過(guò)程、技術(shù)三者都不可偏廢。企業(yè)要分析人、技術(shù)與過(guò)程,哪個(gè)因素是企業(yè)的瓶頸問(wèn)題。優(yōu)先解決瓶頸問(wèn)題才能事半功倍,最大限度地提高生產(chǎn)效率。
硬件生產(chǎn)企業(yè)的生產(chǎn)線是由各種各樣的設(shè)備組成的,而軟件企業(yè)的生產(chǎn)線主要是由水平各異的人員構(gòu)成的。在軟件開(kāi)發(fā)中,人是最基本的生產(chǎn)要素,要想提高生產(chǎn)率,必須優(yōu)先提高人員的能力。
怪相六:大家要業(yè)績(jī) 快速過(guò)五級(jí)
很多企業(yè)在通過(guò)了CMMI3級(jí)的正式評(píng)估后,急于通過(guò)CMMI的5級(jí)評(píng)估。為什么呢?一是企業(yè)從市場(chǎng)競(jìng)爭(zhēng)方面想把競(jìng)爭(zhēng)對(duì)手甩在后面,便于爭(zhēng)取更多訂單;二是政府有巨資資助,企業(yè)通過(guò)高級(jí)別CMMI認(rèn)證對(duì)當(dāng)?shù)氐恼畞?lái)講有業(yè)績(jī);三是企業(yè)通過(guò)高級(jí)別CMMI認(rèn)證可以擴(kuò)大對(duì)外宣傳,增強(qiáng)客戶對(duì)自己的信任。幾種因素綜合在一起,企業(yè)不由自主地就開(kāi)始了向高成.
CMMI的4級(jí)強(qiáng)調(diào)的是過(guò)程穩(wěn)定性與項(xiàng)目量化管理,5級(jí)強(qiáng)調(diào)的是根本原因分析與持續(xù)改進(jìn)。很多企業(yè)可能在CMMI3級(jí)時(shí),就已經(jīng)做到了在項(xiàng)目組內(nèi)定義量化的質(zhì)量目標(biāo),并實(shí)現(xiàn)了該量化目標(biāo),因此在3級(jí)時(shí)可能就已部分做到4級(jí)的要求。有的企業(yè)在3級(jí)時(shí)就做到交付軟件的缺陷密度低于0.3個(gè)/Kloc,比SEI統(tǒng)計(jì)的通過(guò)CMMI5級(jí)評(píng)估的企業(yè)的平均質(zhì)量還要好??蛻舻乃?jīng)Q定了供應(yīng)商的水平,對(duì)于客戶要求高和生產(chǎn)高可靠性軟件的公司通過(guò)CMMI4~5級(jí)的評(píng)估是很有必要的。否則,真正達(dá)到CMMI3級(jí)水平就足以滿足一般的客戶需求。
在實(shí)施4~5級(jí)時(shí),還需要慎重地考慮:你真的能在短時(shí)間內(nèi)證明過(guò)程的穩(wěn)定性嗎?你真的可以在短時(shí)間內(nèi)量化證明你的持續(xù)改進(jìn)嗎?
按照統(tǒng)計(jì)學(xué)的要求,一諦枰?0個(gè)樣本點(diǎn)才可以證明過(guò)程的穩(wěn)定性,而且這些樣本點(diǎn)必須是與5M1E(人、機(jī)器、材料、方法、環(huán)境、測(cè)量)等因素相近的。而軟件企業(yè)的人員變動(dòng)、技術(shù)方法升級(jí)等變化是比較快的,即使采集到8個(gè)樣本點(diǎn),對(duì)于大多數(shù)軟件生產(chǎn)企業(yè)來(lái)說(shuō),也需要相當(dāng)長(zhǎng)的時(shí)間周期。根據(jù)SEI的報(bào)告,?992年以來(lái),從等級(jí)1到等級(jí)2需要時(shí)間的中間值為19個(gè)月,從2級(jí)到3級(jí)的中間值為19個(gè)月,從3級(jí)到4級(jí)的中間值為24個(gè)月,從4級(jí)到5級(jí)的中間值為13個(gè)月。
CMMI認(rèn)證的真正目的是幫助軟件生產(chǎn)企業(yè)改進(jìn)生產(chǎn)流程,從而提高軟件產(chǎn)品的質(zhì)量和生產(chǎn)效率。而CMM/CMMI在中國(guó)軟件這片特殊的土壤上一路走來(lái),雖然曾經(jīng)創(chuàng)造了許多輝煌,但更多的是遭遇了包括上述6種怪相在內(nèi)的很多奇怪現(xiàn)象。 中國(guó)的軟件生產(chǎn)企業(yè)在通過(guò)相應(yīng)級(jí)別的CMMI認(rèn)證之后,如何理性看待CMMI,如何按照CMMI模型的要求使軟件生產(chǎn)流程得到真正持續(xù)的改進(jìn),如何準(zhǔn)確判斷現(xiàn)有水平是否適合沖刺CMMI5級(jí)以及如何沖刺CMMI5級(jí),從而做到CMMI在實(shí)效上的繁榮,而不是證書(shū)上的繁榮,這些都是中國(guó)軟件企業(yè)在真正走向世界之前要認(rèn)真思考的問(wèn)題。