专注:软件造价|软件成本估算|软件成本评估服务!
当前位置
首页 > 造价评估问答 >

COCOMO模型介绍

2024-04-29 13:24
(本文由北京中基数联科技有限公司撰写,仅供学习参考使用,版权归中基数联所有,转载请标明出处。)

1、概述

        COCOMO(Constructive Cost Model),又称为构造性成本模型,是由美国著名经济学家、软件工程专家Barry Boehm提出的一种软件成本估算方法。

       1981年,Barry Boehm在其发表的《软件工程经济学》一书中提出了软件估算模型层次结构,即COCOMO模型,被称为COCOMO 81模型。该模型采用一种自底向上的微观参数估计方法,使用成本驱动因素从底端对软件环境进行描述,至今该模型已经成为软件界通用的估算模型。

        20世纪九十年代,Barry Boehm在 COCOMO 81的基础上根据软件发展的趋势,研究并调整了模型并发表了 COCOMO II 模型。


2、COCOMO模型

2.1 计算公式

       COCOMO模型一般分为三个层级:基本COCOMO模型、中级COCOMO模型和详细COCOMO模型。

       基本 COCOMO 模型是一个静态单变量模型,主要以软件规模(已估算出来的源代码行数)为自变量来估算整个软件系统的工作量和软件开发所需要的时间。

       中级COCOMO模型是一个静态多变量模型,在用KDSI为自变量计算软件开发工作量的基础上,增加了涉及产品、平台、人员、项目等方面属性的影响因素来调整工作量的估算。

       详细COCOMO模型包含了中级模型的所有特性,并且还考虑了成本驱动因素对软件工程过程中每一个阶段(分析、设计等)的影响。

       COCOMO模型中的开发工作量通用公式为:

MM=a×Sb×EM
其中:

       MM:软件开发工作量,单位:人月;


       S:软件规模,单位:千源指令条数(KDSI);

       a、b:常数,随项目类型变化而变化,在基本模型中取1;

       EM:工作量调整因子,其计算方式如下:

其中:


       EM:工作量调整因子;

       Fi:15个成本驱动因子,取值见表3。

       根据计算出的工作量,可以得到开发所需的时间,公式如下: 
T=c×MMd
其中:

       T :开发所需要的时间,单位:月;


       MM:软件开发工作量,单位:人月;

       c、d:常数,随项目类型变化而变化。

       在COCOMO模型中,将项目类型分为三类:组织型(Organic Model)、半独立型(Embedded Model)、嵌入型(Semi-detached Model)。

       组织型(Organic):项目规模较小,难度较低,由有经验的开发团队完成。

       半独立型(Embedded Model):项目规模介于组织型和嵌入型之间,复杂度和难度中等,由不同经验水平的人组成的开发团队完成。

       嵌入型(Semi-detached Model):开发工作紧密地与系统中的平台、软件和运行限制联系在一起,项目需要在严格的约束条件下开发。

2.2 参数取值
       
        在COCOMO模型中,根据不同的模型层级和项目类型,参数的取值也不同。


       在基本COCOMO模型中,工作量调整因子(EM)取值为1,其余各项参数取值见表1:

表 1  基本COCOMO模型参数取值
项目类型 a b c d
组织型 2.4 1.05 2.5 0.38
半独立型 3.0 1.12 2.5 0.35
嵌入型 3.6 1.20 2.5 0.32
 
       在中级和详细COCOMO模型中,各项参数取值如表2:

表 2 中级和详细COCOMO模型参数取值
项目类型 a b c d
组织型 3.2 1.05 2.5 0.38
半独立型 3.0 1.12 2.5 0.35
嵌入型 2.8 1.20 2.5 0.32
 
       在基本COCOMO模型中,可以快速简略地估算出软件开发成本和时间等信息,但其未考虑到技术、环境和人为因素等变化。因此,在中级和详细COCOMO模型中引入了4大类15个子类的成本驱动因素,并将它们的乘积作为工作量调整因子。成本驱动因素分类及取值见表3。

表 3 COCOMO模型成本驱动因素分类及取值
 
 
 
        在详细COCOMO模型中,Barry Boehm在中级COCOMO模型的基础上将软件进行了模块和阶段划分,分成了四个阶段—需求和产品设计,详细设计,编程和单元测试和集成与测试,并按照不同阶段给出了个成本驱动因素的等级度量分值表和相应说明。在不同模块和阶段中应用COCOMO模型进行工作量估算,然后对工作量进行求和。

3、COCOMO II 模型

3.1 主要变化

       20世纪九十年代,Barry Boehm根据软件工程市场的发展,在之前的COCOMO模型基础上提出了具有估算螺旋和进化开发能力的COCOMO II模型。与原来的COCOMO模型不同的是,新的COCOMO II模型主要有以下变化:

       1:根据软件开发流程,COCOMO II模型分为三个子模型,分别是:应用组合模型(Applications Composition Model)、早期设计模型(Early Design Model)和后体系结构模型(Post-Architecture Model)。

       2:项目的规模经济性使用幂指数E来计算,取代了原来基本、中级和详细COCOMO模型使用固定指数的方式,幂指数E由5个规模度因子计算得到。

       3:使用源代码行(KLOC)代替原来的源指令条数(KDSI)。

       4:新增7个成本驱动因子:DOCU、RUSE、PVOL、PCON、PEXP、LTEX、SITE。

       5:删除原有的5个成本驱动因子:VIRT、TURN、VEXP、LEXP、MODP。

       6:更新并调整了原有成本驱动因子的参数值。

