使用功能点方法度量软件成本研发
先带大家了解什么是功能点,什么是功能点分析法?
功能点(FP):它是衡量软件功能规模的一种单位。
功能点耗时率:完成一个功能点所需要消耗的人时数。
功能点分析法(FPA):由IBM的工程师Allan JAlbrecht于20世纪70年代末提出的,是一种与软件编程实现过程无关,能够有效衡量软件规模的方法。目前,国际上有5种标准的功能点度量方法,包括COSMIC方法、IFPUG方法、MkⅡ方法、NESMA方法、FISMA方法。本文小编将采用NESMA方法进行度量。
NESMA方法解读
NESMA方法是荷兰软件度量协会于1989年提出,最新版本是2005年发布的2.1版。
我们把NESMA方法归纳为九个步骤,俗称“九步法”
第一步:收集软件需求说明文档
在项目立项阶段或预算阶段,需求说明文档主要包括项目初步方案、软件需求说明、软件初步设计等。
第二步:确定估计范围和系统边界
1.估算范围是指需要度量的软件;
2.系统边界是指被度量软件与用户或其他系统之间的界限。
第三步:识别功能类型并确定其复杂度
功能类型分为数据功能和事务功能2大类,具体分为5种,包括内部逻辑文件(ILF)、外部接口文件(EIF)、外部输入(EI)、外部输出(EO)、外部查询(EQ)。
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)比如:查询、搜索等事务过程。
确定复杂度
第四步:确定原始功能点数
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:技术复杂因子系数
第七步:计算人月数
第八步:确定平均人力成本费率
第九步:计算软件研发成本
软件研发成本=人月数×人月综合费率+间接人力成本
免责声明:本文章系转载,版权归原作者所有。对转载、分享的内容和观点保持中立,也不对内容的准确性、可靠性或完善性提供任何保证,因转载众多无法确认真正原始作者,如涉及作品版权问题,请及时联系我们,我们将作删除处理以保证您的权益!