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