浅谈软件成本估算方法及其应用.doc
浅谈软件成本估算方法及其应用 摘要:软件项目的成本估算一直是软件项目管理研究的一大难题。由于软件自身的复 杂性、历史经验的缺乏、估算工具缺乏以及一些人为错误,导致软件项目的规 模估算往往和实际情况相差甚远。本文主要分析和比较了软件成本的各种估算 方法如专家判定法、类比估算法、回归分析法、参数模型法等等,并着重分析 了类比估算法。 关键词:软件成本,估算 0 引言软件成本估算从 20 世纪 60 年代发展至今 ,在软件开发过程中一直扮演着重要角 色. 无论是产业还是学术界 ,越来越多的人认识到做好软件成本估算是减少软件项目预 算超支问题的主要措施之一,不但直接有助于做出合理的投资外包,竞标等商业决定, 也有助于确定一些预算或进度方面的参考里程碑,是软件组织者或管理者对软件研发 过程进行监督,从而更合理的控制和管理软件质量、人员生产率和产品的进度。 1 软件成本估算的概念 软件成本估算是为了完成项目各项任务所需要的资源成本的近似估算。不同于传 统的工业产品,软件的成本不包括原材料和能源的消耗,主要是人脑力劳动的消费。 另外,软件也没有一个明显的制造过程,它的开发成本是以一次性开发过程所花费 的代价来计算的。软件成本估算包括直接开发费和间接开发费用,直接开发费用主 要包括实现程序所有功能所花费的人力和物力,以及前期的调研费用,而间接费用 包括管理费用,工具购置费,实施费用,售后服务费用,及其他的辅助费用。 2 软件成本估算的步骤 对一个软件项目进行成本的估算一般要经过一下 2 个阶段: 1) 大小估算阶段。估算软件大小有两种基本策略:一是估算问题大小,如功 能点;二是估算解决方案的大小,如源代码行数、模块数。 2) 工作量和工作进度估算阶段。根据有关软件的大小来估算软件开发成本。 3 软件成本的估算方法 常用的软件估算方法有专家判定法、类比估算法、回归分析法、参数模型法等. 3.1 专家判定法专家判定法是依靠领域专家的经验,对各成本进行估算和打分。其优点是测算快 速 ,测算本身的成本低;缺点是依赖于专家的经验和主观性 ,误差较大 ,因而适 用于准备开发阶段。 3.2 类比估算法类比估算法是通过对一个或多个已完成的项目与新的类似项目的对比来测当前 项目的成本与进度。比估算法在估算过程中要经过以下 4 个步骤: 1) 评估新项目,确定被用作基值的类似项目;2 )获得被选做类比项目的一些信息 ,包括实际的工作量、工作进度、项目大小等一 些明确的项目驱动因子; 3) 取类比项目的工作量和工作进度的平均值为新项目的工作量和工作进度; 4 )根据可能影响新项目的工作量和工作进度的成本驱动因子来调整初始的估算值; 类比方法的主要优点: 1) 类比法比其他方法具有更高的准确性; 2 )类比过程中的步骤可以文档化,以便修改; 类比方法的主要缺点: 1 )严格依赖于历史数据的可用性; 2 )能否找到一个或一组好的项目范例对最终估算结果的准确度有着决定性的影响; 3 )对初始估算值进行调整依赖于专家判; 3.3 回归分析法在对软件项目进行估算时,通常情况下能得到相关软件组织或软件产品的某些历 史数据。充分利用这些历史数据对预测与估算未来状况是很有帮助的。回归分析, 就是这样一种相当常用与有效的数据驱动方。OLS 回归是最传统的回归方法,它假定了将一个依赖变量与一个或多个独立变量 相关联的一个函数形式,Minitab 、Sp lus、SPSS 等多种商业统计工具包都支持该方 法。 其主要缺点在于: 1)由于每一个观测值对于模型公式有同等的影响 。因此,哪怕只有一个差异过大 的极端观测值,也会对模型产生不可预计的影响。 2)由于所需的历史数据依赖于回归模型中的参数个数,当模型中回归变量增多时, 需要较多数量的历史数据。 通常,回归模型所需的历史数据数必须至少是模型中 参数个数的 5 倍。 3)需要满足对于软件工程数据来说比较严格的假设条件,即回归变量之间不能存在 很强的相关性,回归误差的方差恒定。 3.4 参数模型法 参数模型法是提供一个估算方程,它把软件某一属性的度量作为输入,软件的 工作量和工作进度则是输出.模型的运用比较方便快捷,在研制初期尤为实用,它基 于目标对象而且可以重复。要针对以前的项目进行标定,用于校准的历史数据可能 并不适用于新软件。 综上所述,可以看出目前并没有一个完全适用于各种类型软件和软件生命周期 各阶段的通用性很强的软件成本估算方法。以上列出的 3 种流行估算方法都有各自 的优点和缺陷,在实际的软件成本估算中往往并不是只应用其中的一种,而是针对 待估算软件的类型和软件项目进展阶段,综合运用多种方法进行估算。长达二十多 年的软件成本估算方法的研究中,基于模型的估算方法一直是其中的主流并产生了 大量软件成本估算模型。 但是,单从发展趋势上看,参数模型法的优势更为明显。它重点集中在成本驱 动 即影响成本最重要因素上,并不考虑众多的细节,这些成本驱动可以控制系统的 设计和系统特性,并且对系统成本有重要的影响.参数模型能针对不同成本元素分别 进行计算,如软件研制的工时、软件的大小、如行代码功能点或目标点。也可用于 硬件系统或纯软件系统。通过它也可以完成诸如独立成本变量(CAIV) 分析和设计成本(DTC)等专题研究。一个理论上经过校准和认证成熟的参数模型完全可以对整个软 件生命周期的成本费用做出科学合理的判断。因此,参数成本分析法也成为国外采 购规则(FAR) 中事实上认可的一种价格分析技术。 4 COCOMO II 成本估算模型基于算法模型的方法,大体上可以分为 3 个主要发展阶段。 1) 早期阶段(1965 年~1985 年)。 寻找好的模型方式和因子关系; 2) 中期阶段(1985 年~1995 年)。活动求精、风险分析和规模定量; 3) 后期阶段(1995 年~2005 年) 。针对新软件开发风格的扩展。其中 COCOMO (constructive cost model ,构造性成本模型)。贯穿 3 个阶段不断发展和改进,是 最具代表性的软件成本估算模型。最早的 COCOMO 模型发表于 1981 年。 1995 年发布的 COCOMOII 模型, 考虑了快速开发过程模型、再工程、重用、面向对象方法等因素 ,共包括 3 个子 模型。 1)应用组合(application composition) 模型。基于对象点(object point) 对采用集成计算 机辅助软件工程工具快速应用开发的软件项目工作量和进度进行估算,用于项目划 阶段; 2) 早期设计(early design) 模型,可用代码行及 5 个规模指数因子、7 个工作量乘数 因子,选择软件体系结构和操作,信息还不足以支持详细的细粒度估算段; 3) 后体系结构(post architecture)模型。顾名思义,发生在软件体系结构完好定义和建 立之后,基于源代码行或功能点以及 5 个标度因子、17 个成本驱动因子,用于完 成顶层设计和获取详细项目信息阶段形式 。其中 COCOMO II 的后体系架构是最 为细化的,它以软件规模作为估算的主要依据,COCOMOII 采用公式估算软件成 本。COCOMO II 中将每个成本驱动因子及标