软件成本度量系统的研究与应用

2024-02-13 06:56刘雅萱唐海涛邬远祥
科学与信息化 2024年3期
关键词:工作量度量生产率

刘雅萱 唐海涛,3 邬远祥,3

1. 中国电建集团华东勘测设计研究院有限公司 浙江 杭州 311122;

2. 浙江华东工程数字技术有限公司 浙江 杭州 311122;

3. 数字城市CIM技术浙江省工程研究中心 浙江 杭州 311122

引言

如何进行精确的软件开发的工作量和成本估算是软件工程行业和学术界普遍关注的问题。在项目实施过程中,估算的工作量和成本可以为公司软件开发的资源投入提供科学依据,有效控制项目范围和质量。此外,在预算及招投标中,软件成本估算有助于制定项目预算,明确合理的投标价格范围。软件成本估算是软件项目管理中的重要组成部分,也是决定项目能否成功的关键因素。

传统上,企业在估算软件成本时,主要依靠领域专家的知识和经验,或是以历史项目为参照。类似的专家经验方法或类比方法过多地依赖人的主观判断,因此估算结果的个体差异明显,并且难以再现。更为主要的是,这类方法缺乏统一可靠的标准对估算过程和结果进行监督和衡量,因此在实践中遇到了越来越多的同题。

近年来,软件工程学的研究者建立了大量的估算模型,如COCOMO&COCOMOⅡ[1]、裁剪的COCOMOⅡ[2]、对数线性回归[3]、支持向量机[4]、多层感知机[5]等,用于预测软件开发的工作量或成本。这类方法一般采用固定的、可重现的估算流程,便于估算过程的监督和控制。但是这类方法一般需要大量观测数据来对模型进行校准。

目前我国已经发布了软件规模测量的标准,包括COSMIC[6]、NESMA[7]、IFPUG等,和在软件规模的基础上进行工作量和成本估算的标准[8],并进行了实际应用。但仍缺乏基于现行标准的成本估算方法和配套工具。这使得企业无法快速准确地明确项目成本。本文介绍了一个基于我国现行标准的软件成本估算模型,在此基础上,开发了一个软件成本度量系统,在估算成本的同时,还可以区分企业的有效投入和无效投入。文末给出了应用系统进行估算的实例。

1 成本度量模型

1.1 模型框架

软件开发的主要成本为直接人力成本,即项目组成员的总工资,相当于项目组成员工作量和单位时间工资的乘积。其中,项目组成员包括参与该项目开发过程的所有开发和支持人员,如项目经理、需求分析人员、开发人员、测试人员、部署人员、质量保证人员和配置管理人员等。基于这种想法,建立了一个三阶段的成本度量模型,首先根据产品需求文档计算软件规模,然后根据计算出的软件规模和行业的生产率数据,估算所需工作量,最后基于工作量和行业工资数据,估算出成本,如图1所示。

图1 成本度量模型

1.2 规模计算

首先,基于产品需求文档等,对软件功能进行拆分。按照内部逻辑文件(ILF)、外部接口文件(EIF)、外部输入(EI)、外部输出(EO)和外部查询(EQ)五种类型对功能进行拆分和识别。

将拆分后各功能的功能点进行累加,计算软件规模S,单位为FP(Function Point)。此处采用NESMA方法中的估算功能点计数,是项目生存周期早期进行的,确定应用程序或者项目可能规模的一种功能点计数,在该阶段,只有特定的最小规格说明可以用于计数。

1.3 工作量估算

软件开发的工作包含开发类工作和支持类工作。其中,开发类工作包括需求分析、设计开发、系统测试和运维实施四种岗位。其工作量计算方法为软件规模除以各岗位工作的生产率C(FP/人天)。特别地,对于支持性工作,包括质量保证、项目管理等工作,没有生产率用于计算工作量。这里按比例计算其工作量,一般研发类工作量占整体的85%,支持类工作占整体的15%。

1.4 成本估算

得到了各岗位工作量后,成本则是取各岗位工作量和岗位工资的乘积。软件开发的总成本需要将各岗位的成本相加。

2 成本度量系统

2.1 整体结构设计

基于上述成本度量模型,设计实现了软件成本度量系统,系统总体架构分为服务层、业务层和展示层,如图2所示。

图2 系统总体架构

2.2 模块功能简介

软件成本度量系统共包括项目管理模块、估算模块、后评价和参数设置模块。

2.2.1 项目管理模块。该模块对度量的项目进行管理,允许用户新增、修改、查看和删除项目信息。此外,管理项目的版本信息,用于软件项目不同版本的成本估算。

2.2.2 估算模块。该模块实现软件项目开发的工作量估算和成本估算功能。如图3所示,进入项目门户后,用户可以选择需要度量的版本,在软件的每个版本下,按照五种功能类型,将软件拆分成细粒度的功能点。功能点的录入有导入和逐条新增两种方式。录入功能点后,点击“一键估算”,即可计算出软件该版本的规模、工作量和成本,估算信息将以图表形式输出。

图3 估算模块

特别地,对于每个功能点,有“客户是否认可”的标识。发包方的成本,为所有“客户认可”的功能点的成本之和,而承包方的成本,是所有功能点成本之和,无论客户是否认可。估算结果如图4所示。

图4 估算结果

2.2.3 后评价和参数设置模块。该模块主要用于对比组织内项目的实际参数和预设参数,包括研发类和支持类工作量实际占比和预设占比的对比,以及各岗位的实际生产率和预设生产率。此外,该模块还用于根据历史项目,调整度量模型的参数,包括生产率、角色单价、各角色工作量比例和工作量调整因子。

3 系统应用实例

软件成本度量系统的使用步骤如下:①系统管理员在参数设置模块预设好组织级的生产率、工作量比例、单价和工作量调整因子,项目组成员依据产品需求文档,拆分软件功能点;②项目组成员点击一键估算,即可得到当前功能点开发所需的总工作量和总成本;③点击结果保存,将已完成的项目加入历史项目库,用于指导未来项目的估算或校准模型参数。

图5为系统内近期项目的估算结果。

图5 应用情况

4 结束语

本文重点介绍了一个三阶段的软件成本估算模型,包括规模计算、工作量估算和成本估算。基于该模型,设计开发了一个软件成本度量系统,包含项目管理模块、估算模块、后评价模块和参数设置模块,可以很好地支持企业对软件开发成本进行估算,并且可以沉淀历史数据,为进一步的模型参数校准提供帮助。

猜你喜欢
工作量度量生产率
中国城市土地生产率TOP30
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
应用地表覆盖数据估算LiDAR内业工作量的方法研究
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
国外技术授权、研发创新与企业生产率
一个兼顾教学科研的高校教师绩效考核模型及其应用
思科发布云计算市场发展报告
关于机床生产率设计的探讨
地质异常的奇异性度量与隐伏源致矿异常识别