NESMA功能点估算法(一)

  • 一、NESMA简介

        NESMA方法是1989年由荷兰软件度量协会提出的,最新版本为2018年发布的2.3版本。该版本中,使用高级别功能点分析(High Level Function Point Analysis)代替估算功能点计数(Estimated Function Point Count);使用外部逻辑文件(External Logic File,ELF)代替外部接口文件(External Interface File,EIF)。NESMA估算法由IFPUG而来。相对于IFPUG功能点分析,NESMA对功能点计数进行了分级,以便在估算的不同时期选择不同的算法进行估算。

  • 二、NESMA估算法分类

        NESMA估算法有三种类型的功能点估算,包括:预估功能点分析法、估算功能点分析法、详细功能点分析法;分别对应项目的前期,中后期的功能点估算需求,同时估算出来的功能点也是越来越细化和精准。当然操作难度和复杂度也是越来越高。对于一般软件或项目,我们主要是使用预估功能点分析和估算功能点分析法即可,两种方法的主要区别就在于计算公式的不同,一个粗放,一个则较精细,两种都可以使用,可以根据自身项目的具体要求和所处阶段来进行选择。

        在讨论预估分析法和估算分析法之前,我们先了解一下功能点的分类。NESMA从用户对应用系统的功能需求出发,把系统功能分为两大类:即对最终用户可见的事务功能(Transaction Function)和对最终用户不可见的数据功能(Data Function)。

        事务功能可分为3种类型:外部输入(External Input,EI)、外部查询(ExternalinQuiry, EQ) 和外部输出 (External Output, EO)。外部输入(EI)是指应用程序对来自其边界以外的数据或控制信息的基本处理。外部输出(EO)是指应用程序向其边界之外提供数据或控制信息的基本处理,这种处理逻辑中可能包含数学计算或衍生数据等。外部查询(EQ)是指应用程序向其边界之外提供数据或控制信息的基本处理,与外部输出(EO)不同的是,处理逻辑中既不可以包含数学计算也不产生衍生数据,处理过程中不可以维护内部逻辑文件,也不可以改变系统行为

        数据功能分为2种类型:内部逻辑文件(Internal LogicFile, ILF)和外部接口文件(External Interface File,EIF)。内部逻辑文件(ILF)是指可由用户确认的、在应用程序内部进行维护的、逻辑上相关的数据块或控制信息。外部接口文件(EIF)是指可由用户确认的、由被度量的应用程序引用但在其他应用程序内部进行维护的、逻辑上相关的数据块或控制信息。

  • 三、NESMA功能点分析法

  • 1.预估功能点分析法

    ​​​​​​​​​​​​​​预估功能点分析是在度量时,只用识别软件的数据功能数量,根据经验公式得出软件规模模。预估功能点公式:ILF*35+EIF *15。其中,ILF是内部逻辑文件的数量,EIF是外部逻辑文件的数量。​​​​​​​预估功能点公式的假设基于以下依据:数据功能采用“低”级复杂度事务功能采​​​​​​​“中”级复杂度所以ILFEIFEIEOEQ分别是7、5、4、5、4
  • 计算因子 “35”假设每个内部逻辑文件对应3个外部输入(新增、更改、删除)、2个外部输出、1个外部查询和一些通用功能。因此,内部逻辑文件的规模是7fp,事务功能的平均规模是26fp(3 ×4+2×5+4),通用功能是 2fp.

    计算因子 “15”假设每个外部逻辑文件对应1个外部输出和1个外部查询。外部逻辑文件的规模为5fp,外部输出为5fp,外部查询为4fp,以及一些通用功能1fp。

  • 2.估算功能点分析法

  • 估算功能点分析是指在确定每个功能部件(数据功能部件或事务功能部件)的复杂性程度时使​​​​​​用标准值:数据功能全部采用“低”级复杂性程度,事务功能全部采用“中”级复杂性程度计量

  • 估算步骤如下:

  • (1)确定每个功能的功能类型(ILF、EIF、EI、EO、EQ)。

  • (2)为所有的数据功能选择“低”级复杂性程度,事务性功能选“中”级复杂性程度所以ILFEIFEIEOEQ分别是7、5、4、5、4。

  • (3)计算整体未调整功能点。

  • 该方法与详细功能点分析的唯一区别是不用为每个功能识别分配的复杂性程度,而是采用“默认值”。​​​​​​​

  • 估算功能点公式:UFP=(7*ILF+5*EIF+4* EI+5*EO+4*EQ)

  • ​​​​​​​3.详细功能点分析法

  • 详细功能点分析法跟IFPUG的功能点计算方法已经基本一样。详细功能点估算的基本步骤如下:

  • (1)确定每个功能的功能类型(ILF、EIF、EI、EO、EQ)。

    (2)每个功能测量复杂性程度级别)。

    (3)计算整体未调整功能点。

  • UFP=\sum ILF +\sum EIF +\sum EI +\sum EQ +\sum EO

