‘壹’ 软件项目的成本如何估算
定制软件开发是软件开发的一个领域,开发定制的数字技术解决方案以满足特定业务组织的特定需求。话虽如此,任何投资于定制软件开发的组织都必须有适当的计划和预算。定制软件开发项目有两个非常重要的限制需要考虑:时间和成本。(准确估算软件开发项目的成本是保障其整体成功的关键)。
在为某个定制软件开发项目制定计划时,组织或个人会问两个问题。
“多少钱?”
“多长时间?”
一、确定定制软件开发的基础工作
要确定和估算某个软件开发项目的成本,必须了解定制软件开发的基础知识。更具体地说,您必须知道问题的答案:
“定制软件开发是如何执行的?”
为了最简单、最全面地回答这个问题,需要讨论以下几点,它们是定制软件开发的基础。
确定需求——它有助于更好地估算成本,还可以正确开发和执行开发任务。
计划整个过程并设定目标——为整个软件项目开发周期制定适当的计划可以在时间和成本管理方面大有帮助。
详细文档——必须记录项目计划、实施计划、测试计划、范围说明书和培训计划中的所有内容。
为定制软件寻找合适的专业团队——能够高效工作并且能够同时处理多项任务,为整个过程提升效益。
二、确定影响定制软件开发成本的因素
在下面这一部分,讨论影响自定义软件开发项目的关键因素。确定软件开发项目的成本需要组织或个人考虑并考虑这些因素。
软件的规模和类型:软件的规模和类型是决定开发成本的两个关键因素。
例如,移动应用程序或电子商务商店将比银行或医院 ERP 解决方案等其他类型的软件便宜。自定义软件、仓库管理、安全应用程序和 CRM 解决方案的类型通常更加昂贵和耗时。
复杂性:开发的复杂性是影响整体定制软件开发估算的关键因素。
设计结构:设计结构有两个关键领域:创意设计和UI/UX设计。这两个因素对于项目的总成本都是必不可少的。
集成:第三方集成需要大量的精力和资源。
数据迁移:数据迁移是一个非常具体和准确的过程,需要自定义脚本和多个渠道。
开发时间:开发时间是影响定制软件开发成本的关键因素,人力成本是最大的支出。
功能和平台:尽管听起来很明显,软件运行的平台及其功能对您需要在产品上进行的整体投资有重大影响。
测试:有助于确定软件的效率和功能,还涉及一些影响项目总成本的支出。
维护:在成本估算时,还必须考虑某种定制软件产品的维护和支持类型。
三、如何估算定制软件的规模
快速功能点方法是依据国际标准《ISO/IEC 24570-2005软件工程NESMA功能尺度测量法2.1版功能点分析应用的定义和计数指南》提出的一种软件规模度量方法。
该方法适用于软件项目早期、中期、后期等各个阶段的规模估算或测量。
快速功能点方法进行规模估算或测量的基本过程或步骤如下:
确定计数类型
识别系统边界
识别功能点计数项
计算未调整的功能点数
计算调整后的功能点数。
那么就让新星为大家详细对每个步骤进行剖析:
1、确定计数类型
根据需求或项目的类型确定计数类型。
计数类型分为三种:新开发、延续开发及已有系统计数。
对于新开发需求或项目,对预计(或实际)投产的功能进行计数;
对于延续开发需求或项目,对预计(或实际)新增、修改及删除的功能均进行计数;
对于已有系统,对实际的功能进行计数。
2、识别系统边界
在识别系统边界的时候应注意:
应从用户视角出发,不受系统实现影响;
主要是为了区分内部逻辑文件(ILF)和外部接口文件(EIF);
事务功能应穿越识别的系统边界。
3、识别功能点计数项
功能点计数项分为数据功能和交易功能两类。
数据功能——包括内部逻辑文件(ILF)、外部接口文件(EIF);
交易功能——包括外部输入(EI)、外部输出(EO)、外部查询(EQ)。
数据功能:系统提供给用户的满足产品内部和外部数据需求的功能,即本系统管理或使用那些业务数据(业务对象),如“客户信息”“账户交易记录”等。内部逻辑文件或外部接口文件所指的“文件”不是传统数据处理意义上的文件,而是指一组客户可识别的、逻辑上相互关联的数据或者控制信息。因此,这些文件和物理上的数据集合(如数据库表)没有必然的对应关系。
交易功能:系统提供给用户的处理数据的功能,即本系统如何处理和使用那些业务数据(业务对象),如“转账”“修改黑名单生成规则”“查询交易记录”等。交易功能又称为基本过程,是用户可识别的,业务上的一组原子操作,可能由多个处理逻辑构成。例如,“添加柜员信息”这个基本过程可能包含“信息校验”“修改确认”“修改结果反馈”等一系列处理逻辑。
3、计算未调整的功能点数
a.采用预估功能点进行计数,计算公式如下:
FP=35ILF+15EIF
——FP:未调整的功能点数,单位为功能点;
——ILF:内部逻辑文件的数量;
——EIF:外部接口文件的数量。
b.采用估算功能点进行计数,计算公式如下:
FP=10ILF+7EIF+4EI+5EO+4*EQ
——FP:未调整的功能点数,单位为功能点;
——ILF:内部逻辑文件的数量;
——EIF:外部接口文件的数量;
——EI:外部输入的数量;
——EO:外部输出的数量;
——EQ:外部查询的数量。
5、计算调整后的功能点数
根据不同的规模测算阶段,需要考虑隐含需求及需求变更对规模的影响,因此,需要根据规模计数时机进行规模调整。
调整后的功能点数(AFP),计算公式如下:
AFP=FP*CF
——AFP:调整后的功能点数,单位为功能点;
——FP:未调整的功能点数,单位为功能点;
——CF:规模变更调整因子,依据行业数据,项目估算早期(如概预算阶段)通常取值为1.5;项目估算中期(如招投评标、项目立项、技术方案阶段)通常取值为1.26;项目估算中后期(如需求分析完成及后评价)通常取值为1.0。
四、估算软件项目开发成本
得出功能点数后,结合当地人力成本成本费率和项目非人力成本支出可以估算出软件项目开发成本。
‘贰’ 软件成本评估都包含哪些内容
完整的软件造价评估应该包含哪些?
1 估算基础
对估算对象(需求、任务等)的拆分颗粒度定义了上限与下限,以提升估算的准确度。
完备识别了估算对象,没有遗漏的需求或任务。
估算人员经过了估算方法的系统培训。
定义了组织级的估算方法。
2 规模估算
从不估算规模或经验估算规模升级为客观度量规模,比如采用国际标准的功能点方法或自定义的规模度量方法,无论是哪种方法,规模与工作量之间应该是强相关的才是合理的。
如果对本公司的项目而言,规模与工作量不强相关,也可以是复杂度等其他因子,对这些因子应该也与工作量做了相关性分析,与工作量应该强相关才是合理的。
3 工作量估算
建立了从规模的客观度量用定量模型推算出项目总工作量。
建立了工作量分布百分比的性能基线,可以从总工作量推算各阶段或各类任务的工作量。比如开发的工作量、测试的工作量。
能够用PPB或PPM推算出各种关键活动的最少投入工作量,比如需求评审的工作量、代码评审的工作量、系统测试的工作量等。
工作量的估算结果应该是一个区间,而不是单点值。如,总工作量不超过100人月。
4 成本估算
从工作量到成本有定量的计算方法。
成本的估算结果应该也是一个区间,而不是单点值。比如不超过30万,或者在25到30万之间等。
5 工期估算
识别了项目的关键路径与关键链。
对项目的工期进行了模拟,得到满足项目工期要求的概率有多大。如果概率太低,对关键路链上的任务、投入的资源与需要完成的需求进行了优化。
6 评审与修订估算
保存了估算记录,估算结果经过了评审。
随着需求和任务的明确,在开发过程中修订了估算结果。
7 持续改进估算过程
对比了估算结果与实际结果,对估算偏差率建立了过程性能基线或过程性能模型。
总结了估算有关的经验教训。
对估算方法和过程进行了持续优化。
跟踪检查了估算方法与过程在组织级的落地实施情况。
‘叁’ 软件开发的成本
软件开发成本主要指软件开发过程中所花费的工作量及相应的代价。
在对一个软件项目进行开发成本估算时,应该包括从项目立项直至项目研发活动结束所花费的资源总和,并且可以按阶段进行估算或测量。
软件开成本估算的过程可分为:估算规模、估算工作量、估算工期和估算成本这4个过程,最终确定软件成本。其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。
开发平台
软件开发平台源于繁琐的实践开发过程中。开发人员在实践中将常用的函数、类、抽象、接口等进行总结、封装,成为了可以重复使用的“中间件”,而随着“中间件”的成熟和通用,功能更强大、更能满足企业级客户需求的——软件开发平台应运而生。
平台是一段时间内科研成果的汇聚,也是阶段性平台期的标志,为行业进入新的研发领域提供了基础。由于平台对企业核心竞争力的提升非常明显,国内的管理软件市场,软件开发平台的应用已经成为一种趋势。
以上内容参考:网络-软件开发
‘肆’ 如何确定软件的开发成本价格
软件开发成本估算过程可进一步细分为软件规模估算、工作量估算、成本估算和确定软件开发成本等四个过程。
其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。
国家标准《GB/T 36964-2018 软件工程 软件开发成本度量规范》中建议的软件开发成本估算基本流程如下图所示:
国家准中的四个估算过程,层层递进,逐步细化,最终达到科学、一致的成本估算。
一、软件规模估算
通常情况下,规模估算是软件成本估算过程的起点。
估算规模是后续计算软件项目的工作量、成本和进度的主要输入,是项目范围管理的关键,因此,在条件允许的情况下,应首先进行规模估算。
在规模估算过程中,需要注意以下情况:
1.在规模估算开始前,应根据可行性研究报告或类似文档明确项目需求及系统边界。项目需求除包含最基本的业务需求外,还应进行初步的子系统/模块划分,并对每一子系统或模块的基本用户需求进行说明,以保证可以根据项目需求进行规模预估。
2.依据项目特点和需求详细程度不同,通常估算人员在选择估算方法时应采用纳入国际标准的功能点方法进行功能规模估算,在适用IFPUG或NESMA方法时,可以根据需求的粒度和管理需要,选择预估功能点方法、估算功能点方法或者详细功能点方法。
3.若当前的项目需求极其模糊或不确定,可不进行规模估算,而直接采用类比法或类推法估算工作量和成本。
二、工作量估算
在完成规模估算后,应当开展工作量估算工作,若当前项目未开展规模估算,也可直接启动工作量估算工作。
工作量估算时,可采用方程法、类比法、类推法、功能点法:
方程法:即基于基准数据建立参数模型,通过输入各项参数,确定估算值。
类比法:即将待估算项目的部分属性与类似的一组基准数据进行比对,进而确定估算值。
类推法:即将待估算项目的部分属性与高度类似的一个或几个已完成项目的数据进行比对,并进行适当调整后确定估算值。
功能点法:从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计。功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行成为最主流的软件规模度量方法。
在开展工作量估算的过程中,需要注意以下情况:
1.当需求极其模糊或不确定时,如果此时具有高度类似的历史项目,则可直接采用类推法,充分利用历史项目数据来粗略估算工作量。
2.当需求极其模糊或不确定时,如果此时具有与本项目部分属性类似的一组基准数据,则可直接采用类比法,充分利用基准数据来粗略估算工作量。
3.对于规模估算已经开展的项目,可采用方程法,通过输入各项参数,确定待估算项目的工作量。若客户或高层对项目的工期有明确的要求时,在采用方程法估算工作量时,工期要求有可能是方程的参数之一。
4.为追求估算的准确性,建议在条件允许的情况下,可采用两种估算方法,对估算结果进行交叉验证,若估算结果差别不大,可直接使用两种估算结果的平均值或以某种估算结果为准,若差别较大,需进行差异分析。
5.工作量的估算结果宜为一个范围而不是单一的值。
三、成本估算
在获得了工作量估算结果后,可采用科学的方法进行成本估算。
在成本估算过程中,应需要注意的情况:
1.类比法和类推法,同样适用于需求极其模糊或不确定时的成本估算;
2.间接成本是否与工作量估算结果相关取决于间接成本分摊计算方式。在绝大多数组织,项目周期越长,项目组成员越多,其分摊的间接成本就越高,此时项目的间接成本与工作量估算结果直接相关;
3.直接非人力成本通常与工作量估算结果无关,宜单独分项测算;
4. 成本估算结果,也通常为一个范围,而不是单一的值。
四、确定软件开发成本
在《软件工程 软件开发成本度量规范》中,将软件开发成本分为四类,主要是为便于对成本构成(即哪些成本属于开发成本,哪些不属于开发成本)进行清晰界定。
而在实际确定软件开发成本时,通常并不是分别测定四类成本,加和后获得总成本,而是通常采用以下两种方式确定总成本:
1.根据人力成本费率及工作量估算直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本;
2.根据规模综合单价和软件规模,测算出直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本。
在进行软件的规模、工作量、成本估算时应遵循以下原则:
1.在规模估算时,应根据项目特点和需求的详细程度选择合适的估算方法;
2.充分利用基准数据,采用方程法、类比法或类推法,对工作量和成本进行估算;
3.工作量和成本的估算结果宜为一个范围值;
4.在进行成本估算时,如有明确的工期要求,应充分考虑工期对项目成本的影响,可以根据项目实际情况以及工期对项目的影响程度,对成本的估算结果进行调整;
5.成本估算过程中宜采用不同的方法分别估算并进行交叉验证。如果不同方法的估算结果产生较大差异,可采用专家评审方法确定估算结果,也可使用较简单的加权平均方法;
6.在软件项目的不同场景下(如预算、招投标、项目计划和变更管理等)采用国家标准时,相关要求见国家标准中附录A。
除了上述主要原则外,我们还需注意在使用基准数据时:
1. 对于委托方和第三方,建议使用或参考软件行业基准数据进行估算。估算模型的调整因子的增减或取值有可能随着行业基准数据的变化而变化。
2.对于开发方,在引入行业基准数据的基础上,可逐步建立组织级基准数据库,以提高估算精度。组织级基准数据定义应与行业基准数据定义保持一致,以便于与行业基准数据进行比对分析,并持续提升组织能力。
‘伍’ 软件开发价格包含什么
软件开发价格包含什么?
研发费用可以加计扣除,研发人员的工资是要计入管理费用的研发费用。
互联网是个神奇的大网,大数据开发和软件定制也是一种模式,这里提供最详细的报价,如果你真的想做,可以来这里,这个手机的开始数字是一伍扒中间的是壹壹三三最后的是泗柒泗泗,按照顺序组合起来就可以找到,我想说的是,除非你想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了。
(1)利息支出,指企业短期借款利息、长期借款利息、应付票据利息、票据贴现利息、应付债券利息、长期应付引进国外设备款利息等利息支出(除资本化的利息外)减去银行存款等的利息收入后的净额。
(2)汇兑损失,指企业因向银行结售或购入外汇而产生的银行买入、卖出价与记账所采用的汇率之间的差额,以及月度(季度、年度)终了,各种外币账户的外币期末余额按照期末规定汇率折合的记账人民币金额与原账面人民币金额之间的差额等。
(3)相关的手续费,指发行债券所需支付的手续费(需资本化的手续费除外)、开出汇票的银行手续费、调剂外汇手续费等,但不包括发行股票所支付的手续费等。
(4)其他财务费用,如融资租入固定资产发生的融资租赁费用等。
核算范围及各项费用处理方式
1、本科目核算房地产开发企业在土地、房屋、配套设开发成本施和代建工程的开发过程中所发生的各项费用。企业对出租房进行装饰及增补室内设施而发生的出租房工程支出,也在本科目核算。
出租开发产品经营业务中发生的按月计提的出租开发产品摊销等,可直接计入“其他业务成本”科目,不通过本科目核算。
企业为进行资金的筹集等理财活动而发生的利息支出,以及企业行政管理部门为组织和管理房地产开发经营活动而发生的管理费用,应作为期间费用,直接计入当期损益,不在本科目核算。
2、企业在土地、房屋、配套设施和代建工程的开发过程中发生的各项费用,包括土地征用及拆迁补偿费、前期工程费、基础设施费、建筑安装工程费、配套设施费和开发间接费用等。企业发生的土地征用及拆迁补偿费、前期工程费、基础设施费和建筑安装工程费等。
属于直接费用,直接计入本科目(有关成本核算对象的成本项目中);应由开发产品成本负担的间接费用,应先在“开发间接费用”科目进行归集,月末,再按一定的分配标准分配计入有关的开发产品成本。
‘陆’ IT系统总拥有成本包含什么
购买成本、 安装成本、 财务成本、 佣金、 能源成本、 维修成本、 升级成本、 转换成本、 培训成本、 支持成本、 服务成本、 维持成本、 当机成本、 安全成本、 生产力成本、 风险成本、 处理成本
‘柒’ 软件开发成本有哪些
所谓售前成本,就是在合同签订前,乙方为这个项目做商务、做演示、做售前调研等付出的成本(人工费、办公费、差旅费等)。倒霉的是,并不是每个售前项目都可以签单,更倒霉的是,一般情况下丢单的比签单的多,这些丢单的售前项目,成本往哪里去呢,自然需要由签下的项目弥补。
直接人工成本。
每个开发团队包括很多岗位,如项目实施经理、需求分析师、系统架构师、程序员、测试工程师、美工、客服等,这些岗位的人,都是需要吃饭的,都需要发工资、交五险一金。一个项目要做好,离不开这些岗位通力合作。即使只看直接人工成本,也远远不止程序员的工资社保。
开发工具及设备成本。
团队在开发过程中需要各种开发工具,有些工具是开源免费的,但也有很多工具是要收费的。当然,一般来说,每个团队都有很多开发项目,这个成本分摊到每个项目并不高,几乎可以忽略不计。但是,有的时候,有些特殊的设备是为这个项目专门采购的,那么这个成本就不能忽视了。
间接人工成本。
‘捌’ 软件工程范围,时间,成本这三项分别由哪些角色控制
成本管理是软件项目管理的主要内容之一,分析了目前软件开发成本管理过程中存在的问题,提出了将进度和成本联系起来考虑,使工作量和实际成本匹配的方法。结合现有的估算方法,设计成本管理系统并将其应用于软件项目管理平台中,旨在改善软件开发中成本超支的现象,为企业提高效益。
关键词 软件项目管理平台 成本估算 成本控制
随着信息技术的飞速发展,软件产业在国民经济中扮演着越来越重要的角色。对软件开发实施有效的管理是决定软件产业发展的至关重要的因素。在软件项目的开发过程中,项目管理日益受到人们的关注。软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。成本管理是软件项目管理的一个主要内容,就目前发展来看,成本管理是软件项目管理中一个比较薄弱的方面,许多软件项目由于成本管理不善,造成了软件造价的成本上升,软件质量得不到保证。针对这些现象,文章提出了一种新的成本管理方法,并将其应用于正在研究中的课题--软件项目管理平台的开发当中,以便于开发有效的软件项目管理工具,为企业节约成本,提高经济效益。
1 成本管理概述
项目成本管理包括确保在批准的预算范围内完成项目所需的各个过程[1]。软件项目成本的管理基本上可以用估算和控制来概括,首先对软件的成本进行估算,然后形成成本管理计划,在软件项目开发过程中,对软件项目施加控制使其按照计划进行。成本管理计划是成本控制的标准,不合理的计划可能使项目失去控制,超出预算。因此成本估算是整个成本管理过程中的基础,成本控制是使项目的成本在开发过程中控制在预算范围之内。
1.1 成本管理的过程
软件项目成本管理就是根据企业的情况和项目的具体要求,利用公司既定的资源,在保证项目的进度、质量达到客户满意的情况下,对软件项目成本进行有效的组织、实施、控制、跟踪、分析和考核等一系列管理活动,最大限度地降低项目成本,提高项目利润。
成本管理的过程包括[1]:
l 资源计划,包括决定为实施项目活动需要使用什么资源(人员、设备和物资)以及每种资源的用量。其主要输出是一个资源需求清单。
l 成本估算,包括估计完成项目所需资源成本的近似值。其主要输出是成本管理计划。
l 成本预算,包括将整个成本估算配置到各单项工作,以建立一个衡量绩效的基准计划。其主要输出是成本基准计划。
l 成本控制,包括控制项目预算的变化。其主要输出修正的成本估算、更新预算、纠正行动和取得的教训。
1.2 软件开发成本管理过程中的主要问题
(1) 项目成本预算和估算的准确度差。
由于客户的需求不断变化,使得工作内容和工作量不断变化。一旦发生变化,项目经理就追加项目预算,预算频频变更,等到项目结束时,实际成本和初始计划偏离很大。
此外,项目预算往往会走两个极端:过粗和过细。预算过粗会使项目费用的随意性较大,准确度降低;预算过细会使项目控制的内容过多,弹性差,变化不灵活,管理成本加大。
(2) 缺乏对软件成本事先估计的有效控制。
在开发初期,对成本不够关心,忽略对成本的控制,只有在项目进行到后期,实际远离计划出现偏差的时候,才进行成本控制,这样往往导致项目超出预算。
(3) 缺乏成本绩效的分析和跟踪。
传统的项目成本管理中,将预算和实际进行数值对比,但很少有将预算、实际成本和工作量进度联系起来,考虑实际成本和工作量是否匹配的问题。
1.3 成本管理方法的改进
目前常用的软件项目管理工具都侧重于某一方面的功能,如微软的 Project2000侧重管理、规划任务,并在项目执行过程中跟踪这些任务,偏向于进度安排与跟踪控制;RUP侧重于用户需求的描述;PVCS侧重于软件变更管理。这些软件项目管理工具都在不断的完善其功能,虽然也有成本管理的功能,但总的来说大多数都不能用来进行软件成本估计,缺乏事先成本控制,不能和估计数据自动化协调,不能自动化地利用历史数据库中的数据。当前的项目管理工具并不能满足成本管理的需要。
针对以上成本管理过程中出现的问题,以及目前软件项目管理工具的不足,文章提出了一种改进的管理方法,将进度和成本联系起来考虑使工作量和实际成本匹配的方法。并且结合已有的成本估算方法,同时将过程数据库引入到软件项目管理中,给出成本管理系统的原型设计。系统采用先进的估算方法解决了成本估算准确度差的问题,工作量和实际成本匹配的方法进行成本的绩效分析和跟踪使得项目成本能够控制在预算范围之内。
‘玖’ 一个软件项目如何评估工作量和成本
软件开发成本估算过程可进一步细分为软件规模估算、工作量估算、成本估算和确定软件开发成本等四个过程。
其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。
国家标准《GB/T 36964-2018 软件工程 软件开发成本度量规范》中建议的软件开发成本估算基本流程如下图所示:
国家准中的四个估算过程,层层递进,逐步细化,最终达到科学、一致的成本估算。
一、软件规模估算
通常情况下,规模估算是软件成本估算过程的起点。
估算规模是后续计算软件项目的工作量、成本和进度的主要输入,是项目范围管理的关键,因此,在条件允许的情况下,应首先进行规模估算。
在规模估算过程中,需要注意以下情况:
在规模估算开始前,应根据可行性研究报告或类似文档明确项目需求及系统边界。项目需求除包含最基本的业务需求外,还应进行初步的子系统/模块划分,并对每一子系统或模块的基本用户需求进行说明,以保证可以根据项目需求进行规模预估。
依据项目特点和需求详细程度不同,通常估算人员在选择估算方法时应采用纳入国际标准的功能点方法进行功能规模估算,在适用IFPUG或NESMA方法时,可以根据需求的粒度和管理需要,选择预估功能点方法、估算功能点方法或者详细功能点方法。
若当前的项目需求极其模糊或不确定,可不进行规模估算,而直接采用类比法或类推法估算工作量和成本。
二、工作量估算
在完成规模估算后,应当开展工作量估算工作,若当前项目未开展规模估算,也可直接启动工作量估算工作。
工作量估算时,可采用方程法、类比法、类推法、功能点法:
方程法:即基于基准数据建立参数模型,通过输入各项参数,确定估算值。
类比法:即将待估算项目的部分属性与类似的一组基准数据进行比对,进而确定估算值。
类推法:即将待估算项目的部分属性与高度类似的一个或几个已完成项目的数据进行比对,并进行适当调整后确定估算值。
功能点法:从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计。功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行成为最主流的软件规模度量方法。
在开展工作量估算的过程中,需要注意以下情况:
当需求极其模糊或不确定时,如果此时具有高度类似的历史项目,则可直接采用类推法,充分利用历史项目数据来粗略估算工作量。
当需求极其模糊或不确定时,如果此时具有与本项目部分属性类似的一组基准数据,则可直接采用类比法,充分利用基准数据来粗略估算工作量。
对于规模估算已经开展的项目,可采用方程法,通过输入各项参数,确定待估算项目的工作量。若客户或高层对项目的工期有明确的要求时,在采用方程法估算工作量时,工期要求有可能是方程的参数之一。
为追求估算的准确性,建议在条件允许的情况下,可采用两种估算方法,对估算结果进行交叉验证,若估算结果差别不大,可直接使用两种估算结果的平均值或以某种估算结果为准,若差别较大,需进行差异分析。
工作量的估算结果宜为一个范围而不是单一的值。
三、成本估算
在获得了工作量估算结果后,可采用科学的方法进行成本估算。
在成本估算过程中,应需要注意的情况:
类比法和类推法,同样适用于需求极其模糊或不确定时的成本估算;
间接成本是否与工作量估算结果相关取决于间接成本分摊计算方式。在绝大多数组织,项目周期越长,项目组成员越多,其分摊的间接成本就越高,此时项目的间接成本与工作量估算结果直接相关;
直接非人力成本通常与工作量估算结果无关,宜单独分项测算;
成本估算结果,也通常为一个范围,而不是单一的值。
四、确定软件开发成本
在《软件工程 软件开发成本度量规范》中,将软件开发成本分为四类,主要是为便于对成本构成(即哪些成本属于开发成本,哪些不属于开发成本)进行清晰界定。
而在实际确定软件开发成本时,通常并不是分别测定四类成本,加和后获得总成本,而是通常采用以下两种方式确定总成本:
根据人力成本费率及工作量估算直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本;
根据规模综合单价和软件规模,测算出直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本。
在进行软件的规模、工作量、成本估算时应遵循以下原则:
在规模估算时,应根据项目特点和需求的详细程度选择合适的估算方法;
充分利用基准数据,采用方程法、类比法或类推法,对工作量和成本进行估算;
工作量和成本的估算结果宜为一个范围值;
在进行成本估算时,如有明确的工期要求,应充分考虑工期对项目成本的影响,可以根据项目实际情况以及工期对项目的影响程度,对成本的估算结果进行调整;
成本估算过程中宜采用不同的方法分别估算并进行交叉验证。如果不同方法的估算结果产生较大差异,可采用专家评审方法确定估算结果,也可使用较简单的加权平均方法;
在软件项目的不同场景下(如预算、招投标、项目计划和变更管理等)采用国家标准时,相关要求见国家标准中附录A。
除了上述主要原则外,我们还需注意在使用基准数据时:
对于委托方和第三方,建议使用或参考软件行业基准数据进行估算。估算模型的调整因子的增减或取值有可能随着行业基准数据的变化而变化。
对于开发方,在引入行业基准数据的基础上,可逐步建立组织级基准数据库,以提高估算精度。组织级基准数据定义应与行业基准数据定义保持一致,以便于与行业基准数据进行比对分析,并持续提升组织能力。