您的位置:軟件測(cè)試 > 軟件項(xiàng)目管理 > 成本管理 >
軟件項(xiàng)目的規(guī)模、工作量和成本是如何進(jìn)行估算的
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/6/5 13:51:40 ] 推薦標(biāo)簽:

表 5. 軟件項(xiàng)目a的ct值

 

參數(shù)取值加權(quán)

加權(quán)因子


終值
簡(jiǎn)單 一般 復(fù)雜
用戶輸入數(shù) 6´3 2´4 5´6

56

用戶輸出數(shù) 7´4 6´5 5´7

103

用戶查詢數(shù) 2´3 0´4 5´6

36

文件數(shù) 0´7 3´10 3´15

75

外部界面數(shù) 2´5 3´7 4´10

71

ct=

341

用功能點(diǎn)來(lái)表示軟件項(xiàng)目規(guī)模的好處是:軟件系統(tǒng)的功能與實(shí)現(xiàn)該軟件系統(tǒng)的語(yǔ)言和技術(shù)無(wú)關(guān),而且在軟件開(kāi)發(fā)的早期階段(如需求分析)可通過(guò)對(duì)用戶需求的理解獲得軟件系統(tǒng)的功能點(diǎn)數(shù)目,因而該方法可以較好地克服基于代碼行軟件項(xiàng)目規(guī)模表示方法的不足。其不足主要體現(xiàn)在:該方法沒(méi)有直接涉及算法的復(fù)雜度,不適合算法比較復(fù)雜的軟件系統(tǒng);功能點(diǎn)計(jì)算主要靠經(jīng)驗(yàn)公式,主觀因素比較多;此外計(jì)算功能點(diǎn)所需的數(shù)據(jù)不好采集。

大量的實(shí)踐表明:針對(duì)特定的程序設(shè)計(jì)語(yǔ)言,軟件系統(tǒng)的功能點(diǎn)和代碼行二者之間存在某種對(duì)應(yīng)關(guān)系(如表 6所示)。根據(jù)該表的數(shù)據(jù),一個(gè)功能點(diǎn)如果用匯編語(yǔ)言來(lái)實(shí)現(xiàn)大約需要320行代碼,如果用c語(yǔ)言來(lái)實(shí)現(xiàn)大約需要150行代碼,如果用smalltalk語(yǔ)言來(lái)實(shí)現(xiàn)大約需要21行代碼。從另一個(gè)角度上看,該表反映了不同程序設(shè)計(jì)語(yǔ)言的描述能力是不一樣的。

表 6. 功能點(diǎn)和代碼行之間的轉(zhuǎn)換表

 

序號(hào) 程序設(shè)計(jì)語(yǔ)言 代碼行/功能點(diǎn)
1 匯編語(yǔ)言 320
2 c 150
3 cobol 105
4 fottran 105
5 pascal 91
6 ada 71
7 pl/1 65
8 prolog/lisp 64
9 smalltalk 21
10 代碼生成器 15

 假設(shè)用l表示軟件系統(tǒng)的規(guī)模(或者用loc表示,或者用fp來(lái)表示)。針對(duì)一個(gè)具體的軟件項(xiàng)目,可以采用自頂向下或者自底向上等多種方式來(lái)估算出軟件項(xiàng)目規(guī)模的樂(lè)觀值a、悲觀值b和一般值m,然后根據(jù)以下公式估算出軟件項(xiàng)目規(guī)模的期望值e:

e = (a + 4´m + b)/6

根據(jù)軟件項(xiàng)目規(guī)模的期望值e以及下列公式,可以估算出軟件項(xiàng)目的成本和工作量。

生產(chǎn)率

pm = l / e

其中,l表示軟件項(xiàng)目的規(guī)模(單位:loc或者fp),e表示軟件工作量(單位:人月),pm表示單個(gè)人月能夠生產(chǎn)的功能點(diǎn)或者代碼行數(shù)。

平均成本

ckl = s / l

其中,s為軟件項(xiàng)目總開(kāi)銷,l表示軟件項(xiàng)目的規(guī)模(單位:loc或者fp), ckl表示每行代碼或者每個(gè)功能點(diǎn)的平均成本。

