功能点估算法(一)

本文章已在ITPUB发表

功能点估算法是软件项目管理众多知识中比较有技术含量的一个。在软件项目管理中项目计划制定的优劣直接关系到项目的成败,项目计划中对项目范围的估算又尤为重要,如果项目负责人对项目的规模没有一个比较客观的认识,没有对工作量、所需资源、完工时间等因素进行估算,那么项目计划也就没有存在的意义。

项目范围的估算在CMMI的“MA”度量分析管理和“PP”项目计划中均有涉及,对软件项目范围的估算有很多种方法,常见的就是LOC代码行和FP功能点法,它们之间的区别和关系如下:

1、  FP功能点估算法常用在项目开始或项目需求基本明确时使用,这时进行估算其结果的准确性比较高,假如这个时候使用LOC代码行估算法,则误差会比较大。

2、  使用FP功能点估算法无需懂得软件使用何种开发技术。LOC代码行估算法与软件开发技术密切相关。

3、  FP功能点法是以用户为角度进行估算,LOC代码行估算法则是以技术为角度进行估算的。

4、  通过一些行业标准

或企业自身度量的分析,FP功能点估算法是可以转换为LOC代码行的。在项目刚开始的时候进行功能点估算可以对项目的范围进行预测,在项目开发的过程中由于需求的变更和细化可能会导致项目范围的蔓延,计算出来的结果会与当初估计的不同,因此在项目结束时还需要对项目的范围情况进行估算,这个时候估算的结果才能最准确反映项目的规模。

功能点分析的步骤

     在本文中将以国际标准IFPUG(International Function Point Users Group)组织提供的功能点估算法V4.1.1为基础与大家进行讲解。如下图所示,首先大家应该了解功能点估算法的使用步骤。

 

图 功能点估算的步骤 

1、  识别功能点的类型。

2、  识别待估算应用程序的边界和范围。

3、  计算数据类型功能点所提供的未调整的功能点数量。

4、  计算人机交互功能所提供的未调整的功能点数量。

5、  确定调整因子。

6、  计算调整后的功能点数量。

识别项目的类型

国际的IFPUG组织将软件项目分为三类,功能点估算法适用于任何一类项目

l  新开发项目

l  二次开发的项目

l  功能增强的项目

识别项目的范围和边界    

使用UML的“UseCase”用例图是以用户角度进行识别项目范围和边界的最好方法,因为在画用例图时就必须明确系统的边界。通过系统的边界我们可以知道哪些功能要计算功能点,哪些功能点是外部系统负责计算的。以下图为例:一个外贸订单系统只包含录入、修改、删除、查询和统计订单的功能,而汇率查询转换服务是不属于该系统的。

     应用程序边界的识别规则大家一定要牢记,不能从技术角度去思考,必须从用户角度来定义;如果项目牵扯到多个系统,那么必须将这多个系统的边界全部描述清楚。

 

图 外贸订单系统用例图 

FP功能点估算分类    

FP功能点估算法将功能点分为以下5类:

1、  ILF:Internal Logical File内部逻辑文件

2、  EIF: External Interface File外部接口文件

3、  EI: External Input外部输入

4、  EO: External Output外部输出

5、  EQ: External Inquiry外部查询其中ILF和EIF属于数据类型的功能点,EI、EO、EQ属于人机交互类型的功能点。     

以外贸订单系统项目为例:

l   录入订单、修改订单、删除订单是EI;

l   查询订单是EO

l   统计订单是EQ

l   汇率查询转换系统为EIF

l   订单和客户是ILF

识别功能点的重要原则

ILF、EIF要与EI、EO、EQ分开计算。对ILF和EIF复杂度的计算可以简单理解为对数据库复杂度的计算。对EI、EO、EQ复杂度的计算可以理解为对程序开发复杂度的计算。一般软件项目都是由数据和程序构成的,因此计算ILF、EIF和计算EI、EO、EQ之间没有任何关系。 

 第二部分:内部逻辑文件与外部接口文件ILF内部逻辑文件

内部逻辑文件是指一组以用户角度识别的,在应用程序边界内且被维护的逻辑相关数据或控制信息。ILF的主要目的是通过应用程序的一个或多个基本处理过程来维护数据。

EIF外部接口文件外部接口文件是指一组在应用程序边界内被查询,但它是在其他应用程序中被维护的,以用户角度来识别的,逻辑上相关的数据。因此一个应用程序中的EIF必然是其他应用程序中的ILF。EIF的主要目的是为边界内的应用程序提供一个或多个通过基础操作过程来引用的一组数据或信息。EIF所遵循的规则:

n   从用户角度出发识别的一组逻辑数据。

n   这组数据是在应用程序外部,并被应用程序引用的。

n   计算功能点的这个应用程序并不维护该EIF

n   这组数据是作为另一个应用程序中的ILF被维护的。

ILFEIF复杂性计算  

ILF和EIF的复杂性是取决于RET(Record element type)和DET(Data element type)的数量。DET是一个以用户角度识别的,非重复的有业务逻辑意义的字段。

DET计算的规则

   通过一个基本处理过程的执行,对ILF进行维护或从ILF/EIF中返回一个特定的、用户可识别的、非重复的字段,那么每个这样的字段算一个DET。

ü   例如:添加一个外贸订单时需要保存“订单号码、订单日期、地址、邮编”,那么对于ILF订单来说它的DET就是4个。

ü   例如:保存订单时还会保存订单的明细,订单的明细往往作为一个子表进行保存,那么“订单号码”在主表和子表中都同时存在(主外键),但以用户角度来识别时,存盘操作是一个最小的单位,那么订单号码只能算做一个DET。 

   当两个应用程序维护和/或引用相同的ILF/EIF,但是每个应用程序分别维护/引用它们相应的DET时,这些DET在这两个应用程序的维护或引用中将单独计算。

ü   例如一个应用程序的两个“Elementary Process”基本处理过程都需要使用到“地址”的信息,地址的信息又可以细分为“国家、城市、街道、邮编”。那么对于其中一个基本处理过程来说,他将整个地址信息作为一个整体进行处理,那就只算一个DET,另外一个基本处理过程使用每个地址的详细信息,那么DET就是4个。

Ø  RET计算的规则如下:

RET是指一个EIF/ILF中用户可以识别的DET的集合。如果把DET简单理解为字段的话,那RET就可以简单理解为数据库中的表。RET在ILF/EIF中分为两种类型:可选的(Optional)和必选的(Mandatory)。计算RET的规则为以下两点:

   在一个ILF/EIF中每一个可选或必选的集合都被计算为一个RET。或者

   如果一个ILF/EIF没有子集合,则ILF/EIF被计算为一个RET。

ü   例如:在外贸订单系统中添加一个订单时会保存“订单信息、客户的ID、部门的ID”。

那么订单系统ILF中RET为:

1、  订单信息(必选的)

2、  客户信息(必选的)

3、  部门信息(可选的)因此ILF中RET的个数为3个。

Ø  ILF/EIF复杂度的矩阵如下

 1~19个DET20~50个DET超过51个DET
1个RET中等
2~5个RET中等
6个以上RET中等
 

 

 

 

 FP功能点估算法的特点    

### 回答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算法时,需要结合实际情况进行综合考虑,并适当调整开发成本系数,才能得到更为准确的估算结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值