NESMA方法复杂度矩阵如下:

复杂度级别

功能类别

ILF

EIF

EI

EO

EQ

7

5

3

4

3

10

7

4

5

4

15

10

6

7

6

  • 四、识别功能点复杂度

详细功能点分析不同于预估功能点分析和估算功能点分析,它要测量每个功能点的复杂度级别。这里对如何计算功能点复杂度进行说明。

  • ​​​​​​​1.基本概念

复杂性程度分为低、中、高3级别。对数据功能来说,复杂性程度取决于两个因素:一是看逻辑文件所包含的数据元素类型个数(Data Element Types, DET),二是看用户可以识别的记录元素类型的个数(Record Element Types,RET)。对于事务功能,复杂性程度取决于交易时所引用的所有逻辑文件的个数(File Type Referenced, FTR),以及交易处理过程中输入/输出所涉及的数据元素类型个数。具体来说EI取决于所引用的逻辑文件的个数FTR和外部输入的数据元素类型个数EO和EQ取决于所引用的逻辑文件的个数FTR和外部输出的数据元素个数。ILF、EIF和EI、EO、EQ的复杂程度级别如下表所示:​​​​​​​

记录元素类型(RET)

数据元素类型(DET)

1~19

20~50

≥51

1

2~5

≥6

表4.1 内部逻辑文件和外部接口文件的复杂度级别

引用的文件类型个数(FTR)

数据元素类型(DET)

1~4

5~15

≥16

0~1

2

≥3

表4. 2 外部输入的复杂性程度级别​​​​​​​​​​​​​​​​​​​​​

引用的文件类型个数(FTR)

数据元素类型(DET)

1~5

6~19

≥20

0~1

2~3

≥4

表4. 3 外部输出和外部查询的复杂性程度级别

​​​​​​

  • 2.RET、DET识别规则

    ​​​​​​​ILF、EIF的复杂度取决于RET(Record element type)和DET(Data element ​​​​​​​type)的数量。一个DET是一个以用户角度识别的、非重复的、有业务逻辑意义的字段。一个RET就是一个ILF或EIF内用户可识别的一组对象的集合。​​​​​​​
  • DET的计算规则:
  • 比如, 添加订单时需要保存“订单号码、订单日期、地址、邮编”,那么对于订单来说它的DET就是4个。
  • 再比如,保存订单的同时也要保存订单明细,订单作为主表、订单明细作为子表。订单明细中的订单编号作为外键与主表的单号关联。对用户来讲,保存订单是不可分割的最小操作,因为DET的不可重复性,那么订单编号在这里只能作为一个DET。
  • 当两个应用程序维护和/或引用相同的ILF/EIF,但是每个应用程序分别维护/引用它们相应的DET时,这些DET在这两个应用程序的维护或引用中将单独计算。例如一个应用程序的两个基本处理过程都需要使用到“地址”的信息,地址的信息又可以细分为“国家、城市、街道、邮编”。那么对于其中一个基本处理过程来说,他将整个地址信息作为一个整体进行处理,那就只算一个DET,另外一个基本处理过程使用每个地址的详细信息,那么DET就是4个。
  • RET的计算规则:
  • 在一个ILF/EIF中每一个可选或必选的集合都被计算为一个RET。
  • 如果一个ILF/EIF没有子集合,则ILF/EIF被计算为一个RET。 例如:在外贸订单系统中添加一个订单时会保存“订单信息、客户的ID、部门的ID”。那么订单系统ILF中RET为: 1、订单信息(必选的) 2、客户信息(必选的) 3、部门信息(可选的) 因此ILF中RET的个数为3个。​​​​​​​
  • 五、适用范围

