功能点分析方法(Function Point Analysis,FPA)是一种可靠、有效的软件规模度量方法,功能点分析方法(FPA)作为一种理解和交流系统规模的手段,针对用户功能、性能的需求进行度量,具有可在项目早期进行度量,不依赖于项目的语言和技术等特点,在可用性和客观性方面都要优于传统的代码行方法(LOC)。
软件工程项目建设中作为第三方的监理机构经常需要面临一些问题,如项目建设初期在用户需求不是很完善时,业主方需要了解项目的整体规模及合理项目进度安排;或者立项阶段需要了解项目的总体投资额;项目开发期间,需要第三方评估机构能够客观地对其完成的工作量进行审核与评估,确保其应得利益。
本文给出一种基于FPA方法与专家估算法相结合为主的多算法融合的方法,实现对软件工作量的评估,并在多个项目中进行实践,结果论证该方法既有可操作性又深受用户的认可,下面就由新星咨询为大家深入的对FPA功能点分析法进行解读!
一、模型及估算方法
1、模型要素说明
FPA是一种用来度量软件系统规模的方法。在FPA中,任何一个软件系统都被看作是由外部输入处理、外部输出处理、外部查询处理、内部逻辑文件和外部参照文件五种要素组成。估算系统中这五种要素的个数,并乘以适当的权值(权值即为每个要素的功能点数)就可以计算出系统的功能点数,进而估算出系统的规模。下图是在FPA中用到的信息系统模型。
在图中上述五种要素的含义如下:
- 1、外部输入处理EI(External Input),是获取数据的过程,对终端用户的输入进行相关的处理。
- 2、外部查询处理EQ(External Inquiry),针对终端用户的查询情况,输出相应的检索结果。
- 3、外部输出处理EO(External Output),是反馈数据的过程,完成对票据、报表等的输出。
- 4、内部逻辑文件ILF(Internal Logical File),在信息系统内部,为了完成相关功能使用的逻辑文件,包括顺序文件、数据库表、临时文件等。
- 5、外部文件EIF(External Interface File),该系统和外部其他信息系统为交换数据而用的接口文件。
其中前三种要素属于处理,他们涵盖了终端用户和信息系统对象之间存在的所可能的交互内容,只要明确了该系统和终端用户的接口就可以正确估算上述三种处理。后两种要素属于文件,系统功能确定后,使用文件个数也可以被估算出来。
2、FPA功能点计算方法
完整的功能点计算流程包括6个步骤,如下图计算功能点的流程图所示:
1)识别确定系统范围:包括识别计数范围和应用边界。
计数范围定义了将被包含在一个特定功能点计数中的功能。它识别了哪些功能应该被包含在功能点计数中从而为其提供答案。它的划定是由执行功能点的目的决定的。比如,开发功能点计数包括项目活动所影响到的所有功能;升级功能点计数包括增加、修改和删除的所有功能。
应用边界定义了被计算系统和外部系统以及用户之间的界限。边界基于用户的角度确定。被度量软件与其他应用之间的边界位置是主观的,有时很难描绘一个应用从什么地方开始,另一个应用从什么地方结束。所以系统间的边界界定应尽量从业务功能的角度去理解而不应该基于技术或物理上的考虑来划定。应用边界一经界定,并不会因计数范围的改变而改变。
2)计算数据功能。
数据功能满足了对数据的存储或引用的功能性用户需求。计数范围内的所有数据功能应该被评估并求值。在计算数据功能时,首先会根据数据间的逻辑关系将数据划分为一个个的逻辑文件,接着根据是否被系统维护以及所在边界内外确定每个逻辑文件的类型,最后通过鉴定每个逻辑文件的记录元素类型(RET)和数据元素类型(DET)来确定其复杂度和功能点值(详见表1-1、表1-2)。
3)计算事务功能。
事务功能表示应用提供给用户的处理数据的功能,他的计算包括三个步骤:
(1)识别基本过程:对用户有定义,本身有意义并且能够保持业务持续性的最小活动单元都会被识别为基本过程。并且,基本过程必须保证唯一性,防止重复计算。
(2)识别出基本过程类型:根据其主要目的区分为外部输入、外部输出或者外部查询。
(3)确定事务功能的复杂度:通过计数引用文件类型(FTR:是指被事务功能读取并/或者维护的数据功能)数和数据元素类型数确定事务功能的复杂度等级和功能点。(详见表1-3、表1-4、表1-5)
4)计算未调整功能点值。
除了数据功能和事务功能五种组件之外,功能点分析方法还定义了值调整因子(Value Adjustment Factor,V AF)。前面介绍的数据功能和事务功能是从用户的角度对系统做的划分,它考虑的是系统的功能需求。但是,一个系统开发除了满足客户的功能需求之外,必须同时满足客户对系统的非功能需求,如质量需求和技术需求。值调整因子正是基于这一考虑而引入的。它的基础是14项通用系统特性,其中每一项通用系统特性都与系统开发中某一方向的用户非功能性需求相联系。表1-6列出了14项通用系统特性以及特性描述。
5)确定值调整因子。
值调整因子的计算公式:
代码语言:javascript复制TDI =∑DI i (i=1 to 14)
VAF = (TDI× 0.01) 0.65
其中VAF代表值调整因子:TDI代表总影响程度,由14个通用系统特征的影响程度(DI)累加得到。
6)计算调整后功能点值。
开发项目功能点计数:DFP = UFP × VAF
其中DFP是开发项目功能点,UFP是安装后可用功能的未调整功能点,VAF是指调整因子。
3、专家判断模型
这一模型中,专家依据他们的知识、经验、以及对项目的理解来给出工作量估算值。在历史数据不存在的情况,这一方法是非常有价值的。但是专家判断法往往受到专家的经验以及主观性所限制,如个人偏见或对项目的不熟悉等。为避免以上现象采用专家组讨论的形式进行工作量评估。这里,给出的工作量评估模型描述如下:
1)协调人为每个估算专家提供一份系统需求说明和估算单;
2)协调人召开小组会议,就当前项目有关估算的问题进行讨论;
3)估算专家匿名提交单独得到估算值;
4)协调人在一张迭代表单上总结所有专家得到的估算结果并召开小组会议,讨论估算值中的差异。
5)小组投票表决是否接受这个估算值的均值,如果不接受则回到步骤三。
6)重复步骤三步骤五的过程直到得出一个足够收敛的估算结果。
4、综合评估算法
1)软件规模综合评估的计算。结合软件系统的需求文档、技术实施方案,分别采用功能点法、专家判断法等多种估算方法计算软件系统的规模即功能点数,单位:个。
按照各自方法确定的功能点数,根据评估对象确定两类方法在本次评估中的重要程度进行加权平均,最终形成软件项目最后的功能点数。
2)平均生产定额:根据项目的实施特点、技术复杂程度、承建单位所属地区等因素,通过类比和专家评估,综合确定工作人员每人每天承担的基准功能点数。单位:个/人日。3)工作量:根据项目总体的范围定义,完成某项工作(软件系统、模块等)所需要的总人日数。工作量的单位:人日。
4)人日单价:这里,根据辽宁省软件行业报价惯例,人日单价为800元/人日。(包含差旅费、交通费、人员管理费、餐补。)
5)工作量分配比例:按软件系统生命周期的不同阶段对应的基准工作量比例参考值:项目管理:需求调研:设计:开发:测试:实施支持= 0.5:1:1:2:1:0.5。
6)系统成本:经过评估后该项目建设最终的整体投资额。单位:万元。
具体计算模型:
代码语言:javascript复制工作量= 软件系统规模÷生产定额
系统成本=工作量×人日单价
案例应用
新星咨询就以东北电网有限公司做的“财务集约化系统”工作量评估项目为实例,简单阐述应用基于FPA的软件工作量综合评估法对该系统软件的如何进行工作量评估。(以一个小模块为实例)
1、系统规模估算
1)采用FPA的方法估算“调度子系统”的工作量,整体工作量为2572;
2)组织5名信息化建设方面的专家(其中包括从事过类似项目建设的专家)组成专家评估小组,对该子系统需求文档及技术建设方案进行研究,最终评估出结果为2588;
3)本次FPA和专家判断法重要程度相同,因此权重分别为1,则最后的评估结果为2580。
具体详见表2-1系统规模评估结果明细表;
4)在专家不清楚FPA方法评估结果的前提下得出的功能点数与FPA得到的功能点数很接近,从而相互验证了评估结果的有效性。
2、系统工作量估算
软件项目建设主要包括需求阶段、设计阶段、开发阶段、测试阶段、实施培训及试运行阶段,项目管理贯穿整个项目建设阶段,根据相关资料描述这些阶段工作量占总工作量的比例分配为“项目管理:需求调研:设计:开发:测试:实施支持= 0.5:1:1:2:1:0.5”,基于该比例关系确定比例系数((1/12):(1/6):(1/6):(1/3):(1/6):(1/12))。平均生产定额根据项目不同阶段参与人员的技术水平、工作能力的不同其具体定额值也略有差异,平均生产定额值通过专家评估而确定。通过模型公式项目总体评估工作量为492人日,具体各阶段人日分布情况详见表2-2工作量评估明细表。
3、系统成本估算
根据辽宁省内软件行业惯例及相关行业文件确定辽宁省内人日单价费为800元/人日,其中包括差旅费、交通费、通讯费、餐费。根据公式:系统成本= 工作量×人日单价。
总结
基于FPA的软件工作量综合评估方法的应用,已经得到用户的认可,实践表明了综合评估方法的有效性和可操作性。随着方法的研究与应用将完善软件监理项目中对系统软件工作量的评估,并且推动监理平台对IT咨询业务的开展。该方法还需继续完善,为了更加准确的对软件项目工作量的评估,还需要不断完善软件项目历史经验库,相关数据越丰富,得到的评估结果就越客观。