COCOMO 1 与 COCOMO 2 模型的区别

2025年3月17日 | 阅读 7 分钟

COCOMO 1COCOMO 2模型是常用的瀑布模型软件开发成本估算模型。这些模型由Barry Boehm提出。这些成本估算模型用于计算软件开发成本。基本的COCOMO模型最先发布,随后发布了COCOMO模型的升级版本。这两个COCOMO模型的主要区别在于,COCOMO 1模型有助于提供工作量和进度的估算。相比之下,COCOMO 2模型提供的估算则指示了最常见估算值附近的一个标准差。

在本文中,您将了解COCOMO 1COCOMO 2之间的区别。但在讨论区别之前,您必须了解COCOMO 1和COCOMO 2。

什么是COCOMO 1?

COCOMO“构造性成本模型”(Constructive Cost Model)的缩写。它是第一个用于计算软件开发成本的模型。COCOMO 1模型基于线性重用公式和稳定合理需求的假设。COCOMO模型由Barry W. Boehm20世纪80年代设计和开发。它是用于计算开发时间、软件成本、平均团队规模以及项目所需工作量的最简单的模型。该方法基于交付的代码行数(千行)。

COCOMO 1模型提供进度和工作量的估算。它使用交付的代码总行数来生成估算。三个开发模式定义了COCOMO 1工作量方程的指数。COCOMO 1模型分配了15个成本驱动因子。它在SDLC的瀑布模型中很重要。为了准确估算工作量,软件项目主要分为3类。它们如下:

1. 有机项目 (Organic Projects)

有机项目的规模不大,通常包含50 KDLOC(千行已交付代码或更少)。它需要一个有经验的团队,并且对软件项目有深入的了解。这些项目易于创建,没有时间限制。有机项目的一些例子是业务系统、库存管理系统、工资管理系统等。

2. 嵌入式项目 (Embedded Projects)

这类项目非常复杂,包含300 KDLOC或更多。完成这些项目所需的团队不一定需要非常有经验,新开发人员也可以轻松参与这些项目。然而,在开发这些项目时,用户必须遵守严格的约束(硬件、软件、人员和截止日期),并且必须满足用户的严格要求。这些项目包括在航空电子设备和军事技术中使用的软件系统。

3. 半独立项目 (Semi-detached Projects)

这个类别介于有机项目和嵌入式项目之间。同样,这些COCOMO项目的复杂性介于嵌入式和有机项目之间,交付的代码行数可能少于30万行。需要平均经验的用户和中等时间来完成产品。这些项目可能包括操作系统、数据库、编译器等的设计。

COCOMO公式估算软件开发工作量

以下是您可用于估算软件开发工作量的公式:

Effort (E) = a1 * (KLOC) a2 PM
Scheduled Time (D) = b1 * (Effort) b2 Months

在此公式中,

  1. E 代表以人月为单位的工作量
  2. D 代表以日历月为单位的开发时间
  3. KLOC 代表项目的千行代码
  4. P 代表完成项目所需的总用户数。

此公式使用系数a1、b1、a2c2来表示3种模式。这3种模式的系数如下: 

项目A1B1A2B2
有机2.41.052.50.38
半独立3.01.122.50.35
嵌入式3.61.202.50.32

什么是COCOMO 2?

COCOMO 2是另一种用于计算软件开发成本的成本估算方法。它是最初的COCOMO的一个修改版本,由南加州大学开发。它主要是为了解决COCOMO 1模型的不足之处。其主要目标是提供方法、定量分析结构和工具。它根据所有子系统的估算来计算总开发时间和工作量。

它基于非线性重用公式。这种方法有助于提供代表最常见估算值一个标准差的估算。五个尺度因子定义了其工作量方程的指数,并归因于17个成本驱动因子。它适用于软件开发周期(SDLC)的非顺序、重用、快速开发和再工程模型。

COCOMO 2估算模型

COCOMO 2估算模型主要有4种。这些模型如下:

1. 应用组合模型 (Application Composition Model)

它用于使用可重用组件来创建原型开发估算,并基于对象点进行操作。它更适合原型系统开发。

2. 早期设计模型 (Early Design Model)

在收集需求后,该模型在系统设计阶段使用。它根据功能点生成估算,然后转换为源代码行数。此级别的估算基于基本算法模型公式。您可以使用以下公式:

Effort = A x Size B x M

