APP下载

软件开发项目成本估算方法应用与实践

2016-04-26刘振光1罗志恒2李红昌31中国中元国际工程有限公司2中国机械工业集团有限公司3北京交通大学

消费导刊 2016年3期
关键词:乘数工作量规模

刘振光1 罗志恒2 李红昌31.中国中元国际工程有限公司 2中国机械工业集团有限公司 3北京交通大学



软件开发项目成本估算方法应用与实践

刘振光1罗志恒2李红昌3
1.中国中元国际工程有限公司2中国机械工业集团有限公司3北京交通大学

摘要:软件开发项目成本估算是软件项目管理的关键所在,本文结合实例提出了基于COCOMOII和功能点法(FPA)软件项目估算方法,在软件开发项目前期咨询报告的编制和评审方面具有实用价值。

关键词:COCOMOII功能点法开发规模成本驱动因子比例因子

由于工作原因,笔者参与了一些国家大科学装置项目前期咨询报告编制和评审工作,在投资组成中软件编制费占较大比例,金额多的可以达到数亿元,最为棘手的就是软件开发项目的成本估算。与一般建设工程项目相比软件开发项目具有开发需求可变性强,设计和开发往往同时进行,缺少相应定额标准等特点,这就导致了软件开发成本估算难度非常之高,尤其对于一些大型复杂,需要多个项目团队协作完成的软件开发项目更是如此。以往软件开发成本估算多是基于经验,而本文尝试结合当今国际上较为流行的COCOMOII和功能点法(FPA)为软件开发项目前期咨询报告的编制和评审工作提供借鉴。

一、模型的提出

(一) COCOMO模型

COCOMO模型是当今世界上应用最广泛的软件成本估算模型。1981年,Barry Boehm教授在其著作《软件工程经济学》(Software Engineering Economics)中发表了早期的构造性成本模型COCOM0 (Constructive Cost Model)模型,标志着COCOMO的产生。早期的COCOMO是基于瀑布式开发的静态单变量模型,它用一个以已交付的源指令行数为自变量的经验函数计算软件开发工作量。

后来为适应软件开发在生命周期、技术、组件和技术等方面的快速发展,Bochm和南加州大学USC软件工程中心不断对COCOMO(81版)模型进行了改进和优化,于1997年发布了COCOMO II模型,并分别于1998、1999、2000年发布了COCOMO II的校正版。之后世界各国开始使用该模型,该模型以其较好的可操作性和估算的相对准确性得到业内的认可,目前是世界上应用最广泛的软件成本估算模型。

(二)功能点法

COCOMO模型要求有类似软件开发的经验方能较准确的估计将开发软件的规模,但对于首次开发的软件的规模很难估计,功能点法恰恰可以弥补COCOMO模型的不足。FPA(Function Point Analysis)即功能点法,是Albrecht于1979年提出来的,该方法是第一个从系统功能的角度来度量软件规模的方法。由于该法能在早期度量软件的规模,很多组织纷纷采用了该方法。1984年,出现了一个称为“国际功能点用户组” (IFPUG,International Function Point Users Group)的非赢利性联盟,继承和发展了这种方法。最早使用这种方法进行软件规模测算的是IBM公司,使得这种估算方法迅速流行起来。目前有四种FPA方法已经被国际标准组织(ISO)接受成为国际标准测算方法。

本文提出采用COCOMO II(2000版)结合国际标准IFPUG(4.1版)对软件开发成本进行估算。

二、模型的使用

本文中介绍的软件工程量估算方法以COCOMO II模型为主,主要用于估算软件开发工作量。功能点法作为辅助方法,主要用于没有开发经验的软件规模(size)的确定。

(一)模型构成

COCOMOII是对大量已开发项目进行统计分析后得到的经验模型,该模型主要由一个核心指标(软件规模size)和两个因子(比例因子和成本驱动因子)组成。其中,软件规模以千行代码(KSLOC)表示;比例因子包括5个子因子,成本驱动因子包括17个子因子。详见下文。

(二)计量标准

在COCOMOII中,工作量用人月(person—months,PM)表示,即一个人完成该项目需要的时间(月)。一个人月的标准值为152小时。

人月数不同于完成项目要花费时间,开发项目所花费的时间称之为开发进度(Time to Develop,TDEV)。

(三)计量公式

1.工作量计量公式

A为常数,该数值的取值与软件开发类型有关。如嵌入软件取值为2.58,电子商务软件取值3.6,Web开发取值3.3,军事开发取值2.77等。COCOMO II(2000版)模型中A值综合取值为2.94;

Size为类似软件开发的规模,用千行代码(KSLOC)表示,1个KSLOC包括编写代码行和注释行,不包括空行;

E为规模影响系数。其中,B取值为0.91;SF为5个比例因子值。E的取值也与软件类型有关,COCOMO II(2000版)E值综合取值为1.052;

EM为17个成本驱动因子工作量乘数。

2.开发进度经验公式

PM为工作量(人月);

C为常数,COCOMO II(2000版)C值综合取值为3.67;

