1. 首页 > 新闻动态 > 行业动态

九步法|使用功能点方法度量软件研发成本

作者:小编 日期:2021-10-21 16:48:06 点击数:

目前,国际上有5种标准的功能点度量方法,包括COSMIC方法、IFPUG方法、MkⅡ方法、NESMA方法、FISMA方法。本文小编将采用NESMA方法进行度量

NESMA方法是荷兰软件度量协会于1989年提出,最新版本是2005年发布的2.1版。

PART 1:NESMA九步法解读

小编把NESMA方法归纳为九个步骤,俗称“九步法”。


  • 第一步:收集软件需求说明文档

在项目立项阶段或预算阶段,需求说明文档主要包括项目初步方案、软件需求说明、软件初步设计等。


  • 第二步:确定估计范围和系统边界

  1. 估算范围是指需要度量的软件;

  2. 系统边界是指被度量软件与用户或其他系统之间的界限。


  • 第三步:识别功能类型并确定其复杂度

功能类型分为数据功能事务功能两大类,具体分为五种,包括内部逻辑文件(ILF)、外部接口文件(EIF)、外部输入(EI)、外部输出(EO)、外部查询(EQ)。

九步法|使用功能点方法度量软件研发成本(图1)



1.内部逻辑文件(ILF)

官方解读:在应用程序边界内维护的用户可识别的逻辑相关数据组或控制信息。其主要目的是保存由被计数的应用程序的一个或多个基本处理所维护的数据。

小编解读:

1.ILF一定是在应用程序边界内维护;

2.ILF是用户可识别的一组数据或控制信息;

3.ILF有一个或多个事务处理过程进行维护,事务过程有新增、修改、删除、查看等。

2.外部接口文件(EIF)

官方解读被一应用程序引用但在另一应用程序边界内被维护的,用户可识别的逻辑相关数据组或控制信息, 其主要目的是保存由被计数的应用程序边界内的一个或多个基本处理所引用的数据。

小编解读:

1.EIF在应用程序边界外维护;

2.EIF是用户可识别的一组数据或控制信息;

3. 本系统只是引用相关数据,EIF一定是其它系统的ILF,在其它系统内有一个或多个事务处理过程进行维护。

3.外部输入(EI)

官方解读数据或控制信息由外向内穿越应用程序边界的一个基本处理过程,其主要目的是维护一个或多个内部逻辑文件和/或改变系统行为。

小编解读:

1.EI由外向里穿过系统边界;

2.要维护一个或多个ILF或是改变系统行为;

3.比如:新增、修改、删除等事务操作。

4. 外部输出(EO)

官方解读发送数据或控制信息到应用程序边界外的一个基本处理,其主要目的是通过检索数据或控制信息, 此外还通过处理逻辑来向用户提供信息,其处理逻辑必须包含至少一个数学公式或计算,或创建派生的数据。一个外部输出也可以维护一个或多个内部逻辑文件,或改变系统行为。

小编解读:

1.EO由内向外穿过系统边界;

2.处理逻辑必须包含至少一个数学公式或计算,或创建派生的数据;

3.EO也可以维护一个或多个内部逻辑文件,或改变系统行为;

4.比如报表统计等事务过程。

5.外部查询(EQ)

官方解读发送数据或控制信息到应用程序边界外的一个基本处理,其主要目的是通过检索来自内部逻辑文件或外部接口文件的数据或控制信息,向用户提供信息。处理逻辑既不包含数学公式或计算,也不创建新的数据。处理期间不维护内部逻辑文件,也不改变系统行为。

小编解读:

1.EQ由内向外穿过系统边界;

2. 处理逻辑既不包含数学公式或计算,也不创建新的数据。

3. 处理期间不维护内部逻辑文件,也不改变系统行为;

4.比如:查询、搜索等事务过程。

6.确定复杂度

九步法|使用功能点方法度量软件研发成本


——复杂度由什么决定呢,小编不在这里分析了,后续文章会进行分析。


  • 第四步:确定原始功能点数

1.确定内部逻辑文件(ILF)、外部接口文件(EIF)、外部输入(EI)、外部输出(EO)、外部查询(EQ)的个数和取值;

2.以中等复杂难度为例:计算原始功能点数UFP=10 ×ILF+7×EIF+4×EI+5×EO+4×EQ。


  • 第五步: 确定调整因子

原始功能点数(UFP) 是估算软件规模的基准数,并未考虑软件应用领域、质量特性等因素,通过引入调整因子,对原始功能点进行调整。

