劉振光1 羅志恒2 李紅昌31.中國(guó)中元國(guó)際工程有限公司 2中國(guó)機(jī)械工業(yè)集團(tuán)有限公司 3北京交通大學(xué)
?
軟件開(kāi)發(fā)項(xiàng)目成本估算方法應(yīng)用與實(shí)踐
劉振光1羅志恒2李紅昌3
1.中國(guó)中元國(guó)際工程有限公司2中國(guó)機(jī)械工業(yè)集團(tuán)有限公司3北京交通大學(xué)
摘要:軟件開(kāi)發(fā)項(xiàng)目成本估算是軟件項(xiàng)目管理的關(guān)鍵所在,本文結(jié)合實(shí)例提出了基于COCOMOII和功能點(diǎn)法(FPA)軟件項(xiàng)目估算方法,在軟件開(kāi)發(fā)項(xiàng)目前期咨詢報(bào)告的編制和評(píng)審方面具有實(shí)用價(jià)值。
關(guān)鍵詞:COCOMOII功能點(diǎn)法開(kāi)發(fā)規(guī)模成本驅(qū)動(dòng)因子比例因子
由于工作原因,筆者參與了一些國(guó)家大科學(xué)裝置項(xiàng)目前期咨詢報(bào)告編制和評(píng)審工作,在投資組成中軟件編制費(fèi)占較大比例,金額多的可以達(dá)到數(shù)億元,最為棘手的就是軟件開(kāi)發(fā)項(xiàng)目的成本估算。與一般建設(shè)工程項(xiàng)目相比軟件開(kāi)發(fā)項(xiàng)目具有開(kāi)發(fā)需求可變性強(qiáng),設(shè)計(jì)和開(kāi)發(fā)往往同時(shí)進(jìn)行,缺少相應(yīng)定額標(biāo)準(zhǔn)等特點(diǎn),這就導(dǎo)致了軟件開(kāi)發(fā)成本估算難度非常之高,尤其對(duì)于一些大型復(fù)雜,需要多個(gè)項(xiàng)目團(tuán)隊(duì)協(xié)作完成的軟件開(kāi)發(fā)項(xiàng)目更是如此。以往軟件開(kāi)發(fā)成本估算多是基于經(jīng)驗(yàn),而本文嘗試結(jié)合當(dāng)今國(guó)際上較為流行的COCOMOII和功能點(diǎn)法(FPA)為軟件開(kāi)發(fā)項(xiàng)目前期咨詢報(bào)告的編制和評(píng)審工作提供借鑒。
(一) COCOMO模型
COCOMO模型是當(dāng)今世界上應(yīng)用最廣泛的軟件成本估算模型。1981年,Barry Boehm教授在其著作《軟件工程經(jīng)濟(jì)學(xué)》(Software Engineering Economics)中發(fā)表了早期的構(gòu)造性成本模型COCOM0 (Constructive Cost Model)模型,標(biāo)志著COCOMO的產(chǎn)生。早期的COCOMO是基于瀑布式開(kāi)發(fā)的靜態(tài)單變量模型,它用一個(gè)以已交付的源指令行數(shù)為自變量的經(jīng)驗(yàn)函數(shù)計(jì)算軟件開(kāi)發(fā)工作量。
后來(lái)為適應(yīng)軟件開(kāi)發(fā)在生命周期、技術(shù)、組件和技術(shù)等方面的快速發(fā)展,Bochm和南加州大學(xué)USC軟件工程中心不斷對(duì)COCOMO(81版)模型進(jìn)行了改進(jìn)和優(yōu)化,于1997年發(fā)布了COCOMO II模型,并分別于1998、1999、2000年發(fā)布了COCOMO II的校正版。之后世界各國(guó)開(kāi)始使用該模型,該模型以其較好的可操作性和估算的相對(duì)準(zhǔn)確性得到業(yè)內(nèi)的認(rèn)可,目前是世界上應(yīng)用最廣泛的軟件成本估算模型。
(二)功能點(diǎn)法
COCOMO模型要求有類似軟件開(kāi)發(fā)的經(jīng)驗(yàn)方能較準(zhǔn)確的估計(jì)將開(kāi)發(fā)軟件的規(guī)模,但對(duì)于首次開(kāi)發(fā)的軟件的規(guī)模很難估計(jì),功能點(diǎn)法恰恰可以彌補(bǔ)COCOMO模型的不足。FPA(Function Point Analysis)即功能點(diǎn)法,是Albrecht于1979年提出來(lái)的,該方法是第一個(gè)從系統(tǒng)功能的角度來(lái)度量軟件規(guī)模的方法。由于該法能在早期度量軟件的規(guī)模,很多組織紛紛采用了該方法。1984年,出現(xiàn)了一個(gè)稱為“國(guó)際功能點(diǎn)用戶組” (IFPUG,International Function Point Users Group)的非贏利性聯(lián)盟,繼承和發(fā)展了這種方法。最早使用這種方法進(jìn)行軟件規(guī)模測(cè)算的是IBM公司,使得這種估算方法迅速流行起來(lái)。目前有四種FPA方法已經(jīng)被國(guó)際標(biāo)準(zhǔn)組織(ISO)接受成為國(guó)際標(biāo)準(zhǔn)測(cè)算方法。
本文提出采用COCOMO II(2000版)結(jié)合國(guó)際標(biāo)準(zhǔn)IFPUG(4.1版)對(duì)軟件開(kāi)發(fā)成本進(jìn)行估算。
本文中介紹的軟件工程量估算方法以COCOMO II模型為主,主要用于估算軟件開(kāi)發(fā)工作量。功能點(diǎn)法作為輔助方法,主要用于沒(méi)有開(kāi)發(fā)經(jīng)驗(yàn)的軟件規(guī)模(size)的確定。
(一)模型構(gòu)成
COCOMOII是對(duì)大量已開(kāi)發(fā)項(xiàng)目進(jìn)行統(tǒng)計(jì)分析后得到的經(jīng)驗(yàn)?zāi)P停撃P椭饕梢粋€(gè)核心指標(biāo)(軟件規(guī)模size)和兩個(gè)因子(比例因子和成本驅(qū)動(dòng)因子)組成。其中,軟件規(guī)模以千行代碼(KSLOC)表示;比例因子包括5個(gè)子因子,成本驅(qū)動(dòng)因子包括17個(gè)子因子。詳見(jiàn)下文。
(二)計(jì)量標(biāo)準(zhǔn)
在COCOMOII中,工作量用人月(person—months,PM)表示,即一個(gè)人完成該項(xiàng)目需要的時(shí)間(月)。一個(gè)人月的標(biāo)準(zhǔn)值為152小時(shí)。
人月數(shù)不同于完成項(xiàng)目要花費(fèi)時(shí)間,開(kāi)發(fā)項(xiàng)目所花費(fèi)的時(shí)間稱之為開(kāi)發(fā)進(jìn)度(Time to Develop,TDEV)。
(三)計(jì)量公式
1.工作量計(jì)量公式
A為常數(shù),該數(shù)值的取值與軟件開(kāi)發(fā)類型有關(guān)。如嵌入軟件取值為2.58,電子商務(wù)軟件取值3.6,Web開(kāi)發(fā)取值3.3,軍事開(kāi)發(fā)取值2.77等。COCOMO II(2000版)模型中A值綜合取值為2.94;
Size為類似軟件開(kāi)發(fā)的規(guī)模,用千行代碼(KSLOC)表示,1個(gè)KSLOC包括編寫代碼行和注釋行,不包括空行;
E為規(guī)模影響系數(shù)。其中,B取值為0.91;SF為5個(gè)比例因子值。E的取值也與軟件類型有關(guān),COCOMO II(2000版)E值綜合取值為1.052;
EM為17個(gè)成本驅(qū)動(dòng)因子工作量乘數(shù)。
2.開(kāi)發(fā)進(jìn)度經(jīng)驗(yàn)公式
PM為工作量(人月);
C為常數(shù),COCOMO II(2000版)C值綜合取值為3.67;
F為進(jìn)度影響系數(shù)。其中,D為常數(shù),COCOMO II(2000版)D值為0.28;SF為5個(gè)比例因子值。F的取值也與軟件類型有關(guān),COCOMO II(2000版)F值綜合取值為0.3;
(四)功能點(diǎn)法確定軟件規(guī)模
在沒(méi)有類似開(kāi)發(fā)經(jīng)驗(yàn)的情況下,不能通過(guò)歷史數(shù)據(jù)對(duì)新開(kāi)發(fā)軟件規(guī)模(Size)進(jìn)行估算時(shí),就要通過(guò)功能點(diǎn)法對(duì)新開(kāi)發(fā)軟件規(guī)模進(jìn)行估算。
IFPUG(4.1版)是較成熟的FPA方法,IFPUG功能點(diǎn)估算方法原理為把擬開(kāi)發(fā)軟件/模塊劃分為外部輸入(EI)、外部輸出(EO)、外部查詢(EQ)、內(nèi)部邏輯文件(ILF)和外部接口文件(EIF)五類功能點(diǎn)。軟件規(guī)模與5個(gè)功能點(diǎn)數(shù)量、轉(zhuǎn)化系數(shù)以及編程語(yǔ)言系數(shù)有關(guān)。其中,每個(gè)功能點(diǎn)的數(shù)量由專家集體討論確定。
(一)首先根據(jù)需求分解軟件開(kāi)發(fā)任務(wù)為不同的子模塊。
(二)確定各軟件模塊的規(guī)模。根據(jù)是否具有開(kāi)發(fā)經(jīng)驗(yàn)編制成本驅(qū)動(dòng)乘數(shù)計(jì)算表(有開(kāi)發(fā)經(jīng)驗(yàn))和功能點(diǎn)法軟件規(guī)模測(cè)算表(無(wú)開(kāi)發(fā)經(jīng)驗(yàn))。
(三)組織各模塊項(xiàng)目團(tuán)隊(duì)填寫COCOMOII模型成本因子工作量乘數(shù)測(cè)算表及功能點(diǎn)法軟件規(guī)模測(cè)算表。
(四)根據(jù)COCOMO II模型計(jì)算工作量。
(五)專家組根據(jù)計(jì)算結(jié)果,優(yōu)化調(diào)整工作量。
(六)結(jié)合當(dāng)?shù)厝嗽缕骄袌?chǎng)價(jià)格估算軟件開(kāi)發(fā)費(fèi)用。
通過(guò)以上分析,我們可以看出本文介紹的方法中作為核心的指標(biāo)為軟件規(guī)模(Size)、成本驅(qū)動(dòng)因子(EMi)和比例因子(SFj)。下面以有類似開(kāi)發(fā)經(jīng)驗(yàn)和無(wú)類似開(kāi)發(fā)經(jīng)驗(yàn)項(xiàng)目為例對(duì)本估算方法進(jìn)行示范。
(一)有類似開(kāi)發(fā)經(jīng)驗(yàn)項(xiàng)目
1.確定軟件開(kāi)發(fā)規(guī)模
例如已經(jīng)開(kāi)發(fā)完成的某電子商務(wù)類軟件/模塊規(guī)模為10 KSLOC。
2.確定成本驅(qū)動(dòng)乘數(shù)
成本驅(qū)動(dòng)因子包括4類,17項(xiàng)因子,按照不同等級(jí)有不同的乘數(shù)與之對(duì)應(yīng)。
產(chǎn)品屬性工作乘數(shù)包括:軟件可靠性、數(shù)據(jù)庫(kù)規(guī)模、產(chǎn)品復(fù)雜性、復(fù)用性要求、文檔編制需求;
計(jì)算機(jī)屬性工作量乘數(shù)包括:執(zhí)行時(shí)間約束、主存儲(chǔ)約束、平臺(tái)易變性;
人員屬性工作量乘數(shù)包括:分析員能力、程序員能力、人員聯(lián)系性、應(yīng)用經(jīng)驗(yàn)、平臺(tái)經(jīng)驗(yàn)、語(yǔ)言和工具經(jīng)驗(yàn);
項(xiàng)目屬性和乘數(shù)包括:軟件工具使用、多點(diǎn)開(kāi)發(fā)、開(kāi)發(fā)進(jìn)度。
3.確定比例因子乘數(shù)
比例因子工作量乘數(shù)(∑SFj)確定的方法為擬建項(xiàng)目各因子求乘數(shù)求和,一般該乘數(shù)經(jīng)驗(yàn)值為14.2。
4.工作量及費(fèi)用估算
(二)無(wú)類似開(kāi)發(fā)經(jīng)驗(yàn)項(xiàng)目
1.確定軟件規(guī)模
在沒(méi)有開(kāi)發(fā)經(jīng)驗(yàn)的項(xiàng)目中就需要利用功能點(diǎn)法確定軟件規(guī)模,軟件規(guī)模的確定除與5類功能點(diǎn)的數(shù)量有關(guān)外,還與轉(zhuǎn)化乘數(shù)以及編程語(yǔ)言乘數(shù)有關(guān),如下所示。
轉(zhuǎn)化乘數(shù):外部輸入(EI)為4;外部輸出(EO)為5;外部查詢(EQ)為4;內(nèi)部邏輯文件(ILF)為10,;外部接口文件(EIF)為7。
編程語(yǔ)言乘數(shù):C++為53;Cobel為107;Delphi5為18;HTML4為14;Visual Basic6為24;SQL default為13;Java2為46。
2.工作量及費(fèi)用估算
把以上軟件開(kāi)發(fā)規(guī)模代入公式1中,得到擬開(kāi)發(fā)嵌入式軟件工作量為:2.58×6.621.052=18.84(人/月)。
把工作量以及相關(guān)參數(shù)代入公式2中,得到擬開(kāi)發(fā)嵌入式軟件/模塊進(jìn)度為:3.67×18.840.3=8.86(月)
假設(shè)當(dāng)?shù)亻_(kāi)發(fā)人員平均工資水平為10000元/月,那么擬開(kāi)發(fā)項(xiàng)目費(fèi)用為18.84萬(wàn)元。
本文針對(duì)在軟件項(xiàng)目前期咨詢和評(píng)審過(guò)程中遇到的問(wèn)題,提出了基于COCOMOII和功能點(diǎn)法的軟件開(kāi)發(fā)成本估算方法,為開(kāi)展以上咨詢工作提供的借鑒。但正如上文所述,軟件開(kāi)發(fā)成本估算的復(fù)雜性,決定了軟件開(kāi)發(fā)成本估算不可能一蹴而就,要想提高軟件估算的準(zhǔn)確性,必須更加客觀有效地對(duì)軟件開(kāi)發(fā)情況加以跟蹤和分析, 并從中得到有價(jià)值的信息,不斷改進(jìn)估算模型參數(shù),最終為決策部門提供參考。
參考文獻(xiàn):
[1]Barr y W.Bo ehm .So ftwa re Co st Estimatio n With COCOMOII[M] .China Machine Pre ss .2005.
[2]Boehm B W.軟件工程經(jīng)濟(jì)學(xué)[M] .李師賢等譯.北京:機(jī)械工業(yè)出版社, 2004.
[3]David Garmus, David Herron,功能點(diǎn)風(fēng)險(xiǎn)-成功軟件項(xiàng)目的測(cè)量實(shí)踐[M] .清華大學(xué)出版社, 2003.12.
[4]周海玲, 孫涌.關(guān)于基本COCOMO 模型參數(shù)校準(zhǔn)的探討[J].微電子學(xué)與計(jì)算機(jī), 2005,22(12):59-61.
[5]李明樹(shù), 何梅, 楊達(dá),等.軟件成本估算方法及應(yīng)用[J].Journal of Software, 2007,18(4):775 -795.