什么是COCOMO模型(图文详解————)

Boehm在1981年提出了COCOMO(建设性成本估算模型)。COCOMO是世界上最常用的软件估算模型之一。 COCOMO根据软件的大小预测软件产品的工作量和进度。
此模型中的必要步骤是:

  1. 通过评估成千上万的源代码行(KDLOC)获得开发工作的初步估计。
  2. 从项目的各种属性中确定一组15个乘数。
  3. 通过将初始估算值乘以所有乘数来计算工作量估算值, 即, 将步骤1和步骤2中的值相乘。
初始估算值(也称为名义估算值)由静态单变量模型中使用的形式的方程式确定, 并使用KDLOC作为尺寸的度量。为了确定以人/月为单位的初始工作量Ei, 使用的等式如下所示
Ei = a *(KDLOC)b
常数a和b的值取决于项目类型。
在COCOMO中, 项目分为三种类型:
  1. 有机
  2. 半独立式
  3. 嵌入式的
1.Organic:如果一个开发项目涉及开发一个易于理解的应用程序, 则该开发项目可以视为有机类型, 开发团队的规模相当小, 并且团队成员具有开发类似项目方法的经验。这类项目的示例是简单的业务系统, 简单的库存管理系统和数据处理系统。
2.半独立式:如果开发项目由经验丰富和缺乏经验的人员组成, 则可以将其视为半独立式项目。团队成员可能在相关系统方面经验有限, 但可能不熟悉所开发订单的某些方面。半独立系统的示例包括开发新的操作系统(OS), 数据库管理系统(DBMS)和复杂的库存管理系统。
3.嵌入式:如果正在开发的软件与复杂的硬件紧密耦合, 或者存在关于操作方法的严格规定, 则将开发项目视为嵌入式类型。例如:ATM, 空中交通管制。
对于三个产品类别, Bohem提供了一组不同的表达式来预测工作量(以人月为单位)和开发时间(根据KLOC(基洛代码行)的估计大小), 工作量估计考虑了由于假期导致的生产力损失, 每周休息, 喝咖啡休息时间等。
Boehm认为, 软件成本估算应分三个阶段进行:
  1. 基本型号
  2. 中间模型
  3. 详细模型
1.基本的COCOMO模型:基本的COCOMO模型提供了准确的项目参数大小。以下表达式给出了基本的COMOSO估计模型:
努力= a1 *(KLOC)a2 PM
Tdev = b1 *(努力)b2个月
其中
KLOC是在Kilo Lines of Code中表示的软件产品的估计大小,
a1, a2, b1, b2是每组软件产品的常量,
Tdev是开发该软件的估计时间, 以月为单位,
努力是开发软件产品所需的总努力, 以人月(PM)表示。
估算开发工作量
对于这三类软件产品, 下面显示了根据代码大小估算工作量的公式:
有机:努力= 2.4(KLOC)下午1.05
半独立:努力= 3.0(KLOC)1.12 PM
嵌入式:努力= 3.6(KLOC)1.20 PM
估计开发时间
对于这三类软件产品, 下面给出了基于工作量估算开发时间的公式:
有机:Tdev = 2.5(努力)0.38个月
半独立式:Tdev = 2.5(努力)0.35个月
嵌入式:Tdev = 2.5(努力)0.32个月
通过绘制不同软件大小的估计特征, 可以获得对基本COCOMO模型的一些了解。图中显示了估算的工作量与产品尺寸的关系图。从无花果中可以看出, 这种努力在软件产品的大小上有些繁琐。因此, 开发产品所需的工作量随项目规模的增加而迅速增加。
什么是COCOMO模型(图文详解————)

文章图片
在KLOC中, 开发时间与产品尺寸的关系图如图2所示。从图可以看出, 显影时间是产品尺寸的次线性函数, 即, 当产品尺寸增加两倍时, 产品显影时间不会增加一倍, 而会适度增加。这可以通过以下事实来解释:对于较大的产品, 可以识别可以同时执行的大量活动。并行活动可以由工程师同时进行。这减少了完成项目的时间。此外, 从图可以看出, 所有三类产品的开发时间大致相同。例如, 一个60 KLOC程序可以在大约18个月内开发, 无论它是有机, 半分离还是嵌入式类型。
什么是COCOMO模型(图文详解————)

