目前,有三种基本的软件项目成本估算方法:自顶向下、自底向上和差别估算法。自顶向下的方法是对整个项目的总开发时间和总工作量做出估算,然后把它们按阶段、步骤和工作单元进行分配;自底向上的方法是分别估算个工作单元所需的开发时间,然后汇总得出总的工作量和开发时间;差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找出与某个类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。
专家估算法
专家估算法是依靠一个或多个专家对项目做出估计,它要求专家具有专门知识和丰富的经验,是一种近似的猜测。Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来,新技术与特定程序之间的差别,但专家"专"的程度及对项目的理解程度是工作中的难点,尽管Delphi技术可以减轻这种偏差,专家评估技术在评定一个新软件实际成本时通常用得不多,但是,这种方式对决定其它模型的输入时特别有用。Delphi法鼓励参加者就问题相互讨论,要求有多种软件相关经验人的参与,互相说服对方。
类推估算法
类推估算法是比较科学的一种传统估算方法,它适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目,通过新项目与历史项目的比较得到规模估计。类推估算法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类推估算法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。
这种方法的基本步骤是:
(1) 整理出项目功能列表和实现每个功能的代码行;
(2) 标识出每个功能列表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方;
(3) 通过步骤1和2得出各个功能的估计值;
(4) 产生规模估计。
算式估算法
算式估算法利用经验模型进行成本估算,它通常采用经验公式来预测软件项目计划所需要的成本、工作量和进度数据。目前还没有一种估算模型能够适用于所有的软件类型和开发环境,从这些模型中得到的结果必须慎重使用。
(1) Putnam模型
Putnam模型是一种动态多变量模型,它是假定软件开发的整个生存期中工作量的分布,如一个30人年以上的项目,其人力使用分布如图7.3所示。
然后根据曲线导出一个估算公式:
(2) COCOMO模型
结构性成本模型COCOMO(COnstructive COst MOdel)是一种精确的、易于使用的成本估算方法,它分为基本COCOMO模型和中级COCOMO模型两种类型。基本COCOMO模型是一个静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的经验函数来计算软件开发工作量。中间COCOMO模型则在用LOC为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。更详细的COCOMO模型除了包括中间COCOMO模型的所有特性外,还考虑了在需求分析、软件设计等每一步的影响。
* 基本COCOMO模型估算公式
E=ab(KLOC)exp(bb)
D=cb(E)exp(db)
其中,E为开发所需的人力(人月),D为所需的开发时间(月),KLOC为估计提交的代码行,ab、bb、cb和db为不同软件开发方式的值,见下表。
方式
|
ab
|
bb
|
cb
|
db
|
组织型
|
2.4 |
1.05 |
2.5 |
0.38 |
半独立型
|
3.0 |
1.12 |
2.5 |
0.35 |
嵌入型
|
3.6 |
1.2 |
2.5 |
0.32 |
由以上公式可以导出生产率和所需人数的公式:
生产率=(KLOC)/E(代码行/人月)
人数=E/D
* 中级COCOMO模型估算公式
中级COCOMO模型先产生一个基本COCOMO模型一样形式的估算公式,然后对15个成本驱动属性打分,定出乘法因子,对公式进行修正。
15个影响软件工作量的因素见下表:
工作量因素fi
|
非常低
|
低
|
正常
|
高
|
非常高
|
超高
|
产品因素 |
软件可靠性
数据库规模
产品复杂性 |
0.75 |
0.88 |
1.00 |
1.15 |
1.40 |
|
|
0.94 |
1.00 |
1.08 |
1.16 |
|
0.70 |
0.85 |
1.00 |
1.15 |
1.30 |
1.65 |
计算机因素 |
执行时间限制
存储限制
虚拟机易变性
环境周转时间 |
|
0.87
0.87 |
1.00
1.00
1.00
1.00 |
1.11
1.06
1.15
1.07 |
1.30
1.21
1.30
1.15 |
1.66
1.56
|
人的因素 |
分析员能力
应用论域实际经验
程序员能力
虚拟机使用经验
程序语言使用经验 |
1.29
1.42
1.21
1.41 |
1.46
1.13
1.17
1.10
1.07
|
1.00
1.00
1.00
1.00
1.00 |
0.86
0.91
0.86
0.90
0.95
|
0.71
0.82
0.70 |
|
项目因素 |
现代程序设计技术
软件工具的使用
开发进度限制 |
1.24
1.24
1.23 |
1.10
1.10
1.08 |
1.00
1.00
1.00 |
0.91
0.91
1.04 |
0.82
0.83
1.10 |
|
中级COCOMO模型的估算公式:
E=ai(KLOC)exp(bi)×乘法因子
其中ai和bi的值见下表。
方式 |
ai |
bi |
组织型 |
3.2 |
1.05 |
半独立型 |
3.0 |
1.12 |
嵌入型 |
2.8 |
1.2 |
(3) IBM模型
1977年,Walston和Felix总结了IBM的60个项目数据,提出了如下的估算公式:
E=5.2×L0.91, L是源代码行数(以KLOC计),E是工作量(以PM计)
D=4.1×L0.36=2.4×E0.35, D是项目持续时间(以月计)
S=0.54×E0.6, S是人员需要量(以人计)
DOC=49×L1.01, DOC是文档数量(以页计)
|