對(duì)于一個(gè)特定的軟件開(kāi)發(fā)組織或者項(xiàng)目組而言,其軟件生產(chǎn)率和平均成本在不同的軟件項(xiàng)目實(shí)施中可能是比較穩(wěn)定的。如果有以往軟件項(xiàng)目的歷史信息,可以很容易地獲得關(guān)于軟件開(kāi)發(fā)組織或者項(xiàng)目組的pm和ckl值。因此,一旦估算出了軟件項(xiàng)目的規(guī)模,獲得了軟件開(kāi)發(fā)組織或者項(xiàng)目組的pm和ckl的值,可根據(jù)公式ckl = s / l計(jì)算出軟件項(xiàng)目的成本s = ckl´ l,也可根據(jù)公式pm = l / e計(jì)算出軟件項(xiàng)目的工作量e= l / pm。

例如,假設(shè)項(xiàng)目組要開(kāi)發(fā)一個(gè)軟件項(xiàng)目a,經(jīng)過(guò)估算該項(xiàng)目的規(guī)模是364個(gè)功能點(diǎn)。進(jìn)一步的,根據(jù)以往的歷史數(shù)據(jù),該項(xiàng)目組軟件開(kāi)發(fā)的生產(chǎn)率是8fp/人月,每個(gè)功能點(diǎn)的平均成本為12000元人民幣,那么該軟件項(xiàng)目的開(kāi)發(fā)成本s = 6800元人民幣´ 364 = 247,5200元人民幣,工作量為e= 364/ 8 = 45.5人月。

基于經(jīng)驗(yàn)?zāi)P偷墓浪?/p>

基于經(jīng)驗(yàn)?zāi)P偷墓浪愀鶕?jù)以往軟件項(xiàng)目實(shí)施的經(jīng)驗(yàn)數(shù)據(jù)(如成本、工作量和進(jìn)度等)建立相應(yīng)的估算模型,并以此為基礎(chǔ)對(duì)軟件項(xiàng)目開(kāi)發(fā)的有關(guān)屬性進(jìn)行估算。構(gòu)造性成本模型cocomo(constructive cost model)是目前應(yīng)用為廣泛的經(jīng)驗(yàn)?zāi)P椭弧?/p>

在二十世紀(jì)七十年代后期,boehm對(duì)多達(dá)63個(gè)軟件項(xiàng)目的經(jīng)驗(yàn)數(shù)據(jù)進(jìn)行了分析和研究,在此基礎(chǔ)上于1981年提出了cocomo模型用于對(duì)軟件項(xiàng)目的規(guī)模、成本、進(jìn)度等方面進(jìn)行估算。boehm把cocomo模型分為基本、中間和詳細(xì)三個(gè)層次,分別支持軟件開(kāi)發(fā)的三個(gè)不同階段;綾ocomo模型用于估算整個(gè)軟件系統(tǒng)開(kāi)發(fā)所需的工作量和開(kāi)發(fā)時(shí)間,適合于軟件系統(tǒng)開(kāi)發(fā)的初期。中間層次的cocomo模型用于估算各個(gè)子系統(tǒng)的工作量和開(kāi)發(fā)時(shí)間,適合在獲得各個(gè)子系統(tǒng)信息之后對(duì)軟件項(xiàng)目的估算。詳細(xì)層次的cocomo模型用于估算獨(dú)立的軟構(gòu)件,適合在獲得各個(gè)軟構(gòu)件信息之后對(duì)軟件項(xiàng)目的估算。由于篇幅限制,本書(shū)僅介紹基本cocomo模型,其模型形式描述如下。

e = a * (kloc)b 。其中e是軟件系統(tǒng)的工作量(單位:人月) ,a和b是經(jīng)驗(yàn)常數(shù),其取值見(jiàn)表 7,kloc是軟件系統(tǒng)的規(guī)模(單位:千行代碼)。該公式描述了軟件系統(tǒng)的規(guī)模與工作量之間的關(guān)系。

d = c * ed。其中d是開(kāi)發(fā)時(shí)間(單位:月),c和d是經(jīng)驗(yàn)常數(shù),其取值見(jiàn)表 7。該公式描述了軟件系統(tǒng)的開(kāi)發(fā)時(shí)間與工作量之間的關(guān)系。

