如何估計(jì)項(xiàng)目的工作量呢?
簡單地說,我們需要將項(xiàng)目的所有工作進(jìn)行分解,直到每個分解后的工作都能估計(jì)出具體的所需時(shí)間來。
那項(xiàng)目的“所有工作”包含什么呢?回答這個問題其實(shí)就是回答“估算要估啥?”這個問題了。
一般情況下,項(xiàng)目工作包括以下內(nèi)容:
1.項(xiàng)目前期工作。
包括商務(wù)談判、技術(shù)方案準(zhǔn)備、投標(biāo)準(zhǔn)備、前期需求調(diào)研、前期技術(shù)研究等工作。當(dāng)你接手項(xiàng)目的時(shí)候,這些工作往往已經(jīng)做了,你估算項(xiàng)目工作量時(shí),不要忘記這些已經(jīng)花費(fèi)的工作量。
2.商務(wù)方面的工作。
從客戶開始有意向做這個項(xiàng)目,一直到項(xiàng)目驗(yàn)收、維護(hù),整個過程中都會貫穿商務(wù)活動。前期的商務(wù)活動有商務(wù)談判、投標(biāo)準(zhǔn)備、合同簽署等,而簽訂合同后的商務(wù)活動有項(xiàng)目請款和催款、促進(jìn)驗(yàn)收等。某些商務(wù)活動屬于灰色地帶,如請客、送禮等,這些往往是花費(fèi)巨大的。一般來說我們不需要估算灰色地帶的商務(wù)活動,灰色地帶的商務(wù)活動公司的高層會考慮的了,但我們需要對正常的商務(wù)活動進(jìn)行估算。
3.需求調(diào)研方面的工作。
需求調(diào)研是一個“反復(fù)”的過程,一般來說能在前期確定80%已經(jīng)是很了不起的成績。
需求調(diào)研的工作量一般由三部分組成:前期調(diào)研的工作量,后期需求細(xì)化的工作量,后期需求變更的工作量。
前期調(diào)研的工作包括:項(xiàng)目組內(nèi)部討論、確認(rèn),與客戶討論、確認(rèn)需求,編寫需求規(guī)格說明書及組織評審等工作。
需求細(xì)化是指對之前已確定需求的進(jìn)一步具體化、優(yōu)化或輕微調(diào)整,如:界面細(xì)節(jié)的確認(rèn)、各業(yè)務(wù)概念的具體化等。需求細(xì)化一般是可預(yù)見可估計(jì)的。
需求變更是指對之前已確認(rèn)需求的“否定”,變更的原因主要有兩種情況:一是之前需求調(diào)研工作沒有能做好,理解錯客戶的真正意圖或者是遺漏重要的需求;二是客戶業(yè)務(wù)情況發(fā)生變化,與之前情況已經(jīng)不同。第一種情況應(yīng)該盡量避免,而第二種情況一般是難以估計(jì)的。需求變更時(shí)需重新估算,和客戶簽訂需求變更協(xié)議。
我們一般會充分估計(jì)前期需求調(diào)研工作量以及需求細(xì)化工作量,對于需求變更則暫不考慮,因?yàn)橐坏┳兏覀儠涂蛻舸_認(rèn)需求變更的費(fèi)用。但有些項(xiàng)目有很特殊,項(xiàng)目報(bào)價(jià)中預(yù)留了少量的需求變更費(fèi)用,這時(shí)估算中就需要適當(dāng)考慮需求變更了。
4. 軟件設(shè)計(jì)方面的工作。
不少項(xiàng)目為了“趕”進(jìn)度,設(shè)計(jì)文檔很少,然則項(xiàng)目真的很簡單、不需要仔細(xì)考慮設(shè)計(jì)的情況是非常少的!
軟件設(shè)計(jì)工作包括:
1)系統(tǒng)架構(gòu)設(shè)計(jì)。
2)技術(shù)方案選擇。
3)關(guān)鍵模塊設(shè)計(jì)。
4)數(shù)據(jù)庫設(shè)計(jì)。
5)用戶體驗(yàn)設(shè)計(jì)。
以上內(nèi)容具體項(xiàng)目可以有所取舍,但不可能全部都不用考慮。
另外不要忘記了以下兩方面的工作:
1)各類設(shè)計(jì)工作產(chǎn)品的討論、確認(rèn)、評審工作。
2)設(shè)計(jì)細(xì)化與優(yōu)化工作。設(shè)計(jì)是需要持續(xù)改進(jìn)的,不要忘記這些工作。
5.編碼方面的工作。
要注意不要遺漏代碼返工、代碼評審、代碼調(diào)試、修復(fù)缺陷的工作量。
需求、設(shè)計(jì)沒有做好,編碼質(zhì)量不過關(guān),這些會嚴(yán)重增加代碼返工、代碼調(diào)試、修復(fù)缺陷的工作量。代碼首次完成的時(shí)間如果是 100小時(shí),那么后面代碼調(diào)試、修復(fù)缺陷等所需要的時(shí)間可能是200小時(shí)以上,往往我們估算時(shí)只考慮了前面的100小時(shí)。
6.測試方面的工作。
測試工作包括測試計(jì)劃、測試用例、測試文檔評審、測試環(huán)境準(zhǔn)備、測試數(shù)據(jù)準(zhǔn)備、執(zhí)行測試、回歸測試等內(nèi)容。
軟件測試一般要經(jīng)歷多輪,我們估算往往只考慮了第一輪,就好象軟件只需要測試一回就不用再測試了。而測試環(huán)境準(zhǔn)備、測試數(shù)據(jù)準(zhǔn)備這些工作也很容易在估算時(shí)“忘記”了。
7. 實(shí)施方面的工作。
實(shí)施工作包括實(shí)施計(jì)劃、實(shí)施方案的準(zhǔn)備,編寫管理員手冊、用戶手冊,熟悉系統(tǒng),搭建實(shí)施環(huán)境并進(jìn)行演練,在客戶現(xiàn)場安裝