生活随笔
收集整理的這篇文章主要介紹了
CMMI入门 - 由来与思路
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在80年代CMM開始的時候,我還記得當(dāng)時的軟件項目真的非常混亂,經(jīng)常成倍地超支、超時。失敗被取消的比完成開發(fā),有產(chǎn)品交付的多好多。那個時候完全是靠員工的能力。個別員工能力水平,就是大家都具備成功的開發(fā)能力,也可能相差十倍。所以軟件項目的成功是不可能保證、不可重復(fù)的。
這樣的狀態(tài),對美國的國防部來看,是不可接受的,因為武器越來越多地依靠軟件。每一個國家都不能接受不可靠的武器。所以美國國防部作了許多努力,包括制定一系列的質(zhì)量標(biāo)準(zhǔn),定義了一種語言(ALGOL)。其中最能幫助提高軟件項目成功率與軟件質(zhì)量的,就是CMM這個軟件工程的改進(jìn)模型。開始的時候,模型只包含軟件開發(fā),后來加進(jìn)來系統(tǒng)工程的要求,就變成了CMMI。 有些人認(rèn)為CMMI是軟件開發(fā)與硬件開發(fā)的集成。其實系統(tǒng)工程包括考慮硬件在整個產(chǎn)品的配合,所以CMMI有一些產(chǎn)品整體的考慮,尤其是產(chǎn)品集成方面。但CMMI里面沒有真正地針對硬件的議題。項目的硬件部分已經(jīng)比較成熟,不是武器產(chǎn)品的短板,美國國防部知道如何管理,所以重點不在硬件。CMMI其實是軟件與系統(tǒng)工程的集成。 CMMI的由來,在于提升軟件工程的水平 所以開始的時候,CMM的一個目標(biāo)就是如何幫助軟件項目,后來變成了產(chǎn)品項目的系統(tǒng)與軟件部分提高管理能力,從而提高軟件項目的成功率,與產(chǎn)品的質(zhì)量。CMM的重點,一開始就放在“幫助提高”軟件業(yè)界水平上面。而且當(dāng)時的軟件項目管理水平很低,所以CMM模型的重點是在于如何從一個低下的軟件管理水平,發(fā)展成為高效的管理能力,保證產(chǎn)品的質(zhì)量。這一點對了解CMMI非常重要,也是CMMI獨特之處。 CMMI有哪些獨特之處?相對ISO/TL9000,PMP, 6 Sigma 等等改進(jìn)模型與方法,CMMI的目標(biāo)是能讓企業(yè)逐步提高水平。因為要讓人家知道如何“逐步”改進(jìn),所以CMMI模型就有明顯的“次序”的概念:第一步做什么,第二步做什么,等等。這與其它任何模型不同。ISO/TL9000制定了一個標(biāo)準(zhǔn),要求企業(yè)達(dá)到這個標(biāo)準(zhǔn)就好了。PMP 的重點在于項目管理,這方面的要求比CMMI里的更詳細(xì)。但還是一組的標(biāo)準(zhǔn)。6 Sigma使用了兩個生命周期模型,(一個是開發(fā),一個是改進(jìn))來組織一系列的方法與工具,讓企業(yè)知道如何高效地處理那兩種項目的活動。這些模型,相互并不沖突,并沒有不一致的地方,大家都是為提高或是保證過程的效率而設(shè)。任何企業(yè)都可以混合著使用。其中只有 CMMI 從一開始就具備這樣改進(jìn)次序的概念。 后來TL9000也參考了CMMI 的內(nèi)容,并且希望幫助企業(yè)不斷地提升質(zhì)量,但是因為它的模型結(jié)構(gòu)沒有“次序”這個概念,它只能每年提高認(rèn)證的標(biāo)準(zhǔn),作為驅(qū)動企業(yè)提高的動力。這個當(dāng)然不很好。我就在一次TL9000的技術(shù)會議中提到這樣有問題,因為這樣下去,就很難讓新企業(yè)得到認(rèn)證,因為對他們來說,門檻已經(jīng)越來越高了。這樣不但減小Quest Forum(TL9000的負(fù)責(zé)組織)的收入,同時讓新企業(yè)望而卻步,削弱了TL9000的影響力。我當(dāng)時的提議就是把認(rèn)證分等級:比如一等TL9000認(rèn)證,二級認(rèn)證,等等(是不是跟CMMI很像?)。后來我離開公司之后,就沒有再參與Quest Forum 的活動,不知道后來的發(fā)展了。 我們可以說,CMMI的由來,就是當(dāng)時的企業(yè)軟件產(chǎn)品項目管理水平比較混亂、無序,需要一個方法,幫助企業(yè)逐步提高這個管理水平,到達(dá)可以制度化地、系統(tǒng)性地、自動地不斷提高的成熟水平。 項目管理的狀態(tài) 舉一些70年代后期以至80年代中期這段時間的項目案例:我知道有一個軟件產(chǎn)品項目是沒有文檔的。需求的文檔沒有。領(lǐng)導(dǎo)只有一個概念,這個軟件需要自動控制煉鋼過程的化學(xué)成分,并提供各部門科室所需要的紀(jì)錄與報告。這就是全部的需求,并且只存在于小數(shù)幾個人的腦子里,而且每一個版本(每個人的想法)都未必是相同的。產(chǎn)品的實施方案呢,也就只存在于項目經(jīng)理的腦子里。就他一個人知道如何實施。還記得當(dāng)時的觀念,就是這個項目經(jīng)理是神,法力無窮:這么復(fù)雜的系統(tǒng),千絲萬縷,任何細(xì)節(jié),手到拿來,并且把任務(wù)分配下來。團(tuán)隊都是電腦專家、開發(fā)高手。大家都認(rèn)為這樣的人才才算有用。后來進(jìn)展不理想,高層就請來一位專家來審核項目,發(fā)現(xiàn)檢查不到任何文檔紀(jì)錄,他的報告就是項目缺乏文檔,沒有任何可以讓其他人了解情況的信息與機(jī)制,是一個絕對不透明的項目,不能做任何風(fēng)險的判斷,項目的成功沒有保證。這位項目經(jīng)理雖然有才,但是完全沒有項目管理的理念。等等。 無序的軟件項目管理當(dāng)時比較普遍。當(dāng)然也有做的比較好的。在IBM等有規(guī)模的企業(yè)在這方面就比較好。反而貝爾實驗室當(dāng)時還比較依賴人才與技術(shù)。 在這個年代,如果一個軟件項目,有一點點地可視性,就已經(jīng)是非常卓越了。比如另外一個項目,它的項目經(jīng)理在項目中也像一個神一樣,是項目的靈魂。但是他比較重視策劃、文檔,讓項目的進(jìn)度有一定的準(zhǔn)確性。但是因為是軟件項目,大家還是認(rèn)為這位項目經(jīng)理是無可替代的。 后來這位項目經(jīng)理要請一個月的假,到北極去旅游。公司的高層非常害怕他的缺勤會造成項目的風(fēng)險。但是他信言旦旦地保證,因為項目管理做得好,項目的運作不會受影響。后來一個月后回來,項目的進(jìn)度,真的如他所說的按計劃開展。這是一個比較成功的項目。 總結(jié)一下,當(dāng)時以下的問題在軟件產(chǎn)品項目中非常普遍:
不知道要做什么?沒有需求。版本很混亂,經(jīng)常遺失完成了得修改。構(gòu)建版本非常困難、吃力,等等。沒有準(zhǔn)則判斷項目過程中的進(jìn)展與質(zhì)量。高層很難掌握項目情況。在這種情況下,開展一個軟件產(chǎn)品項目就有點像×××一樣:不知道開出來的是大還是小? 從上面的案例,很明顯,改進(jìn)的思路應(yīng)該是從管理入手。只有在有序的情況下才可能進(jìn)一步研究如何提升軟件管理的水平,幫助軟件項目變得更成熟,更能保證軟件產(chǎn)品的質(zhì)量。CMM的目的就是如何提升軟件工程水平的問題,而不是簡單地制定一個標(biāo)準(zhǔn):比如:項目需要有文檔之類的要求。因為就是要求有文檔,也不知道需要哪些文檔。 另外一個問題就是在這么多的項目活動之中,如何整理出來一個可以提供指導(dǎo)作用的框架。當(dāng)時有些企業(yè)在這個領(lǐng)域已經(jīng)開始努力。貝爾里已經(jīng)知道項目大概需要30%項目的工作量放在測試方面。也記不清楚是否IBM發(fā)現(xiàn)提高項目計劃的準(zhǔn)確性,在于讓員工自己估算任務(wù)的工作量。分析的結(jié)果,就是員工自己估算可能提高了員工的承諾意識,讓員工更能認(rèn)同、主動、積極。 所以SEI 就召集了業(yè)界的作的比較好的企業(yè)專家,一起研究提高軟件工程能力的工作。他們的工作其實就是從一大堆零散的經(jīng)驗與最佳實踐之中,整理出一個系統(tǒng)性的機(jī)制,適合一般的軟件企業(yè)提升能力之用。 過程域:既相互獨立,又相互關(guān)聯(lián) 面臨的問題,當(dāng)然是項目的活動這么多,又如何整理、組織這些零散的經(jīng)驗?zāi)?#xff1f;我們知道這個分析的結(jié)果就是過程域這個概念。過程域就是一些相關(guān)的活動。問題是,這個“相關(guān)”又是如何決定的呢?同時,如果真的明確了不同的過程域,那么,不同過程與之間,又是否毫無關(guān)系呢?這里就有一個我希望大家能理解的概念:很多事情都是既相互獨立,而又相互關(guān)聯(lián)的。比如母親與嬰兒,當(dāng)然是兩個獨立的個體。但同時,嬰兒依賴著母親,母親也牽掛著嬰兒。這種關(guān)系,到處都是。過程域也是一樣。 項目到底要做什么?我希望大家知道:項目的使命就是要實現(xiàn)需求。就是說,項目需要知道要完成什么。知道了要做什么之后,要找到一個可行的方法。然后指定一個如何實施這個滿足需求的方法的步驟與安排。這就是計劃。領(lǐng)導(dǎo)也需要保證各個項目成員都是朝著既定的方向,合適的進(jìn)度開展活動。這就是監(jiān)控。所以我們可以看到,項目里比較項目獨立的活動組包括:理解需求并為滿足需求開展活動;需要制定計劃實現(xiàn)需求;并且需要監(jiān)督、保證活動進(jìn)展是合適的。這就是“需求管理”,“項目策劃”,與“項目跟蹤與監(jiān)控”。這些都是相對獨立的。知道要做什么,與策劃如何去做,是不同的,是相互獨立的。也是相互關(guān)聯(lián)的。監(jiān)控進(jìn)度,也不是策劃活動。但是策劃與需求是由依賴性的,監(jiān)控的依據(jù)就是計劃。所以,不同的“過程域”都是相對獨立,但在項目活動的開展角度來看,也是相互依賴與相互支持的。 項目必須實施的活動,都可以劃分到上述的過程域里。在同一個過程域里的項目活動之間,都是關(guān)聯(lián)非常密徹,因為它們都是同一個項目任務(wù)的一種活動。 過程域讓我們可以組織零散的經(jīng)驗。比如,上面提到的員工自己估算自己的任務(wù),是一個有效的方法。但是作為一個零散的事例,作用可能不大,很可能不能提供應(yīng)有的價值。但是如果我們知道估算是“策劃”這個過程域的一個環(huán)節(jié),它的作用在于更好地建立進(jìn)度安排,這個活動的價值就更明顯,它的意義就可以更有效地幫助項目策劃如何實現(xiàn)項目的目標(biāo)。這樣就更能系統(tǒng)性地研究、分析過程的特征,提高項目的效率與質(zhì)量。 過程域之間的依賴關(guān)系 把項目的活動組織成過程域之后,就要考慮這些過程域之間的依賴關(guān)系。比如,需求管理這個過程域,與需求開發(fā)這個過程域有什么關(guān)系呢?我們第一個反應(yīng)就是:如果沒有需求,我們就不需要管理它。所以,需求開發(fā)是基礎(chǔ),需求管理依賴著需求的存在作為基礎(chǔ)。這當(dāng)然對。但是這是從實際操作的角度看問題的結(jié)論。 CMMI的重點不在于項目的操作,而是在于如何幫助提升項目的效能。CMMI的作用,不在于某一個項目是否成功完成,而是企業(yè)如何把大部分的項目管理到能夠成功完成。這個分別非常重要。我們經(jīng)常以為知道如何做了一次,就會知道如何做大量批次。就好像做了一個樣機(jī),就知道如何生產(chǎn)一樣。這是不完全對的。 做了一次,做了樣機(jī),只是解決了技術(shù)問題。一次與經(jīng)常、樣機(jī)與批量之間的分別,是管理。CMMI重視的,是軟件工程的管理能力,而不是技術(shù)細(xì)節(jié)。CMMI這個模型的重點,在于改進(jìn),而不是在于規(guī)范。所以,CMMI的角度,認(rèn)為如果項目不重視需求,不以實現(xiàn)需求作為項目的使命的話,需求開發(fā)能力的發(fā)展是會比較慢的。不是不可以發(fā)展,但是發(fā)展會遇到很多困難。這樣的看法,需求開發(fā)是依賴于一個重視需求的環(huán)境這個基礎(chǔ)上的。 如果能夠理解CMMI的含義,那么,項目就要關(guān)注需求,把它理解清楚,把它的變更管理好,項目才能按需求開展工作。但是如果項目不關(guān)注需求,就很難吸收或是培養(yǎng)系統(tǒng)工程人員來進(jìn)行需求開發(fā)的工作。這是一個對CMMI的真正理解非常重要的概念。
通用實踐:習(xí)慣才是能力 CMMI 的另一個特殊而重要的概念就是“通用實踐”。顧名思義,通用實踐就是一些在每一個活動都需要做的事情。比如:無論我們是在做項目,或是去旅游,甚至是青年男女要結(jié)婚了,又或是最近的國際局勢,要撤僑了,等等事情,都應(yīng)該有一些“計劃”。有些事情需要計劃的詳細(xì)一點,有些可以粗一點,緊急的事情只能由很少很短的時間做計劃,甚至要計劃一點點就做一點點。但總得有計劃。這一類的活動,就是CMMI的“通用實踐”。 聽起來通用實踐就有點像“習(xí)慣”。CMMI在告訴我們,個別的、一次兩次的表現(xiàn),不足以構(gòu)成真正的能力。習(xí)慣才能體現(xiàn)真正的能力。高效的行為,需要不斷的體現(xiàn),在所有的活動中體現(xiàn)。這樣才會提升能力。 等級:打好基礎(chǔ)、循序提升 既然CMMI的重點在于“改進(jìn)”,那么,把活動組織成過程域,然后提供了每一個過程域如何如何做好,還是不夠的。在這么多的不同的活動,要如何開始呢?要先做什么,然后再做什么,就變成了一個“改進(jìn)”需要解決的問題。留意,一個標(biāo)準(zhǔn)、規(guī)范,好像ISO/TL等,是不需要考慮這個改進(jìn)的次序的。這是CMMI特殊的地方。CMMI提供的特殊思路,就是“等級”這個概念。 剛才提到從“改進(jìn)”的角度看,一些過程域是其他過程域的基礎(chǔ)。CMMI就把這些過程域分成不同的等級。過程域包含的活動越基本,過程域就被安排到越低層次的等級。高等級的過程域,里面的活動,它的改進(jìn)(是改進(jìn),不是實際操作)需要低等級的活動作為基礎(chǔ),才能有效。就是說,改進(jìn)需要從低等級的活動開始。這是CMMI的一個關(guān)鍵的價值,也是CMMI最特殊的地方。那么,這些等級是什么呢? 大概來說,CMMI有五個等級。我們先不要太關(guān)注成熟度、能力、等的分別。這個議題我打算將來再在一個專題文章中比較詳細(xì)的討論。我在這里,先討論CMMI模型里面的等級概念與這些等級的含義。這五個等級就是:
第一級:先關(guān)注完成這個過程任務(wù)。比如:管理好需求、做計劃、監(jiān)控進(jìn)展,等等。這里談的,主要是過程的活動,而不是員工的任務(wù)。在這里做一個提醒。第二級:然后在項目的層面,做到規(guī)范和形成制度。第三級:從項目收集做得有效的做法,總結(jié)、組織、整理,形成標(biāo)準(zhǔn)的規(guī)程向整個企業(yè)推廣,讓所有項目相互參考最適合的經(jīng)驗。同時提升工程技術(shù)方面的效能。第四級:因為項目通過標(biāo)準(zhǔn)規(guī)程,相互學(xué)習(xí),效能不斷提高,做到過程的效能穩(wěn)定,可以建立過程效能的基線與模型,達(dá)到量化預(yù)測項目結(jié)果的水平。第五級:體制具備制度性地參考業(yè)界與內(nèi)部經(jīng)驗,找尋過程問題的根本原因,系統(tǒng)地、持續(xù)地改進(jìn)過程的能力與質(zhì)量。大家是否能夠看得到每一個級別的改進(jìn),都需要所有下層級別的支持?我觀察到在中國的CMMI實施,大部分都不能收到提高項目效率與產(chǎn)品質(zhì)量的結(jié)果,就是因為我們的實施,很多都沒有符合CMMI的本意。我們只是關(guān)注了CMMI之中形式的部分,而忽略了關(guān)鍵的含義。比如:在技術(shù)方案的過程域里,CMMI要求有多個方案以供選擇。我們就看到了需要兩個或更多的被選方案。這個還不容易:就給你兩個、三個方案。但是我們忽略了一個現(xiàn)實:我們本能的強(qiáng)烈傾向就是相信自己的第一個方案是最好的。因為如此,往往忽略了一些需要考慮的因素,或是用另一個角度考慮問題。這樣得出來的方案可能可以,可能根本上就不行。無論如何,這個方案作為最適合的可能方案的機(jī)會不高。 CMMI的要求,其實是希望大家用多角度來考慮問題。但是我們堅持自己得的第一個方案,然后進(jìn)行一些小改交差。這樣就不會得到CMMI要求的好處了。如果要明白CMMI的意義,就需要能夠看明白CMMI的要求背后的理由。CMMI要求的,不是如何去實施,而是要考慮哪些問題。 認(rèn)證是推廣CMMI的重要手段 SEI建立了CMMI模型,提供了一系列的培訓(xùn)教材。建立了一個技術(shù)轉(zhuǎn)移伙伴(Transition Partner)網(wǎng),來進(jìn)行推廣。其中也應(yīng)用了一批由SEI親自訓(xùn)練與監(jiān)督的主任評估師隊伍,為SEI做CMMI等級的評估工作。SEI對這個機(jī)制要求越來越高,希望保證CMMI等級的含金量。 但是中國的教育制度,讓大家非常熟識如何通過任何考試形式的活動,而不一定需要真材實料。這個能力,讓我們不能得到CMMI可能提供的價值,雖然我們花費了很多資源與精力。大部分從事過程改進(jìn)的員工本身經(jīng)過好幾年的辛勞,也得不到明顯的提升。這是非常可惜的。 一些感想
CMMI的由來,在于幫助軟件產(chǎn)品項目改進(jìn)過程效率與質(zhì)量。CMMI 模型的形成,是總結(jié)零散的經(jīng)驗,從其中把重要的關(guān)鍵因素抽象出來的系統(tǒng)性結(jié)果。在CMMI這個模型的等級定義里,也明顯地要求先在項目里管理好項目,才把項目中積累的經(jīng)驗,組織成為標(biāo)準(zhǔn)規(guī)程,在企業(yè)中推廣。所以在實施CMMI的時候,也應(yīng)該從項目的實際操作中觀察到一些好的做法,然后再把它們組織起來,編輯成為企業(yè)的標(biāo)準(zhǔn)規(guī)程。這樣的事件要求比較長一點,但是項目的確可以得到CMMI的實際幫助,提高過程效率與質(zhì)量。
轉(zhuǎn)載于:https://blog.51cto.com/mk6yeung/509358
總結(jié)
以上是生活随笔為你收集整理的CMMI入门 - 由来与思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。