软件开发成本估算的经验模型
1、静态单变量模型
Effort = f (length of code)
基于LOC/FP
(代码行—LOC / KLOC 人月-PM)
* 如IBM模型
E = 5.2×L0.91
D = 4.1×L0.36 = 14.47×E0.35
S = 0.54×E0.6
DOC = 49×L1.01
* L 是源代码行数(KLOC),E 是工作量(PM),D 是项目持续时间(月),S 是人员需要量(人),DOC是文档数量(页)。
- IBM模型是基于KLOC的静态单变量模型。
- 一般指一条机器指令为一行源代码。
- 一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。
- 对于非机器指令编写的源程序,例如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。
- 定义: 转换系数=机器指令条数/非机器语言执行步数。
转换系数表
2、动态多变量模型
Effort = f (time) 也与程序长度有关
- Putnam模型是一种动态多变量模型。适用于大型项目,但也可以应用在一些较小的软件项目中。
- 它是假定在软件开发的整个生存期中工作量有特定的分布。
- 大型软件项目的开发工作量分布可以用Rayleigh-Norden曲线表示。
- 这个曲线把已交付的源代码行数与工作量和开发时间联系起来。
-用Rayleigh-Norden曲线可以导出一个“软件方程”
L=Ck∗K1/3∗td4/3
-td 是开发持续时间(年), K是软件开发与维护在内的整个生存期所花费的工作量(人年),L是源代码行数(LOC),Ck是技术状态常数,因开发环境而异。
技术状态常数Ck的取值
3、标准值法(Expert Judgment)
请多位专家估算程序的最小规模 a ,最可能的规模 m,和最大规模 b 。以三组平均值估算程序规模:
然后根据标准生产率(standard productivity),即每人每月可开发程序长度,来估算工作量:
这里C为修正系数,反映其它因素对开发工作量的影响.
15种影响软件工作量的因素 fi
- 产品因素:软件可靠性、数据库规模、产品复杂性
- 硬件因素:执行时间限制、存储限制、虚拟机易变性、环境周转时间
- 人的因素:分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验
- 项目因素:现代程序设计技术、软件工具的使用、开发进度限制
欢迎关注我的微信个人订阅号
每天多学一点0.0