9.項(xiàng)目管理方面的工作。
項(xiàng)目管理工作主要有編制項(xiàng)目計(jì)劃、持續(xù)更新項(xiàng)目計(jì)劃、跟蹤計(jì)劃執(zhí)行、各種工作協(xié)調(diào)、指導(dǎo)項(xiàng)目組成員完成工作等等。
項(xiàng)目管理工作量一般占整個(gè)項(xiàng)目工作量的10-20%,項(xiàng)目不明確的東西越多、項(xiàng)目組成員水平越不足、項(xiàng)目組成員之間工作磨合度越不好,管理工作量越大。
項(xiàng)目管理在項(xiàng)目進(jìn)行整個(gè)過(guò)程都需要持續(xù)進(jìn)行,一般來(lái)說(shuō)前期工作量會(huì)比較大,版本發(fā)布前后階段工作量也會(huì)比較大。項(xiàng)目管理前期工作抓得緊抓得好,會(huì)大大減輕后期的工作量。
10配置管理方面的工作。
什么叫配置管理?簡(jiǎn)單說(shuō)是對(duì)工作產(chǎn)品的管理,包括對(duì)各類文檔、各種記錄、代碼、數(shù)據(jù)庫(kù)、腳本、安裝程序、組件等等的管理。
軟件生產(chǎn)過(guò)程的工作產(chǎn)品可分為兩類:中間產(chǎn)物和終產(chǎn)物。
中間產(chǎn)物有:
1)工程類:需求文檔、設(shè)計(jì)文檔、測(cè)試方案、代碼、數(shù)據(jù)庫(kù)腳本、數(shù)據(jù)庫(kù)、測(cè)試腳本等。
2)管理類:開(kāi)發(fā)計(jì)劃、測(cè)試計(jì)劃、培訓(xùn)計(jì)劃、采購(gòu)計(jì)劃、實(shí)施計(jì)劃等。
3)記錄類:會(huì)議記錄、郵件、缺陷等。
終產(chǎn)物是指終會(huì)交付給客戶的東西,一般有:組件、安裝程序、數(shù)據(jù)庫(kù)、用戶手冊(cè)、管理員手冊(cè)等。
針對(duì)不同的工作產(chǎn)品應(yīng)采取不同的針對(duì)性管理辦法,很多公司會(huì)制定單獨(dú)的配置管理計(jì)劃。
11.質(zhì)量保證方面的工作。
嚴(yán)格來(lái)說(shuō),質(zhì)量保證是靠項(xiàng)目組全體來(lái)保證的,這里所說(shuō)的質(zhì)量保證是“狹義”的質(zhì)量保證,是指:要確保項(xiàng)目組按照既定的規(guī)定、過(guò)程、標(biāo)準(zhǔn)來(lái)工作,需按照既定的格式要求產(chǎn)出相應(yīng)工作產(chǎn)品。
對(duì)于以上十一點(diǎn),實(shí)際項(xiàng)目估算中往往出現(xiàn)這樣的問(wèn)題:
1.忘記包含項(xiàng)目前期工作的工作量。
2.沒(méi)有考慮商務(wù)、維護(hù)、配置管理、質(zhì)量保證方面的工作。
3.需求調(diào)研、軟件設(shè)計(jì)、編碼、測(cè)試、實(shí)施方面的工作估計(jì)過(guò)少。
4.項(xiàng)目管理方面的工作量估計(jì)不足。
估算如何做出來(lái)?
這里開(kāi)始所說(shuō)的估算,全部都是指項(xiàng)目組對(duì)項(xiàng)目的估算,這個(gè)估算的目的是用來(lái)指導(dǎo)項(xiàng)目的具體工作。
有很多種估算辦法,大致可以分為兩類:
1.先得到軟件規(guī)模,然后根據(jù)公司實(shí)際的生產(chǎn)率由軟件規(guī)模導(dǎo)出工作量。
2.直接得到工作量。
第一類的常見(jiàn)方法有:功能點(diǎn)法、代碼行法,第二類的常見(jiàn)方法有Delphi估算法、微軟的由底而上估算法。
什么是軟件規(guī)模?我們先看看一個(gè)搬磚頭的估算。
假設(shè)有1000塊磚頭,它們的大小和重量一樣,每名工人每天能搬100塊磚頭,于是我們可以估算到需要10人日來(lái)搬完。10人日的意思是1名工人需要10天完成,而10名工人只需要1天搞定了。
這個(gè)1000塊代表了工作的規(guī)模,而生產(chǎn)率是100塊/日,這樣可以推算出工作量為10人日。建筑工程可以得到土石方量、混凝土量、鋼筋量等代表工作規(guī)模的數(shù)據(jù),這樣比較容易推算出完成這些工作需要的工作量。
而軟件工程估算也希望能做到類似的效果,但用什么來(lái)代表軟件項(xiàng)目的工作規(guī)模呢?功能點(diǎn)和代碼行是常見(jiàn)的兩種軟件規(guī)模表示方式。
軟件規(guī)模是與軟件具體生產(chǎn)技術(shù)、項(xiàng)目管理辦法、項(xiàng)目組人員水平等無(wú)關(guān)的東西,軟件規(guī)模只和軟件項(xiàng)目本身的性質(zhì)相關(guān),如果我們能找到合適的統(tǒng)一的標(biāo)準(zhǔn)來(lái)度量每個(gè)項(xiàng)目的規(guī)模,這樣每個(gè)軟件項(xiàng)目之間可以進(jìn)行橫向比較了。功能點(diǎn)法和代碼行法都希望能達(dá)致這樣的效果。
功能點(diǎn)法的基本思路是將復(fù)雜的軟件分解為一個(gè)一個(gè)獨(dú)立的粒度一致的功能點(diǎn),附加一些調(diào)整系數(shù),得到軟件規(guī)模。
我們的項(xiàng)目大部分是數(shù)據(jù)庫(kù)四輪馬車的操作(查詢、增加、修改、刪除),功能點(diǎn)法從比較高的層次對(duì)這些工作進(jìn)行抽象,有一套嚴(yán)密的規(guī)則可以讓你將需求分解成一個(gè)一個(gè)的功能點(diǎn)。代碼行法思路也類似,不過(guò)分解的結(jié)果是代碼行而已。但一般來(lái)說(shuō)代碼行與軟件的實(shí)現(xiàn)技術(shù)相關(guān)度太大,大家會(huì)更加偏愛(ài)功能點(diǎn)法。
功能點(diǎn)法和代碼行法有比較長(zhǎng)的歷史,也有很多詳細(xì)資料,大家可以去查閱一下。這方法理論上很理想,但實(shí)踐效果很差,我還沒(méi)有見(jiàn)到一家能成熟應(yīng)用并且取得比較好效果的公司。功能點(diǎn)法和代碼行法有這樣的一些難以解決的問(wèn)題:
1.只適用于數(shù)據(jù)庫(kù)四輪馬車的操作的項(xiàng)目,高技術(shù)含量、創(chuàng)造性高的軟件不適用,如游戲軟件、計(jì)算機(jī)負(fù)責(zé)計(jì)算與決策軟件等。
2.我們絕大部分項(xiàng)目是需求不明確、設(shè)計(jì)不明確,并且工期很趕的,這兩個(gè)方法都無(wú)法適應(yīng)這樣的現(xiàn)實(shí)條件。需求不明確基本上無(wú)法得到軟件規(guī)模,建筑工程為什么能做到,是因?yàn)樾枨蠛驮O(shè)計(jì)都十分明確了。
3.兩個(gè)方法的規(guī)則都很詳細(xì),要花大量時(shí)間學(xué)習(xí)和實(shí)戰(zhàn)才能掌握。
4.由工作規(guī)模導(dǎo)出工作量這樣的思考方式,難以適用于軟件項(xiàng)目。項(xiàng)目組還是習(xí)慣列出具體的任務(wù),逐條任務(wù)估計(jì)時(shí)間,而且只有這樣的工作方式才能讓項(xiàng)目組感覺(jué)更加踏實(shí)。
Dephi估算法是比較符合大家實(shí)際工作習(xí)慣,也是比較容易掌握的估算辦法。
Delphi法的大致方法如下:
1.找?guī)酌麑<,一起?duì)項(xiàng)目進(jìn)行WBS,把項(xiàng)目的工作分解為十幾條多二三十條的工作項(xiàng)。
2.全部專家各自估計(jì)每條工作項(xiàng)的工作量,并向其他專家闡述自己的理由。
3.第一次各專家估出來(lái)的結(jié)果可能差異比較大,每位專家聽(tīng)取別人的意見(jiàn)后,重新估算。
4.按照上述辦法,各專家反復(fù)估算幾次,一般次數(shù)是2-4次,各專家估計(jì)的工作量會(huì)越來(lái)越趨近,這個(gè)時(shí)候取全部專家的平均值。
普遍認(rèn)為各專家的經(jīng)驗(yàn)與知識(shí)水平會(huì)嚴(yán)重影響結(jié)果的準(zhǔn)確性,而我的實(shí)踐經(jīng)驗(yàn)是:應(yīng)該讓項(xiàng)目組每個(gè)人自己來(lái)估算,也是讓大家來(lái)當(dāng)專家,在這個(gè)基礎(chǔ)上可以再增加一兩名來(lái)自項(xiàng)目組外部的專家。
有時(shí)候覺(jué)得估算這個(gè)問(wèn)題搞得太復(fù)雜了,各式各樣的方法是不是太夸張了?其實(shí)簡(jiǎn)單的方法是讓負(fù)責(zé)該項(xiàng)工作的人自己來(lái)估計(jì)工作量,微軟的由底而上的估算方法是這樣做的,可謂返璞歸真!