前期調(diào)研的工作包括:項目組內(nèi)部討論、確認(rèn),與客戶討論、確認(rèn)需求,編寫需求規(guī)格說明書及組織評審等工作。
需求細化是指對之前已確定需求的進一步具體化、優(yōu)化或輕微調(diào)整,如:界面細節(jié)的確認(rèn)、各業(yè)務(wù)概念的具體化等。需求細化一般是可預(yù)見可估計的。
需求變更是指對之前已確認(rèn)需求的“否定”,變更的原因主要有兩種情況:一是之前需求調(diào)研工作沒有能做好,理解錯客戶的真正意圖或者是遺漏重要的需求;二是客戶業(yè)務(wù)情況發(fā)生變化,與之前情況已經(jīng)不同。第一種情況應(yīng)該盡量避免,而第二種情況一般是難以估計的。需求變更時需重新估算,和客戶簽訂需求變更協(xié)議。
我們一般會充分估計前期需求調(diào)研工作量以及需求細化工作量,對于需求變更則暫不考慮,因為一旦變更我們會和客戶確認(rèn)需求變更的費用。但有些項目有很特殊,項目報價中預(yù)留了少量的需求變更費用,這時估算中就需要適當(dāng)考慮需求變更了。
4.軟件設(shè)計方面的工作。
不少項目為了“趕”進度,設(shè)計文檔很少,然則項目真的很簡單、不需要仔細考慮設(shè)計的情況是非常少的!
軟件設(shè)計工作包括:
1)系統(tǒng)架構(gòu)設(shè)計。
2)技術(shù)方案選擇。
3)關(guān)鍵模塊設(shè)計。
4)數(shù)據(jù)庫設(shè)計。
5)用戶體驗設(shè)計。
以上內(nèi)容具體項目可以有所取舍,但不可能全部都不用考慮。
另外不要忘記了以下兩方面的工作:
1)各類設(shè)計工作產(chǎn)品的討論、確認(rèn)、評審工作。
2)設(shè)計細化與優(yōu)化工作。設(shè)計是需要持續(xù)改進的,不要忘記這些工作。
5.編碼方面的工作。
要注意不要遺漏代碼返工、代碼評審、代碼調(diào)試、修復(fù)缺陷的工作量。
需求、設(shè)計沒有做好,編碼質(zhì)量不過關(guān),這些會嚴(yán)重增加代碼返工、代碼調(diào)試、修復(fù)缺陷的工作量。代碼首次完成的時間如果是100小時,那么后面代碼調(diào)試、修復(fù)缺陷等所需要的時間可能是200小時以上,往往我們估算時只考慮了前面的100小時。
6.測試方面的工作。
測試工作包括測試計劃、測試用例、測試文檔評審、測試環(huán)境準(zhǔn)備、測試數(shù)據(jù)準(zhǔn)備、執(zhí)行測試、回歸測試等內(nèi)容。
軟件測試一般要經(jīng)歷多輪,我們估算往往只考慮了第一輪,就好象軟件只需要測試一回就不用再測試了。而測試環(huán)境準(zhǔn)備、測試數(shù)據(jù)準(zhǔn)備這些工作也很容易在估算時“忘記”了。
7.實施方面的工作。
實施工作包括實施計劃、實施方案的準(zhǔn)備,編寫管理員手冊、用戶手冊,熟悉系統(tǒng),搭建實施環(huán)境并進行演練,在客戶現(xiàn)場安裝、部署、調(diào)試系統(tǒng),培訓(xùn)客戶,協(xié)助系統(tǒng)上線,推動驗收等工作。
我們公司通常的做法是:
1)系統(tǒng)在客戶處部署后,會推動客戶進行初步驗收,初驗標(biāo)準(zhǔn)是系統(tǒng)的所有功能跑就可以了。初驗成功,客戶需要支付相應(yīng)的項目款項。
2)初驗后要協(xié)助客戶讓系統(tǒng)正式上線,讓客戶真正用上這套系統(tǒng),推動最終驗收。
影響終驗主要有兩個因素,一個是客戶在使用系統(tǒng)過程中會提出各式各樣的問題,如果在需求范圍內(nèi)應(yīng)該都予以滿足;而另外一個影響因素是客戶會因為各種各樣的原因推遲使用系統(tǒng),或者是使用不充分,讓項目終驗遙遙無期。估算時需要充分考慮這兩個影響因素。
8.維護方面的工作。
項目終驗后,一般都要提供半年到一年的維護服務(wù),維護器后項目還會有最后一筆款項。
維護期比較長,事情繁雜,一個不小心就很容易估算不足。
維護的工作一般有:
1)用戶培訓(xùn);
2)協(xié)助客戶錄入資料;
3)修復(fù)被破壞的數(shù)據(jù)以及數(shù)據(jù)庫;
4)修改客戶或內(nèi)部發(fā)現(xiàn)的軟件缺陷;
5)代碼重構(gòu),提高部分程序的性能與可靠性;
6)修