一、静态单变量模型
总体结构形式如下:
E = A + B × (ev) C
其中,A、B和C是由经验数据导出的常数,E是以人月为单位的工作量,ev是估算变量(KLOC或FP)。
1. 面向KLOC的估算模型
(1)Walston_Felix模型
E=5.2×(KLOC)0.91
(2)Bailey_Basili模型
E=5.5+0.73×(KLOC)1.16
(3)Boehm简单模型
E=3.2×(KLOC)1.05
(4)Doty模型(在KLOC>9时适用)
E=5.288×(KLOC)1.047
2. 面向FP的估算模型
(1)Albrecht & Gaffney模型
E=-13.39+0.0545FP
(2)Maston,Barnett和Mellichamp模型
E=585.7+15.12FP
二、动态多变量模型
动态多变量模型也称为软件方程式,该模型把工作量看作是软件规模和开发时间这两个变量的函数。
动态多变量估算模型的形式如下:
E=(LOC×B0.333/P)3×(1/t)4
其中E 是以人月或人年为单位的工作量;t 是以月或年为单位的项目持续时间;B 是特殊技术因子,它随着对测试、质量保证、文档及管理技术的需求的增加而缓慢增加,对于较小的程序(KLOC=5~15),B=0.16,对于超过70 KLOC的程序,B=0.39;
P是生产率参数,它反映了下述因素对工作量的影响:
■总体过程成熟度及管理水平;
■使用良好的软件工程实践的程度;
■使用的程序设计语言的级别;
■软件环境的状态;
■软件项目组的技术及经验;
■应用系统的复杂程度。
开发实时嵌入式软件时,P的典型值为2000;开发电信系统和系统软件时,P=10000;对于商业应用系统来说,P=28000。可以从历史数据导出适用于当前项目的生产率参数值。
三、COCOMO2模型
COCOMO是构造性成本模型(constructive cost model)的英文缩写。
1981年Boehm在《软件工程经济学》中首次提出了COCOMO模型。
1997年Boehm等人提出的COCOMO2模型,是原始的COCOMO模型的修订版,它反映了十多年来在成本估计方面所积累的经验。
COCOMO2给出了3个层次的软件开发工作量估算模型,这3个层次的模型在估算工作量时,对软件细节考虑的详尽程度逐级增加。
3个层次的估算模型分别是:
应用系统组成模型:这个模型主要用于估算构建原型的工作量,模型名字暗示在构建原型时大量使用已有的构件。
早期设计模型:这个模型适用于体系结构设计阶段。
后体系结构模型:这个模型适用于完成体系结构设计之后的软件开发阶段。
该模型把软件开发工作量表示成代码行数(KLOC)的非线性函数:

其中,E是开发工作量(以人月为单位),a是模型系数,KLOC是估计的源代码行数,b是模型指数,fi (i=1~17)是成本因素。
每个成本因素都根据它的重要程度和对工作量影响大小被赋予一定数值(称为工作量系数)。
与原始的COCOMO模型相比,COCOMO2模型使用的成本因素有下述变化。
■新增加了4个成本因素,它们分别是要求的可重用性、需要的文档量、人员连续性(即人员稳定程度)和多地点开发。
■略去了原始模型中的2个成本因素(计算机切换时间和使用现代程序设计实践)。
■某些成本因素(分析员能力、平台经验、语言和工具经验)对生产率的影响(即工作量系数最大值与最小值的比率)增加了,另一些成本因素(程序员能力)的影响减小了。
为了确定工作量方程中模型指数b的值,COCOMO2采用了更加精细得多的b分级模型,这个模型使用5个分级因素Wi(1≤i≤5),其中每个因素都划分成从甚低(Wi=5)到特高(Wi=0)的6个级别,然后用下式计算b的数值:

因此,b的取值范围为1.01~1.26。显然,这种分级模式比原始COCOMO模型的分级模式更精细、更灵活。
COCOMO2使用的5个分级因素如下所述:
项目先例性:这个分级因素指出,对于开发组织来说该项目的新奇程度。
开发灵活性:这个分级因素反映出,为了实现预先确定的外部接口需求及为了及早开发出产品而需要增加的工作量。
风险排除度:这个分级因素反映了重大风险已被消除的比例。
项目组凝聚力:这个分级因素表明了开发人员相互协作时可能存在的困难。
过程成熟度:这个分级因素反映了按照能力成熟度模型度量出的项目组织的过程成熟度。

