对信息化管理部门来说,信息化造价的价值在于提高生态圈协同效率、信息化资金绩效、架构治理、项目管理合规等水平。对软件研发机构来说,科学客观且结合实际情况的评估工作会提高软件价值,优化软件生态,促进良性竞争,提高软件组织盈利能力,杜绝重大预算浪费,有助发展自主可控的软件研发。2018年12月,国家市场监督管理总局等发布《软件工程 软件开发成本度量规范》(GB/T 36964-2018),是软件工程造价的基本方法指引。结合在信息化工程造价中的实践,畅享网研究咨询中心回顾行业发展历程,学习国家标准,就信息化工程造价中的软件开发规模估算问题进行总结,与行业人士交流。
估算方法选择
软件开发项目规模估算是软件工作量及成本度量的基础,能否科学评价软件规模是有效开展成本度量工作的前提,这在软件研发成本度量以及测试成本度量两个工作中都有体现。目前,估算软件规模的方法有两种:基于开发视角和基于业务视角。
基于开发视角的方法是从开发者角度出发,如代码行、数据库表、服务数、接口数等。优点是操作简单、实施容易。但非技术人员难以理解,不容易在项目干系人之间达成一致,往往会引起较多的分歧。总体来说,任何程序大小或代码行数的猜想,实际上都是从系统要提供的功能性推演出来,基于开发视角的评估方法虽然在实际工作中有着普遍的应用,但更多地局限于软件开发团队内部。
基于业务视角的方法是从用户角度出发,与软件开发技术无关,如功能点、故事点、用例点、对象点等方法。优点是操作具有一致性、客观性、可复制、可验证、不冒进,且与技术无关。同时,功能点方法从用户视角和业务价值度量软件的规模,需求方、开发方、管理方也都能使用此方法。
图1 多种软件规模度量方法对比 畅享网整理
其中,功能点方法是通过识别内外部逻辑文件及功能的方式,评估软件工程的规模、工作量及费用,该方法与软件开发技术无关,不受不同评估人员的主观因素影响,比对象点、用例点、故事点等都更具有科学依据,《软件工程软件开发成本度量规范》就是使用功能点法。
功能点法介绍
上世纪八十年代,IBM公司率先提出功能点法,并发布功能点使用指南。它是对软件用户功能需求进行度量的一种方法,功能点(FP)是功能价值(Function Value)的计量单位,类似于平方米、公斤等计量单位。
图2 功能点法的发展历史 畅享网整理
随着功能点法的不断发展,已成为国内外软件规划度量的标准。它简单实用,对于用户来说通过功能点的多少就能衡量软件规模的大小。能够在项目早期进行规模度量,有项目需求规格说明书、设计文档等即可分析软件的功能规模。度量方式更客观,不用考虑编程语言、实现技术或者硬件平台信息。不同的人员对相同的软件需求会有高度近似的功能点计数结果,误差可在±5%之内。用这个方法结合一些基准数据以及估算模型就可以对软件开发的工作量进行估算。
近年来,功能点方法实践与应用的场景越来越多。随着5G、大数据、人工智能等新型技术的不断发展,软件市场进一步扩大,度量成为项目管理工作的基础性要求,功能点法简单实用,被广泛认可和接受。对于外包软件项目来说,功能点方法是软件项目通用、基本的成本计算方法,可客观、独立的对软件项目规模进行估计,确定开发成本和投标价格。随着国际标准化组织开始建立相应的标准,从根本上肯定了功能点分析方法的科学性。功能点法以功能点数的形式来表示软件的规模,对于提高软件开发效益,有着明显效果。
功能点法中的规模估算
快速功能点度量方法是依据国际ISO标准提出的一种软件规模度量方法,可采用预估功能点和估算功能点进行软件项目规模的估算和测量。
图3 快速功能点度量方法估算软件项目规模 畅享网整理
➣ 确定应用类型。软件工程分为新开发、增强开发、已有系统等。新开发主要为识别所有新增功能;增强开发主要为识别变化功能,包括新增、修改及删除;已有系统计数主要为识别最终交付功能。
➣ 识别系统边界。系统内属于项目创建内容,系统外不需要创建,但需要考虑和它们之间的接口。除了能确定系统内元素外,还应界定本系统对外的输入与输出,即本系统与外部环境的关系。
➣ 识别功能点计数项。功能点计数项分为数据功能和交易功能2大类。具体包括:内部逻辑文件(ILF)、外部接口文件(EIF)、外部输入(EI)、外部输出(EO)、外部查询(EQ)。估算数据功能的复杂度就是估算ILF、EIF的复杂度,也可以简单理解为对数据库复杂度的计算。功能确定后,即可估算ILF和EIF的个数。估算交互功能的复杂度就是估算EI、EO、EQ的复杂度,也可以简单理解为对程序开发复杂度的计算。和用户之间的接口确定后,即可估算EI、EQ、EO的个数。
➣ 调整计数项复杂度。一是识别应用程序中的ILF、EIF、EI、EQ、EO的个数,并根据复杂度决定取值后计算。所有的功能点计数项都有其对应规则,比如:ILF是用户能够识别的、存在内在逻辑关系的一组数据或控制信息;EIF是用户能够识别的、在本应用中被引用的、存在内在逻辑关系的一组数据或控制信息。二是确认数据功能、交易功能的复杂度。数据功能的复杂性是由其包含的RET数目和DET数目决定。数据功能的复杂性分为低、中、高三个等级,每个等级对应的DET和RET数目范围不同。
➣ 确定GSC因子。标准功能点方法共有14个通用系统特征分别赋值。包括数据通讯、分布式处理、性能、高使用强度的配置、事务频度、在线数据输入、终端用户效率、在线更新、复杂处理、可重用性、易安装性、易操作性、多点运行、易变更。调整范围在0.65-1.35之间。
➣ 计算调整后的功能点。根据未调整功能点和调整因子计算已调整功能点,即FPC=UFP*VAF。
目前,规模估算已广泛应用于开发及运维费用估算、工期合理性评估、外包管理、产品管理以及项目后评价等多种场景,并在持续的实践中不断完善,发挥日益重要的作用。