项目管理那些事 功能点分析学习笔记
为了推动Function Point的方法在行业中的应用,IFPUG有推出CFPS的认证。
FPA是从用户角度出发度量软件规模的一种方法。其目标是:
1. 度量用户要求和能够接收到的功能
2. 提供一种与具体实施方法和技术无关的对软件开发和维护进行度量的手段
3. 提供一种相对来说比较简单的对规模进行度量的方法
4. 提供一种在不同的项目和组织之间能够保持一致的度量方法
相对于其他的软件度量方法而言(诸如代码行),其主要的特点是:该度量方法与技术无关,也就是说对于同一组用户需求,无论你采用什么开发语言,其规模都应该是一定的。且该度量方法是面向用户的,从用户角度出发的,而其他的度量方法多从技术角度出发,很难让用户接收。
这里先讲几个基本的概念:
用户:是指用户功能性需求的任何人和/或任何时候与软件通信或互动的任何人或事物
用户视角:它是对业务功能的描述,此为,它应该:
1. 被用户认可
2. 能够被用来计算功能点
3. 能以不同的文档形式出现
利用功能点分析的步骤如下图所示:
1、决定分析类型
功能点计算的类型分为:
·开发项目——开发项目功能点计算度量的是项目完成、用户第一次安装系统时提供给用户的功能
·升级项目——升级项目功能点计算度量的是项目完成对已存在的应用系统新增、修改或者删除的功能
·应用程式——应用程式功能点计算度量的是已经安装运行的系统提供给用户的功能。
2、识别计算范围和应用边界
计算范围定义了一组(部分)被度量的软件
·它由功能点计算的目的决定
·它确定功能点计数中包括的功能
·它可以包含一个或多个应用
应用边界指出了被度量的软件之间的分界线
·定义了应用的外部范围
·内部应用与外部用户时间的概念接口;起一种“膜”的作用,数据就是通过这层膜进出应用
·包括被应用维护的逻辑数据
·协助识别在应用中查询但不在应用中维护的逻辑数据
·依赖于用于对应用外部业务的视角;与技术和/或是是方式相独立
识别计算范围和应用边界的规则
·边界是从用户的角度来划分和决定
·应用之间的边界是以用户能够看得见的可分隔的功能域为基础,而不是以技术考虑为出发点。
3、计算数据功能
3.1、基本概念
3.1.1、数据功能类型
·内部逻辑文件 InternalLogical File (ILF)
·外部接口文件 External Interface File (EIF)
此处的文件不是传统数据处理意义上的文件,而是指一组逻辑上相互关联的数据,并不是实现意义上的物理的数据集合。
3.1.2、ILF
·ILF是一组用户可识别的在应用边界内且被应用维护的逻辑相关数据或者控制信息。
·它的主要目的是通用应用的一个或几个基本处理过程维护数据。
3.1.3、EIF
·EIF是一组在应用边界内被查询,但在其他应用中被维护的、用户可识别的、逻辑相关数据或者控制信息。
·EIF的主要目的是使数据在应用边界内通过一个或几个基本处理过程得以查询。这就意味着一个应用中的一个EIF必然是其他应用中的ILF。
3.1.4、相关概念
·用户可识别——它是指为处理而定义的需求或/和能被用户和软件开发者赞同和读懂的数据组。
·维护——它指的是可以通过一个基本处理过程更改数据的能力
·控制信息——它是影响应用基本处理过程的数据。它指明了处理什么、何时处理或处理方式。
·基本处理过程——一个基本处理过程就是一个用户可以理解的最小活动单元。
3.2、识别规则
3.2.1、ILF识别规则
·该组数据或控制信息是逻辑相关的且由用户定义。
·该组数据在应用的边界之内且通过一个或几个基本处理过程来维护。
·以上两条规则都须同时满足,才能算做ILF。
3.2.2、EIF识别规则
·该组数据或控制信息是逻辑相关的且由用户定义。
·该组数据处于被计数应用之外,且被该应用查询。
·被计数的应用不对该组数据进行维护。
·该组数据被其它的应用维护。
·以上四条规则都须同时满足,才能算做EIF。
3.3、功能点计算
·根据ILF和EIF的复杂度和贡献度来计算其功能点。
·ILF和EIF的复杂度和贡献度取决于以下两种类型元素的数量:
·数据元素类型 Date Element Types (DET)
·记录元素类型 Record Element Types (RET)
3.3.1、基本概念
·DET——一个DET就是一个唯一的用户可认知的、不重复的数据域
·RET——一个RET就是一个ILF或EIF内用户可认知的数据元素子集
3.3.2、DET计算规则
·如果通过一个基本处理过程的执行在ILF维护或从ILF或EIF中返回一个特定的用户可识别的、非重复字段,那么每个这样的字段算一个DET
·当两个应用维护和/或查询相同的ILF/EIF,但是每个应用单独维护/查询相应的DET,只计算被每个应用使用的DET
·对于那些用户要求与其他的EIF/ILF建立关联的数据字段来说,每个这样的数据字段都应算一个DET
3.3.3、RET计算规则
·每个ILF或EIF得可选或必选子组算一个RET
·如果该ILF/EIF没有子组,那么就将该ILF/EIF算作一个RET
3.3.4、复杂矩阵
1-19 DET | 20-50 DET | 51及以上DET | |
1 RET | Low | Low | Average |
Low | Average | High | |
Average | High | High |
3.3.5、功能点复杂程度对应表
Low | Average | High | |
ILF | 7 | 10 | 15 |
EIF | 5 | 7 | 10 |
3.3.6、计算数据功能的提示
·一个应用可以在多个处理过程中用到同一个ILF/EIF,但是这个ILF/EIF只能被计算一次
·在同一个应用中一个逻辑文件不能同时作为ILF和EIF来计算。如果一个数据集合同时满足ILF和EIF的识别规则,则当作ILF来计算。
·如果一组数据没有被作为一个ILF/EIF来计算,则可计算为包含这组数据的ILF/EIF的DET
·不要假设一个物理文件、表或对象等于一个从用户视角可以识别的数据逻辑文件
·不要假设所有的物理文件都必须被计算为一个ILF/EIF,或是ILF/EIF的一部分
3.3.7、计算数据功能的注意事项
·以下数据不会作为ILF/EIF计算
˙临时文件或不同迭代阶段的同一文件
˙工作文件/排序文件
˙摘录或视图文件(在打印或显示前,从ILF/EIF中提取)
˙由于技术原因引入的文件
˙可选索引、联合、关系或联接
˙审计数据或历史数据,他们和应用功能数据一起计算
· 除以上外,以下数据也不会作为ILF计算
˙同一文件的复本
˙用作企业备份和恢复的数据(系统的基本特征)
˙包括不完整业务信息的中间数据
·除以上外,以下数据也不会作为EIF计算
˙从另外系统接收的数据,用于应用中的一个或多个ILF(EI)
˙由应用格式化后发给其他应用的数据
4.1、相关概念
4.1.1、交易功能类型
·外部输入 External Inputs(EI)
˙外部输出 External Outputs(EO)
˙外部查询 External inQuiries(EQ)
4.1.2、EI
˙是处理来自应用边界之外的数据或控制信息的基本处理过程。
˙EI的主要目的是维护一个或多个ILF并且/或者改变系统的行为
4.1.3、EO
˙是向应用边界之外发送数据或控制信息的基本处理过程。
˙主要目的是通过逻辑处理方式向用户呈现信息,而不只是直接恢复数据或控制信息。该处理逻辑必须包含至少一个数学公式或计算过程或生成派生数据
˙一个EO也可能维护一个或多个ILF和/或改变系统行为
4.1.4、EQ
˙是向应用边界之外发送数据或控制信息的基本处理过程。
˙主要目的是通过恢复数据或控制信息向用户呈现信息。该处理逻辑不包括任何的数学公式或计算过程,不会生成任何的派生数据。
˙EQ处理过程中既不会维护任何ILF,也不会改变系统行为
4.1.5、EI、EO、EQ都是逻辑处理
逻辑处理指的是用户提出的完成某个处理的请求。逻辑处理的例子包括:
˙数据验证
˙数学公式和计算
˙数据的过滤和选择
˙分析适用的条件
˙更新一个或者多个ILF
˙引用一个或者多个ILF或EIF
˙运用现有的数据生成衍生数据
˙改变系统的行为
˙向应用范围之外准备和显示数据
˙接受进入系统边界的数据或者控制信息
˙恢复和重新整理数据
4.2、识别规则
4.2.1、EI识别规则
˙数据或控制信息从应用边界之外输入。
˙如果穿过边界的数据不是改变系统行为的控制信息,那么至少应维护一个ILF。
˙对于已识别的处理过程,至少满足下面三个条件之一 :
˙处理逻辑与该应用中其它EI所用的处理逻辑不同
˙该组已识别的数据元素不同于该应用中其它EI的数据元素
˙所涉及的ILF或EIF不同于该应用中其它EI所涉及的文件
4.2.2、EO识别规则
˙数据或控制信息发送出应用边界。
˙对于已识别的基本处理过程,至少满足下面三个条件之一 :
˙处理逻辑与该应用中其它EO所用的处理逻辑不同
˙该组已识别的数据元素不同于该应用中其它EO的数据元素
˙所涉及的ILF或EIF不同于该应用中其它EO所涉及的文件
˙还需满足下述条件之一
˙处理逻辑包含至少一个数学公式或计算过程
˙至少一个ILF被处理逻辑维护
˙处理逻辑改变了系统的行为
4.2.3、EQ识别规则
˙数据或控制信息发送出应用边界。
˙对于已识别的基本处理过程,至少满足下面三个条件之一 :
˙处理逻辑与该应用中其它EQ所用的处理逻辑不同
˙该组已识别的数据元素不同于该应用中其它EQ的数据元素
˙所涉及的ILF或EIF不同于该应用中其它EQ所涉及的文件
˙还应该满足下述所有条件:
˙该处理逻辑从一个ILF或EIF返回数据或控制信息
˙该处理逻辑不包含任何数学公式或计算过程
˙该处理逻辑不改变系统行为
˙该处理逻辑不维护任何ILF
4.3、计算规则
4.3.1、基本概念
˙根据EI,EO,EQ的复杂度和贡献度来计算
˙EI, EO, EQ的复杂度和贡献度取决于以下两种元素的数量
˙引用文件类型 FTR (File Types Referenced)
˙数据元素类型 DET (Data Element Types)
4.3.2、FTR
˙它是一个被交易功能读取或者维护的内部逻辑文件
˙或是一个被交易功能读取的外部接口文件
4.3.3、DET
˙一个DET就是一个唯一的用户可认知的,不重复的数据域
4.3.4、EI的功能点计算
4.3.4.1、FTR计算规则
˙每个被维护的ILF算一个FTR
˙每个在EI处理过程中读取的ILF或EIF算一个FTR
˙由EI维护和读取的ILF只算一个FTR
4.3.4.2、DET计算规则
˙完成EI的过程中,如果一个用户可识别的、非重复的字段穿越应用边界,那么该字段应算一个DET
˙如果在EI过程中,系统取出或派生一个字段并且该字段存储在一个ILF之内且没有穿越应用边界,则无须计算DET
˙如果应用能够发送一个系统响应信息(如:说明EI过程中发生错误,确认处理过程已经完成,确认处理过程应该继续)到应用边界之外,则算一个DET
˙即使有多种方法调用同一逻辑过程,也只能为这一特定动作计算一个DET
4.3.4.3、注意事项
以下不能单独计算为EI
˙包含在查询或输出中的输入请求
˙用于导航或选择不维护ILF的菜单窗口
˙帮助用户进行系统的登陆
˙激活同一逻辑的多种方法
˙刷新或取消窗口中的数据
˙需要用户删除或其他事务消息的反应
˙在同一系统内部(线程与批处理或客户端到服务器)
4.3.4.4、复杂度矩阵
1-4 DET | 5-15 DET | 16及以上DET | |
0-1 FTR | Low | Low | Average |
2 FTRs | Low | Average | High |
3及以上FTRs | Average | High | High |
4.3.4.5、功能点复杂度对应表
Low | Average | High | |
EI | 3 | 4 | 6 |
4.3.5、EO、EQ功能点计算
4.3.5.1、FTR计算规则
˙EO/EQ的FTR计算规则
˙每个在EO/EQ处理过程中读取的ILF和EIF算一个FTR
˙EO额外的FTR计算规则
˙每个在EO处理过程中维护的ILF算一个FTR
˙每个在EO处理过程中读取和维护的ILF算一个FTR
4.3.5.2、DET计算规则
˙DET数量等于根据下列规则确定的字段总数
˙用户可识别的非重复的字段进入应用边界并且指明处理什么、何时处理或处理方式并且由EO/EQ返回或产生,那么每个字段算一个DET
˙每个发出应用边界的用户可识别的非重复字段算一个DET
˙如果字段同时进入发出边界,对该EO/EQ来说,只算一个DET
˙如果应用能够发送一个系统响应信息(如:说明过程中发生错误,确认处理过程已经完成,确认处理过程应该继续)到应用边界之外,这种能力算一个DET
˙即使有多种方法调用同一逻辑过程,也只能为这一特定动作计算一个DET
˙对那些虽然被保存、返回、派生的没有穿越边界的字段不计算DET
˙文字的,页面的,系统产生的标签不计算DET
4.3.5.3、注意事项
以下不能单独计算为EO
˙数据值不同的相同报告
˙不包含公式或复杂计算的报告
˙帮助(EQ)
˙退出系统
˙激活同一输出过程的多种方法
˙需要用户删除或其他事务消息的反应
˙在同一系统内部(线程与批处理或客户端到服务器)
4.3.5.4、复杂度矩阵
1-5 DET | 6-19 DET | 20及以上DET | |
0-1 FTR | Low | Low | Average |
2-3 FTRs | Low | Average | High |
4及以上FTRs | Average | High | High |
4.3.5.5、复杂度与功能点对应
Low | Average | High | |
EO | 4 | 5 | 7 |
EQ | 3 | 4 | 6 |
5、计算未经调整功能点数
在分别识别并计算了数据功能(Data Function)和交易功能(Transaction Function)的复杂度之后,利用下表就可以计算出未经调整功能点数:
功能类型 | 个数 | 计算公式 | 功能点 | 小计 |
ILF | _________ _________ _________ |
低 × 7 = 中 × 10 = 高 × 15 = |
_________ _________ _________ |
|
EIF | _________ _________ _________ |
低 × 5 = 中 × 7 = 高 × 10 = |
_________ _________ _________ |
|
EI | _________ _________ _________ |
低 × 3 = 中 × 4 = 高 × 6 = |
_________ _________ _________ |
|
EO | _________ _________ _________ |
低 × 4 = 中 × 5 = 高 × 7 = |
_________ _________ _________ |
|
EQ | _________ _________ _________ |
低 × 3 = 中 × 4 = 高 × 6 = |
_________ _________ _________ |
|
总计 |
6、计算调整系数和功能点
6.1、调整系数(Value Adjustment Factor, VAF)
VAF=(TDI×0.01)+0.65
·其中TDI (Total Degree of Influence) 为所有系统特征因素影响程度的和
·VAF值的范围为0.65~1.35间
6.2、已调整功能点数(Adjusted Function Point)
·开发项目(Development)=(UFP+CFP)×VAF
·应用(Application)=ADD×VAF
·增强项目(Enhancement)=[(ADD+CHGA+CFP)×VAFA]+(DEL×VAFB)
·其中:
·UFP为未调整功能点总数
·CFP为转换功能点
·ADD为增加的功能点
·CHGA为增强后改变功能的UFP
·VAFA为增强后调整系数
·DEL为被删除功能点
·VAFB为增强前调整系数
6.3、系统特征因子
有14个系统特征因子:
·1、数据通讯 2、分布式数据处理
·3、性能 4、资源需求
·5、事务频率 6、在线数据输入
·7、终端用户效率 8、在线升级
·9、复杂处理 10、可重用性
·11、易安装性 12、易操作性
·13、多点运行 14、易变更
每个特征因子的影响程度分为6个级别:
·0 毫无影响
·1 偶然影响
·2 小影响
·3 一般影响
·4 重要影响
·5 强烈影响
每个特征引子的影响程度都有自己的判定规则!
6.3.1、数据通讯(Data Communication)
·0 应用程序是纯粹的批处理程序或者运行在独立的PC上
·1 应用程序是批处理程序,但是有远程数据输入或远程打印
·2 应用程序是批处理程序,但是有远程数据输入和远程打印
·3 对于批处理程序或者查询系统来说,应用程序包含在线数据收集或者一个远程处理前端
·4 应用程序不仅是一个前端,他还支持一种类型的通信协议
·5 应用程序不仅是一个前端,他还支持不止一种类型的通信协议
6.3.2、分布式数据处理(distributed data processing)
·0 应用程序不支持系统部件之间的数据传输或者处理
·1 应用程序为系统其他部件上的用户处理、准备数据
·2 为传输准备数据,将数据传输到系统的另一个部分进行处理(不是最终用户)【就是在系统个部件之间传输数据】
·3 分布式处理和数据传输在线进行并且是单项的
·4 分布式处理和数据传输是在线进行并且是双向的
·5 多数系统相应部件上都是动态执行处理功能
6.3.3、性能(Performance)
·0 用户没有提出任何要求
·1 提出并评审了性能,但不必采取专门措施
·2 响应时间和吞吐量在业务峰值时段是至关重要的。但不必为了CPU的利用率而采用专门设计。业务处理的截至日期在下一个工作日
·3 响应时间和吞吐量在业务峰值时段是至关重要的。但不需要为CPU利用率而采用专门的设计。业务处理的截至日期是有限制的
·4 此外,已提出的用户性能需求已经迫切到了在设计阶段安排专门的性能分析任务
·5 此外,需要在设计、开发和(或)实施阶段使用性能分析工具来满足已提出的用户性能需求
6.3.4、资源需求(heavily used configuration)
·0 不包括任何直接或者间接的操作限制
·1 确实存在操作限制,但是比通常的应用程序的约束要少一些。
·2 包括一些安全性或者时间限制的考虑
·3 应用程序的某个部分需要专门的处理器
·4 已提出的操作限制需要在中央处理器或者一个专门的处理器中的应用程序上加上特殊限制
·5 此外,在应用系统的分布式部件上存在特殊的限制
6.3.5、事务频率(Transaction Rate)
·0 没有可预见的峰值处理时段
·1 可以预见一个峰值处理时断(每月,每季度)
·2 可遇见每周一次的高峰
·3 每天一次的高峰
·4 用户在应用程序需求或者服务中提出的高处理率已经需要在设计阶段安排性能分析工作了
·5 需求中的处理要求必须在设计阶段安排性能分析工作,且需在设计、开发部署阶段使用性能分析工具
6.3.6、在线数据输入(Online Data Entry)
·0 没有
·1 1% ~ 7%
·2 8%~15%
·3 16%~23%
·4 24%~30%
·5 >30%
6.3.7、终端用户效率(End User Efficiency)
·考察界面的友好性
·辅助导航(功能键,跳转,动态生成树的菜单)
·菜单
·在线帮助和文档
·光标的自动移动
·滚动
·远程打印(在线处理)
·定制功能键
·在线处理提交的批处理作业
·使用光标选定屏幕的数据
·大量使用的翻转录像、高度、颜色、下划线和其他指示器
·在线处理的硬拷贝文档用户
·鼠标界面
·弹出式菜单
·用尽可能少的屏幕来完成一种业务功能
·支持两种语言(这个规定要算4项)
·多种语言支持(这个要算6项)
·记分标准
·0 0项
·1 1~3项
·2 4~5项
·3 >=6项 ,但用户没有其他关于使用效率的专门需求
·4 >=6项,但已经提出了其他关于使用效率的需求强烈到需要在设计阶段进行人性化设计分析的工作
·5 >=6项,需要使用特殊的工具来满足要求
6.3.8、在线升级(Online Update)
·0 无要求
·1 更新1~3个控制文件。数据量低,容易恢复
·2 更新4个或者更多的控制文件。数据量低,易恢复
·3 包含对主要内部逻辑文件的更新
·4 除以上之外,防止数据丢失式一项基本要求,而且经过了专门的设计并已经实现
·5 除以上之外,大数据量促使恢复过程要考虑成本问题。高度自动化的恢复过程只需要少量的人工干预
6.3.9、复杂处理(Complex Processing)
根据逻辑对程序开发的影响需要考虑下面的部分
敏感性控制(特殊的审计处理)和特定应用程序的安全处理
大量的逻辑处理
大量的数学处理
很多的例外处理,因此必须再次处理不完整的事物
应付多种输入/输出格式
记分标准
0 没有
1 1项
2 2项
3 3项
4 4项
5 所有项
6.3.10、可重用性(Reusability)
·0 没有可重用代码
·1 可重用的代码重用于应用程序内部
·2 应用程序中少于10%的部分会被一个以上的用户使用
·3 应用程序中大于等于10%的部分会被一个以上的用户使用
·4 应用程序被专门打包和文档化以简化重用
·5 除4之外,用户可以通过参数维护定制应用程序
6.3.11、易安装性(Installation Ease)
·0 没有提出安装要求,也无需考虑安装问题
·1 没有提出安装需求,但是要考虑安装问题,进行相应的工作
·2 提出安装需求,提供并测试了转换和安装的指南。项目中转换工作带来的影响并不重要
·3 并给项目中的工作带来显著的影响
·4 除2外,提供并测试自动安装工具
·5 除3外,要求提供自动安装工具
6.3.12、易操作性(Operational Ease)
·0 除了正常的备份处理程序,用户没有提出特殊的操作方面的额外考虑
·1~4 从下列项目中选择准确的特性, 每个要点记1分:
·提供有效地启动、备份、恢复备份处理,但是需要操作员人工干预
·无需干预
·需要人工安装磁带
·需要人工穿空纸和穿孔纸带
·5 应用程序无人值守,所有的操作都不需要人工干预。系统能够自动进行错误恢复
6.3.13、多点运行(Multiple Sites)
·0 没有需求
·1 有需求,但应用得软硬件环境相同
·2 软硬件环境相似
·3 软硬件环境不相同
·4 系统中有相应的设计和文档,其他同1,2
·5 系统中有相应的设计和文档,其他同3
6.3.14、易变更(Facilitate Change)
·考察范围
·提供能够处理简单请求的灵活查询以及报表支持 ,例如对一个ILF的处理 (算1项).
·提供能够处理简单请求的灵活查询以及报表支持 ,例如对不止一个ILF的处理(算2项).
·提供能够处理复杂请求的灵活查询以及报表支持,例如提供一个或者一个以上得处理功能 (算3项).
·业务控制数据保存在由用户通过在线交互处理维护的表中,但是变更只在下一个工作日才生效 (算1项).
·业务控制数据保存在由用户通过在线交互处理维护的表中,需立即生效生效(算2项).
·记分标准
·0 一个都不满足
·1 满足以上的1个
·2 满意以上的2个
·3 满足以上的3个
·4 满足以上的4个
·5 满足以上的5个
转自:http://tech.sina.com.cn/s/2009-11-26/17271150492.shtml