F为进度影响系数。其中,D为常数,COCOMO II(2000版)D值为0.28;SF为5个比例因子值。F的取值也与软件类型有关,COCOMO II(2000版)F值综合取值为0.3;

(四)功能点法确定软件规模

在没有类似开发经验的情况下,不能通过历史数据对新开发软件规模(Size)进行估算时,就要通过功能点法对新开发软件规模进行估算。

IFPUG(4.1版)是较成熟的FPA方法,IFPUG功能点估算方法原理为把拟开发软件/模块划分为外部输入(EI)、外部输出(EO)、外部查询(EQ)、内部逻辑文件(ILF)和外部接口文件(EIF)五类功能点。软件规模与5个功能点数量、转化系数以及编程语言系数有关。其中,每个功能点的数量由专家集体讨论确定。

三、估算流程

(一)首先根据需求分解软件开发任务为不同的子模块。

(二)确定各软件模块的规模。根据是否具有开发经验编制成本驱动乘数计算表(有开发经验)和功能点法软件规模测算表(无开发经验)。

(三)组织各模块项目团队填写COCOMOII模型成本因子工作量乘数测算表及功能点法软件规模测算表。

(四)根据COCOMO II模型计算工作量。

(五)专家组根据计算结果,优化调整工作量。

(六)结合当地人月平均市场价格估算软件开发费用。

四、操作范例

通过以上分析,我们可以看出本文介绍的方法中作为核心的指标为软件规模(Size)、成本驱动因子(EMi)和比例因子(SFj)。下面以有类似开发经验和无类似开发经验项目为例对本估算方法进行示范。

(一)有类似开发经验项目

1.确定软件开发规模

例如已经开发完成的某电子商务类软件/模块规模为10 KSLOC。

2.确定成本驱动乘数

成本驱动因子包括4类,17项因子,按照不同等级有不同的乘数与之对应。

产品属性工作乘数包括:软件可靠性、数据库规模、产品复杂性、复用性要求、文档编制需求;

计算机属性工作量乘数包括:执行时间约束、主存储约束、平台易变性;

人员属性工作量乘数包括:分析员能力、程序员能力、人员联系性、应用经验、平台经验、语言和工具经验;

项目属性和乘数包括:软件工具使用、多点开发、开发进度。

3.确定比例因子乘数

比例因子工作量乘数(∑SFj)确定的方法为拟建项目各因子求乘数求和,一般该乘数经验值为14.2。

4.工作量及费用估算

(二)无类似开发经验项目

1.确定软件规模

在没有开发经验的项目中就需要利用功能点法确定软件规模,软件规模的确定除与5类功能点的数量有关外,还与转化乘数以及编程语言乘数有关,如下所示。

转化乘数:外部输入(EI)为4;外部输出(EO)为5;外部查询(EQ)为4;内部逻辑文件(ILF)为10,;外部接口文件(EIF)为7。

编程语言乘数:C++为53;Cobel为107;Delphi5为18;HTML4为14;Visual Basic6为24;SQL default为13;Java2为46。

2.工作量及费用估算

把以上软件开发规模代入公式1中,得到拟开发嵌入式软件工作量为:2.58×6.621.052=18.84(人/月)。

把工作量以及相关参数代入公式2中,得到拟开发嵌入式软件/模块进度为:3.67×18.840.3=8.86(月)

假设当地开发人员平均工资水平为10000元/月,那么拟开发项目费用为18.84万元。

五、结论

本文针对在软件项目前期咨询和评审过程中遇到的问题,提出了基于COCOMOII和功能点法的软件开发成本估算方法,为开展以上咨询工作提供的借鉴。但正如上文所述,软件开发成本估算的复杂性,决定了软件开发成本估算不可能一蹴而就,要想提高软件估算的准确性,必须更加客观有效地对软件开发情况加以跟踪和分析, 并从中得到有价值的信息,不断改进估算模型参数,最终为决策部门提供参考。

参考文献:

[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.软件工程经济学[M] .李师贤等译.北京:机械工业出版社, 2004.

[3]David Garmus, David Herron,功能点风险-成功软件项目的测量实践[M] .清华大学出版社, 2003.12.

[4]周海玲, 孙涌.关于基本COCOMO 模型参数校准的探讨[J].微电子学与计算机, 2005,22(12):59-61.

[5]李明树, 何梅, 杨达,等.软件成本估算方法及应用[J].Journal of Software, 2007,18(4):775 -795.

猜你喜欢

乘数工作量规模
50亿元!目前规模最大的乡村振兴债券发行
应用地表覆盖数据估算LiDAR内业工作量的方法研究
看错了数字
规模之殇
Mentor Grpahics宣布推出规模可达15BG的Veloce Strato平台
一个兼顾教学科研的高校教师绩效考核模型及其应用
思科发布云计算市场发展报告
理性认知西藏投资乘数小于1问题:以1996—2014年为例
寻找突破角巧解算式谜
网上互动教学工作量管理的困境及对策