构造性成本模型(COCOMO,Constructive Cost Model)是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本。
简介构造性成本模型最初发表于1981年巴里·勃姆《软件工程经济学》一书中,做为一种在软件项中估算工作量、成本以及时间表的模型。它基于对TRW飞机制造公司的63个项目的研究。巴里·勃姆于1981年在该公司担任软件研究与技术总监。这项研究中的项目所包含的代码量从2000行到10000行,包含的编程语言从汇编语言到PL/I。这些项目采用瀑布模型进行软件开发,这是在1981年时主流的软件开发模式。通常把上述模型引用为“COCOMO 81”。1997年,“COCOMO II”开始研发,并最终于2001年发表于《软件成本估算:COCOMO Ⅱ模型方法》一书中。COCOMO II是COCOMO 81的继承者,并且更适用于对现代软件开发项目进行估算。它为现代软件开发流程提供了更多支持,并提供了一个更新了的数据库。对于新模型的需求来源于软件开发技术从基于大型计算机和整晚的批处理到桌面开发、代码重用以及利用即有软件模块的改变。
模型结构COCOMO模型分为应用组合模型、早期设计模型、后体系结构模型三个子模型,分别采用不同的规模估算方法、成本因子及应用于不同的估算阶段:
应用组合模型:它是基于对象点来进行软件项目工作量的估算,针对采用集成化计算机辅助软件工程环境进组件组装式快速应用开发的项目,主要用于项目规划阶段。
早期设计模型:它是基于功能点或可用代码行以及 5 个规模指数因子、7个工作量乘数因子来进行软件项目工作量的估算,针对在项目开始后的一个阶段或者螺旋周期探索体系结构的可供选择方案或增量开发测量,主要用于信息还不足以支持详细的细粒度估算阶段。
后体系结构模型:它是基于源代码行和/或功能点以及 5 个规模指数因子、17 个工作量乘数因子来进行软件项目工作量的估算,发生在确定好软件体系结构之后,主要用于完成顶层设计和获取详细项目信息阶段1。
COCOMO 模型具有估算精确、易于使用的特点。在该模型中使用的基本量有以下几个: (1)DSI( 源指令条数 ) ,定义为代码行数,包括除注释行以外的全部代码。若一行有两个语句,则算做一条指令。(2)MM( 度量单位为人月 ) 表示开发工作量。(3)TDEV( 度量单位为月 ) 表示开发进度,由工作量决定。(4)COCOMO 模型重点考虑 15 种影响软件工作量的因素,并通过定义乘法因子,从而准确、合理地估算软件的工作量。
背景知识经济、信息时代的到来使得计算机软件业迅猛发展,软件投入增加的同时,风险也在加大。随着软件成本的提高和人们对软件的依赖性的增强,人们越来越难以接受软件项目开发的失败。对软件开发实施有效治理是决定软件产业发展的至关重要的因素。成本治理是软件项目治理的一个主要内容,就发展来看,成本治理是软件项目治理中一个比较薄弱的方面,而成本预算又是有效成本治理的关键环节。许多软件项目由于成本预算不准确,导致软件开发进度和质量受到严重影响以及资金的严重浪费,估算错误已被列入软件项目失败的四大原因之一。因此,精确而有效的软件成本估算是进行有效的软件治理的一个必不可少的组成部分。
开发初期,软件人员对项目的整体情况知之甚少,且由于客户的需求不断变化,使得工作内容和工作量不断变化造成初期的估算极为粗糙,精确性相当低。随着软件项目开发的逐步深入,软件人员需要更为具体的估算信息来对软件开发过程进行控制,以保证项目的开发能按进度顺利进行,这就希望有比较系统而成熟的软件成本估算方法,并希望有一个统一的量化体系来进行软件成本的估算。随着软件开发技术的发展,软件成本在计算机总成本中的影响越来越大,它直接影响到投资者的决策和软件项目的开发,成熟的成本估算方案就成为必不可少的关键。
国外发达国家在软件估算上比国内要成熟得多,有很多先进方法和一些专业的估算辅助工具。国内大多数项目的软件成本估算仅依靠经验、产能相关(capacity related)和价格决策 (Price-to-win)的方法,这对关心过程改进的软件企业来说远远不够的。
基本模型
基本COCOMO是一种静态的单值模型,它使用以每千源代码行数(KLoC)来度量的程序大小来计算软件开发的工作量(及成本)。COCOMO可以应用于三种不同的软件项目:
有机项目 - 相对较小、较简单的软件项目,由较小的有经验的团队来完成,需求较少并且没有过份严格的限定。
中度分离项目 - 指中等规模(大小及复杂度)的软件项目,由不同经验水平的人组成的团队来完成,需求中即有严格的部分也有不太严格的部分。
嵌入式项目 - 指软件项目必须依赖于一套紧凑的硬件、软件以及符合操作限制
基本COCOMO的等式如下:
E=ab(KLOC)bb
D=cb(E)db
P=E/D
其中E是用“人月”来计算的工作量,D是指累积的开发时间(月),KLOC是指对最终发布的代码行数的估计(千行代码),P指需要的人数。其中的一些系数 ab,bb, cb和db如下表所示:
Software project ab bb cb db 有机型 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适用于快速、早期地粗略估算软件成本,但它没有考虑如不同的硬件条件、人员素质及经验、对现代工具与技术的使用,等其它会对软件成本有深远影响的项目属性,所以它的准确程度有限。
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学