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.确定复杂度
——复杂度由什么决定呢,
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功能点分析方法--王志华、李克文