时间:2022-10-25 11:06:59
摘要:文章针对IFPUG的FPA中值调整因子VAF存在的缺陷,提出了相应的改进方法,使其在软件规模估算中能够更好地满足不同类型项目软件规模估算的要求。
关键词:IFPUG;功能点估算;VAF;软件规模度量;调整因子
中图分类号:TP311文献标识码:A
文章编号:1009-2374 (2010)22-0042-03
1IFPUG功能点估算方法简介
功能点估算方法FPA(Function Point Analysis)是度量开发性或维护性商业软件规模的一种项目估算方法。它基于客观的外部应用接口和主观的内部应用复杂度以及总体的性能特征,通过软件的功能点再除以生产率可得出项目开发所需的工作量,它独立于开发语言,在开发早期就可进行项目估算。当今最流行的功能点估算方法就是IFPUG的FPA方法。
1.1估算步骤
确定功能点计数类型;
识别软件的应用边界;
识别数据功能以确定其复杂度以及UFP(Unadjusted Function Points);
识别事务功能以确定其复杂度以及UFP;
确定UFP数;
确定值调整因子VAF(Value Adjustment Factor);
计算调整后的功能点数AFP(Adjusted Function Points)。
计算流程图如图1所示:
1.2信息域定义
在功能点估算中需要对5种信息域进行描述:其中事务类的有:
外部输入(EI):通过界面等的输入,如插入、更新等操作都是典型外部输入;
外部输出(EO):仅仅输出,如导出、报表、打印等输出;
外部查询(EQ):先要输入数据,再根据输入数据计算输出,如查询。
数据存储类有:
内部逻辑文件(ILF):可以理解为业务对象,可能对应多个数据表;
外部接口文件(EIF):其它应用提供的接口数据。
1.3加权因子
功能点将一些问题与软件大小和生产率度量中的LOC数联系起来,特别是当使用不同层次的编程语言时造成的LOC的数量差异。它是组成一个应用的5个部分的加权总数:
外部输入(EI)×4
外部输出(EO)×5
外部查询(EQ)×4
内部逻辑文件(ILF)×10
外部接口文件(EIF)×7
这里使用了平均加权因子。还有一些低加权和高加权因子,依赖于应用复杂度评估:
EI:低复杂度,3;高复杂度,6
EO:低复杂度,4;高复杂度,7
EQ:低复杂度,3;高复杂度,6
ILF:低复杂度,7;高复杂度,15
EIF:低复杂度,5;高复杂度,10
1.4功能点计算
有了加权因子,第一步是计算基于公式(1)的功能数(FC):
FC= (1)
Wij是根据不同的复杂度(低,中等,高)而定的五个部分的加权因子,Xij是应用中每个部分的数量。
第二步是用一个从0(不重要)到5(绝对重要)的评分标准来评价14种通用系统特性GSC(General System Characteristic)对应用可能产生的影响。然后将这些特性的影响值(从0到5)根据公式(2)相加,以得到值调整因子(VAF):
VAF=0.65+0.01 (2)
其中Di是第i项GSC的影响程度DI(Degree of Influence)。
最后功能点数可以通过功能数和修正因子的乘积得到:
FP=FC×VAF (3)
2对值调整因子VAF的改进
通过研究IFPUG的FPA对值调整因子的阐述,我们可以发现:
首先,VAF是因为未调整功能点没有考虑到其他的因素,例如系统绩效、再使用性等,才被提出以14种通用系统特征GSC来调整软件系统功能大小的,是作为一种补偿机制来弥补FPA估算方法自身的缺陷与不足的,它对未调整功能点数UFP的调整范围是正负35%。
其次,计算VAF时需要对14项通用系统特性GSC独立进行评估赋予影响程度DI(Degree of Influence),赋值范围为0(不重要)到5(绝对重要),见表1:
表1影响程度DI分级表
影响程度级别 影响状况
0 不存在或没有影响(not present or no influence)
1 偶尔影响(incidental influence)
2 中等影响(moderate influence)
3 平均影响(average influence)
4 较强影响(significant influence)
5 强烈影响(strong significant influence)
然后,将14项DI相加得到总影响程度TDI(Total Degree of Influence)。
最后,带入上面的公式(2)进行计算,得到VAF。
但是,通过仔细分析研究VAF的计算公式,DI分级表和14项GSC评分标准表,却发现了以下2点问题:
第一,VAF作为调整系数,反映的是14项GSC对系统规模估算的影响程度,但是在对14项GSC进行评估赋值时,DI的取值都是线性递增的,即满足一个条件时为1,满足2个条件时为2(见表2),这种简单的1+1分级标准忽视了各个项同时满足时它们对系统的共同影响,而事实上同时具备大量的逻辑和数学处理往往使工作量成倍的增加,有时候甚至是成指数增长,而不是简单的1+1=2的情形。
表2复杂处理复杂度评分标准表
影响程度级别 影响程度描述
0 没有(不符合下述任何一项)
1 符合下述条目中的任意一项
2 符合下述条目中的任意二项
3 符合下述条目中的任意三项
4 符合下述条目中的任意四项
5 符合下述条目中的所有项
*敏感的控制(例如特别的审计处理)或者应用的安全处理
*大量的逻辑
*大量的数学处理
*很多的例外处理,因此必须再次处理不完整的事务
*应付多种可能的输入/输出造成的复杂处理
第二,IFPUG的FPA估算方法诞生于早期,对14项GSC的定义都是以当时的软件行业项目开况为标准的,随着软件行业的飞速发展,以前没有过的,或并不是很重视的影响因子,现在都已经发生了很大变化,比如人机/人人之间交互性需求的增强,多语言多平台的配合以及高代码重用度等。那么对于不同类型的项目估算,它的14项GSC就会发生变化(可能多于14个可能少于14个),每个GSC对项目的影响程度也会不尽相同,它们在评估中所占的重要性比重也会不一样,不可能都是一样的比重。
采取的具体改进方法为:
第一,对一些不尽合理的GSC项重新制定新的DI评分标准表,进行加权处理,突出多项满足时对系统工作量的共同影响,使其与实际情况更为接近,估算更为准确,修改主要涉及的项有:在线数据输入复杂度,复杂处理复杂度,支持变更复杂度,具体修改见表3~表5:
表3改进后的在线数据输入复杂度评分标准表
影响程度级别 影响程度描述
0 所有的交易都是用批处理方式完成的
1 交互式的数据输入点总交易的1%~12%
2 交互式的数据输入点总交易的13%~25%
4 交互式的数据输入点总交易的26%~37%
6 交互式的数据输入点总交易的38%~49%