表 7. 基本cocomo模型參數(shù)的取值

 

軟件類型 a b c d 適用范圍
組織型 2.4 1.05 2.5 0.38 各類應(yīng)用程序
半獨(dú)立型 3.0 1.12 2.5 0.35 各類實(shí)用程序、編譯程序等
嵌入型 3.6 1.20 2.5 0.32 各類實(shí)時(shí)軟件、os、控制程序等

cocomo模型是一個(gè)綜合經(jīng)驗(yàn)?zāi)P,它考慮了諸多因素,因而是一個(gè)比較全面的估算模型。cocomo模型有許多參數(shù),其取值來(lái)至于經(jīng)驗(yàn)值。該估算模型比較實(shí)用、易于操作,在歐盟應(yīng)用較為廣泛。

例如,針對(duì)上面所述的軟件項(xiàng)目a,如果已估算出該項(xiàng)目的軟件規(guī)模是33.3kloc,而且該項(xiàng)目屬于半獨(dú)立型,即cocomo模型中的參數(shù)a、b、c、d的取值分別是3.0、1.12、2.5、0.35,那么根據(jù)模型公式e =a * (kloc)b可以估算出該項(xiàng)目的工作量是3.0*(33.3)1.12,即152人月;然后根據(jù)公式d = c * ed可以估算出該項(xiàng)目的開(kāi)發(fā)時(shí)間是2.5*(152)0.35,即14.5月。

2. 其它估算方法

其它估算方法包括:專家估算、類比估算等等。

專家估算方法是由一組專家來(lái)對(duì)軟件項(xiàng)目所需的成本、工作量和進(jìn)度等進(jìn)行估算。一般地,這些專家具有應(yīng)用領(lǐng)域或者開(kāi)發(fā)環(huán)境方面的知識(shí)、參與了以往類似軟件項(xiàng)目的開(kāi)發(fā)。為了避免專家估算的片面性,專家估算方法一般要求每位專家給出估算的小值a、可能值m和大值b,然后計(jì)算出每位專家估算的平均值esti =(a+4m+b)/6,后根據(jù)各位專家的估算情況計(jì)算出終的估算值est=(est1+est2+est3+……+estn)/n。如果軟件開(kāi)發(fā)組織或者項(xiàng)目組擁有一批經(jīng)驗(yàn)豐富的專家,可以考慮采用該方法。專家估算方法具有人為因素多、主觀因素大的特點(diǎn),一般應(yīng)用于軟件開(kāi)發(fā)的初期階段,此時(shí)軟件項(xiàng)目組往往難以獲得估算軟件項(xiàng)目所需的各種數(shù)據(jù)和信息。

類比估算方法是指估算人員根據(jù)以往類似軟件項(xiàng)目實(shí)施所積累下來(lái)的數(shù)據(jù),通過(guò)分析待開(kāi)發(fā)軟件項(xiàng)目和以往軟件項(xiàng)目二者之間的相似性,估算出軟件項(xiàng)目的開(kāi)發(fā)工作量、成本和進(jìn)度等。使用該方法的前提是:待估算的軟件項(xiàng)目和以往的軟件項(xiàng)目必須具有一定的相似性(如它們均屬于同樣的應(yīng)用領(lǐng)域),并且擁有以往類似軟件項(xiàng)目的開(kāi)發(fā)數(shù)據(jù)(如工作量、周期、參與的人數(shù)、規(guī)模和成本等)。

軟件估算發(fā)生在事前,因而估算的結(jié)果與實(shí)際的結(jié)果有所偏差是不可避免的。但是,如果估算的偏差過(guò)大,那么估算的結(jié)果將會(huì)對(duì)軟件項(xiàng)目的實(shí)施和管理產(chǎn)生消極的影響,甚至可能導(dǎo)致軟件項(xiàng)目的失敗。因此,在對(duì)軟件項(xiàng)目的規(guī)模、成本和工作量等進(jìn)行估算的過(guò)程中,要避免低劣的估算,盡可能地獲得合理和準(zhǔn)確的估算數(shù)據(jù)。

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd