一個成功的軟件項目首先要有一個好的起點,也是一個合理的項目計劃;一個好的項目計劃,離不開一個準(zhǔn)確的、可信的、客觀的項目估算數(shù)據(jù)作為基礎(chǔ)。如何提高估算的準(zhǔn)確性,如何利用項目估算的數(shù)據(jù)來制定項目計劃,本文將帶領(lǐng)大家學(xué)習(xí)、理解軟件項目估算的一些佳實踐。
為什么要對項目進(jìn)行估算
對于龐大的、多變的軟件項目來說有著太多的不確定性。之所以要先制定項目計劃,目的是為了讓項目更加可控。如果項目的計劃缺乏數(shù)據(jù)進(jìn)行支持,或者根本不進(jìn)行估算,只憑項目管理人員的經(jīng)驗進(jìn)行管理,那么項目終會變成軟件項目常見的“三拍”現(xiàn)象:“首先公司領(lǐng)導(dǎo)拍拍某個項目經(jīng)理的腦袋,說你來負(fù)責(zé)這個項目;項目經(jīng)理拍拍胸脯說沒問題;后項目失敗的時候項目經(jīng)理只能拍拍屁股走人”。
當(dāng)然,這只是個玩笑。不過由此可見項目估算是項目管理人員深入了解項目的第一步,做到“知己知彼,才能百戰(zhàn)不殆”。
常用的軟件估算方法
軟件可以通過主觀和客觀兩種方法對其進(jìn)行估算。
主觀的估算方法可以通過召集項目團(tuán)隊成員,或者邀請各方面的專家,共同對某個項目的屬性進(jìn)行評估。參與評估的每個人都要單獨進(jìn)行估算,如果發(fā)現(xiàn)大家對某個項目屬性估算的結(jié)果存在較大偏差,那么需要做進(jìn)一步的討論,直到取得共識為止。對個別特殊屬性進(jìn)行主觀估算時,一定要有直接干系人的參與,例如:對某個文檔工作量進(jìn)行估算時,好該文檔的負(fù)責(zé)人參與估算,因為他才是終的執(zhí)行人。
客觀的估算方法是利用公司提供的各種度量數(shù)據(jù)進(jìn)行估算,例如:組織級的生產(chǎn)率,或者其他項目的度量數(shù)據(jù)。本文主要講解項目管理人員如何通過客觀的方法對項目進(jìn)行估算。
項目的哪些屬性可以進(jìn)行估算
軟件項目的屬性有很多,建議至少以下屬性要在項目計劃時對其進(jìn)行估算:
1、 項目規(guī)模
2、 項目工作量
3、 項目所需資源
4、 項目各階段工作量
5、 項目成本
如何對項目規(guī)模進(jìn)行估算
對項目規(guī)模進(jìn)行估算是為了將項目的范圍進(jìn)行量化,項目規(guī)模的估算是整個軟件估算中核心、基礎(chǔ)的環(huán)節(jié),也是整個估算的第一步。
軟件項目的規(guī)?梢允褂霉δ茳c估算法和代碼行估算法兩種方式,但是作為項目初期階段,建議使用功能點法進(jìn)行估算會比較合理。具體的功能點估算方法可以參考我之前在ITPUB上發(fā)表的相關(guān)文章。
如何對項目工作量進(jìn)行估算
在項目規(guī)模的基礎(chǔ)上,可以利用組織級生產(chǎn)率得到項目總的工作量。例如:一個公司組織級生產(chǎn)率如下圖所示,在2008年中期時,該組織每開發(fā)一個功能點需要花費1.5個人/天的工作量。假如該公司某項目有200個功能點,那么該項目的工作量可以通過以下公式計算出來:
項目工作量= 200 * 1.5 = 300 人/天
如何對項目所需資源、各階段工作量進(jìn)行估算
對這些項目屬性進(jìn)行估算的主要方法是通過與組織級度量庫中的歷史數(shù)據(jù)進(jìn)行對比,找到相同規(guī)模的歷史項目,參考其數(shù)據(jù),根據(jù)本項目的特點對相關(guān)屬性進(jìn)行估算。假如本項目與公司之前的某項目A規(guī)模大體相當(dāng),項目A歷史數(shù)據(jù)如表1和表2所示:
表1-項目A使用資源數(shù)