前言:
2001我開始慢慢關(guān)注起軟件工程和CMM,也對(duì)CMM進(jìn)行了學(xué)習(xí)。并且對(duì)其中的一些KPA在自己單位中進(jìn)行了試驗(yàn)??墒且婚_始這些試驗(yàn)的結(jié)果并不令人愉快,甚至遭到了抵制和反對(duì)。開發(fā)和測(cè)試人員認(rèn)為降低了開發(fā)速度和靈活性,加大了工作量,工作流程太煩瑣。而質(zhì)量的提高也不是一時(shí)可以反映出來的。于是在進(jìn)行了2個(gè)小項(xiàng)目的試驗(yàn)后,我被迫停止了CMM在公司的實(shí)施。
因?yàn)楣静⒉粡氖峦獍?wù),所以CMM對(duì)其沒有生存的壓力。高層也只是想通過一個(gè)可行的過程管理,一個(gè)提高軟件質(zhì)量,保證項(xiàng)目進(jìn)度,有效控制項(xiàng)目成本。所以公司并不是要去過CMM等級(jí),而是要一個(gè)有效的過程管理。
所以我此后開始以‘有效、簡易、可行、低成本’為標(biāo)準(zhǔn)探索起適合起我們公司的過程改進(jìn)的最佳實(shí)際?,F(xiàn)在,我很高興可以在文中和大家探討我公司在過程改進(jìn)過程中的一些經(jīng)驗(yàn)和教訓(xùn),也許你會(huì)從中得到一些啟發(fā),開發(fā)出適合你自己的最佳實(shí)際。
歡迎對(duì)此文章提出評(píng)論和質(zhì)疑,您的來信將是我繼續(xù)研究的動(dòng)力。可以發(fā)Mail:bluehao@online.sh.cn, roychen7608@yeah.net MSN: bluehao7608@hotmail.com
陳皓
經(jīng)驗(yàn)和教訓(xùn):
在中小型的軟件企業(yè)當(dāng)中,軟件過程的改進(jìn)更容易半途而廢
中小企業(yè),特別是開發(fā)人員小于40個(gè)人的企業(yè)。一般不會(huì)有專門的人員可以組建‘軟件過程組’,也很少會(huì)有專職的質(zhì)量工程師和配置工程師。在進(jìn)行過程改進(jìn)中,對(duì)于這些職位基本上都是由原來的人員兼職完成。這無形中增加了人員的工作量。一旦過程定義的不是太完善,或是在試點(diǎn)中不是太成功。很容易讓人去懷疑過程改進(jìn)本身的可行性。同時(shí)中小企業(yè)接到的項(xiàng)目也比較小,成本壓力是比較大的,而提高質(zhì)量是必須以犧牲成本為代價(jià)的。所以有時(shí)從成本的角度出發(fā),可能在高層管理人員的心目中,對(duì)于過程改進(jìn)也是有成本的顧慮的,一方面希望,可以通過過程改進(jìn)提供質(zhì)量,并為企業(yè)的發(fā)展提供基礎(chǔ),另一方面,也面臨成本壓力,若過程是改進(jìn)了,可是成本也大幅度提高了,則本事企業(yè)的生存就成問題了。
而在大的軟件企業(yè),一般可以有專職的人員進(jìn)行質(zhì)量保證和過程改進(jìn)。同時(shí)由于大企業(yè)拿到的項(xiàng)目一般也比較大,項(xiàng)目組就比較大,客戶要求也高。這也為過程改進(jìn)增加了必要性。
持續(xù)的改進(jìn)很重要,但頻繁的改進(jìn)會(huì)不利于過程的執(zhí)行
CMM中定義了每個(gè)KPA的目標(biāo)和一系列的KP,企業(yè)必須根據(jù)自己的實(shí)際情況去定義實(shí)現(xiàn)每個(gè)KPA的工作流程。但并不是每個(gè)企業(yè)都很幸運(yùn),在一開始就可以定義一個(gè)自己企業(yè)的最佳實(shí)踐。一般的情況是,首先定義一個(gè)工作流程,并在一個(gè)試點(diǎn)項(xiàng)目中實(shí)行,而后對(duì)試點(diǎn)項(xiàng)目進(jìn)行總結(jié),并對(duì)此工作流程進(jìn)行改進(jìn)。再在其他項(xiàng)目或整個(gè)企業(yè)中推廣,也許在推廣的過程中,又遇到問題,再對(duì)流程進(jìn)行修改。整個(gè)的過程定義是螺旋上升的進(jìn)行。 這本身沒有問題,但有時(shí)當(dāng)遇到問題時(shí),不要太急于就改流程,或加流程的分支。而要仔細(xì)分析后,慎重的進(jìn)行。太頻繁的改動(dòng),給人一種不嚴(yán)肅的影響,似乎流程可以隨意的改動(dòng)和定義。最后,沒人去遵守流程了。 同時(shí),根據(jù)不同的項(xiàng)目若定義了太多了流程分支,最后,實(shí)際人員也不知道要去實(shí)行哪一套了。
總之,頻繁改動(dòng)的規(guī)矩,讓人無所適從。
過程制定后,一定要有選擇的進(jìn)行試點(diǎn)。一個(gè)進(jìn)度和成本寬余的項(xiàng)目和一群對(duì)過程改進(jìn) 有熱情的人是保證試點(diǎn)成功的組合
定義好一套流程,最好的驗(yàn)證方式就是找個(gè)真實(shí)的項(xiàng)目去‘跑’一遍。并注意收集應(yīng)用流程前后的各種情況的對(duì)比。由于在項(xiàng)目的進(jìn)行中,還要試驗(yàn)流程,所以需要更多的培訓(xùn)時(shí)間,讓項(xiàng)目組的成員了解熟悉新的流程。需要更多的評(píng)審,不但是評(píng)審項(xiàng)目本身,還要評(píng)審過程和進(jìn)行必要的度量。
一群對(duì)于過程改進(jìn)有熱情的組員是試點(diǎn)成功的保證。他們要有熱情去學(xué)習(xí)新的流程,要有熱情去溝通在執(zhí)行新流程當(dāng)中遇到的問題,他們要有熱情去克服進(jìn)行中的困難,而不是抱怨,他們要有熱情去總結(jié)和改進(jìn)新的流程,使它更完善,最總要的是,他們要有熱情作為新流程的傳播者,把流程象星星之火一樣在組織中開展。
一個(gè)堅(jiān)決支持過程改進(jìn)的領(lǐng)導(dǎo)是必不可少的
象任何其他的變革一樣,一個(gè)堅(jiān)決支持變革的領(lǐng)導(dǎo)是不可缺少的。在一切順利,大家贊成的時(shí)候,也許感覺不到什么。但當(dāng)變革遇到阻力,遭受暫時(shí)的困難時(shí),這種堅(jiān)決的支持就是變革是否可以繼續(xù)進(jìn)行的保證。
因此,在過程改進(jìn)的初期,于企業(yè)的高層進(jìn)行溝通,讓其了解到過程改進(jìn)的必要性和預(yù)期的前景是十分必要的。同時(shí)最好在過程改進(jìn)的開始階段,一個(gè)誓師大會(huì)的舉行也是鼓舞士氣的上佳方法。在過程改進(jìn)的過程中也要注意及時(shí)的通報(bào)進(jìn)行的過程,取得的成果。當(dāng)然在遇到困難,或需要高層支持時(shí),更要及時(shí)開口。(這對(duì)于技術(shù)人員主持的過程改進(jìn)尤為重要。)
要有選擇的對(duì)于KPA進(jìn)行改進(jìn),不一定是最薄弱的KPA,最重要是選擇你可以控制的KPA
關(guān)于這點(diǎn)其實(shí)并不涉及CMM的技術(shù)問題,而是一個(gè)管理問題。這里有個(gè)現(xiàn)實(shí)的例子,一家企業(yè)的管理有點(diǎn)亂,高層希望可以通過CMM的過程改進(jìn),來提高企業(yè)的產(chǎn)品質(zhì)量,理順工作的流程。于是任命了一個(gè)開發(fā)組的主管(代稱A),來主持這個(gè)過程改進(jìn)。 結(jié)果A在選擇KPA的時(shí)候,認(rèn)為首先應(yīng)該對(duì)于實(shí)行需求管理和變更管理。因?yàn)殚_發(fā)組的同事們都抱怨,需求經(jīng)常改變,造成的返工很多,在最終期限的壓力下他們不得不經(jīng)常加班。 這個(gè)本事沒有問題,可是需求管理和變革管理的發(fā)起基本是在系統(tǒng)分析組,而這個(gè)組在行政上不歸他管。公司也沒有因?yàn)橐M(jìn)行過程改進(jìn)而把他提高到一個(gè)高的級(jí)別(即使是暫時(shí)的)。[NextPage]
現(xiàn)在問題來了,雖然他花費(fèi)了心思去設(shè)計(jì)的流程。并對(duì)于需求部門和相關(guān)部門組織了培訓(xùn)??墒窃谶M(jìn)行試點(diǎn)的時(shí)候,他發(fā)現(xiàn),當(dāng)他去評(píng)審需求分析組的工作時(shí),別人很反感。而且對(duì)于有些需求的變革也推諉到銷售人員、客戶等因素。同時(shí),流程中只要有一點(diǎn)不太合理的地方,就抱怨的很厲害。最后試點(diǎn)結(jié)束,他自己很累,試點(diǎn)的結(jié)果也不好,改善的目標(biāo)沒有實(shí)現(xiàn)。整個(gè)過程的改進(jìn)處于一種微妙的處境。最后,試點(diǎn)的流程并沒有推廣。其他的KPA過程改進(jìn)也不再進(jìn)行了,隨著時(shí)間的推移,過程改進(jìn)在企業(yè)中也不在有人提起。
知道這位開發(fā)組的主管錯(cuò)在哪里嗎? 他選錯(cuò)了KPA,他選了一個(gè)不屬于自己管轄范圍的KPA作為起點(diǎn)。他跑到一個(gè)不屬于他的地方開始指手畫腳,他是個(gè)不受歡迎的人。注定了,在一開始他就面對(duì)著對(duì)立和抱怨。這樣的團(tuán)隊(duì)是無法經(jīng)受一點(diǎn)點(diǎn)挫折和失敗的。若他一開始選擇配置管理,這個(gè)至于他管理范圍的KPA,他可以利用手中的權(quán)利、資源和威信,組織試點(diǎn)。可能情況就好的多。 又或者企業(yè)的高層給這個(gè)開發(fā)主管一個(gè)虛職,比如過程改進(jìn)項(xiàng)目組組長,并任命其他組的組長為過程改進(jìn)項(xiàng)目組成員。情況也會(huì)完全不同。
對(duì)于過程的改進(jìn)要有度量
不必一開始就是數(shù)字化的,也可以是感性的體會(huì)。但要把這些也要收集起來。 一個(gè)有力的對(duì)比可以堵住反對(duì)者的嘴。不要因?yàn)槎攘抗芾硎荂MM4級(jí)的內(nèi)容就在實(shí)施低級(jí)別的CMM時(shí)放棄度量。一套流程需要一系列度量的數(shù)據(jù)來說明它改進(jìn)了多少。而度量的數(shù)據(jù)將會(huì)為它贏得預(yù)算和支持。
當(dāng)然度量作為CMM4級(jí)的內(nèi)容,也是有一定的道理的。收集一套完備、準(zhǔn)確的度量是需要大量人力的。但是在一開始,也許我們可以借助一些好的工具達(dá)到同樣的效果,而不必花費(fèi)大量的時(shí)間和精力。
在我就自己做過一個(gè)簡易的BUG管理工具,并和數(shù)據(jù)庫相連。在項(xiàng)目結(jié)束時(shí)我可以輕易的了解項(xiàng)目中有多少BUG、BUG分布如何,BUG的原因統(tǒng)計(jì)等度量數(shù)據(jù)。我只是用了幾個(gè)SQL語句就掌握了我需要的度量。
另一個(gè)例子是微軟推出的PROJECT SERVER(注:不是廣告)。以前項(xiàng)目經(jīng)理要了解實(shí)際的項(xiàng)目進(jìn)度并不是件輕松的事,項(xiàng)目經(jīng)理要去問組員××模塊,你開發(fā)的如何啦?然后收集好所有組員的進(jìn)度,填寫自己的項(xiàng)目進(jìn)度。由于這相當(dāng)?shù)幕ㄙM(fèi)時(shí)間,過去進(jìn)度基本上一周匯報(bào)一次。 可是有了PROJECT SERVER你只要按個(gè)‘請(qǐng)求進(jìn)度’的按鈕,組員直接通過WEB填寫與他相關(guān)的進(jìn)度就可以了。項(xiàng)目經(jīng)理就可以得到整個(gè)項(xiàng)目的進(jìn)度了。
不必拘泥于CMM的級(jí)別
這一點(diǎn)在CMMI中已經(jīng)有體現(xiàn)了,CMMI不再只有一種級(jí)別的模式,還增加了持續(xù)改進(jìn)的模式。即,可以按過程域進(jìn)行改進(jìn),而不是過去按級(jí)別進(jìn)行改進(jìn)。
比如,CMM5級(jí)的技術(shù)革新管理。其實(shí),在現(xiàn)在新技術(shù)層出不窮的當(dāng)今,一個(gè)企業(yè)不會(huì)因?yàn)檫€沒到CMM5級(jí)就不需要技術(shù)革新管理。換一種數(shù)據(jù)庫,換一個(gè)開發(fā)工具,甚至是換一種開發(fā)過程等都是一直發(fā)生的。若需要完全可以把這個(gè)KPA先實(shí)施改進(jìn)。
不是每個(gè)人都喜歡改進(jìn)的過程,特別對(duì)于要增加其工作量的過程。有時(shí)必須犧牲一些過程的嚴(yán)謹(jǐn)性,去簡化過程。畢竟有過程比沒過程好。
也許在看到了這條時(shí)很多人會(huì)不以為然,說:這樣做肯定過不了CMM評(píng)審。對(duì),這樣確實(shí)肯定過不了CMM級(jí)別的評(píng)審,可是只要可以對(duì)于過程有改進(jìn),對(duì)于軟件質(zhì)量有提高,就可以了。對(duì)于中小軟件企業(yè),一個(gè)有效的(可以滿足高層對(duì)于過程控制的期望),簡易的(是所有基層工作人員可以理解的,無須大量培訓(xùn)的),可行的(不會(huì)大量增加基層人員的工作量,不會(huì)影響開發(fā)速度和效率的。 名言是:‘我不要那種原先2天可以完成的項(xiàng)目,因?yàn)閼?yīng)用了過程,現(xiàn)在要5天才可以完成的所謂的過程’。)和低成本的(公司一年才賺多少,我可不想把錢全用來采購工具軟件)過程才是最重要的。
選擇合適的工具,至關(guān)重要。好的工具不但使過程更流暢,也大大減少由于過程的引進(jìn)而引入的工作量。
關(guān)于這點(diǎn)其實(shí)在前面介紹PROJECT SERVER時(shí)已經(jīng)有介紹。這里只是再作為一個(gè)觀點(diǎn)再提一下。不過雖然工具的使用可以提高效率,不過這方面的工具都不便宜。是否引進(jìn),何時(shí)引進(jìn)確實(shí)對(duì)于中小型的軟件企業(yè)要好好考慮。
在這里列一些工具供大家參考:
計(jì)劃工具:Microsoft Project
項(xiàng)目監(jiān)督和跟蹤:Microsoft Project server 2003,SharePoint
需求管理:Rational RequisitePro, Borland CaliberRM, SYSBASE POWERDESIGN 11
變更管理:Rational bbbbbQuest
Bug跟蹤工具:Rational bbbbbQuest
配置管理工具:VSS, CVS, Rational bbbbbcase
一個(gè)強(qiáng)有力的執(zhí)行和守紀(jì)律的企業(yè)文化,是推廣過程改進(jìn)的保證
一個(gè)過程,在試點(diǎn)后,是要推廣的,在推廣過程中一個(gè)強(qiáng)有力的執(zhí)行力是必然的保證,這個(gè)不用多言。
而對(duì)于守紀(jì)律的企業(yè)文化本來我并沒有太深的感受,直到有個(gè)朋友告訴我,他們公司的印度工程師如何的刻板。我突然意識(shí)到這也許就是國內(nèi)軟件公司長不大的原因了。是的,嚴(yán)格的遵守企業(yè)定出的過程,有時(shí)是顯得有些刻板。但在相當(dāng)長的其他時(shí)期,也正是這種刻板,保證了公司的過程被嚴(yán)格執(zhí)行。
有人說,什么標(biāo)準(zhǔn)一到中國就變了味了。這雖然不太好聽,但你不得不承認(rèn),有時(shí)我們確實(shí)為了省力,為了趕工,確實(shí)在破壞公司的過程。
畢竟CMM只是軟件開發(fā)的過程改進(jìn)的標(biāo)準(zhǔn),但一個(gè)軟件項(xiàng)目的成功,并不局限于軟件開發(fā)。用CMM的模式去改進(jìn)一些前期項(xiàng)目計(jì)劃和后期系統(tǒng)實(shí)施的過程,將會(huì)對(duì)組織的軟件項(xiàng)目的成功事倍功半。










