由经验导出的公式,估算工作量,是软件规模(KLOC或FP)的函数,单位通常是人月。没有一个估算模型可以适用所有类型的软件和开发环境
主要有三种方式:
- 静态单变量模型
- 动态多变量模型
- COCOMO2模型
一、静态单变量模型
总体结构:E=A+B×(ev)C
其中ABC是经验得到的常数,E是人月单位的工作量,ev是估算变量(代码行或者功能点)
经典模型:
1.面向千代码行的估算模型(KLOC)
- Walston_Felix:E=5.2×(KLOC)0.91
- Bailey_Basili:E=5.5+0.73×(KLOC)1.16
- Boehm:E=3.2×(KLOC)1.05
- Doty(KLOC>9适用):E=5.288×(KLOC)1.047
2.面向功能点的估算模型(FP)
- Albrecht&Gaffney:E=-13.39+0.0545FP
- Maston,Barnett,Mellichamp:E=585.7+15.12FP
二、动态多变量模型
也称为软件方程式,是经验总结:E=(LOC×B0.333/P)×(1/t)4
E是人月或人年为单位工作量
t是月或年为单位的项目持续时间
B是特殊技术因子,随着测试、质量保证、文档及管理技术的需求增加而缓慢增加。对于较小的程序(KLOC=5~15),B=0.16,对于超过70KLOC的,B=0.39
P是生产率参数,从历史数据中得到,反映了以下因素对于工作量影响:
- 过程成熟度及管理水平
- 使用良好的软件工程实践的程度
- 使用的程序设计语言的级别
- 使用的软件工程环境的状态
- 软件项目组的技术和经验
- 应用系统的复杂程度
三、COCOMO2模型(构造成本模型)
三个层次:
- 应用系统组成模型:用于估算构建原型的工作量
- 早期设计模型:体系结构设计阶段
- 后体系结构模型:适用于完成体系结构设计之后的软件开发阶段
后体系结构模型:E=a×KLOCb ×(1-17累乘fi)
a是模型系数
KLOC是估计的源代码行数
b是模型指数
fi是成本因素:分为产品因素、平台因素、人员因素、项目因素
b分级模型:b=1.01+0.01×(1-5累加Wi)
五个分级因素是:
- 项目先例性
- 开发灵活性
- 风险排除性
- 项目组凝聚力
- 过程成熟度