3.2 计算公式

       应用组合模型:该模型是基于对象点的度量模型,主要用于软件开发项目初始规划阶段的粗略工作量和进度估算。它通过计算屏幕、报表、第三代语言模块等对象点的数量来确定基本的规模,每个对象点都有权重,由一个三级的复杂性因子表示,将各个对象点的权值累加起来得到一个总体规模,然后再针对复用进行调整。

       早期设计模型:在项目开始后,如果项目管理人员收集到的软件项目信息不能够详细的估算软件成本估算,这时可采用早期设计模型。

       后体系结构模型:在详细设计阶段,项目成员已经对软件功能结构有了一定的了解,已经确定好软件的基本架构,可使用后体系模型。

       早期设计模型与后体系结构模型的计算公式基本相同,但早期设计模型有7个成本驱动因子,而后体系结构模型的成本驱动因子有17个。

       公式如下:


其中:


       PM:软件开发工作量,单位:人月;

       A:常数,通常取值为2.94;

       S:软件规模,单位:千代码行(KLOC);

       Fi:成本驱动因子,早期设计模型取值见表4,后体系结构模型取值见表5;

       E:项目规模的经济性,计算方式如下:

       其中,Wi是指规模度因子,共5个,取值见表6。

3.3 参数取值
       表 4 早期设计模型成本驱动因子取值
 
 
表 5 后体系结构模型成本驱动因子取值
 


 
表 6 COCOMO II 模型规模度因子取值
4、与基于NESMA功能点方法的软件工作量费用估算的比较

       基于NESMA功能点方法的软件开发成本估算是从用户角度出发,对软件的规模从逻辑设计的角度进行度量的标准方法,再通过调整因子和行业基准数据估算软件开发工作量和成本费用。它与COCOMO模型估算方法主要有以下共同点:

       1:估算技术路线相同。都是通过规模,进而估算工作量和成本费用。

       2:估算方法相同。都是方程法,都有估算模型,通过调整因子参数适配不同类型项目的评估。

       3:为适用项目不同阶段估算,有不同的模型。COCOMO模型有基本、中期、后期模型以用于项目不同阶段的估算,NESMA功能点方法也有预估、估算和详细功能点法适应不同场景的估算。

       不同之处有:

       1:软件规模度量单位不同

       功能点方法从用户的角度出发,将系统分为数据功能和事物功能两大类,分别根据具体的规则来计算功能点,最后结合系统的特征因子来调整功能点数,从而得到系统规模。

       COCOMO模型通过计算软件系统的代码行数来确定软件规模。

       2:工作量估算模型不同

       功能点方法通过软件规模和基准生产率来进行软件项目工作量的估算。

       COCOMO模型通过软件规模和多个成本驱动因子来调整软件项目工作量。

       3:调整因子不同

       功能点方法在进行软件项目工作量计算时,根据项目的实际情况,从计数时机、质量特性、完整性级别和开发因素等系统特征出发,进行软件规模和工作量的调整。

       COCOMO模型在进行软件项目工作量计算时,主要根据不同的项目类型,采取不同的计算模型,并根据产品、平台、人员和项目等多个成本驱动因子的参数取值进行工作量调整。

 
5 分析结论

       1:COCOMO模型估算的基础是代码行,是从开发视角进行软件规模、工作量、进度、成本费用的估算方法。NESMA功能点方法是从用户视角进行估算的方法。估算视角不同,应用场景不同。

       2:基于NESMA功能点方法估算软件规模、工作量和成本费用的模型中各个参数有国标、联盟团标和行业基准数据支撑,相比之下COCOMO模型各个参数的选取有一定主观因素。故COCOMO模型在组织内横向对标、同业对标、行业对标方面不如基于NESMA功能点方法的估算。

       3:COCOMO模型估算过程简单,经简单培训后就可以开展估算,功能点方法较为复杂,需经过专业培训后才可开展估算。

       综上所述,COCOMO模型适用于开发团队估算自身项目的工作量、进度。基于NESMA功能点方法的估算模型适用于组织内软件项目管理、对外招投标等场景。

6 参考文献
  1. Barry Boehm著,李师贤译.软件成本估算 COCOMO II模型方法[M].北京:机械工业出版社,2005
  2. 甘寅.基于COCOMO_Ⅱ模型的FG公司APP项目成本管理研究[D].上海:东华大学,2021
  3. 雷杨.COCOMO_Ⅱ改进模型的软件成本估算方法研究与实现[D].江苏:南京理工大学,2020
  4. 田力军.COCOMO模型在喷气燃料系统测试项目估算中应用[J].舰船电子工程.2019
  5. 陈廷斌,侯丽,翁竞雄.基于COCOMO_Ⅱ模型的软件项目成本估算[J].价值工程,2018
  6. 杜海凤.基于COCOMO模型的软件定价方法研究[D].北京:北京交通大学,2012
  7. Barry Boehm. Software Engineering Economics [M].Prentice-Hall,1981
 
  

以上就是软件造价评估公司中基数联为您带来的“COCOMO模型介绍”所有内容,更多软件开发成本估算知识敬请关注中基数联!

关于我们
CONTACT US

电话:010-62667992

邮箱:csbmk@csbmk.com

地址:海淀区上地信息路11号1至4层整栋1幢三层西310室