在此公式中,

  • A 是一个常数,其值为94
  • B 代表工作量增加范围从11.24,具体取决于尺度因子,如开发灵活性、可借鉴性、团队凝聚力等。
  • M成本驱动因子或项目参数决定。

3. 重用模型 (Reuse Model)

该模型计算集成可重用组件和/或由设计或程序转换工具生成的程序代码所需的工作量。重用代码主要有两种类型:白盒代码和黑盒代码。当对代码没有了解,并且对其没有进行任何修改时,使用黑盒代码。相反,当添加新代码时,则使用白盒。集成此代码所需的工作量估算如下:

E = (ALOC x AT/100)/ATPROD

在此公式中,

  • ALOC 代表需要修改组件中的LOC(代码行数)的数量。
  • AT 代表自动生成的适配代码的百分比。
  • ATPROD 代表代码集成生产力。每月可能高达2400 LOC

4. 后架构模型 (Post Architecture Model)

在设计完系统架构后,可以生成更准确的软件估算,并且它是所有能够生成准确估算的模型中最详细的。后架构模型的工作量可使用以下公式计算:

Effort = A x Size B x M

COCOMO 1与COCOMO 2之间的主要区别

Difference between COCOMO 1 and COCOMO 2 Model

COCOMO 1COCOMO 2之间存在许多关键区别。COCOMO 1和COCOMO 2之间的一些关键区别如下:

  1. COCOMO 1在软件开发周期(SDLC)的瀑布模型中非常有用。相比之下,COCOMO 2在快速开发、非顺序和重用软件模型中有用。
  2. COCOMO 1主要基于需求相对稳定的假设。相比之下,COCOMO 2基于重用模型,该模型强调理解和估算所需的工作量。
  3. COCOMO 1提供时间估算和工作量估算。相比之下,COCOMO 2提供的估算值是最常见估算值的一个标准差。
  4. COCOMO 1的开发在将需求分配给软件后开始。相比之下,COCOMO 2采用螺旋开发策略。
  5. COCOMO 1中程序的规模以代码行数表示。相比之下,COCOMO 2有额外的因素来表达软件规模,包括代码行数、对象点和功能点。
  6. 在COCOMO 1中,不使用尺度因子。相比之下,在COCOMO 2中,使用尺度因子来估算工作量。
  7. COCOMO 1有3个子模型(基本型、中等型和高级型)。相比之下,COCOMO 2有4个子模型(应用开发模型、后架构模型、早期设计模型和重用模型)。
  8. COCOMO 1使用15个成本驱动因子。相比之下,COCOMO 2使用17个不同的成本驱动因子。
  9. 与COCOMO 1模型相比,COCOMO 2可以降低风险。
  10. 在COCOMO 1中,工作量方程的指数是通过三种不同的开发模式计算的。相比之下,在COCOMO 2中,工作量方程的指数基于五个尺度因子。

COCOMO 1与COCOMO 2的逐项比较

在这里,您将了解COCOMO 1和COCOMO 2之间的逐项比较。COCOMO 1和COCOMO 2之间的主要区别如下:

特点COCOMO 1COCOMO 2
全称COCOMO 1是Constructive Cost Model 1的缩写。COCOMO 2是Constructive Cost Model 2的缩写。
应用模型它在SDLC的瀑布模型中使用。它在快速开发、非顺序和重用软件模型中有用。
基本功能它基于线性重用公式。它基于非线性公式。
估算精度它提供工作量和时间表的估算。它提供的估算值是最常见估算值的一个标准差。
程序语句大小程序的规模以代码行数表示。它有额外的因素来表达软件规模,包括代码行数、对象点和功能点。
模型框架在开发过程中,首先是给软件的需求。它采用螺旋式开发。
工作量方程的指数3种开发模式定义了工作量方程的指数。5种尺度方法定义了工作量方程的指数。
子模型它有3个子模型。它有4个子模型。
成本驱动因子它使用15个成本驱动因子。它使用17个成本驱动因子。

结论

COCOMO模型随着编程和软件的发展而不断演进。这两个成本估算模型的主要区别在于,COCOMO 1模型基于线性重用公式。相比之下,COCOMO 2模型基于非线性重用公式。COCOMO 1模型主要是为使用过程式语言和构造体生成的软件设计的。然而,在当今的设置中,大多数语言和软件都是使用面向对象范式设计的,这使得COCOMO 2模型更加适用。


下一主题区别