当前位置: 主页 > 建站知识 > 软件开发

软件开发成本估算-估算项目成本准确性

发布时间:2023-03-09 12:24   浏览次数:次   作者:佚名

软件开发成本估算_在施工前对成本进行估算的是_估算项目成本准确性

北京软件造价评估技术创新联盟CTO 王海青

面临的问题

随着国内金融行业市场化进程持续加快以及互联网金融的兴起,信息技术尤其是软件技术的应用对于金融科技创新至关重要。各大金融机构在持续加大科技创新力度的同时,如何科学、高效地管控应用开发的投入并充分利用现有资源,进一步提升交付质量和IT治理水平变得尤为关键。

当前金融行业在软件开发及管理方面面临的主要问题包括:

●行政预算管理主要基于专家经验,缺乏系统、科学的方法,如何在保证信息系统建设有效投入的同时避免浪费,成为日益突出的问题;

●费用测算过程缺乏依据,导致相关各方在产生分歧时难以达成共识,也为日后信息系统审计工作带来隐患;

●在项目计划编制及实施过程中,由于缺乏有效方法评估软件规模及合理的资源代价,使得项目管理没有有效抓手,最终只能关注是否按时交付以及投产后是否发生了生产问题。而诸如“项目的合理工作量及工期是多少?”、“变更对项目的影响是多大?”、“目前项目的进度或者质量是否存在风险?”等问题难以回答,项目管控的有效性更多依赖项目经理的个人能力而非制度;

●传统的基于人天核定项目费用的方式,难以有效评价用户价值与成本的关系,供应商也缺乏足够的动力提升自身能力;

●缺乏客观评价系统“价值”的方法,制约了项目后评估、系统有效性评价等精细化管理工作的开展,难以形成科技工作持续改进的闭环

相关标准与方法

上述问题并非金融行业所独有,而是在软件开发领域普遍存在。为了应对上述问题,软件工程领域的专家一直寻求找到科学的方法对软件开发工作进行有效地度量和评估,进而全面提升软件项目的开发效能和管控水平。

在施工前对成本进行估算的是_软件开发成本估算_估算项目成本准确性

在上世纪70年代,IBM的工程师针对金融行业大型系统开发,提出了功能点方法的原型,用于评估软件的规模和价值,并进而推算所需的资源代价。随着功能点方法在各大行业,特别是金融行业的成功应用并成为国际标准,各种基于功能点方法的软件工作量及费用量化评估方法也逐渐兴起。上世纪80年代,软件工程大师CaperJones在《Programming Productivity》一书中首次提出了用基准比对(benchmarking)方法进行软件评估的思想,为软件开发工作量量化评估体系提供了另一重要基石。近几十年来,随着基准比对方法及各种统计过程控制方法逐步应用于软件行业,采用量化方法评估软件开发的工作量及费用,进而对开发过程进行量化管理、持续改进,逐渐成为大型组织提升自身管理水平的必由之路。

为了将行业中的最佳实践进行有效地总结与抽象,同时进一步规范软件工作量及费用的评估方法及过程,国内外相继发布了一系列标准。这其中既包括早纳入ISO国际标准并被转化为国标的软件规模度量基础标准(如GB/T 18491)以及五种功能点方法标准(分别对应IFPUG、NESMA、COSMIC、FiSMA、MK II方法);也包括基于功能点方法,并对工作量、成本甚至费用进行测算的国家、行业及地方标准,如工业和信息化部行业标准《软件研发成本度量规范》(SJ/T 11463-2013)(后升级为国家标准《软件工程 软件开发成本度量规范》(GB/T 36964-2018)),北京市地方标准《信息化项目软件开发费用测算规范》(DB11/T 1010—2013)。目前,国标委正组织相关专家进行IT服务运维成本度量规范的研制工作,以进一步拓展量化评估方法在软件全生命周期的应用。

