功能点估算法介绍及应用
调查问卷设计模板-后宫露台
一、功能点估算法识别项目范围和数据复杂度
功能点估算法是软件项目管理众多知识中
比较有技术含量的一个。在软件项目管
理中项目计划制定的优劣直接关系到项目的成败,项目计划中对项
目范围的估算
又尤为重要。如果项目负责人对项目的规模没有一个比较客观的认识,没有对工
作
量、所需资源、完工时间等因素进行估算,那么项目计划也就没有存在的意义。
功能点估算法的特点
项目范围的估算在CMMI的“MA”度量分析管理和“PP”项目计划中均有涉
及。
对软件项目范围的估算有很多种方法,常见的是LOC代码行和FP功能点法。
它们之间的区别和关系如
下:
功能点估算法常用在项目开始或项目需求基本明确时使用,这时进行估算
其结果的准确性
比较高。假如这个时候使用LOC代码行估算法,则误差会
比较大。
使用功能
点估算法无需懂得软件使用何种开发技术。LOC代码行估算法则
与软件开发技术密切相关。
功能点估算法是以用户为角度进行估算,LOC代码行估算法则是以技术为
角度进行估算。
通过一些行业标准或企业自身度量的分析,功能点估算法是可以转换为
LOC代码行的。
在项目刚开始的时候进行功能点估算可以对项目的范围进行预测。在项目开
发的过程中由于需求的变更和细化可能会导致项目范围的蔓延,计算出来的结果
会与当初估计的不同。
因此,在项目结束时还需要对项目的范围情况重新进行估
算,这个时候估算的结果才能最准确反映项目的
规模。
功能点分析的步骤
本文将以国际标准IFPUG(International Function Point Users G
roup)
组织提供的功能点估算法V4.1.1为基础进行讲解。如下图所示,首先大家应该
了解功能点估算法的使用步骤。
图1 功能点估算法的步骤
具体步骤包括:
1. 识别功能点的类型。
2.
识别待估算应用程序的边界和范围。
3.
计算数据类型功能点所提供的未调整的功能点数量。
4.
计算人机交互功能所提供的未调整的功能点数量。
5. 确定调整因子。
6. 计算调整后的功能点数量。
识别项目的类型
国际IFPUG组织将软件项目分为三类,功能点估算法适用于任何一类项目:
新开发项目
二次开发的项目
功能增强的项目
识别项目的范围和边界
使用UML的“UseCase”用例图是以用户角度进行识
别项目范围和边界的最
好方法,在画用例图时就必须明确系统的边界。通过系统的边界,我们可以知道<
br>哪些功能要计算功能点,哪些功能点是外部系统负责计算的。以图2为例:一个
外贸订单系统只包
含录入、修改、删除、查询和统计订单的功能,而汇率查询转
换服务是不属于该系统的。
应用程序边界的识别规则大家一定要牢记,不能从技术角度去思考,必须从
用户角度来定义;如果项目牵
扯到多个系统,那么必须将这多个系统的边界全部
描述清楚。
图2
外贸订单系统用例图
功能点估算分类
功能点估算法将功能点分为以下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属于人机交互事务类
型的功能点。
以外贸订单系统项目为例:
录入订单、修改订单、删除订单是EI;
查询订单是EO
统计订单是EQ
汇率查询转换系统为EIF
订单和客户是ILF
识别功能点的重要原则
ILF、EIF要与EI、EO、EQ分开计算。对ILF和EIF复杂度的计
算可以简单
理解为对数据库复杂度的计算。对EI、EO、EQ复杂度的计算可以理解为对程序
开发复杂度的计算。一般软件项目都是由数据和程序构成的,因此计算ILF、EIF
和计算EI、EO
、EQ之间没有任何关系。
内部逻辑文件与外部接口文件
ILF内部逻辑文件
内部逻辑文件是指一组以用户角度识别的、在应用程序边界内且被维护的逻
辑相关数据
或控制信息。ILF的主要目的是通过应用程序的一个或多个基本处理
过程来维护数据。
EIF外部接口文件
外部接口文件是指一组在应用程序边界内被查询,但在其他应用程序中被
维
护的、以用户角度来识别的、逻辑上相关的数据。因此,一个应用程序中的EIF
必然是其他
应用程序中的ILF。EIF的主要目的是为边界内的应用程序提供一个
或多个通过基础操作过程来引用
的一组数据或信息。
EIF所遵循的规则:
从用户角度出发识别的一组逻辑数据。
这组数据是在应用程序外部,并被应用程序引用的。
计算功能点的这个应用程序并不维护该EIF。
这组数据是作为另一个应用程序中的ILF被维护的。
ILF和EIF的复杂性计算
ILF和EIF的复杂性是取决于RET(Record element type)和DET(Data
element
type)的数量。DET是一个以用户角度识别的、非重复的、有业务逻辑
意义的字段。
DET计算的规则如下:
通过一个基本处理过程的执行,对ILF进行维护,或从ILF
EIF中返回一
个特定的、用户可识别的、非重复的字段,那么每个这样的字段算一个
DET。
例如:添加一个外贸订单时需要保存“订单号码、订单日期、地址、邮编”,
那么对于
ILF订单来说它的DET就是4个。
再如:保存订单时还会保存订单的明细。订单的明细往
往作为一个子表进行
保存,那么“订单号码”在主表和子表中都同时存在(主外键)。但以用户角度来识别时,存盘操作是一个最小的单位,那么订单号码只能算做一个DET。
当两个
应用程序维护和或引用相同的ILFEIF,但是每个应用程序分别
维护引用它们相应的DET时,这些
DET在这两个应用程序的维护引用中
将单独计算。
例如,一个应用程序的两个“Elementary Process”基本处理过程都需要使
用到“地
址”的信息,地址信息又可以细分为“国家、城市、街道、邮编”。那
么对于其中一个基本处理过程来说
,它将整个地址信息作为一个整体进行处理,
只算一个DET;另外一个基本处理过程使用每个地址的详
细信息,那么DET就是
4个。
RET计算的规则如下:
RET
是指一个EIFILF中用户可以识别的DET的集合。如果把DET简单理解
为字段的话,那RET就
可以简单理解为数据库中的表。RET在ILFEIF中分为两
种类型:可选的(Optional)和
必选的(Mandatory)。计算RET的规则为以下
两点:
在一个ILFEIF中每一个可选或必选的集合都被计算为一个RET。
如果一个ILFEIF没有子集合,则ILFEIF被计算为一个RET。
例如:在外贸订单系统中添加一个订单时会保存“订单信息、客户的ID、
部门的ID”。那么订单系统
ILF中的RET为:
1. 订单信息(必选的)
2.
客户信息(必选的)
3. 部门信息(可选的)
因此ILF中RET的个数为3个。
ILFEIF复杂度的矩阵如下:
1个RET
2~5个RET
6个以上RET
1~19个DET
低
低
中等
20~50个DET
低
中等
高
超过51个DET
中等
高
高
二、功能点估算法之事务复杂度计算
软件项目管理中的功能点估算法将功能点分为5类:ILF(Internal Logical
File,内部逻辑文件)、EIF(External Interface
File,外部接口文件)、EI
(External
Input,外部输入)、EO(External Output,外部输出)和EQ(External <
br>Inquiry,外部查询)。其中,ILF和EIF属于数据类型的功能点,EI、EO、EQ
属于事务类型的功能点。
1、EI、EO、EQ的比较
EI是处理来自应用程序边
界外部的一组数据输入,它的主要目的是维护一
个或多个ILF,以及或者更改系统的行为。
EO是输送数据到应用程序边界外部的过程。它的主要目的是通过逻辑处理
过程向用户呈
现信息。该处理过程必须包含至少一个数学公式或计算方法,或生
成派生数据。一个EO也可以维护一个
或多个ILF,并或改变系统行为。
EQ是向应用程序边界外发送数据基本处理的过程。其主
要目的是从ILF或
EIF中通过恢复数据信息来向用户呈现。该处理逻辑不包括任何数学公式或计算<
br>方法,也不会生成任何派生数据。EQ不会维护任何一个ILF,也不会改变应用程
序的系统行为
。
EO和EQ的共同点是,其主要目的都是通过基本操作过程展现数据给用户。
EI
、EO、EQ的比较见下表。
表1 EI、EO、EQ的主要目的
目的
改变应用程序的属性或行为
维护一个或多个ILF
显示信息给用户
表2
EI、EO、EQ的主要行为
行为
数学公式或计算被执行
至少一个ILF被修改
至少一个ILF或EIF被引用
数据被重新恢复
派生数据被创建
应用程序的行为或属性被修改
准备或呈现信息到系统边界外
接受进入系统边界内的数据的能力
EI
主要目的
主要目的
次要目的
EO
次要目的
次要目的
主要目的
EQ
不允许
不允许
主要目的
EI
可以
至少选择一次
可选
可选
可选
至少选择一次
可选
必须
EO
至少选择一次
至少选择一次
可选
可选
至少选择一次
至少选择一次
必选
可选
EQ
不可以
不可以
必选
必选
可选
可选
必选
可选
2、事务类型功能点的计算规则
在IFPUG的定义中有一个重要的单词“Elementary Process”——基本处理
过程
。该过程对用户来说是一个有意义的、最小的活动单位,并且是一个自包含
的活动。功能点的分类,EI
、EO、EQ的识别都是基于“Elementary Process”
基本处理过程的。
EI的计算规则
1. 从应用边界之外收到数据。
2.
如果进入系统边界内的数据不是一个改变系统行为的控制信息,那么至
少一个ILF应该被改变。
3. 对于已识别的处理过程,至少满足下面三个条件之一。
该基本
处理过程的逻辑与本应用系统中其它基本处理过程的逻辑不同。该
基本处理过程应该具有唯一性。例如:
不能存在两个完全一模一样的存盘
操作。
在应用程序边界内,该基本处理过程
所使用的这组数据应该与其他基本处
理过程所使用的数据不同。
在应用程序边
界内,基本处理过程所引用的ILF或EIF是不同于其它基本
处理过程所引用的ILF或EIF。
EO和EQ通用计算规则
必须全部满足以下内容才能被视为一个EO或EQ:
1.
从外部发送数据或控制信息到应用程序边界内。
2.
为了识别这个过程,以下三点必须满足一个:
该基本处理过程逻辑上必须是唯一的,该唯一性是指其在
应用程序中与其
他EO或EQ在逻辑性上保持唯一。
该基本处理过程所使用的
数据应该是唯一的,该唯一性是指其在应用程序
中与其他EO或EQ所使用的数据不同。
该基本处理过程所引用的ILF或EIF文件应该是唯一的,该唯一性是指其
在应用程序中与其
他EO或EQ所引用的ILF或EIF文件不同。
EO补充的计算规则
除了要满足上面的通用规则外,还要满足下面其中一条:
在基本操作过程中至少包含一个数学公式或计算方法 。
在基本操作过程中要产生派生数据 。
在基本操作过程中至少要维护一个ILF
。
在基本操作过程中要改变系统的行为。
EQ补充的计算规则
除了要满足上面的通用规则外,还要满足下面其中一条:
基本操作过程从ILF或EIF中获取数据。
基本操作过程不能包含数学公式或计算方法。
基本操作过程不能生成派生数据 。
基本操作过程不能维护任何一个ILF 。
基本操作过程不能改变系统的行为 。
3、EI、EQ和EO的技术复杂性计算
复杂性取决于FTRs和DETs的数量。FT
R是被一个事物读取或维护的ILF,
或者是被一个事物读取的EIF。
EI中识别FTR规则
每一个ILF应该算做一个FTR。
通过EI读取的每个ILF或EIF都应该计算为一个FTR。
既被EI维护又被读取的ILF仅计算为一个FTR。
EI中识别DET规则
在EI的过程中,以用户角度识别的、通过应用系统边界输入系统内部的
非重复字段,应算作一个DET。
在EI的过程中,只要没有通过系统边界输入,即
使它存在于系统内的一
个ILF中,也不能算为一个DET。
例如,
外贸订单系统中,订单的金额是被单价和数量自动计算的,那么金额
是没有通过系统边界输入的,因此在
EI操作中就不应该算做一个DET。
在应用程序的EI操作时,系统提示的错误信息或
完成操作的信息,应该
被分别计算为一个DET。
例如,在网站注册用户信息时,
由于输入错误系统会显示提示信息,那么这
些提示信息应该被逐个计算为一个DET。
再如,当EI操作完成时系统提示并显示出来的信息,应该被计算为一个DET。
在EI操作中,如果遇到主外键的字段,应该算作一个DET。
EO和EQ计算FTR的规则
1. 通用规则:
每个在EOEQ处理过程中读取的ILF和EIF算一个FTR
2.
EO额外的FTR计算规则
在EO处理过程中每个被维护的ILF算一个FTR
在EO处理过程中既被读取又被维护的ILF算一个FTR
EO和EQ计算DET的通用规则
用户可识别的非重复字段,进入应用边界并指明处理什
么、何时处理或处
理方式,并且由EOEQ返回或产生,那么这样的每个字段算一个DET。
例如,报表中的每个字段都是一个DET。
在应用边界内以用户角度识别的非重复字段算一个DET。
例如,在报表中起到解释或备注作用的文字信息,不管是一个字、一个词或
一段话,都当作一个DET。
再如,某种编号或日期,即使它被物理存储在不同字段中,但从用户角度看
是一个整体
的信息,因此被算作一个DET。
还有,在饼图中百分比和分类算作不同的DET。
在EO或EQ操作中,如果对系统进行输入或读取操作时,相同的字段只计
算一个DET。
例如,在报表查询时,输入的字段在报表上也有显示,那么将算作同一个
DET。
在应用程序的EO或EQ操作时,系统提示的错误信息或完成操作的信息,
应该被
计算为DET。
例如,用户查询一个列表时被拒绝,那么拒绝的提示信息就算为一个DET。
在EO或EQ操作中如果遇到主外键的字段,应该算作一个DET。
在EO或
EQ过程中,只要没有通过系统边界输入,就算它存在于系统内的
一个ILF中,也不能算为一个DET
。
例如,在公司发工资的时候,员工对应的状态信息被更新,但这个状态信息
的更新是没有通过系统边界输入的,因此也不能算做一个DET。
页面的标题等类似信息不计算DET。
系统字段生成的记号不能被算作一个DET。
例如,页码、位置信息、时间、上一页和下一页等信息,都不能算作一个
DET。
EI复杂度计算矩阵
0~1个FTR
2个FTR
大于2个FTR
1~4个DET
低
低
中等
5~15个DET
低
中等
高
多于16个DET
中等
高
高
EO和EQ复杂度计算矩阵
0~1个FTR
2~3个FTR
多于4个FTR
1~5个DET
低
低
中等
6~19个DET
低
中等
高
多于20个DET
中等
高
高
未调整前功能点对应矩阵
EI、EO、EQ、ILF和EIF技术复杂度对应的功能点如下表所示:
EI
低
3
一般
4
高
6
EO
EQ
ILF
EIF
4
3
7
5
5
4
10
7
7
6
15
10
三、功能点估算法之调整因子
用功能点估算法计算软件项目功能点时会用到调
整因子(或称调整系数)。功能
点的调整系数是通过通用系统特性及其影响程度来评定的,对每个常规系
统特性
的评估由其影响程度(DI)而定,分为0-5级:
0 毫无影响
1 偶然影响
2 适度影响
3 一般影响
4
重要影响
5 强烈影响
然后依次对以下14个系统常规特性进行打分,并带入以下计算公式算出功
能点的调整因子。
Value Adjustment Factor=( sum of (DI) * 0.01 ) +
0.65
计算调整因子
1. 数据通讯
数据通讯指的是应用程序直接与
处理器通讯的程度。通常我们都是通过某种
通讯手段来实现在一个应用中所使用的数据或者控制信息。连
接到本地控制器上
的终端被认为是通讯设施,协议则指两个系统或设备之间进行通讯时使用的一种
约定。所有的数据通讯链接都需要某种协议。
0
应用程序是单纯的批处理或者PC stand-alone
1
2
3
4
5
应用程序是一种批处理过程,但是包含远程数据的录入或远程打印
应用程序是一种批处理过程,但是包含远程数据的录入和远程打印
应用程序包括在线数据收集或者包括批处理或查询系统的远程处
理的前端应用
应用程序不单只是前端应用,但是仅支持一种远程处理通讯协议
应用程序不单只是前端应用,还支持多于一种的远程处理通讯协议
2.
分布式数据处理
分布式数据处理是应用在内部组件之间传递信息的程度。这个特性是在应用
边界内体现的。
0 应用程序不支持组件之间的数据传输和处理功能
1
2
3
4
5
应用程序为用户可能进行的处理准备数据(例如使用电子表格或者
数据库等)
应用程序所准备的数据是为了在系统另外一个组件上传输和处理,
并非为终端用户所处理。
分布式处理和数据传输是在线的,并且是单向的
分布式处理和数据传输是在线的,并且是双向的
由系统中最恰当的组件动态地执行处理功能
3. 性能
性能是吞吐量、处理时间等指标对开发的影响。用户所提出的
性能要求将直
接影响到系统的设计、实施、安装和支持。
0
用户没有提出性能方面的要求
1
2
3
4
5
用户提出了性能和设计方面的要求,但不需要采取特定措施
响应时间和吞吐量在系统峰值时是
关键的,但是不需要采取相应的
CPU使用方面的特殊设计。处理的最后期限是在下一个工作日。 在任何时候响应时间和吞吐量都是关键的,但是不需要采取相应的
CPU使用方面的特殊设计。处理
的完成期限比较严格。
除了上面一项的要求外,由于对需求的要求比较严格,在设计阶段
就要进行性能分析。
除了上面一项的要求之外,在设计和实施阶段需要使用性能分析工
具来判断性能要求的完成情况。
4. 大业务量配置
大业务量配置是指计算机资源对应用开发的影响程度
。大业务量的运行配置
对设计有特殊要求,是必须考虑的一个系统特性。
0
没有提出明确的运行方面的限制
1
2
3
4
5
有运行方面的限制,但是不需要采取特别的措施以满足运行限制
提出了一些安全和时间方面的限制
应用程序的某些部分对处理器有特定的要求
提出的运行限制对应用的中央处理器或者专用处理器有特殊的要
求
除上面一项之外,还对应用的分布式组件提出了限制
5.
事务处理率
事务处理率是业务交易处理速度对系统的设计、实施、安装和支持等的影响。
0 预计不会出现周期性的高峰事务处理期
1
2
3
4
预计会有周期性的高峰事务处理期(例如:每月、每季、每年)
预计每周都会出现高峰事务处理期
预计每天都会出现高峰事务处理期
用户在应用程
序需求或者服务级别协议中对事务率要求很高,因此
必须在设计阶段进行性能分析。
用户在应
用程序需求或者服务级别协议中对事务率要求很高,因此
必须进行性能分析并在设计、开发和安装阶段中
使用到性能分析工
具。
5
6. 在线数据输入
在线数据输入是指数据通过交互的方式输入系统的程度。系统中包括在线数
据输入和控制信息功能。
0 所有事务都是批处理的
1
2
3
4
5
1%~7%的事务是以交互式的方式进行数据录入
8%~15%的事务是以交互式的方式进行数据录入
16%~23%的事务是以交互式的方式进行数据录入
24%~30%的事务是以交互式的方式进行数据录入
30%以上的事务是以交互式的方式进行数据录入
7. 最终用户效率
最终用户效率是指对应用的人文因素及使用的便捷程度等的考虑程度。
如下功能设计是针对最终用户效率的:
页面导航
菜单
在线帮助或文档
光标自动跳转
可以滚动
在线远程打印
预定义的功能键
在线做批量提交任务
光标可以选取界面上的数据
用户使用大量反白显示、重点显示、下划线或其他的标识
在线copy用户文档
鼠标拖动功能
弹出窗体
使用最少的界面完成某种商业功能
双语言支持(如果选择了这个就算4项)
语言支持(如果选择了这个就算6项)
0 以上的一个都不包括
1
2
3
4
包括以上的1~3个
包括以上的4~5个
包括以上的6个或以上,但是没有用户对于效率的要求
包括以上的6个或以上,对用户使用效
率有较高要求,因而必须考
虑用户方面的设计(例如,最少击键次数、尽可能提供默认值、模
版
的使用)
包括以上的6个或以上,用户对效率的要求使得开发人员必须使用
特定的工具和流程
以判定用户对效率的要求已经被达成
5
8. 在线更新
在线更新是指内部逻辑文件ILF被在线更新的程度。应用系统提供在线更新
内部逻辑文件的功能。
0 没有在线更新
1
2
3
4
5
包含1~3 个控制文件的在线更新。更新的流量低,恢复容易。
包含对4
个以上控制文件的在线更新。更新的流量低,恢复容易。
包含对主要ILF 的更新。
除了3 之外,在设计和实施中要考虑对数据丢失的防范。
除了4
之外,大量的数据恢复工作要考虑成本因素,同时包含了
高度自动化的恢复流程。
9. 复杂处理
复杂处理描述了逻辑处理对应用开发的影响程度。它包含以下要素:
敏感控制(例如特殊的审核过程)和或程序特定的安全处理
大量的逻辑处理
大量的数学处理
因为例外处理造成的需要重新处理的情况(例如,由TP中断、数据值缺<
br>少和验证失败导致的ATM事务)
多种可能的输入输出造成的复杂处理
0
1
2
3
4
5
上面一个都不满足
只满足一个
只满足两个
满足三个
满足四个
都满足
10. 可复用性
应用系统中的应用和代码经过特殊设计、开发和支持,可以在其他应用系统
中复用。
0
没有可复用的代码
1
2
3
4
5
代码在应用之内复用
应用中被其他用户复用的部分不足10%
应用中被不止一个用户使用的部分超过10%
应用遵从一种易于复用的方式被打包和文档化。用户在源代码级客
户化该应用。
应用按照一种易于复用的方式被打包和文档化。用户使用用户参数
来对该应用进行客户化。
11. 易安装性
易安装性指应用系统的转换和安装容易度对开发的影响
程度。系统测试阶段
提供了转换和安装计划转换工具。
0
用户对安装没有特定的要求
1
2
3
4
5
用户对安装没有特定的要求,但有特定的安装环境要求
用户提出了安装和转化的要求,转化安
装指南被经过测试提供给
用户。但是转化的影响对该应用不重要。
用户提出了安装和转化的要
求,转化安装指南被经过测试提供给
用户。转化的影响对该应用来说是重要的。
除了2
的要求之外,需要提供经过测试的自动化的安装和转化工
具。
除了3
的要求之外,需要提供经过测试的自动化的安装和转化工
具。
12. 易操作性
易操作性指的是应用对运行的影响程度,如有效启动、备份和恢复规程的影响。易操作性是应用提供的一种特性,它最小化了手工操作的要求。
0
用户没有指定除正常备份程序外的其它特定操作
1
2
3
4
5
提供高效的启动、备份和恢复进程,但需要人手操作
提供高效的启动、备份和恢复进程,不需要人手操作(当作两项计
算)
应用程序对磁带的需求最小化
应用程序对硬拷贝处理的需求最小化
程序设计成无人
操作模式。无人操作模式的意思是除了启动和关闭
之外,不需要对系统进行操作。程序的其中一个功能就
是错误自动
恢复。
13. 多场地
多场地指应用系统经特殊设计、开发可以在多个组织、多个地点应用的程度。
0
用户需求不含多场地和组织的要求
1
2
3
4
5
考虑了多场地的要求,但是设计要求应用在不同的场地使用相同的
软硬件环境
考虑了多场地的要求,但是设计要求应用在不同的场地使用类似的
软硬件环境
考虑了多场地的要求,同时设计支持应用在不同的场地使用不同的
软硬件环境
在1
或者2 的要求之上,提供了经过测试的多场地的文档和支持
计划
在3
的要求之上,提供了经过测试的多场地的文档和支持计划
14. 易修改程度
易修改程度是指应用在设计上考虑支持处理逻辑和数据结构变化的程度。
可以具有如下的特性:
提供可以处理简单要求的弹性查询和报告功能,如对一个ILF进行与(或)
逻辑
提供可以处理一般复杂度要求的弹性查询和报告功能,如对多于一个的
ILF进行
与(或)逻辑(当作两项计算)
提供可以处理复杂要求的弹性查询和报告功能,如对一
个或多个ILF进行
与(或)逻辑的组合(当作三项计算)
业务控制数据被保存到用户通过在线交互进程维护的表中,但变更只会在
第二个工作日生效
业务控制数据被保存到用户通过在线交互进程维护的表中,且变更即时生
效
一个都不满足
合计满足一个
合计满足二个
合计满足三个
合计满足四个
合计满足五个
0
1
2
3
4
5
计算调整后的功能点个数
国际IFPUG组
织将软件项目分为三类,功能点估算法适用于任何一类项目,
其计算公式中的术语请详见表1。
功能点的原始计算公式:
FP Count =UFP * VAF
新开发项目
有时新开发的软件项目也需要与其他现存的软件系统进行
整合。例如:一个
企业新开发的MIS内部管理系统经常会与财务系统进行整合。这时除了考虑本身项目的功能点个数外,还要考虑系统整合或数据迁移部分的工作量。因此,其功
能点计算公式如下:
FP Count =(UFP+CFP)* VAF
二次开发的项目
有时新开发的软件项目是在原有基础上进行二次开发的,只是为了增
加一些新功能。因此,其功能点计算
公式如下:
FP Count = ADD * VAF
功能增强的项目
功能增强项目的功能点估算比较复杂。在计算功能点前大家需要计算
有哪些是新增加的功能,哪些是被修改的功能,哪些是属于数据迁移或系
统整合的功能。然后计
算新系统技术复杂度的调整因子“VAFA”,并在此
基础上计算系统功能点的数量。当然,此类项目也
会去掉一些原有功能,
那么在原有系统的技术复杂度基础上重新计算功能点的调整因子“VAFB”,<
br>再计算所去掉功能贡献的功能点数量。因此,其功能点计算公式如下:
FP
Count = [(ADD+CHGA+CFP)* VAFA]+(DEL * VAFB)
表1 功能点技术公式术语
术语 英文
ADD Added
functionality
中文含义
被添加的功能点个数
CFP Conversion functionality 被转换的功能点个数
UFP of changed functionality after
功能增强后所改动的功能所贡献的未调
CHGA
enhancement 整的功能点个数
DEL Deleted functionality
Value adjustment
factor
VAF=(sum of(DI)* 0.01)+ 0.65
被删除的功能点个数
功能点的调整因子的计算公式
VAF=(sum
of(DI)* 0.01)+ 0.65
功能增强后的功能点调整因子
功能增强前的功能点调整因子
UFP Unadjusted functional
point count 未调整的功能点个数
VAF
Value adjustment
factor after
VAFA
enhancement
Value
adjustment factor before
VAFB
enhancement
四、功能点分析法的应用详解
以员工管理系统为例,详细说明如何利用功能点估算法计算业务复杂度。
在员工管理
系统中添加一个员工资料,会使用到员工的一般信息、教育情况、
工作经历和家属信息。员工隶属于某个
部门,在本系统中会有一个对部门进行维
护的功能。员工的工资则由另外一个财务系统提供。因此,其用
例图如下所示:
图1 员工管理系统用例图
假设员工基本信息如下所示:
员工ID(标签控件)
员工名称
性别
生日
婚否
所属部门ID(标签控件)
所属部门名称
——受教育的时间
——学校名称
——所学专业
——工作时间
——工作单位
——工作部门
——工作职务
——亲属的姓名
——之间关系
——亲属年龄
——工作单位
假设部门信息如下所示:
部门ID(标签控件)
部门名称
假设工资表信息如下所示:
员工ID(标签控件)
员工姓名
金额
单位
参考:
未调整前功能点对应矩阵
EI、EO、EQ、ILF和EIF技术复杂度对应的功能点如下表所示:
EI
EO
EQ
ILF
低
3
4
3
7
一般
4
5
4
10
高
6
7
6
15
EIF
5 7 10
ILF和EIF的功能点数
本范例识别出来ILF和EIF功能点个数如下表所示。
ILF内部逻辑
RET
文件
员工信息
部门信息
DET个复杂未调整的FP
数 度 个数
低
低
7
7
员工基本信息、受教育情况、工作经历、亲
18
属信息,共4个。
部门基本信息,共1个。 2
EIF外部接
RET
口文件
工资表
员工基本信息、工资信息,共2
个。
合计:19个
功能点个数如下表所示。
EI FTR DET个数
DET个复杂未调整的
数 度 FP个数
4个 低 5
复杂未调整的
度 FP个数
员工信息的两个标签控件内容不是用户输入
的,因此不算。共16个。
部门信息与员工信息中的部门字段重复,因此
添加员员工、部门、
一个都不算。
高 6
工信息 工资表
工资表中的员工ID和名称不能重复,因此只
能算金额和单位,所以共2个。
18个
修改员员工、部门、
工信息 工资表
删除员员工、部门、
工信息 工资表
添加部
部门
门信息
修改部
部门
门信息
18个
同上
1个
员工ID
1个
一个标签控件的内容不是用户输入的,因此不
算
1个
低 3
高
6
中等 4
低 3
一个标签控件的内容不是用户输入的,因此不
算
删除部
部门
门信息
1个
部门ID
合计:25个
EQ
查询员工信息
查询部门信息
FTR
员工、部门、工资表
部门
DET个数 复杂度 未调整的FP个数
20
2
合计:9个
EO FTR DET个数
复杂
度
未调整的FP个
数
4
高
低
6
3
低 3
员工ID、员工名称、年份、年薪、
统计员工年
单位
员工、工资表 低
薪
共5个
本系统的通用系统特性及其影响程度如下表所示。
系统特性
数据通讯
分布式数据处理
性能
高强度配置
交易速度
在线数据输入
最终用户效率
在线更新
负责的处理
可复用性
易安装性
易操作性
多场地
分数
3
2
0
0
0
5
2
3
0
3
0
0
0
支持变更
合计:19
1
调整因子 = 19 * 0.01 + 0.65 = 0.84
最终调整后的功能点数量为:
(19 + 25 + 9 +
5)* 0.84 = 48.72个
总结
功能点估算法是一个非常有用的对软件
规模进行估算的国际通用技术,是项
目管理人员必须掌握的工具。为了便于大家对功能点的技术进行理解
和记忆,这
里对其进行总结:
由于计算机软件就是为了实现无纸办公,那么在估算功
能点时应该多以用户
的纸质表单为依据,每个表单就是一个ILF或EIF,表单上显示的字段都是DE
T,
一个表单上的“核心”内容不管是由几个数据表来分别存放数据的,每个表都是
一个RET
。
简单来讲,ILF和EIF可以被看作数据库中的数据表,但是主、从表将被视
为
一个ILF或EIF。那么,ILF和EIF的复杂度就是由数据表中的字段DET和一
个ILF或EI
F自身所包含的主、从表个数RET来决定。在计算DET时主、外键只
能算作一个。
EI就是对应用户增加、修改、删除的操作,EO和EQ都是用于用户查询的操
作。EO和EQ的区别是
,EO查询时使用了数学公式或计算方法。EI、EQ和EO的
复杂度是由FTR和DET决定的。FT
R的个数由ILF和EIF的个数决定,可以由主
表中主、外键的个数来计算。在计算EI的DET时,
只有用户在界面上直接输入
的信息才算作DET,通过页面自动计算或转换的数据不能算作EI的DET
。在EO
和EQ计算DET时,报表的标题、页码等信息不能被计算为一个DET。
如果大家对功能点的内容有什么不懂或有其他意见,请通过张瑾的博客
http:?12876822与
我进行探讨。