项目成本估算,是对完成项目工作所需要的费用进行估计和计划,是
项目计划中的一个重要组成部分。要实行
成本控制,必须先估算费用。
费用估算过程实际上是确定完成项目全部工作活动所需要的资源的一个费用
估计值,这是一个
近似值,既可以用货币
单位表示,也可用工时、人月、人天等其他单位表示。在进行费用估算时,也包括各种
备选方案的费用估算。
IT项目
估算方法
对于一个大型的IT软件项目,由于项目的复杂性及IT项目的独特性,
开发成本的估算不是一件容易的事情,它需要进行一系列的估算处理,因此,主要依靠分析和
类比推理的手段进行,最基本的估算方法有以下几种:
根据项目特征,用
数学模型来预测项目的成本。一般采用历史成本信息(这些信息与
项目成本的一些
软件度量标准相关)来建立估算模型,并通过这个模型预测工作量和成本。
● 专家判定技术
也称为Delphi法,聘请一个或多个
领域专家和
软件开发技术人员,由他们分别对项目成本进行估计,并最后达成一致而获得最终的成本。
根据以前类似项目的
实际成本作为当前项目的估算依据。
● Parkson法则
Parkson法则表示工作能够由需要的时间来反映。在软件
成本估计中,这意味着成本是由可获得的资源而不是由
目标评价决定的。如果一个软件需要在12个月内由5个人来完成,那么工作量就是12 X 5 = 60个人月(PM)。
成本的估算,主要依据
工作分解结构、产品的功能以及实现该功能的子功能组成形式逐层分配成本。
● 自下而上估算法
首先估计每个
组成单元的成本,然后根据
工作分解结构,通过累加方式得到最终的成本估计。
软件的成本通过估计用户愿意在该项目上的投资来计算,成本的预算依靠客户的预算而不是软件的功能。
上面这些估算法都有它们的优势和不足,不能简单评价某种方法和好坏。在一个大型的IT项目中,通常要同时采用几种估算方法并且比较它们估算的结果,如果采用不同方法估算的结果大相径庭,就说明没有收集到足够的成本信息,应该继续设法获取更多的成本信息,重新进行成本估算,直到几种方法估算的结果基本一致为止。
成本预算是在确定总体成本后的分解过程。分解主要是作两个方面的工作:一是按
工作分解结构和
工作任务(
工作包)分摊成本,这样可以对照检查每项工作的成本,出现偏差时可以确定是哪项工作出了问题;二是按工期时段分摊成本,将预算
成本分摊到项目工期的各个时段,这样,可以确定在未来某个时段累计应该花费的成本,并检查偏差,评价
成本绩效。
目前最常用且最好用的度量方法主要用3种:面向规模(LOC)、面向
功能点(FP)及
COCOMO模型的度量方法。
度量
面向规模(LOC)的度量
面向规模的软件度量通过规范化质量和
生产率测量的方法得到,这种测量是基于所生产软件的规模(Size)确定的。为了与其他项目中的同类度量相比较,选择代码行作为规范化,这样,就可以为每个项目产生一组简单的、面向规模的度量标准:
●每千行代码(KLOC)的错误数。
●每千行代码行(KLOC)的成本。
●每千行代码行(KLOC)的文档页数。
●每人月错误数。
●每页文档的成本。
面向规模的软件度量,通常并不被认为是
软件开发过程中最优的方法,因为有很多因素直接影响代码的行数。例如,代码行数依靠软件和硬件的选择,应用商业
数据库管理系统就不用再编写有关数据库
管理部分的代码。而用ADA语言就比用
FORTRAN语言的代码行要多等。因此,在1979年Albercht提出面向功能点(FP)软件度量。
面向功能点(FP)的度量
面向功能
点法是由Albrecht最先提出的,并且在1983年由Albrecht和Gaffney进行了改进。功能点可由以下4个参数计算出来:
● 外部输入和输出数
● 用户交互数
● 系统要用的文件数
每个参数都可以根据复杂性进行评估,一般它们的权理为3~15.功能点是通过完成如图1所示的功能点度量计算出来的。其中,FP计数等于数量与
加权因子之积,加权因子根据功能点的复杂程度取不同的值。
功能点法是通过建立一个标准来确定某个特定的测量参数(简单、平均或复杂)的功能点数,但权重的确定多少带有一定的
主观性。
一般,可以采用下面的方工计算功能点:
FP = 总计数值*[0.65+0.01*SUM(Fi)]
其中总计数值是上表中所得到的所有条目的总和。Fi(i=1,2,3,...14)是对以下14个问题回答的结果而得出的权重
调整值(0~5)。
等式中的常数和参数的加权因子是根据经验确定的。
序号 问题
4 系统是否很关键
5 系统是否在一个已有的、很实用的操作环境中运行
7 联机
数据项是否需要在多屏幕或多操作之间切换以完成操作
9 输入、输出及文件查询是否很复杂
10 内部处理是否复杂
11 代码是否需要设计成可复用的
12 设计中是否需要包括转换及安装
13 系统的设计是否支持不同组织的多次安装
14 应用的设计是否方便用户修改及使用
问题的答案及相应权重如下表所示
一旦计算出功能点,就可以采用类似面向规模的方法来使用,以便规范
软件生产率、质量及其他属性的测量:
● 每个功能点(FP)的错误数。
● 每个功能点(FP)的缺陷数。
● 每个功能点(FP)的成本。
● 每个功能点(FP)的文档页数。
● 每人月完成的功能点(FP)数。
面向功能点(FP)和面向规模(LOC)两种度量方法之间的关系为:LOC=AVC*功能点的数量,其中AVC是指该语言在实现一个功能点时所要用的平均代码行数。
模型
COCOMO模型
COCOMO模型是普及程度比较高的一种自顶向下项目成本估算模型,是比较精确,易于使用的
成本估算方法。该模型的项目成本估算公式为:
E=A(KDSI)b
其中:E为开发成本:DSI为项目
源代码行数,但不包括注释行数,DSI以千行为一个
基本单位,即1KDSI=1024DSI:A、b为两个常数,具体值由项目的种类而定。
在COCOMO模中,根据
开发环境及项目规模等因素,可把项目分为以下3种:
● 组织模式:指规模较小的、简单的软件项目;
● 半分离模式:指在南侧模和复杂性上处于中等程度的软件项目;
● 嵌入模式:指必须要求在一组紧密联系的硬件、软件及操作约束下开发的软件项目。
相应的,COCOMO模型的层次也包括3种基本形式,即初级COCOMO模型、中级COCOMO模型和高级COCOMO模型。
标准
软件度量标准
本标准规定了软件
研发成本度量方法、过程及原则,包括
软件研发成本的构成、软件研发成本度量过程、软件研发成本度量的应用。本标准适用于度量成本与功能规模密切相关的软件
研发项目的成本。本标准不涉及软件定价,但相关各方可依据本标准明确研发成本,从而为软件定价提供重要依据。
标准研制背景
长期以来,如何度量和评估软件研发项目的成本一直是产业界的难题。目前我国尚无科学统一的软件研发项目成本度量
标准体系以指导、规范、管理软件项目的研发成本,较大程度导致做预算时无据可依,造成极大浪费;在软件项目招评标过程中,由于无法界定
软件工程项目的合理成本范围,常常出现恶意低价或超高价格竞标现象;软件开发商在项目
实施过程中,由于缺乏
成本控制的科学依据,也经常出现
时间滞后、费用远远超出最初估算水平的情况。
标准研制过程
在国家
工业和信息化部软件服务业司领导下,从2010年开始启动我国软件成本度量标准体系的研制工作。
中国软件行业协会系统与软件
过程改进分会(以下简称 “过程改进分会”)和
中国电子技术标准化研究院(以下简称“电子四所”)围绕软件研发成本度量标准体系建设开展了基础性研究工作,梳理了标准体系。核心标准《软件研发成本度量规范》于2010年12月正式立项,计划号为2010-3194T-SJ,由过程改进分会和电子四所共同牵头起草,组织产、学、研、 用约40家单位共同参与,历时3年,为软件
项目预算、
立项审批、招投标、
项目计划、
变更管理等工作提供“科学依据”。
标准的价值
1、倡导使用统一的国际
功能点方法度量软件规模,使度量结果可比对;
2、倡导使用
基准数据估算软件工期和成本,使估算结果更科学;
3、倡导使用一致的估算过程和公式,使估算过程透明化、估算结果可追溯。
标准试点应用
《软件研发成本度量规范》从2012年开始试点应用。海关总署、
中国人民银行、
东软集团等单位都参与了试点工作,分别在预算审批、
项目立项、招投标、项目计划等场景进行应用,取得了很好的效果。截至2013年年底,共有约2000人参加CCEP培训,近1500人通过考试并成为国内首批CCEP(软件
成本估算专家)。采用标准规定的方法后,极大的解决了试点企业长期以来面临的问题。
标准发布
行业标准《软件研发成本度量规范》(SJ/T11463-2013)由中华人民共和国工业和信息化部于2013年10月17日正式发布,并于2013年12月1日开始正式实施。
最新进展
经推荐,该标准由
中关村智联软件服务业质量创新联盟牵头,正在申请升级为
国家标准,于2015年7月31日正式下达计划号:20151553-T-469
标准应用配套书籍
随着工信部行业标准《软件研发成本度量规范》的正式发布,越来越多的软件企业、政府机关及各大行业(如金融、电信、能源、制造等)的
软件开发及信息化建设部门开始采用该标准用于指导软件研发成本的度量工作,并广泛应用于预算、招投标、项目策划、变更管理、过程改进及
项目后评价等场景。而能否正确理解《软件研发成本度量规范》并了解标准涉及方法的背景与原理,成为该标准是否可以在行业内深化应用的关键。
规范研制背景
北京作为全国软件与
信息服务业之都,
产业规模一直位居全国前列,并且保持着较快的增长水平,
软件和信息服务业在全市经济发展中也占有越来越重要的地位。随着
十二五规划的逐步实施,北京市各行各业信息化
建设投资也不断加大,仅全市每年属于市级
财政拨款范畴的
信息化项目就可达700至800个,金额总量可达三十多亿元,涉及上千家
企事业单位。然而本市一直没有科学统一的标准以支撑、规范、管理信息化项目软件开发费用的测算,这大大制约了北京
软件产业的健康可持续发展。由于
相关标准的缺失,如何测算信息化项目软件开发的
合理费用一直都是北京软件
产业发展中的难点,因而常常导致软件项目预算审批无依据、恶意竞标等问题的发生。
规范的价值
由
北京市经济和信息化委员会归口指导,
北京软件和信息服务交易所、
北京软件行业协会过程改进分会联合制订的北京市首个软件成本度量地方标准《信息化项目软件开发费用测算规范》正式实施,这标志着我市信息化项目软件开发工作拥有了科学、标准的费用评估方法,有助于规范行业市场、推动软件企业提升
生产效率,提升产业增长质量。
编制背景
长期以来,如何度量软件研发成本一直是产业界的难题,尤其是在预算、招投标、项目计划等活动中因为缺失科学统一的软件研发成本度量标准,较大程度导致项目做预算时无据可依,进而造成预算浪费或预算不足;在软件项目招投标过程中,因为缺乏软件研发成本度量依据,恶意竞标、低价中标现象频频发生;开发方在项目实施过程中,由于缺乏成本控制的科学依据,也经常出现时间滞后,费用远远超出最初预算的情况。科学统一的软件研发成本度量标准既是有效进行软件
项目管理的重要依据,也是当前软件产业发展的迫切需要。
为此,工业与信息化部软件服务业司委托
中国软件行业协会系统与软件过程改进分会牵头组织编制了《软件研发成本度量规范》。标准中规定了软件研发成本度量的方法及过程,包括软件研发成本的构成、软件研发成本度量的过程、软件研发成本度量的应用。其目的是帮助软件研发涉及各方科学、一致地进行成本度量。但标准中没有包含软件研发成本度量过程中所需要的估算模型、行业基准数据及其在不同场景进行成本估算的详细步骤和方法,因此需要制订标准的应用指南,以便相关各方针对不同的应用场景、正确使用行业数据和模型,有效开展软件研发成本度量相关工作。
编制目的与范围
本指南是《软件研发成本度量规范》系列应用指南之一,针对预算场景。
《软件研发成本度量规范》中的成本度量,特指对软件研发成本的
预计值进行估算或对实际值进行测量、分析的过程。而《软件研发成本度量规范》中,预算是指根据
项目成本估算的结果确定预计项目费用的过程。因此,本指南主要描述在预算场景下如何开展成本估算工作,而不涉及编制预算的其他方面。
在《软件研发成本度量规范》及本指南中,软件研发过程包括从项目立项开始到项目完成验收之间的
需求分析、设计、编码、集成、测试、验收交付活动及相关的项目管理、支持活动。因此,本指南中软件研发成本仅包括软件研发过程中的所有
直接成本和
间接成本,但不包括
数据迁移、
软件维护等成本。本指南中所涉及工作量、工期也仅为软件研发过程所用工作量、工期。
本指南编制的主要目的是指导预算活动相关各方,基于《软件研发成本度量规范》有效开展成本估算工作,并为确定软件项目预算提供科学依据。
本指南明确了基于《软件研发成本度量规范》和基准数据开展成本估算相关活动的步骤与方法,并通过示例,明确了典型情况的估算及调整方法;对于其他特殊情况,相关人员应根据本指南及《软件研发成本度量规范》中的
相关原则,结合项目特点,选择适当的估算方法或对估算结果进行合理调整。
对于与预算类似的其他早期估算应用场景,相关人员也可参照本指南的相关原则与方法,开展项目估算活动。