在上述标准中,工信部标准《软件研发成本度量规范》自2013年发布以来,在各大行业,特别是金融行业取得了广泛的应用和良好的效果。此标准所采用的方法(功能点方法、基准比对方法)以及所使用的基准数据(CSBMK)也成为金融行业,特别是银行业进行软件项目工作量及费用评估最主流的方法和参考依据。

相关方法及标准的主要应用场景包括(但不限于):

●人力资源规划:评估IT团队产能缺口,测算自有人员及外包团队合理规模;

●预算管理:保证IT投资有效投入,提高合规性,降低管理风险;

●工期合理性评估:测算项目合理交付周期,将以人月为基础的成本导向结算转为以功能规模为基础的交付价值导向,实现甲乙方的合作共赢,加快交付速度;

●部门虚拟结算:体现IT价值,有效管理项目范围,拉动业务需求质量提升;

●外包管理:招投标管理及商务谈判;单一来源项目合理议价;对供应商能力水平进行定量评价;

●产品管理:助力产品规划、重用管理,定量评价研发基础工作的价值;

估算项目成本准确性_在施工前对成本进行估算的是_软件开发成本估算

●IT部门内部管理与过程改进:建立研发过程定量管理的闭环,全面提升研发管理水平;

●项目后评价:项目结束后定量评估交付价值,并与预算/计划比对,形成管理闭环;与同业对标,了解自身水平及短板软件开发成本估算,持续改进。

工作量及费用量化评估过程

在国标《软件工程 软件开发成本度量规范》及行标《软件研发成本度量规范》中,明确了基于基准比对方法及功能规模估算的基本技术思路。其成本及费用测算过程如下图所示:

在施工前对成本进行估算的是_估算项目成本准确性_软件开发成本估算

图1测算过程示意图

由上图1可以看出,规模估算是基础。在标准中,明确了可采用国际标准的功能点方法对软件规模进行测算,“功能点”是软件的规模单位,就类似于“平方米”之于房子,“公里”之于距离。

在金融行业,信息化项目规模估算多采用快速功能点方法。该方法的优点就是提出了针对不同的应用场景,采用不同级别的规模估算方式,即:预估功能点方法、估算功能点方法和详细功能点方法。

例如,在项目早期立项、预算阶段,由于项目需求较为模糊,更适合采用“预估功能点方法”;而在在项目中期,用户和开发方对项目需求有了更加清晰地界定,可以利用“估算功能点方法”进行度量;当项目需求完全确定时,可以进行采用“详细功能点方法”进行详细估算。值得一提的是,由于详细功能点方法较估算功能点方法计数复杂,且工作量增加显著,但两种方法估算值偏差不大,所以行业内一般不建议使用详细功能点方法。

当软件规模确定后,可以参照如下公式进行工作量估算:

估算项目成本准确性_在施工前对成本进行估算的是_软件开发成本估算

工作量=规模×生产率×调整因子

其中,基准生产率和调整因子的取值可以参照中国软件行业基准数据(当前最新版本为CSBMK®-201809,可通过、等网站查询)或本组织历史数据。

依据工作量估算结果和平均人力成本费率,直接计算出直接人力成本和间接成本的总和,再加上直接非人力成本(如差旅费、培训费等),即可计算软件开发成本。

以某银行反洗钱系统部分功能为例,其需求片段如表1所示:

在施工前对成本进行估算的是_软件开发成本估算_估算项目成本准确性

表1需求片段

据此,我们可以采用“估算功能点方法”,填写《功能点计数清单》,如表2所示:

在施工前对成本进行估算的是_软件开发成本估算_估算项目成本准确性

表2估算功能点计数清单

根据该行历史数据分析,假设该系统基准生产率为12人时/功能点,人月基准单价为3万元/人月,则工作量及费用测算结果(未包含直接非人力成本)如表3所示:

在施工前对成本进行估算的是_软件开发成本估算_估算项目成本准确性

在施工前对成本进行估算的是_估算项目成本准确性_软件开发成本估算

表3计划工作量

