黄李昊 /中国航天科技集团有限公司
王龙 /北京神舟航天软件技术股份有限公司
殷艳艳 /北京师范大学-香港浸会大学联合国际学院
刘振博 /航天工程咨询(北京)有限公司
当前,国家加快构建新发展格局,大力推进现代化产业体系建设,特别是网络强国和数字中国建设。各大国有企业面对新形势、新机遇、新挑战,积极开展信息化建设,为企业发展提供充足且有效的信息技术服务和支撑。软件项目在信息化建设中占有相当大比重,但当前企业普遍存在无法准确评估软件造价的问题,软件项目的工期、成本难以预测,工作量的合理性难以衡量。因此,如何进行软件项目的量化造价评估成为一个亟待解决的问题。
经调研,国内软件造价评估相关的国家标准GB/T 36964—2018《软件工程 软件开发成本度量规范》、北京市地方标准DB11/T 1010—2019《信息化项目软件开发费用测算规范》、中国计算机用户协会团体标准T/CCUA 005—2023《软件造价评估实施规程》、北京软件造价联盟团体标准T/BSCEA 002—2023《软件造价评估实施规程》等标准主要基于功能点法和工时法两种软件造价评估方法,这两种方法也是目前行业里比较常用的软件造价费用估算方法。
功能点法适用于立项阶段需求分析比较详细的项目或者用于项目完成阶段的最终工作量估算。对于具备功能点法估算条件的项目,估算方法应选用功能点法;对于不具备功能点法估算条件的项目,即当项目需求模糊或不确定时,可采用工时法,基于以往经验进行类比或类推,粗略估算工作量和成本。
功能点是软件规模度量的单位,通过测算功能点规模即可评估软件规模。国际商业机器公司(IBM)的工程师Allan Albrecht 认为衡量软件造价的核心在于衡量软件复杂程度,并于1979 年提出了功能点法,根据软件执行功能的数量和复杂程度进行造价评估,不再根据软件源代码行数进行简单估算。
功能点是软件规模度量的单位,通过测算功能点规模即可评估软件规模。国际商业机器公司(IBM)的工程师Allan Albrecht 认为衡量软件造价的核心在于衡量软件复杂程度,并于1979 年提出了功能点法,根据软件执行功能的数量和复杂程度进行造价评估,不再根据软件源代码行数进行简单估算。
功能点法具有从用户视角进行软件规模度量、定义明确、合理性和准确度高、可重复、可验算等特点,因此功能点法是目前国际上软件行业普遍接受的软件项目规模度量模型。目前国际通用的功能点标准方法有IFPUG、COSMIC、MARK II、NESMA 和FiSMA 等5 种,上述5 种方法适用范围有所不同,比较情况见表1。经对比,IFPUG 和NESMA 两种方法各方面特性较为均衡,易学易用、快速经济,因此在国际和国内应用较广。
表1 功能点法比较情况表
工时法通常根据软件开发商的开发实力和过往经验,参考类似项目的数据,采用类比法或专家法,判断每个需求点需要多少工时可以完成,通常由资深的项目经理或销售经理评估确定。
工时法尤其适用于需求极其模糊或不确定的情况,可以根据与项目类似属性(如规模、应用类型、复杂度、开发团队经验等)的一组基准数据,在整个项目级进行类比分析,也可在子系统级上进行类比分析。
工时法的优点是操作比较简单,计算速度快,客户容易理解,但准确度较低,对评估专家或项目经理的要求较高。
功能点法和工时法对比情况见表2。
表2 功能点法和工时法对比表
综上所述,功能点法具有覆盖软件类别全面、评估准确度较高、合理性较高等显著优点,是国家标准、团体标准中的首选软件规模评估方法。
考虑某国企经营管理信息系统的实际业务场景,此类应用系统通常具有容易分解的功能点,项目需求清晰明确,适合选用功能点法进行软件造价估算;该国企的软件造价费用不仅包含通常认为的软件开发费用,还包括软件实施费用。
本文针对企业经营管理信息系统需求,考虑功能点法中NESMA 方法各项性能较为均衡且尤其适用于在项目早期进行估算的特性,以NESMA 方法为基础提出了改进功能点法。改进功能点法将国家标准GB/T36964—2018《软件工程软件开发成本度量规范》中的功能点法进行适当改进,且增加了软件实施费用项,用于软件造价评估。
改进功能点法具有操作便捷、针对性强等特点,兼顾了该国企软件造价费用包含软件实施费用的业务实践。与国家标准GB/T36964—2018《软件工程 软件开发成本度量规范》中规定的功能点法相比,改进功能点法在部分方面产生了变化,见表3。
表3 改进功能点法与GB/T 36964—2018标准功能点法对比情况表
改进功能点法的操作步骤如下。
规模测算的主要流程是:采用功能点初步度量软件规模,获得软件规模功能点数量值V,再根据实际情况进行规模调整。
一般首先使用复用程度调整,通过对待实现功能复用情况进行分析,识别出可复用的功能及可复用的程度,按照高、中、低进行分档,而后计算获得复用调整后的功能点数量值s。最后进行隐含需求及需求变更调整。
考虑到在软件实施不同阶段都可能存在需求的变更,设置软件规模变更因子项k,调整后的软件规模功能点数量可通过S=s×k进行调整。软件规模变更因子见表4。
表4 软件规模变更因子参数表
依据国家标准GB/T36964—2018《软件工程 软件开发成本度量规范》中推荐使用的方程法计算工作量,公式如下:
其中,AE表示计算得到的最终工作量;S表示调整后的软件规模,即由上一个步骤得到的功能点数量;PDF表示功能点耗时率;SWF表示软件因素调整因子;RDF表示开发因素调整因子。PDF取值从2022 年中国软件行业基准数据(CSBMK—202210)中全行业软件开发生产率基准数据部分获得,取值范围为全行业软件开发生产率基准数据中值P50 的±10%。
软件调整因素SWF一般包括业务领域调整因子、应用领域调整因子、质量要求调整因子、完整性级别调整因子。其中,业务领域调整因子如表5所示,应用领域调整因子、完整性级别调整因子、质量要求调整因子分别从2022 年中国软件行业基准数据(CSBMK—202210)附录A.1、A.2、A.3 部分获得。
表5 应用类型调整因子参数表
依据上步骤得到的工作量数据,可计算获得软件开发费用,计算公式如下:
其中,P表示软件开发费用;AE表示测算的工作量;HM表示人月折算系数,单位通常为人时每人月,取值为176;F表示平均人力成本费率,包括开发方直接人力成本、间接成本及毛利润;DNC表示直接非人力成本。典型城市2022 年平均人力成本费率和典型城市软件开发人月费率变化情况均从2022 年中国软件行业基准数据(CSBMK—202210)人月费率部分获得。
直接非人力成本DNC包括办公费、差旅费、业务费、采购费以及其他未在以上项目列出但确系开发方为开发此项目所需费用。
软件实施包括前期需求调研、功能设计、系统开发、测试、安装部署、数据初始化、用户培训、技术支持、数据迁移、历史数据导入、数据同步等内容。
依据软件工程理论,实施成本系数可按以下公式计算:
实施成本系数=开发成本系数×实施因子t
当为集中式实施项目时,实施因子t与用户数有关,当0 <用户数≤100 时,t=0.2;否则t=0.2+((用户数—100)/100)×f,0.03 ≤f≤0.05,具体取值根据项目实施难度而定(含差旅费)。当为分布式实施项目时,实施因子t与实施点(单位)数量有关,t=0.2+(n—1)×k,其中n表示需要实施的单位数量,0.08 ≤k≤0.15,k取值依据项目难度而定。
最终的软件造价估算结果为第3 个步骤得到的软件开发费用与第4 个步骤得到的软件实施成本之和,即软件造价=软件开发费用+软件实施费用。
本文以某国有企业经营性投资管理系统为例,对其软件造价进行了估算和分析。
经测算,未调整的软件规模具有801 个功能点,依据DB 11/T1010—2019《信息化项目软件开发费用测算规范》进行规模调整,见表6。
表6 系统模块组成及功能点规模估算
首先进行复用程度调整。新开发功能的复用程度较低,复用度调整因子取值为1;对于需进行较大改造才能进行复用的功能点,复用度调整因子取值为2/3;对于仅需进行较小改造或沿用的功能,复用度调整因子取值为1/3。该项目调整后,软件规模s=689 个功能点。
因该系统需求尚未完全确定,预计未来还会有需求变更,故规模变更因子预算时取值k=1.39,该项目调整后的软件规模有S=s×k=957.71 个功能点。
按照2022 年中国软件行业基准数据(CSBMK—202210),全行业软件开发生产率基准数据50 百分位数P50=7.01(单位:人时/功能点),范围取P50 的±10%即6.31~7.71。
根据软件系统特征,业务领域调整因子取值为1,质量要求调整因子取值为0.9,因此计算可得SWF为0.9。在预算时如无特殊要求,开发因素调整因子RDF取值为1。
由此,可计算出工作量AE的最有可能值为957.71×7.01×0.9×1=6042.19 人时。工作量测算合理范围为5437.97 人时~6646.41 人时。
按照2022 年中国软件行业基准数据(CSBMK—202210),该国企所在城市2022 年平均软件开发人月费率为3.2343 万元。该系统直接非人力成本包括办公费4 万元、差旅费1 万元、业务费3.7 万元、第三方功能测试费15 万元。
由上述数据可得该软件开发费用的行业建议值为:(6042.19/176)×3.2343+4+1+3.7+15=134.74 万元,软件开发费用的合理范围为123.64 万元~145.84万元。
该系统暂不考虑在多家单位实施,取n=1,所以软件实施费用的行业建议值为:(6042.19/176)×3.2343×0.2=22.21 万元。软件实施费用的合理范围为19.99 万元~24.43 万元。
综上,该系统的软件费用行业建议值为:134.74+22.21=156.95 万元,合理范围为143.63 万元~170.27 万元。
改进功能点法与现有的评估点法相比,能进一步细化造价预算的构成成分,评估结果更接近于项目的实际预算。
本文结合某国有企业经营性投资管理系统项目实际,基于项目全周期造价的需求,分析了功能点法和工时法的优缺点,建立了有标准依据的可量化软件开发投资造价评估模型,提出了基于改进功能点法的软件造价评估方法,证明了该方法可以对信息化软件开发项目的投资预算和综合造价评估提供定量指导,对提高软件开发项目投资估算的精细化程度具有一定的实用价值。