一個(gè)成功的軟件項(xiàng)目首先要有一個(gè)好的起點(diǎn),也就是一個(gè)合理的項(xiàng)目計(jì)劃;一個(gè)好的項(xiàng)目計(jì)劃,離不開(kāi)一個(gè)準(zhǔn)確的、可信的、客觀的項(xiàng)目估算數(shù)據(jù)作為基礎(chǔ)。如何提高估算的準(zhǔn)確性,如何利用項(xiàng)目估算的數(shù)據(jù)來(lái)制定項(xiàng)目計(jì)劃,本文就將帶領(lǐng)大家學(xué)習(xí)、理解軟件項(xiàng)目估算的一些最佳實(shí)踐。
為什么要對(duì)項(xiàng)目進(jìn)行估算
對(duì)于龐大的、多變的軟件項(xiàng)目來(lái)說(shuō)有著太多的不確定性。之所以要先制定項(xiàng)目計(jì)劃,目的就是為了讓項(xiàng)目更加可控。如果項(xiàng)目的計(jì)劃缺乏數(shù)據(jù)進(jìn)行支持,或者根本不進(jìn)行估算,只憑項(xiàng)目管理人員的經(jīng)驗(yàn)進(jìn)行管理,那么項(xiàng)目最終就會(huì)變成軟件項(xiàng)目常見(jiàn)的“三拍”現(xiàn)象:“首先公司領(lǐng)導(dǎo)拍拍某個(gè)項(xiàng)目經(jīng)理的腦袋,說(shuō)你來(lái)負(fù)責(zé)這個(gè)項(xiàng)目;項(xiàng)目經(jīng)理拍拍胸脯說(shuō)沒(méi)問(wèn)題;最后項(xiàng)目失敗的時(shí)候項(xiàng)目經(jīng)理就只能拍拍屁股走人”。
當(dāng)然,這只是個(gè)玩笑。不過(guò)由此可見(jiàn)項(xiàng)目估算是項(xiàng)目管理人員深入了解項(xiàng)目的第一步,做到“知己知彼,才能百戰(zhàn)不殆”。
常用的軟件估算方法
軟件可以通過(guò)主觀和客觀兩種方法對(duì)其進(jìn)行估算。
主觀的估算方法可以通過(guò)召集項(xiàng)目團(tuán)隊(duì)成員,或者邀請(qǐng)各方面的專家,共同對(duì)某個(gè)項(xiàng)目的屬性進(jìn)行評(píng)估。參與評(píng)估的每個(gè)人都要單獨(dú)進(jìn)行估算,如果發(fā)現(xiàn)大家對(duì)某個(gè)項(xiàng)目屬性估算的結(jié)果存在較大偏差,那么就需要做進(jìn)一步的討論,直到取得共識(shí)為止。對(duì)個(gè)別特殊屬性進(jìn)行主觀估算時(shí),一定要有直接干系人的參與,例如:對(duì)某個(gè)文檔工作量進(jìn)行估算時(shí),最好該文檔的負(fù)責(zé)人參與估算,因?yàn)樗攀亲罱K的執(zhí)行人。
客觀的估算方法是利用公司提供的各種度量數(shù)據(jù)進(jìn)行估算,例如:組織級(jí)的生產(chǎn)率,或者其他項(xiàng)目的度量數(shù)據(jù)。本文主要講解項(xiàng)目管理人員如何通過(guò)客觀的方法對(duì)項(xiàng)目進(jìn)行估算。
項(xiàng)目的哪些屬性可以進(jìn)行估算
軟件項(xiàng)目的屬性有很多,建議至少以下屬性要在項(xiàng)目計(jì)劃時(shí)對(duì)其進(jìn)行估算:
1、 項(xiàng)目規(guī)模
2、 項(xiàng)目工作量
3、 項(xiàng)目所需資源
4、 項(xiàng)目各階段工作量
5、 項(xiàng)目成本
如何對(duì)項(xiàng)目規(guī)模進(jìn)行估算
對(duì)項(xiàng)目規(guī)模進(jìn)行估算是為了將項(xiàng)目的范圍進(jìn)行量化,項(xiàng)目規(guī)模的估算是整個(gè)軟件估算中最核心、最基礎(chǔ)的環(huán)節(jié),也是整個(gè)估算的第一步。
軟件項(xiàng)目的規(guī)??梢允褂霉δ茳c(diǎn)估算法和代碼行估算法兩種方式,但是作為項(xiàng)目初期階段,建議使用功能點(diǎn)法進(jìn)行估算會(huì)比較合理。具體的功能點(diǎn)估算方法可以參考我之前在ITPUB上發(fā)表的相關(guān)文章。
如何對(duì)項(xiàng)目工作量進(jìn)行估算
在項(xiàng)目規(guī)模的基礎(chǔ)上,可以利用組織級(jí)生產(chǎn)率得到項(xiàng)目總的工作量。例如:一個(gè)公司組織級(jí)生產(chǎn)率如下圖所示,在2008年中期時(shí),該組織每開(kāi)發(fā)一個(gè)功能點(diǎn)需要花費(fèi)1.5個(gè)人/天的工作量。假如該公司某項(xiàng)目有200個(gè)功能點(diǎn),那么該項(xiàng)目的工作量就可以通過(guò)以下公式計(jì)算出來(lái):
項(xiàng)目工作量= 200 * 1.5 = 300 人/天
如何對(duì)項(xiàng)目所需資源、各階段工作量進(jìn)行估算
對(duì)這些項(xiàng)目屬性進(jìn)行估算的主要方法是通過(guò)與組織級(jí)度量庫(kù)中的歷史數(shù)據(jù)進(jìn)行對(duì)比,找到相同規(guī)模的歷史項(xiàng)目,參考其數(shù)據(jù),根據(jù)本項(xiàng)目的特點(diǎn)對(duì)相關(guān)屬性進(jìn)行估算。假如本項(xiàng)目與公司之前的某項(xiàng)目A規(guī)模大體相當(dāng),項(xiàng)目A歷史數(shù)據(jù)如表1和表2所示:
瀑布模型生命周期各階段
兩個(gè)項(xiàng)目的規(guī)模相當(dāng),這是我們進(jìn)行估算的依據(jù),根據(jù)之前對(duì)項(xiàng)目總工作量的估算(300人/天),那么就可以得到本項(xiàng)目各個(gè)階段的工作量分布,如表3所示:
瀑布模型生命周期各階段
如何對(duì)項(xiàng)目工期進(jìn)行估算
假設(shè)本項(xiàng)目采用瀑布式的開(kāi)發(fā)模型,并且所需資源與組織級(jí)度量庫(kù)中的歷史項(xiàng)目A相同,根據(jù)表3對(duì)各個(gè)生命周期階段工作量的估算,以及表1對(duì)各種資源的估算,那么通過(guò)表4的計(jì)算就可以得到完成本項(xiàng)目所需要的時(shí)間。
假如每月按照21個(gè)工作日進(jìn)行計(jì)算,那么本項(xiàng)目估計(jì)5.82個(gè)月后可以結(jié)束。
如何估算項(xiàng)
目的成本
假如本項(xiàng)目所使用的資源與項(xiàng)目A相同,那么就可以參考組織度量庫(kù)中2008年各種資源的平均成本,
經(jīng)過(guò)對(duì)項(xiàng)目周期的估算,可以得知本項(xiàng)目大概需要5.82個(gè)月的時(shí)間?;谝陨蠑?shù)據(jù)就可以通過(guò)表5來(lái)對(duì)項(xiàng)目的成本進(jìn)行估算,其結(jié)果如下所示:
至此,對(duì)項(xiàng)目的規(guī)模、成本、工作量、資源和工期的估算方法和順序就介紹完了,通過(guò)本文的介紹,希望廣大項(xiàng)目管理人員可以掌握項(xiàng)目估算的技巧。對(duì)于使用客觀方法進(jìn)行估算時(shí),組織級(jí)的度量數(shù)據(jù)是關(guān)鍵核心點(diǎn)。另外,軟件項(xiàng)目始終伴隨著各種各樣的變更,這正所謂“變化是永恒的,不變是短暫的”。 作為一個(gè)成熟的項(xiàng)目管理者應(yīng)該勇于面對(duì)變化,在每次重大變化后對(duì)項(xiàng)目進(jìn)行重新估算是十分必要的。