注:限于本文篇幅,对于量化评估方法的技术细节及测算过程不再展开讲解,相关内容可以参阅《软件成本度量标准实施指南》(清华大学出版社,2017)、《软件研发成本度量规范释义》第2版(机械工业出版社,2017)等专业书籍。

方法应用及展望

北京软件造价评估技术创新联盟组织专家在完成相关标准的研制工作后,积极参与到相关标准推广及行业数据库建设工作中,并取得良好应用效果。

自2013年以来,中国人民银行、国家开发银行、中国银行、交通银行、邮储银行、招商银行、平安银行、光大银行、中信银行、南京银行、徽商银行、河北农信、阳光保险、太平洋保险等诸多金融机构逐步引入行业标准,采用量化方法对软件项目进行量化评估或管理,在有效控制科技投入的前提下,提升了IT治理水平和项目管控能力。与此同时,在金融行业已经有近3000人参加了软件工程造价师专业培训并通过考试,形成了可保证方法进一步深化应用的专业人才队伍。

从项目全生命周期看,应用相关方法可以形成事前预测、事中控制,事后评价的管理闭环。

在项目早期,可以采用“快速功能点方法”对项目所需资源进行合理的估算,进而科学确定项目预算及计划。同时,运用功能点方法建立了定量的项目范围基线,为后续项目范围变化时做出科学决策奠定了良好的基础。这一点对于需求不确定的创新项目、临时性任务、或者敏捷项目尤为重要。

在项目中期,功能点方法主要用于项目性能监控以及项目范围管理。同时,由于功能点方法从业务视角出发,并且需要对所有相关系统进行计数,因此软件开发成本估算,在拉动需求质量提升,加强业务需求分析能力,明确业务需求影响范围等方面也都有积极的作用。

在测试环节,可以结合功能点方法开展测试分析工作,并利用测试用例密度等指标设定更为合理的测试策略。

软件开发成本估算_估算项目成本准确性_在施工前对成本进行估算的是

在项目后评价时,则可以根据生产率、缺陷密度、交付质量、交付速度等指标对项目、团队、供应商进行系统科学地评价,并可与行业数据对标,发现差异点,从而更有效地开展改进活动。

相关方法的导入及应用是一个长期持续优化的过程,应在建立整体规划的基础之上分步实施。通常宜以一两个管理痛点切入,在取得良好应用效果之后,再逐步扩展应用场景,并形成量化管理的闭环。方法在各金融机构的应用场景如下图所示:

软件开发成本估算_在施工前对成本进行估算的是_估算项目成本准确性

图2应用场景示意图

随着相关方法在金融行业的深入应用,方法及其应用模式也在逐步演变,其主要趋势体现在以下几个方面:

●应用场景:从内部管理为主延展到费用核算、供应商管理、预算管理与审计等诸多领域;

●应用机构:从以千人以上规模的大型金融机构(如国有银行、股份制商业银行)为主向数百人(含外包)甚至更小规模的金融机构(如城商行、农商行、证券公司、金融租赁公司等)扩展;

●方法演进:从主要针对功能性需求的规模度量演进到支持特殊系统、非功能需求度量(如数据仓库、人工智能、UI优化等);

●流程设计:从牵头部门(早期多为项目管理部门)、应用阶段(早期多用于项目估算)、到计数人员(早期多为项目经理)等诸多方面都发生了变化,并趋向多部门(如项目管理、质量、需求、架构等)、多流程(如预算管理、项目管理、外包管理、产品管理等)的协同与相关能力(如需求、架构)拉动与提升;

●工具支撑:从基于EXCEL的简单工具发展到与过程管理工具深度结合,并开始探索利用AI技术进行规模辅助审核/计数以及工作量费用自动测算。

我们相信,随着各金融机构在IT建设方面的持续投入以及精细化管理意识的逐步提升,软件开发工作量及费用量化评估方法一定可以得到更广泛的应用,并在持续的实践中不断完善,从而发挥日益重要的作用。

供稿单位:北京软件造价评估技术创新联盟

联盟官网: