Walston-Felix模型和COCOMO Ⅱ模型
- 序言
- 一、Walston-Felix模型
- 1. 公式
- 2. 举例
- 二、COCOMO模型(Constructive Cost Model)
- 1. 模型定义
- 2. COCOMO模型的发展
- 3. COCOMO基本原理
- 三、COCOMO 81
- 1. 模型级别
- 2. 项目类型
- 3. 基本COCOMO-81
- (1)公式
- (2)系数表
- (3)举例
- 4. 中等COCOMO-81
- (1)公式
- (2)系数表
- (3)乘法因子的成本驱动属性
- (4)乘法因子的值
- (5)举例
- 5、高级(详细)COCOMO
- (1)定义
- (2)工作量乘数
- 四、COCOMO Ⅱ
- 1. COCOMO Ⅱ模型中项目估算的三个阶段
- 2. 基于COCOMO Ⅱ的计算
- (1)基本模型
- (2)对象点计算
- (3)案例计算
- 八、结束语
- 🛵专栏直通车
序言
在软件项目的成本计划中,有一个较为重要的环节是成本估算。那在下面的文章中,我们将讲解两种成本估算的模型: Walston-Felix
模型 和 COCOMO Ⅱ
模型。
下面开始进入本文的讲解~
一、Walston-Felix模型
1. 公式
1977年, IBM
的 Walston
和 Felix
提出了如下的估算公式:
- E = 5.2×(KLOC)0.91, KLOC是源代码行数,E是工作量(以PM计)
- D = 4.1×(KLOC)0.36,D是项目持续时间(以月计)
- S = 0.54×E0.6,S是人员需要量(以人计)
- DOC = 49×(KLOC)1.01 ,DOC是文档数量(以页计)
2. 举例
假设现有某项目,采用 java
语言完成。预估计该项目有 366
个功能点,那么
- L = 366×46 = 16386行 = 16.386 KLOC
- E = 5.2×(KLOC)0.91 = 5.2×16.3860.91= 66 人月
- DOC =49× (KLOC)1.01 = 49×16.3861.01 = 826 页
二、COCOMO模型(Constructive Cost Model)
1. 模型定义
- 结构化成本模型
- 是目前应用最广泛的参数型软件成本估计模型
- 由
Barry Boehm
团队开发的
2. COCOMO模型的发展
COCOMO模型经过两次发展,分别是:
- COCOMO 81
- COCOMO Ⅱ
3. COCOMO基本原理
将工作量表示为 KLOC
软件规模和一系列成本因子的函数,基本估算公式为:
PM=A×SE× ∏i=1nEMi\prod_{i=1}^n EM^i∏i=1nEMi
A
为可以校准的常量;
S
为KLOC软件规模;
E
为规模的指数,说明不同规模软件具有的相对规模经济和不经济性;
EM
为工作量乘数,反映某个项目特征对完成项目开发所需工作量的影响程度;
n
为描述软件项目特征的成本驱动因子的个数。
三、COCOMO 81
1. 模型级别
模型级别有三个等级,分别为:
级别 | 特点 |
---|---|
基本COCOMO | 静态单变量模型 |
中等COCOMO | 基本模型基础上考虑影响因素,调整模型 |
高级COCOMO | 中等COCOMO模型基础上考虑各个步骤的影响 |
2. 项目类型
项目类型有三种类型,分别为:
类型 | 特点 |
---|---|
有机 Organic | 各类应用程序,例如数据处理、科学计算等 |
受硬件的约束比较小,程序的规模不是很大 | |
嵌入式 Embedded | 受硬件的约束比较小,程序的规模不是很大 |
紧密联系的硬件、软件和操作的限制条件下运行,软件规模任意 | |
半有机 Semidetached | 各类实用程序,介于上述两种软件之间,例如编译器(程序) |
规模和复杂度都属于中等或者更高 |
3. 基本COCOMO-81
(1)公式
E= a × (KLOC)b ,其中:
- E:工作量(人月)
- KLOC:是交付的代码行
- a , b:依赖于项目自然属性的系数
(2)系数表
方式 | a | b |
---|---|---|
有机 | 2.4 | 1.05 |
半有机 | 3.0 | 1.12 |
嵌入式 | 3.6 | 1.2 |
(3)举例
假设现在有一个 33.3 KLOC 的软件开发项目,属于中等规模、半有机型的项目,采用基本COCOMO来开发。请计算出E值。
解: 依据以上题意可得:a=3.0,b=1.12。
因此,最终 E = 3.0 × L 1.12 = 3.0 × 33.3 1.12 = 152 PM
4. 中等COCOMO-81
(1)公式
E= a × (KLOC)b × 乘法因子,其中:
- a、b是系数
- 乘法因子是对公式的校正系数
(2)系数表
方式 | a | b |
---|---|---|
有机 | 2.8 | 1.05 |
半有机 | 3.0 | 1.12 |
嵌入式 | 3.2 | 1.2 |
(3)乘法因子的成本驱动属性
包含四种类型,分别是:
- 产品属性 → ①软件可靠性、②软件复杂性、③数据库规模
- 平台属性 → ④程序执行时间、⑤程序占用内存的大小、⑥软件开发环境的变化、⑦软件开发环境的响应速度
- 人员属性 → ⑧分析员的能力、⑨程序员的能力、⑩有关应用领域的经验、⑩①开发环境的经验、⑩②程序设计语言的经验
- 过程属性 → ⑩③软件开发方法的能力、⑩④软件工具的质量和数量、⑩⑤软件开发的进度要求
(4)乘法因子的值
上面四种属性共15个要素,每个要素的调节因子是 Fi (i=1,2,…,15),其中,Fi 的值有:
很低、低、正常、高、很高、极高,共六个等级。正常情况下 Fi=1。
Boehm推荐的Fi 值范围分别为:(0.70, 0.85, 1.00, 1.15, 1.30, 1.65) 。
但实际的值依据下表所示:
当15个 Fi 的值选定后,乘法因子 EAF
的计算为:EAF=F1 × F2 × … × F15 。
调节因子集的定义和调节因子定值是由统计结果和经验决定的。不同的软件开发组织,在不同的历史时期,随着环境的变化,这些数据可能改变。
(5)举例
现有一个 33.3 KLOC 的软件开发项目,属于中等规模、半有机型的项目,采用中等COCOMO模型来开发。且该项目的乘法因子为 0.70 × 0.85 × 1 × … × 1.15 = 1.09
,请计算出E值。
解: 依据以上题意可得:a=3.0,b=1.12;
乘法因子为 0.70 × 0.85 × 1 × … × 1.15 = 1.09 ;
因此,最终 E = 3.0 × L 1.12 = 3.0 × 33.3 1.12 × 1.09 = 166 PM
5、高级(详细)COCOMO
(1)定义
- 将项目分解为一些列的子系统或者子模型
- 更加精确地调整一个模型的属性
(2)工作量乘数
下表给出关于高级COCOMO 81工作量乘数的阶段差异性示例,如下所示:
Cost drivers | Development phase | Rating levels | |||||
---|---|---|---|---|---|---|---|
Very low | Low | Norminal | High | Very high | Extra high | ||
RPD(requirement and product design) | 1.40 | 1.20 | 1.00 | 0.87 | 0.75 | … | |
AEXP | DD(detailed design) | 1.30 | 1.15 | 1.00 | 0.90 | 0.80 | … |
CUT(code and unit test) | 1.25 | 1.10 | 1.00 | 0.92 | 0.85 | … | |
IT(integration and test) | 1.25 | 1.10 | 1.00 | 0.92 | 0.85 | … |
四、COCOMO Ⅱ
1. COCOMO Ⅱ模型中项目估算的三个阶段
模型 | 阶段 | 时间 | 功能描述(此阶段要做什么) |
---|---|---|---|
应用组装模型(Application Composition) | 规划阶段 | 早期、确定系统性能时 | ①利用应用点application point来进行估算规模;②利用原型来解决高风险问题。 |
早期设计模型(early design) | 设计阶段 | 需求稳定,体系结构已建立时 | ①研究可选的体系结构和概念;②用功能点funtion point来做估算规模。 |
后体系结构模型(post architecture) | 开发阶段 | 软件在构造中,知道更多系统信息时 | ①以FP、LOC作为估算单位。 |
补充说明应用点知识:
应用点,即对象点。一种间接的软件测量,其计算需要使用以下三个元素:
- 用户界面上的屏幕数screens;
- 报表数reports;
- 建造应用可能需要的构件数3GLcomponents。
2. 基于COCOMO Ⅱ的计算
(1)基本模型
基本模型的公式为:E=bSCm(X)
(2)对象点计算
在应用组装阶段,计算对象点:
- ①计算屏幕数、报表数和构件;
- ②对每一个对象点,按照简单、中等、困难三个等级进行分类;
- ③得到简单、中等、困难三种类型对应的对象点数目的复杂度加权;
- ④计算对象点OP,即∑(三个计算值×加权因子);
- ⑤如果 r% 的对象点来自以前项目的重用,则新对象点为:NOP=OP×100−r100\frac{100-r}{100}100100−r ,即NOP=OP×(1-复用度);
- ⑥查表得到生产率参数的值PROD;
- ⑦工作量E=NOP/PROD;
- ⑧给出一个历史数据:人工价(元/PM);
- ⑨成本=E×人工价。
以下给出对象点和 PROD 的具体数值表:
图 不同类型对象的复杂度加权
复杂度加权 | |||
---|---|---|---|
对象类型 | 简单 | 中等 | 困难 |
屏幕 | 1 | 2 | 3 |
报表 | 2 | 5 | 8 |
3GL构件 | 10 |
图 不同水平的开发者经验和不同开发环境成熟度下的生产率
因素 | 影响 | ||||
---|---|---|---|---|---|
开发者的经验/能力 | 非常低 | 低 | 正常 | 高 | 非常高 |
环境成熟度/能力 | 非常低 | 低 | 正常 | 高 | 非常高 |
PROD | 4 | 7 | 13 | 25 | 50 |
(3)案例计算
Question:
使用COCOMO II模型来估算构造一个简单的ATM软件所需的工作量和人工成本(单位分别是人月和元),该软件产生11个屏幕(有3个简单,3个中等,5个困难),10个报表(有4个简单,6个困难),72个构件,复用度为20%,假设开发者的经验能力为高,环境的成熟度能力为低,劳动力价格为5000元/PM。则NOP、生产率能力PROD、工作量E和人工成本C分别为多少。写出计算公式及计算过程。
Answer:
八、结束语
到这里,我们讲解了项目管理中的两种成本估算模型。一种是 Walaton-Felix
模型,另一种是 COCOMO Ⅱ
模型。
关于本文的介绍到这里就结束啦!希望对大家有帮助~
如果您觉得这篇文章有帮助到您的的话不妨点赞支持一下哟~~😉
🛵专栏直通车
软件项目管理👉https://juejin.cn/column/7024826582841688077