TCF(技术复杂因子)由多个因素组成,主要包括业务领域、应用类型、质量特性、开发语言、开发团队背景、复用度等因素,不同领域引入的调整因子也存在差异。

示例:《软件研发成本度量规范》示例提出的调整因子有应用领域A(0.8~1.2)、开发语言L(0.8~1.2)、最大团队规模T(0.8~1.2)等。


  • 第六步:计算调整后的功能点数

调整后的功能点数S=UFP×TCF

S:调整后的功能点数

UFP:原始功能点数

TCF:技术复杂因子系数


  • 第七步:计算人月数

1.根据软件行业协会2017年发布的功能点耗时率,功能点耗时率的分布类似正态分布。

九步法|使用功能点方法度量软件研发成本


注:在估算时,通常P50是最有可能值,P25和P75是估算上下限,在特殊情况(项目成本、工期、质量约束极其严格)下,也可采用P10和P90 的值估算上下限。

2.按每月176小时工作时间计算(22天×8小时)

计算人月最可能数:AE=S×P50/176

计算人月上限:AE=S×P75/176

计算人月下限:AE=S×P25/176


  • 第八步:确定平均人力成本费率

我们把间接人力成本和间接人力非人力成本按一定系数计入直接人力成本,计算得到了人力成本费率。2020年行业协会发布了各地区的平均人力成本费率(含直接人力成本、间接人力成本、间接非人力成本)。

九步法|使用功能点方法度量软件研发成本



  • 第九步:计算软件研发成本

软件研发成本=人月数×人月综合费率+间接人力成本

到此,我们就把功能点方法度量软件研发成本的过程分析完了,下面我们找个简单的例子来实践。

PART 02:“九步法”案例实践

基于nesma方法的功能点九步法度量解读

  • 第一步:收集软件需求说明文档

以《人员管理系统》为例,具体功能需求如下:

1.1 组织架构管理

对公司的组织架构进行维护,可以对部门信息进行新建、修改、删除、查询、生成统计表。

1.2 档案管理

对员工的信息进行管理,包括员工基本信息(如姓名、年龄、性别、岗位、电话、邮箱等)、家庭档案信息、培训记录、工作记录。

1.3 培训管理

对公司每次培训进行管理,可自动发送培训通知。


  • 第二步:确定估计范围和系统边界

我们把“1.1组织架构管理”作为现在的估算范围,人员管理系统作为系统边界。


  • 第三步:识别功能类型并确定其复杂度

内部逻辑文件(ILF): 部门信息

外部接口文件(EIF):无

外部输入(EI): 新建、修改、删除

外部输出(EO):生成统计表

外部查询(EQ):查询

以中等复杂难度选择功能点数,分别为10、7、4、5、4。


  • 第四步:确定原始功能点数

UFP=10×ILF+7×EIF+4×EI+5×EO+4×EQ=10×1+7×0+4×3+5×1+4×1=31

小结:原始功能点为31个。


  • 第五步: 确定调整因子

参照《软件研发成本度量规范》示例提出的调整因子有应用领域A(0.8~1.2)、开发语言L(0.8~1.2)、最大团队规模T(0.8~1.2)等,查询参数表后,应用领域取0.8,开发语言取1,最大团队规模取1。

TCF(技术复杂因子)=0.8×1×1=0.8


  • 第六步:计算调整后的功能点数

S=UFP×TCF=31×0.8×1×1=24.8

小结:调整后功能点为24.8个。


  • 第七步:计算人月数

人月最可能数:AE=24.8×7.16/176=1.008人月

人月上限:AE=24.8×12.99/176=1.83人月

人月下限:AE=24.8×3.58/176=0.504人月


  • 第八步:确定平均人力成本费率

以北京地区为例,人月综合费率取值3.01万元/人月。


  • 第九步:计算软件研发成本

假设直接非人力成本为0.2万元,软件研发成本为:

最有可能=3.01×1.008+0.2=3.24万元

上限=3.01×1.83+0.2=5.70万元

下限=3.01×0.504+0.2=1.71万元

总结:“1.1组织架构管理”的研发成本估算工,最有可能为3.24万元。

————本文的内容就分享到这里,欢迎留言或私信讨论!

参考书目:

精益软件度量--张松

软件成本度量标准实施指南--清华大学出版社

软件研发成本度量规范--工业和信息化部

基于NESMA功能点分析方法--王志华、李克文