文章图片
从工作量估算中, 可以通过将所需工作量乘以每月的人力成本来获得项目成本。但是, 在此项目成本计算中隐含一个假设, 即整个项目成本仅凭人力成本就产生了。除了人力成本外, 由于项目所需的硬件和软件以及公司的管理, 办公空间等开销, 项目还会产生成本。
重要的是要注意, 使用COCOMO模型获得的工作量和工期估算被称为名义工时估算和名义工时估算。 “ 名义” 一词意味着, 如果有人试图在比预计的工期短的时间内完成项目, 那么成本将急剧增加。但是, 如果有人在比预计的时间更长的时间内完成了项目, 则估计的成本值几乎不会减少。
例1:假设一个项目估计为400 KLOC。计算三种模型(即有机模型, 半分离模型和嵌入式模型)中每种模型的工作量和开发时间。
解决方案:基本的COCOMO方程采用以下形式:
努力= a1 *(KLOC)a2 PM
Tdev = b1 *(努力)b2个月
项目估计规模= 400 KLOC
(i)有机模式
E = 2.4 *(400)1.05 = 1295.31 PM
D = 2.5 *(1295.31)0.38 = 38.07 PM
(ii)半独立模式
E = 3.0 *(400)1.12 = 2462.79 PM
D = 2.5 *(2462.79)0.35 = 38.45 PM
(iii)嵌入式模式
E = 3.6 *(400)1.20 = 4772.81 PM
D = 2.5 *(4772.8)0.32 = 38下午
示例2:将开发一个200 KLOC的项目。软件开发团队在类似项目上具有平均经验。项目进度不是很紧。计算工作量, 开发时间, 平均员工人数和项目生产率。
解决方案:半分离模式是最合适的模式, 要考虑开发时间的大小, 进度和经验。
因此E = 3.0(200)1.12 = 1133.12PM
D = 2.5(1133.12)0.35 = 29.3PM
什么是COCOMO模型(图文详解————)

文章图片
P = 176 LOC /下午
2.中间模型:基本的Cocomo模型认为工作量仅是代码行数和根据各种软件系统计算出的一些常数的函数。中间COCOMO模型可以识别这些事实, 并根据软件工程的各种属性, 使用一组15个成本动因来完善通过基本COCOMO模型获得的初始估计。
成本动因分类及其属性:
(i)产品属性-
  • 所需的软件可靠性程度
  • 应用程序数据库的大小
  • 产品的复杂性
硬件属性-
  • 运行时性能约束
  • 内存限制
  • 虚拟机环境的波动性
  • 所需的周转时间
人员属性-
  • 分析能力
  • 软件工程能力
  • 应用经验
  • 虚拟机经验
  • 编程语言经验
项目属性-
  • 使用软件工具
  • 软件工程方法的应用
  • 所需的开发时间表
成本动因分为四类:
什么是COCOMO模型(图文详解————)

文章图片
什么是COCOMO模型(图文详解————)

文章图片
中间的COCOMO方程:
E = ai(KLOC)bi * EAF
D = ci(E)的
中间COCOMO的系数
Project ai bi ci di
Organic 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
3.详细的COCOMO模型:详细的COCOMO合并了标准版本的所有质量, 并评估了成本动因对软件工程过程的每种方法的影响。详细模型为每个成本动因属性使用各种工作量乘数。在详细的cocomo中, 将整个软件分为多个模块, 然后将COCOMO应用到各个模块中以估算工作量, 然后对工作量求和。
详细的COCOMO的六个阶段是:
  1. 规划和要求
  2. 系统结构
  3. 完整的结构
  4. 模块代码和测试
  5. 整合与测试
  6. 成本构成模型
【什么是COCOMO模型(图文详解————)】确定工作量取决于程序估计, 并根据软件生命周期的每个阶段给出一组成本动因。

    推荐阅读