NESMA估算只适合特定类型的产品,不是任何产品都适合。

比如以数据和交互处理为中心的;以功能多少为主要造价制约因素的(如电子政务,业务管理系统,办公自动化,ERP等系统)适用NESMA估算法;

而包含大量复杂算法;创意型软件;以非功能性需求为主(如视频和图像处理软件,杀毒软件,网络游戏,性能优化任务等)等则不适用NESMA估算法。

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 功能点估算法FP(Function Points)是一种评软件开发规模的方法,其核心思想是将软件功能模块化,进而确定每个功能的复杂度及规模,最终算开发成本。 而开发成本系数K/H/W则涉及到开发过程中所需的人力、硬件及软件资源,是影响软件开发成本的关键因素之一。 在实际应用中,FP和K/H/W常常联合使用,以尽可能准确地软件开发成本。 具体来说,FP方法将软件模块化,并根据每个功能的复杂度、难度、交互方式等因素,为每个功能点赋值。最终通过不同功能点的累加,得出软件功能点数,即FP值。这个FP值可以用来算人力投入、开发时间、资源使用等开发成本。 而开发成本系数K/H/W则是一个从人力、硬件及软件三个方面综合考虑的系数,通常以人天/小时/月或硬件设备费用/软件工具费用等形式计算。这个系数的值会影响到软件开发的人力组织、技术策略、资源配置等方面,从而直接影响到软件开发成本。 因此,在软件开发成本时,需要综合考虑FP和K/H/W两个因素,以达到更准确和全面的成本预。 ### 回答2: 功能点估算法FP(Function Point)是一种软件工程中比较常用的软件规模算方法,它通过对软件系统的功能点进行评价,从而算出软件规模。FP算法分为基本功能点计算方法和增强功能点计算方法两种,一般采用基本功能点计算方法。 FP算法中涉及一个开发成本系数k/h/w,它是用于计算软件开发成本的重要参数。k代表每个功能点完成所需的工作,h代表工作在高级语言中的完成程度,w代表使用的主机环境对软件的影响。 k/h/w的计算依据是以工作量为基础的,k表示以人天为单位,进行每个功能点的开发所需的人天数,h表示以百分比的形式,计算出高级语言完成度所占的比例,w表示以比例的形式,计算出不同主机环境对软件开发成本的影响程度。 通过k/h/w三个参数的计算,可以获得每个功能点的开发成本,并最终算出软件的全面开发成本。在软件开发中,准确地算开发成本对于项目的顺利进行非常重要,在算时需要充分考虑到各项因素对开发成本的影响,避免出现过高或过低的算结果。 ### 回答3: 功能点估算法FP是一种常用的软件成本算方法。它是根据软件中的功能数量来算开发成本的。而开发成本系数k/h/w,则是指每个功能点所需的开发成本。 在使用FP算法时,首先需要根据软件所需功能的数量来计算出功能点数。然后,根据历史数据或经验来确定每个功能点的开发成本系数k/h/w。这个系数可以根据项目的特殊需求来进行调整。 在计算开发成本时,需要将所得功能点数乘以开发成本系数k/h/w,然后再加上其他成本,如人员培训、硬件设备等,才能得出最终的开发成本算结果。 虽然FP算法可以提供相对准确的开发成本算,但是它也有一定的局限性。例如,可能会存在一些难以算的因素,如技术难度、人员素质等,这些因素也会影响开发成本。因此,在使用FP算法时,需要结合实际情况进行综合考虑,并适当调整开发成本系数,才能得到更为准确的算结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值