探討
軟件開發(fā)是一項非常復(fù)雜的工程,不僅包含需求分析、設(shè)計、編碼、測試、實施、維護等完整的過程,還涉及到開發(fā)工具、開發(fā)人員、項目管理、風(fēng)險等眾多因素,不同因素對估算產(chǎn)生的影響不盡相同,在進行軟件估算時(包括利用工具輔助估算)必須考慮到這些方面,否則最終結(jié)果就會和實際結(jié)果有很大的偏差,影響項目控制,以下對其中幾個常見的因素做一些探討。
2.1估算與軟件規(guī)模
軟件規(guī)模通常指的是軟件的大小,這可以通過不同的方式來描述,比如程序代碼行的長度、功能函數(shù)的數(shù)量、數(shù)據(jù)庫中表的數(shù)量、數(shù)據(jù)庫的大小等等。一般而言軟件規(guī)模越大,所花費的開發(fā)周期就越長,但這并不是一個簡單的線形函數(shù)關(guān)系,下表詳細列舉了實際開發(fā)中的一些數(shù)據(jù),開發(fā)平臺為Lotus Domino/Notes。
序號 模塊 開發(fā)周期(中級程序員) 代碼行長度 數(shù)據(jù)庫大小(無數(shù)據(jù))
1. 辦事指南 0.25人月 300 1170K
2. 名片簿 0.25人月 300 1039K
3. 合同管理 0.25人月 460 2110K
4. 物控管理 0.5人月 850 2560K
5. 組織機構(gòu) 0.5人月 900 1318K
6. 流程管理 0.8人月 1000 2304K
7. 公告板 0.5人月 1400 2560K
8. 人事管理 1人月 1800 3840K
9. 公文管理 1.8人月 2500 2304K
10. 事務(wù)審批 1.5人月 3750 2110K
11. 考勤管理 1.8人月 4800 3840K
12. 資源管理 1.8人月 5800 3840K
13. 會議管理 2.5人月 11000 4608K
軟件項目的開發(fā)周期
軟件項目 開發(fā)周期 包含的模塊 備注
某政府客戶 3個人月 10個 定制開發(fā)量較小
某媒體客戶 6個人月 17個 有3個模塊完全重新開發(fā)
某金融客戶 10個人月 14個 80%完全重新開發(fā)
某保險客戶 16個人月 18個 完全重新開發(fā)
模塊的代碼行越長,開發(fā)周期就越長,對同一開發(fā)工具而言基本是一個線形關(guān)系,但其中也要考慮代碼重用問題,比如一個模塊代碼很長,但是可能包含了很多公用函數(shù),那么在估算時就應(yīng)適當(dāng)減少代碼行數(shù)量,表中會議管理就是個例子,這個模塊的代碼行超過一萬行,但其中公共函數(shù)很多,去除此因素,真正的代碼行在9000行左右。
從普通意義上說軟件項目中包含的功能模塊越多、越復(fù)雜,或者說軟件越大開發(fā)周期增長的就越快,這個時間絕不是模塊開發(fā)時間的簡單疊加,因為模塊功能數(shù)量的增加直接帶來了軟模塊間相互關(guān)聯(lián)度、復(fù)雜度的成倍增加,這就直接導(dǎo)致了在需求、設(shè)計等階段需要花費更多的時間,這比單獨考慮一個模塊復(fù)雜的多。在表二中隨著模塊數(shù)量增加,開發(fā)周期增加不是特別明顯,這是因為產(chǎn)品化程度高所引起的,由于相當(dāng)數(shù)量的模塊可以完全重用,實際開發(fā)量大大減少,最后一個例子完全重新開發(fā),開發(fā)周期就長的多。
在實際進行軟件開發(fā)周期估算的時候,軟件規(guī)??隙ㄊ鞘紫瓤紤]的因素,根據(jù)我們上面所討論的情況,在考慮軟件規(guī)模時一定要去除可重用的部分,由于當(dāng)今軟件在設(shè)計上很重視這點,所以這部分會占相當(dāng)?shù)谋戎?。另外軟件功能之間的關(guān)聯(lián)所造成的復(fù)雜性必須足夠重視,這樣在估算上就不會產(chǎn)生重大偏差。
2.2估算與人力資源
對于軟件開發(fā)項目來說,人力資源是核心力量,因為軟件開發(fā)不同于其它類型的項目,除了電腦它不需要利用其它工具,最終結(jié)果的產(chǎn)生完全取決于人腦中的知識,這也是知識經(jīng)濟的最大特點。
&nbs