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