功能点分析法指南.docx
《功能点分析法指南.docx》由会员分享,可在线阅读,更多相关《功能点分析法指南.docx(46页珍藏版)》请在冰豆网上搜索。
功能点分析法指南
功能点分析法指南版本1.0
文档编号:
SW_SPP_GUI_FPA_V1.0
SEPG
文件变化记录单
版本号或变更记录号
*变化
状态
简要说明
变更日期
变更人
批准日期
批准人
*修改状态:
A——增加,M——修改,D——删除
文件批准单
职务
签字
日期
1.功能点分析法概论
本章概要地介绍了功能点分析的方法,包括功能点方法的目的以及对功能点分析的方法进行总结。
功能点分析是一种从用户的角度对软件开发进行度量的方法。
1.1.目标
功能点方法度量的是软件的规模,它是主要从逻辑设计的角度出发对提供给客户的功能进行量化的方法。
功能点分析方法的目标是:
◆度量用户要求和能够接收到的功能。
◆提供一种与具体实施方法和技术无关的对软件开发和维护进行度量的手段。
除了满足上述的目标之外,功能点分析方法还是:
◆一种相对来说比较简单的对规模进行度量的手段。
◆在不同的项目和组织之间能够保持一致的度量方法。
1.2.收益
功能点方法在组织中的应用包括:
◆用来从功能角度度量一个采购软件的规模
◆帮助用户从提供的功能角度判断一个软件对他们的好处
◆为一个组织判断自己的质量和生产率提供“分母”
◆帮助软件开发组织从规模出发判断一个软件项目的日程、人力和成本
◆提供对软件进行横向比较的基本判断依据
1.3.步骤
功能点分析方法的主要步骤包括:
1.3.1.决定分析的类型
功能点分析的第一个步骤是确定分析的类型。
功能点分析的方法既可以应用在项目上,也可以应用在应用上。
功能点分析有如下三种类型:
◆开发项目功能点分析
◆升级项目功能点分析
◆应用的功能点分析
1.3.2.识别分析范围和应用边界
分析范围的界定限制了在一次分析中所应该包含的功能范围。
应用边界的界定划出了被分析的应用与用户之间的界限。
1.3.3.确定未经调整的功能点数
未经调整的功能点数(UnadjustedFunctionPointCount--UFPC)反映了应用向用户提供的功能的数量。
计量用户功能的原则是数出“该应用向客户提供了什么功能”而不是“这些功能是怎么提供的”。
在计数过程中只计入用户要求和定义的组件。
未经调整的功能点数(UFPC)包括两个大类:
数据和交易。
这两个类别的进一步定义在下图中:
1.3.3.1.
数据功能的计数
数据功能是指向用户提供的满足内部或者外部数据需求的功能。
数据功能有两类,内部逻辑文件和外部接口文件:
◆内部逻辑文件:
内部逻辑文件(InternalLogicalFile--ILF)是指一组用户能够识别的,存在内在逻辑关联的数据或者控制信息。
这些数据或者信息应该是在本应用的边界之内被控制的。
ILF的主要目的是容纳一组在本应用中由一个或者一组基本处理来维护的数据。
◆外部接口文件:
外部接口文件(ExternalInterfaceFile--EIF)是指一组用户能够识别的,在本应用中被引用的,以及存在内在逻辑关联的数据或者控制信息。
与内部逻辑文件不同,这些数据或者信息是在本应用的边界之外被控制的。
EIF的主要目的是容纳一组在本应用中由一个或者一组基本处理引用到的数据。
这就意味着在本应用中的EIF必须是另外一个应用中的ILF。
1.3.3.2.交易功能的计数
交易功能指的是向用户提供的用来处理数据的功能。
◆外部输入:
外部输入(ExternalInput--EI)是指一个处理来自本应用边界之外的一组数据或者控制信息的基本处理。
外部输入的基本目的是为了维护一个内部逻辑文件(ILF)或者改变系统的行为。
◆外部输出:
外部输出(ExternalOutput--EO)是指一个向应用边界之外发送数据或者控制信息的基本处理。
外部输出的基本目的是为了向用户展示一组经过了除了提取之外的其他逻辑处理的数据或者控制信息。
这里的其他处理包括至少一个数学演算或者对衍生数据的生成。
外部输出也可能包括对内部逻辑文件(ILF)的维护或者对系统行为的改变。
◆外部查询:
外部查询(ExternalQuery--EQ)是指一个向应用边界之外发送数据或者控制信息的基本处理。
外部查询的基本目的是为了向用户展示提取的数据或者控制信息。
外部查询的逻辑处理里面不包含数学公式或者计算以及对衍生数据的生成。
外部查询不维护内部逻辑文件(ILF),也不会引起系统行为的改变。
1.3.3.3.确定调整系数
调整系数(ValueAdjustmentFactor--VAF)反映的是应用给用户提供的功能的概况。
VAF包含了14个基本系统特征(GeneralSystemCharacteristic--GSC),每一个特征都有特定的规则描述来帮助使用者确定该特征对本应用影响的大小。
这些影响值从0到5,分别表示对系统从无影响到具有强烈影响的程度。
1.3.3.4.计算经过调整的功能点
经过调整的功能点(AdjustedFunctionPoint)是针对不同类型的使用(开发、升级、应用)使用不同的公式计算得来的。
在后面的章节里还会介绍这些公式。
2.分析流程
2.1.决定分析的类型
2.1.1.定义:
功能点分析的类型
功能点的分析既可以应用在项目上也可以应用在应用上。
以下是三种功能点分析的类型:
◆开发项目
◆升级项目
◆应用
以下是对这三种类型的定义:
开发项目:
这种类型的分析为用户提供应用第一次安装的时候所提供的功能多少的度量。
升级项目:
这种类型的分析为用户提供升级项目对目前系统所提供的功能修改、增加和删除的功能数量的度量;当升级的应用被安装的时候,应用的功能点度量应该得到相应的更新。
应用:
对应用的功能点分析是对一个已经安装的应用系统进行度量的手段。
它也被称为基线功能点或者安装功能点。
这个度量揭示了当前应用为用户所提供的功能数量。
它在应用第一次被安装的时候确立,在系统升级的时候得到更新。
下图说明了这三种类型的分析之间的关系:
估算和最终计量的关系
在项目开始的时候所进行的功能点分析是对应用将要给用户提供的功能的一种预测,在项目进展过程中,对功能、范围的调整和细化都有可能导致最终发布给用户的系统的功能与最初的估算不完全相符。
这种现象有时候被称为范围的偏移(ScopeCreep)。
在这种情况下,在项目结束的时候对功能点进行重新的计算是非常必要的,只有这样,应用的功能点才能真正反映发布给客户的功能状况。
2.2.识别分析范围和应用边界
2.2.1.定义
本节定义的目的是对分析范围和应用边界进行定义,并且揭示此二者是如何受到分析目的的影响的。
对分析目的的定义:
功能点分析的目的是提供对业务问题的答案。
该目的:
◆决定功能点分析的类型并且通过在划定的范围内进行功能点分析来获得对所需要解决的业务问题的答案。
◆影响了应用软件及其周边的界限的界定。
例如,如果人力资源管理模块是作为一个软件包的一部分来提供的,那么分析者可能决定将人力资源管理作为一个单独的应用来看待。
分析的目的的例子有:
◆通过进行功能点分析,为项目估算开发第一个版本所需要的人力投入的估算提供输入
◆为已经安装的软件提供一个规模的基线
◆对不同供应商所提供的软件包进行功能上的比较
定义计数范围
计数范围定义了在一次功能点分析中所需要涵盖的功能范围。
计数范围
◆定义了被计数的软件的一个集合或者子集
◆是由这一次分析的目的所决定的
◆识别出为了满足分析目的所需要提供的答案中应该包括的功能
◆可能包含了不止一个应用
为了不同的计数目的,该范围的定义如下:
◆在升级项目中,该范围包括所有被增加,改变和删除的功能。
◆开发项目的范围包括所有牵涉到的功能,包括被创建的或者被客户化的功能
对应用的功能点分析的范围可能包括被用户使用到的功能或者该应用所提供的所有的功能。
2.2.2.定义应用边界
应用边界表示所度量的软件和用户之间的边界。
应用边界:
◆定义了对于应用来说什么是外界
◆是对应用的“内部”和“外部用户世界”之间接口的概念性定义
◆是交易所处理的数据(EI,EO和EQ)进入和送出该应用的一层“细胞膜”
◆封装了由该应用所维护的数据集合(ILF)
◆帮助识别出该应用所使用,但并非是由该应用所维护的数据(EIF)
◆是由用户对该应用的商业视角所决定而非技术/实施考虑决定的
2.3.规则和流程
本节定义了识别分析范围以及定义应用边界时所需要遵循的规则和流程。
应用的边界之所以重要,是因为它直接影响到分析的最终结果。
同时也是因为边界的划定区分开了进入和输出该应用的数据(EI和EO)
2.3.1.边界识别的规则
识别边界的时候必须应用如下的规则:
◆边界的定义必须基于用户的视角,边界必须是用户能够理解和描述的。
◆相关应用之间的边界是由用户看到的不同功能区域来划分,而不是由技术考虑来划分的。
◆应用之间初始的边界不会因为功能点分析而改变。
2.3.2.分析范围和应用边界流程
步骤
行动
1
建立分析的目的
2
识别分析范围
3
识别应用的边界
4
记录如下条目
●分析目的
●分析范围
●应用边界
●所有与以上条目有关的假设
2.3.3.边界识别的一些技巧
◆使用系统的客户需求或者获得一个系统的流程图,在系统的周围画一个圈,以此区别系统内部和外部的元素。
◆察看数据的维护方式。
◆察看其他数据,例如成本,人力,缺陷等。
功能点分析中的应用范围应该和其他的度量数据的应用范围是一致的。
2.4.计数数据功能
数据功能指的是提供给用户的用来满足内部和外部数据需求的功能。
数据功能分为内部逻辑文件和外部接口文件两种(ILF/EIF)。
在这里,文件的概念并非是传统意义的文件,而是一组逻辑上相关联的数据的集合。
本章将介绍对ILF和EIF的定义,并且解释计数这些功能的规则和流程。
2.4.1.定义
◆内部逻辑文件:
内部逻辑文件(InternalLogicalFile--ILF)是指一组用户能够识别的,存在内在逻辑关联的数据或者控制信息。
这些数据或者信息应该是在本应用的边界之内被控制的。
ILF的主要目的是容纳一组在本应用中由一个或者一组基本处理来维护的数据。
◆外部接口文件:
外部接口文件(ExternalInterfaceFile--EIF)是指一组用户能够识别的,在本应用中被引用的,以及存在内在逻辑关联的数据或者控制信息。
与内部逻辑文件不同,这些数据或者信息是在本应用的边界之外被控制的。
EIF的主要目的是容纳一组在本应用中由一个或者一组基本处理引用到的数据。
这就意味着在本应用中的EIF必须是另外一个应用中的ILF。
◆控制信息:
控制信息指的是影响到被分析的应用的基本处理的信息。
它规定了什么,何时和怎样对信息进行处理。
例如,在一个工资系统中规定了每一个场地上员工的发薪日,这个日期就包含了对处理发薪信息的时间要求。
◆用户可以识别的:
用户可以识别的指的是对数据组的需求的状态是经过相互认可,被用户和软件开发人员共同理解的。
◆维护:
维护的含义是通过基本处理对数据进行修改的能力。
◆基本处理:
基本处理指的是对用户来说有意义的最小的功能活动单元。
2.4.2.计数流程概述
本节描述的是计数流程的大略,主要目的是为了说明计数规则的环境。
步骤
行动
1
识别ILF和EIF
2
确定ILF或者EIF的复杂度以及判断它们对未经调整的功能点的贡献
在每一个行动中都需要应用ILF和EIF的计数规则。
计数规则包括如下两种:
◆识别规则
◆复杂度和贡献规则
具体的规则大略如下:
◆ILF识别规则
◆EIF识别规则
◆数据元素类型(DET)
◆记录元素类型(RET)
2.4.3.ILF识别规则
要寻找ILF,就必须找到符合ILF定义的数据集合或者控制信息的集合。
这样的集合必须符合如下的规则:
◆数据的集合必须是逻辑相关的并且是用户可以识别的。
◆这些数据或者控制信息必须是在本应用的边界内被维护的。
2.4.4.EIF识别规则
要寻找EIF,就必须找到符合EIF定义的数据集合或者控制信息的集合。
这样的集合必须符合如下的规则:
◆数据的集合必须是逻辑相关的并且是用户可以识别的。
◆这一组数据或者控制信息必须是在被应用内被引用,但并非是在本应用边界范围之内的。
◆这一组数据或者控制信息的维护工作不是在本应用内进行的。
◆这一组数据或者控制信息是另一个应用的ILF。
2.4.5.复杂度和贡献的定义和规则
一个ILF或者EIF的复杂度直接决定了该功能对未经调整的功能点数的贡献状况。
每一个ILF或者EIF都必须有一个复杂度与它相关联。
该复杂度是由这个ILF或者EIF的数据元素类型(DET)数和记录元素类型(RET)数决定的。
DET的定义:
一个数据元素类型(DET)指的是一个用户可以识别的,非重复的域。
DET计数规则
◆每一个通过执行基本处理从ILF或者EIF进行维护或者访问的用户可以识别的以及非重复的域都作为一个DET。
例如,一个账号,就算是在多个字段中进行保存的,也作为一个DET。
又例如,在客户订单处理中计算出来的营业税字段也要算做一个DET。
◆每一个在ILF或者EIF中作为对其他数据功能的联系而存在的字段都应该作为一个DET而被计数。
例如:
一个关系型数据库的表中的外键在它所联系的两张表中都应该作为一个DET进行计数。
RET的定义:
一个记录类型元素(RET)指的是一个EIF或者ILF中用户可以识别的数据的子集。
RET有两种类型,可选的或者必须的。
可选的子集是用户可以选择在一个基本处理中使用或者不使用它来创建或者增加这些数据的实例的子集。
必须的子集是用户必须使用其中至少一个的数据子集。
例如:
在一个人力资源管理应用中,要增加一个雇员的信息,必须输入一些基本数据,一个雇员可以是按月支取薪水的也可以是按小时支薪的。
用户已经决定:
某个雇员必须是月薪或者时薪类型的。
而每一种类型都可以有附加的“子女”的信息。
在这个例子中,一共有三种类型的RET:
⏹支取月薪的雇员:
(必须的)包括基本信息
⏹支取时薪的雇员:
(必须的)包括基本信息
⏹子女:
(可选的)
RET计数规则:
以下两个原则之一必须得到应用:
◆在一个ILF或者EIF中的任何一个必须的或者可选的数据子集必须被计数为一个RET
或者
◆如果一个ILF或者EIF中不存在数据子集,则该ILF或者EIF被计数为一个RET
2.4.6.ILF/EIF计数流程
下图表示了计数ILF和EIF的概要流程:
识别流程:
步骤
行动
相关的标准
01
识别内部逻辑文件
ILF识别规则
02
识别外部接口文件
EIF识别规则
03
确定复杂度和贡献
复杂度和贡献确定流程
2.4.7.复杂度和贡献确定流程
遵循以下的步骤来计算ILF和EIF的复杂度和对未经调整的功能点(UFPC)的贡献
步骤
活动
1
根据复杂度和贡献的定义和规则中的要求识别和计数DET以及RET
2
使用下面的矩阵来决定功能的复杂度:
1~19个DET
20~50个DET
51个以上DET
1个RET
低
低
中
2~5个RET
低
中
高
6个以上RET
中
高
高
3
参照下面的表格,为每一个ILF和EIF决定它们未经调整的功能点数
ILF参照表:
EIF参照表
复杂度
功能点数
低
7
中
10
高
15
复杂度
功能点数
低
5
中
7
高
10
4
计算各ILF和EIF对UFPC的贡献,例如:
功能类型
功能复杂度
小计
总计
ILF
低:
1X7=
7
22
中:
0X10=
0
高:
1X15=
15
EIF
低:
0X5=
0
64
中:
2X7=
14
高:
5X10=
50
2.4.8.数据功能计数技巧
下面的技巧能够帮助我们应用ILF和EIF的计数规则,但是这些技巧本身并不是规则
该数据组是否是一个支持特定用户需求的逻辑的集合?
◆一个应用可以在不同的处理中使用同样的ILF和EIF,但是它们只被计数一次。
◆一个逻辑文件在一个应用中不可能同时既是ILF又是EIF
◆如果一组数据没有单独被看作一个ILF或者EIF,那么这组数据中的DET应该记入它所属的ILF或者EIF中。
◆不要想当然的认为一个物理文件或者数据库中的一个表就是一个ILF。
虽然它们是紧密相关的,但是这种一对一的对应关系并非总是成立。
◆并非所有的物理文件都是一个逻辑文件或者逻辑文件的一部分。
数据是在哪里得到维护的?
是在应用边界之内还是之外?
◆考察工作流程。
◆在功能拆分的时候,识别出与用户以及与其他应用的接口。
◆完整考察处理过程图表以获得提示。
如果一个ILF被多个应用维护,那么对于每一个维护它的应用都要计算一个ILF。
这些ILF的复杂度由它在不同应用中的DET所决定。
2.5.计数交易功能
简介:
交易功能代表应用所提供给用户的用来处理数据的功能。
交易功能包括外部输入、外部输出和外部查询。
本节定义了EI,EO以及EQ,包括了它们的计数规则以及流程。
2.5.1.定义
2.5.1.1.基本定义
◆外部输入:
外部输入(ExternalInput--EI)是指一个处理来自本应用边界之外的一组数据或者控制信息的基本处理。
外部输入的基本目的是为了维护一个内部逻辑文件(ILF)或者改变系统的行为。
◆外部输出:
外部输出(ExternalOutput--EO)是指一个向应用边界之外发送数据或者控制信息的基本处理。
外部输出的基本目的是为了向用户展示一组经过了除了提取之外的其他逻辑处理的数据或者控制信息。
这里得其他处理包括至少一个数学演算或者对衍生数据的生成。
外部输出也可能包括对内部逻辑文件(ILF)的维护或者对系统行为的改变。
◆外部查询:
外部查询(ExternalQuery--EQ)是指是指一个向应用边界之外发送数据或者控制信息的基本处理。
外部查询的基本目的是为了向用户展示提取的数据或者控制信息。
外部查询的逻辑处理里面不包含数学公式或者计算以及对衍生数据的生成。
外部查询不维护内部逻辑文件(ILF),也不会引起系统行为的改变。
2.5.1.2.交易功能的总结
交易功能(EI,EO,EQ)之间的主要区别在于他们的目的。
下表中列出了这三种功能在目的上的主要区别。
外部输出和外部查询的主要区别在于外部输出除了对数据进行表示之外,还可能完成对数据进行修改、维护ILF或者改变系统行为的功能。
功能
交易功能
EI
EO
EQ
改变系统行为
PI
F
N/A
维护ILF
PI
F
N/A
向用户展示数据
F
PI
PI
示例:
PI:
PrimaryIntent该功能的主要目的
F:
Function该交易功能具有这项功能,但不是主要目的,有的时候适用
N/A:
NotApplicable不适用
2.5.1.3.相关术语的定义
◆基本处理
基本处理指的是对用户来说有意义的最小的功能活动单元。
◆控制信息
控制信息指的是影响到被分析的应用的基本处理的信息。
它规定了什么,何时和怎样对信息进行处理。
例如,在一个工资系统中规定了每一个场地上员工的发薪日,这个日期就包含了对处理发薪信息的时间要求
◆维护
维护的含义是通过基本处理对数据进行修改的能力。
◆用户
用户是发起用户规格说明书的人,也是与应用进行交互的任何人或者对象。
例如,在一个人力资源管理系统中,人力资源部的操作员是用户,同时,一个处理福利应用,因为要从人力资源管理系统中提取数据,也是该系统的用户。
◆逻辑处理
逻辑处理指的是用户请求进行的完成一个基本处理的需求,逻辑处理的例子包括
⏹数据验证
例如在增加一个雇员的信息的时候,系统需要对加入的信息进行验证
⏹数学公式和计算
例如,在对雇员信息进行报告的时候,需要计算领取周薪的雇员数量和领取时薪的雇员数量以及雇员总数
⏹等效数据的换算
例如一个货币换算基本处理引用了一个货币汇率,但是这个汇率是由一个表中取出的,并不需要进行计算。
⏹数据的过滤和选择
例如,为了生成一个按照角色选择的雇员列表,一个基本处理将雇员的信息与工作角色进行比较和选择以生成这个列表。
⏹分析适用的条件
例如,在添加一个雇员的时候,首先判断他是支取月薪还是支取时薪的雇员,然后决定采取何种逻辑处理
⏹更新一个或者多个ILF
例如:
当添加一个雇员的信息的时候,雇员这个ILF就被更新了
⏹引用一个或者多个ILF或者EIF
例如,当添加一个雇员的时候,货币这个EIF被引用以决定该雇员的薪水折算成美元的数量
⏹提取数据或者控制信息。
例如,当用户察看薪酬级别的时候,薪酬级别信息被提取出来。
⏹运用现有的数据生成衍生数据
例如,当生成一个病历代码的时候,例如(SMIJO01)这个代码由下列的数据衍生而来:
病人的名字的前三个字母+病人的姓的前两个字母+唯一的两位数字代码
⏹改变系统的行为
例如,当把发薪日由每月的15日和最后一天改为每周的周五的时候,发薪这个基本处理的行为就被改变了。
⏹对应用范围之外准备和展示数据
例如,向用户显示雇员列表
⏹接受进入系统边界的数据或者控制信息的
例如,用户输入一些信息来添加一个客户订单
⏹恢复和重新整理数据
例如,用户要求按照字母顺序列出雇员名单
2.5.1.4.交易功能执行的逻辑处理总结
下表列出了每一种交易功能可能进行的逻辑处理,对于每一种交易功能,有些逻辑处理是必须的,而有些则是可选的。
具体见下表:
逻辑处理
EI
EO
EQ
1数据验证
C
C
C
2数学公式和计算
C
M*
N
3等效数据的换算
C
C
C
4数据的过滤和选择
C
C
C
5分析适用的条件
C
C
C
6更新一个或多个ILF
M*
M*
N
7引用一个或多个ILF或者EIF
C
C
M
8提取数据或者控制信息
C
C
M
9运用现有数据生成衍生数据
C
M*
N
10改变系统的行为
M*
M*
N
11对应用范围之外准备和展示数据
C
M
M
12接受进入系统边界的数据或者控制信息
M
C
C
13恢复和重新整理数据
C
C
C
说明:
C=can该功能可以执行此项逻辑处理,但并非必须
M=mandatory该功能必须执行此项逻辑处理
M*=mandatory(*)该功能必须执行列表中所有带M*标记的逻辑处理中的至少一项
N=cannot该功能一定不能执行该逻辑处理
2.5.2.EI、EO、EQ计数规则
本节定义计数EI,EQ和EQ时所适用的规则。
2.5.2.1.交易功能计数