软件工程中的 COCOMO 模型2025年4月22日 | 阅读9分钟 在开始新的软件项目之前,了解当今软件开发所需的时间和成本至关重要。“构造性成本模型(COCOMO)”是一种广泛用于多个软件项目的有效成本估算方法。 1981 年,Barry W. Boehm 提出了 COCOMO 模型,这是一种用于软件成本评估的程序化方法。该成本估算模型用于预测软件项目的开发工作量、平均团队规模、开发时间以及所需的工作量。这增加了模型的透明度,有助于软件经理理解模型为何能提供其估算结果。此外,最初有一个 瀑布模型 的生命周期是基于基本的 COCOMO。 本教程将涵盖 COCOMO 模型概述、其通用类型、COCOMO 基于成本估算方法的基本计算、其扩展以及相对的优缺点。 此模型中的必要步骤是
初步估算(也称为名义估算)由静态单变量模型中使用的形式的方程确定,使用 KDLOC 作为尺寸度量。要确定以人月为单位的初步工作量 Ei,使用的方程类型如下所示: Ei=a*(KDLOC)b 常数 a 和 b 的值取决于项目类型。 在 COCOMO 中,项目分为三种类型
1. 有机型:如果项目涉及开发一个大家已充分了解的应用程序,开发团队的规模相对较小,并且团队成员在开发类似项目方法方面经验丰富,则可以将开发项目视为有机型。此类项目的示例包括简单的业务系统、简单的库存管理系统和数据处理系统。 2. 半独立型:如果开发团队由经验丰富的员工和经验不足的员工混合组成,则可以将开发项目视为半独立型。团队成员可能在相关系统方面有有限的经验,但可能不熟悉正在开发的订单的某些方面。半独立系统示例包括开发新的操作系统(OS)、数据库管理系统(DBMS)以及复杂的库存管理系统。 3. 嵌入式型:如果正在开发的软件与复杂的硬件紧密耦合,或者对操作方法存在严格规定,则将开发项目视为嵌入式型。例如: ATM、空中交通管制。 对于这三种产品类别,Boehm 提供了不同的表达式,用于根据 KLOC(千行代码)的估算尺寸预测工作量(以人月为单位)和开发时间。工作量估算考虑了由于假日、周末休息、咖啡休息等造成的生产力损失。 应用 COCOMO 模型的前几项技术通过遵循以下方法,任何使用 COCOMO 模型的软件开发人员都可以确保工作流程正确,并得出最准确和最高效的成本估算。
根据 Boehm 的说法,软件成本估算应通过三个阶段进行
1. 基本 COCOMO 模型:基本 COCOMO 模型提供项目参数的准确尺寸。以下表达式给出了基本 COCOMO 估算模型: Effort=a1*(KLOC) a2 PM 其中 KLOC 是以千行代码(Kilo Lines of Code)为单位的软件产品估计尺寸, a1,a2,b1,b2 是每组软件产品的常数, Tdev 是软件开发的估计时间,以月为单位, Effort 是开发软件产品所需的总工作量,以人月(PMs)为单位。 开发工作量估算 对于三类软件产品,基于代码尺寸估算工作量的公式如下: 有机型: Effort = 2.4(KLOC) 1.05 PM 半独立型: Effort = 3.0(KLOC) 1.12 PM 嵌入式型: Effort = 3.6(KLOC) 1.20 PM 开发时间估算 对于三类软件产品,基于工作量估算开发时间的公式如下: 有机型: Tdev = 2.5(Effort) 0.38 Months 半独立型: Tdev = 2.5(Effort) 0.35 Months 嵌入式型: Tdev = 2.5(Effort) 0.32 Months 通过绘制不同软件尺寸的估算特征,可以对基本 COCOMO 模型获得一些洞察。图显示了估算工作量与产品尺寸的图。从图中,我们可以观察到工作量与软件产品的尺寸存在一定的超线性关系。因此,开发产品所需的工作量随项目规模的增加而迅速增加。 ![]() 图中绘制了开发时间与 KLOC(千行代码)中的产品尺寸的关系。从图中可以看出,开发时间是产品尺寸的亚线性函数,即当产品尺寸增加两倍时,开发产品的时间不会翻倍,而是适度增加。这可以解释为,对于较大的产品,可以识别出更多可以同时进行的活动。并行活动可以由工程师同时进行。这减少了完成项目的时间。此外,从图中可以看出,开发时间对于所有三类产品大致相同。例如,无论是一个 60 KLOC 的程序是有机型、半独立型还是嵌入式型,其开发时间都约为 18 个月。 ![]() 根据工作量估算,可以通过将所需工作量乘以每月的劳动力成本来获得项目成本。但是,此项目成本计算中隐含的假设是,整个项目成本仅由劳动力成本承担。除了劳动力成本外,项目还会因项目所需的硬件和软件以及公司的管理、办公室空间等间接费用而产生费用。 需要注意的是,使用 COCOMO 模型获得的工作量和持续时间估算被称为名义工作量估算和名义持续时间估算。名义一词意味着,如果有人试图在比估算持续时间短的时间内完成项目,那么成本将急剧增加。但是,如果有人在比估算时间更长的时间内完成项目,那么估算成本值几乎没有下降。 示例 1:假设一个项目估计为 400 KLOC。计算三种模型(有机型、半独立型和嵌入式型)的每个模型的工作量和开发时间。 解决方案:基本 COCOMO 方程形式为: Effort=a1*(KLOC) a2 PM (i)有机型 E = 2.4 * (400)1.05 = 1295.31 PM (ii)半独立型 E = 3.0 * (400)1.12=2462.79 PM (iii) 嵌入式型 E = 3.6 * (400)1.20 = 4772.81 PM 示例 2:有一个 200 KLOC 的项目要开发。软件开发团队在类似项目方面拥有平均经验。项目时间表不是很紧张。计算项目的总工作量、开发时间、平均人员规模和生产力。 解决方案:考虑到项目规模、时间表和开发团队的经验,半独立型是最合适的模型。 因此 E=3.0(200)1.12=1133.12PM ![]() P = 176 LOC/PM 2. 中间模型:基本 Cocomo 模型认为工作量仅是代码行数和根据各种软件系统计算的某些常数的函数。中间 COCOMO 模型认识到这些事实,并通过使用一组基于软件工程各种属性的 15 个成本驱动因素来改进通过基本 COCOMO 模型获得的初始估算。 成本驱动因素及其属性的分类 (i) 产品属性 -
硬件属性 -
人员属性 -
项目属性 -
成本驱动因素分为四类 ![]() ![]() 中间 COCOMO 方程 E=ai (KLOC) bi*EAF 中间 COCOMO 的系数
3. 详细 COCOMO 模型:详细 COCOMO 包含标准版本的所有特性,并评估成本驱动因素对软件工程过程的每个方法的影响。详细模型为每个成本驱动因素属性使用各种工作量乘数。在详细的 COCOMO 中,整个软件被划分为多个模块,然后我们将 COCOMO 应用于各个模块来估算工作量,然后将工作量相加。 详细 COCOMO 的六个阶段是
工作量根据程序估算确定,并且根据软件生命周期的每个阶段都给出了一组成本驱动因素。 COCOMO 扩展即使本页面仅讨论 COCOMO I 模型(1981),您也值得对这个成功的 COCOMO 模型的扩展进行更多研究。COCOMO II(1995)是 COCOMO I 的扩展,它被用于不同的软件开发过程类别,包括 敏捷、迭代 和 螺旋瀑布 模型。 除了 COCOMO I 和 COCOMO II 模型之外,还有许多成本估算模型正在开发中,例如构造性分阶段计划和工作量模型(COPSEMO)以及构造性快速应用程序开发计划估算模型(CORADMO)。 COCOMO 模型优点
COCOMO 模型缺点
基于案例研究和实际应用的示例
下一个主题Putnam 资源分配模型 |
我们请求您订阅我们的新闻通讯以获取最新更新。