1.概述
軟件開(kāi)發(fā)周期估算是IT人員經(jīng)常提到的一個(gè)概念,那么究竟什么是軟件開(kāi)發(fā)周期估算呢?我們可以把它定義如下:根據(jù)軟件的開(kāi)發(fā)內(nèi)容、開(kāi)發(fā)工具、開(kāi)發(fā)人員等因素對(duì)需求調(diào)研、程序設(shè)計(jì)、編碼、測(cè)試等整個(gè)開(kāi)發(fā)過(guò)程所花費(fèi)的時(shí)間做的預(yù)測(cè)。在這個(gè)定義中,“預(yù)測(cè)”兩個(gè)字非常關(guān)鍵,它突出體現(xiàn)了估算的含義,同時(shí)也隱含表明了結(jié)果的不確定性。有效的軟件開(kāi)發(fā)周期估算在軟件開(kāi)發(fā)中是非常困難的工序之一,之所以說(shuō)困難,是因?yàn)檐浖_(kāi)發(fā)所涉及的因素不僅多而且異常復(fù)雜,即便是及其類似的軟件項(xiàng)目也不能完全照搬,在估算的把握上有一定難度。估算也是軟件開(kāi)發(fā)中很重要的一個(gè)環(huán)節(jié),如果低估項(xiàng)目周期會(huì)造成人力低估、成本預(yù)算低估、日程過(guò)短,終人力資源耗盡,成本超出預(yù)算,為完成項(xiàng)目不得不趕工,影響項(xiàng)目質(zhì)量,甚至導(dǎo)致項(xiàng)目失敗。項(xiàng)目周期估計(jì)過(guò)長(zhǎng)表面看來(lái)影響不大,但是實(shí)際上也會(huì)帶來(lái)成本估計(jì)過(guò)高,人力資源利用不充分效率低下的后果。無(wú)論哪種情況對(duì)于項(xiàng)目經(jīng)理控制整個(gè)項(xiàng)目都會(huì)帶來(lái)很大影響,周期估算如同蓋樓房中打地基,是后續(xù)工作的基礎(chǔ),它完成質(zhì)量的好壞所帶來(lái)的影響會(huì)貫穿整個(gè)項(xiàng)目,由此可見(jiàn)開(kāi)發(fā)周期正確估算的重要性。
2.國(guó)內(nèi)外軟件估算比較
國(guó)內(nèi)軟件開(kāi)發(fā)的管理目前正逐步向規(guī)范化發(fā)展,但是在開(kāi)發(fā)周期的估算上絕大部分還是處于手工作坊的狀態(tài)。所謂的手工作坊指兩個(gè)方面,一方面是管理人員意識(shí)上沒(méi)有認(rèn)識(shí)到估算的重要性,認(rèn)為估算是一個(gè)大概的估計(jì),很多還受限于商業(yè)行為,比如為了簽訂合同而不惜減少開(kāi)發(fā)工作量卻未經(jīng)任何評(píng)審;另一方面也沒(méi)有專門(mén)的工具來(lái)輔助估算,或者說(shuō)沒(méi)有專門(mén)對(duì)它進(jìn)行研究。一個(gè)軟件開(kāi)發(fā)周期究竟要多長(zhǎng)基本上是依靠經(jīng)驗(yàn)來(lái)判斷,不同經(jīng)驗(yàn)的人估算出的周期相差很大,而更糟糕的是這種開(kāi)發(fā)周期的判斷由于完全憑借經(jīng)驗(yàn)使得不同意見(jiàn)的人之間很難溝通,因?yàn)檎l(shuí)都沒(méi)有確切的量化標(biāo)準(zhǔn)來(lái)支持自己的判斷,終的結(jié)果往往是以“專家”的估算為準(zhǔn)。這有些類似于中式烹調(diào),放多少作料沒(méi)有依據(jù),一般都是“少許”,這個(gè)“少許”靠的是經(jīng)驗(yàn),高級(jí)廚師和新手根據(jù)這個(gè)量炒出的菜味道可能差得很遠(yuǎn);實(shí)際上國(guó)內(nèi)的軟件開(kāi)發(fā)需要的正是定量估算,這樣做不僅規(guī)范而且精確,十分有助于軟件事業(yè)的健康發(fā)展以及與國(guó)際接軌。
國(guó)外發(fā)達(dá)在軟件估算上比國(guó)內(nèi)要成熟的多,不僅有很多先進(jìn)方法比如代碼行估算法、功能點(diǎn)估算法、人力估算法,而且形成了專業(yè)化的估算工具來(lái)輔助這項(xiàng)工作,比如微軟公司開(kāi)發(fā)的項(xiàng)目管理工具軟件Project,加拿大Software Productivity Center Inc.公司開(kāi)發(fā)的Estimate,都是比較成熟的估算輔助工具。Project采用了自下而上的估算法,Estimate更是屬于專業(yè)化工具,包含常用的各種估算方法、校正方法,使用了Putnam Methodology、Cocomo II和 Monte Carlo Simulation幾種成熟算法,估算結(jié)果除了項(xiàng)目花費(fèi)時(shí)間、人力,還包括十幾種分析報(bào)告以及模擬發(fā)散圖、計(jì)劃編制選項(xiàng)圖、人力圖、預(yù)計(jì)缺陷圖、缺陷方差圖等等,從各種不同角度輔助管理人員進(jìn)行分析。
采用輔助工具對(duì)軟件開(kāi)發(fā)周期進(jìn)行估算具有明顯的優(yōu)勢(shì),這些輔助工具是在大量不同類型項(xiàng)目數(shù)據(jù)研究的基礎(chǔ)上總結(jié)開(kāi)發(fā)出來(lái)的,采用的算法、估算的方法已經(jīng)很成熟,估算結(jié)果的準(zhǔn)確性有保障,由于這種估算是可以量化的,并非依據(jù)個(gè)人經(jīng)驗(yàn)直接得出一個(gè)結(jié)果,在結(jié)果的評(píng)審上有據(jù)可依。長(zhǎng)期依靠工具輔助估算可以將大量項(xiàng)目的數(shù)據(jù)和估算結(jié)果積累形成歷史經(jīng)驗(yàn)庫(kù),知識(shí)成果得以保存,便于以后利用。
3. 軟件估算中的因素探討
軟件開(kāi)發(fā)是一項(xiàng)非常復(fù)雜的工程,不僅包含需求分析、設(shè)計(jì)、編碼、測(cè)試、實(shí)施、維護(hù)等完整的過(guò)程,還涉及到開(kāi)發(fā)工具、開(kāi)發(fā)人員、項(xiàng)目管理、風(fēng)險(xiǎn)等眾多因素,不同因素對(duì)估算產(chǎn)生的影響不盡相同,在進(jìn)行軟件估算時(shí)(包括利用工具輔助估算)必須考慮到這些方面,否則終結(jié)果會(huì)和實(shí)際結(jié)果有很大的偏差,影響項(xiàng)目控制,以下對(duì)其中幾個(gè)常見(jiàn)的因素做一些探討。
3.1估算與軟件規(guī)模
軟件規(guī)模通常指的是軟件的大小,這可以通過(guò)不同的方式來(lái)描述,比如程序代碼行的長(zhǎng)度、功能函數(shù)的數(shù)量、數(shù)據(jù)庫(kù)中表的數(shù)量、數(shù)據(jù)庫(kù)的大小等等。一般而言軟件規(guī)模越大,所花費(fèi)的開(kāi)發(fā)周期越長(zhǎng),但這并不是一個(gè)簡(jiǎn)單的線形函數(shù)關(guān)系,下表詳細(xì)列舉了實(shí)際開(kāi)發(fā)中的一些數(shù)據(jù),開(kāi)發(fā)平臺(tái)為L(zhǎng)otus Domino/Notes。
序號(hào)
|
模塊
|
開(kāi)發(fā)周期(中級(jí)程序員)
|
代碼行長(zhǎng)度
|
數(shù)據(jù)庫(kù)大小(無(wú)數(shù)據(jù))
|
1
|
辦事指南
|
0.25人月
|
300
|
1170K
|
2
|
名片簿
|
0.25人月
|
300
|
1039K
|
3
|
合同管理
|
0.25人月
|
460
|
2110K
|
4
|
物控管理
|
0.5人月
|
850
|
2560K
|
5
|
組織機(jī)構(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
|
會(huì)議管理
|
2.5人月
|
11000
|
4608K
|
表一:?jiǎn)蝹(gè)模塊的開(kāi)發(fā)周期
軟件項(xiàng)目
|
開(kāi)發(fā)周期
|
包含的模塊
|
備注
|
某政府客戶
|
3人月
|
10個(gè)
|
定制開(kāi)發(fā)量較小
|
某媒體客戶
|
6人月
|
17個(gè)
|
有3個(gè)模塊完全重新開(kāi)發(fā)
|
某金融客戶
|
10人月
|
14個(gè)
|
80%完全重新開(kāi)發(fā)
|
某保險(xiǎn)客戶
|
16人月
|
18個(gè)
|
完全重新開(kāi)發(fā)
|
表二:軟件項(xiàng)目的開(kāi)發(fā)周期