APP下载

IFPUG功能点分析方法在电信行业软件中的应用

2017-09-29侯成功谭裴叶敏

软件导刊 2017年9期

侯成功 谭裴 叶敏

摘 要:目前软件项目较多采用IFPUG功能点分析法进行软件规模度量,在电信行业软件项目实际评估中有功能点描述不明晰、功能点存在二次优化和相似性,以及对呈现出新技术特征的功能点评估存在较大误差等问题。结合电信行业软件应用特点,分析研究了问题产生的原因及解决方法。提出一种改进方法,对待评估功能点描述粒度进行识别及增加一项独立补偿因子,该因子基于多个维度对单个功能点进行评估。利用改进方法对实际项目进行软件规模度量,结果显示,改进后的功能点数评估值比常规的IFPUG功能点分析方法的评估值更接近实际开发功能点数。

关键词:软件规模度量;IFPUG功能点分析;独立补偿因子

DOI:10.11907/rjdk.171432

中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2017)009-0142-03

Abstract:At present, the IFPUG function point analysis method is mostly used for software size measurement in projects, which displays problems, in practical project assessing process, that function point descriptions are not clear, function points can be optimized and some are similar, and there are big errors when function points have adopted new technologies. To solve these problems, the paper, combining with telecom industry characteristics, analyses concrete reasons and solutions, proposes to recognize description graininess of function, and increases an independent complementary factor, which access a single function point based on several dimensions. It finally adopts improved steps above to make software size measurement for a practical project case. The result shows that function point numbers valued , after improving, are more close to real developing function point numbers compare to traditional IFPUG function point analysis method.

Key Words:software size measurement; IFPUG-FPA Function point analysis; independent complementary factor

0 引言

互聯网的深入发展,促使电信企业的信息化程度不断加深,以更好地支撑计费和运营管理等业务。电信行业相关软件应用的投资规模日益增加,如何有效评估软件规模大小是电信行业软件项目管理的重要课题。本文对国际流行的IFPUG功能点分析(IFPUG Function Point Analysis,IFPUG-FPA)方法在电信行业软件项目中的应用进行研究。

1 IFPUG功能点分析过程

1.1 IFPUG功能点分析步骤

IFPUG-FPA方法[1-2]将应用软件按照业务组件进行分解,每类组件的软件规模大小通过IFPUG定义的功能点为度量单位进行计算,最后汇总得到整个应用软件的总功能点数来反映软件的总体规模。该方法从用户需求角度,将应用软件划分为事务处理功能和数据功能,其中事务处理功能包括外部输入(External Inputs,EI)、外部输出(External Outputs,EO)和外部查询(External Queries,EQ ),数据功能包括内部逻辑文件(Internal Logical Files,ILF)和外部接口文件(External Interface Files,EIF)。

IFPUG-FPA方法分析步骤[3-4]如下:①确定功能点的计数类型,包括新开发项目和二次开发项目两种计数类型;②识别计数范围及应用系统边界,明确哪些功能应被计数;③确定未调整的功能点数(Unadjusted Function Point,UFP),确定功能点类型后判断其对应的复杂度。

复杂度转换如表1所示。

计算未调整功能点数:UFP=∑∑W*X

(1) 式(1)中,W为根据不同的复杂度而定的5个部分加权因子;X为应用中每个部分的数量。

(1)确定调整因子VAF。从系统特征的角度考虑对应用系统开发功能点数的影响,IFPUG-FPA考虑了14项通用系统特征(General System Characteristic,GSC),每项按照其对系统的重要程度分为6个级别,相应地赋予影响程度值为0~5。

计算调整因子:VAF=0.65+0.01*∑14i=1DIi

(2) 式(2)中,DI-GSC是影响程度值。

(2)计算调整后功能点数(FP)。综合考虑业务和技术因素,用调整系数VAF对未调整的功能点数UFP进行调整,得到应用系统的最终功能点数FP。FP=UFP*VAFendprint

(3)1.2 IFPUG功能点识别

IFPUG-FPA方法的关键在于功能点的识别和描述[4],其中 ILF的识别规则为:该组数据或控制信息逻辑相关且由用户定义;在应用边界内通过一个或几个事务处理过程来维护。 EIF识别规则为:该组数据或控制信息逻辑相关且由用户定义;处于被计数应用之外,且被该应用查询;由其它应用而不是被计数应用维护。

EI识别规则为:数据或控制信息从应用边界之外输入;如果穿过边界的数据不是改变系统行为的控制信息,那么至少应维护一个ILF。

EO识别规则为:数据或控制信息发送出应用边界;满足处理逻辑包含至少一个数学公式或计算过程 、至少一个ILF被处理逻辑维护或处理逻辑改变了系统行为这3个条件中的一个。

EQ识别规则为:数据或控制信息发送出应用边界;该处理逻辑从一个ILF或EIF返回数据或控制信息,不包含任何数学公式或计算过程,不改变系统行为,并且不维护任何ILF。

1.3 IFPUG-PFA优劣分析

相比于其它软件规模度量方法,IFPUG-FPA从用户需求角度考虑,容易为用户及其他非专业人士理解和使用;功能点计算过程简单且具有较强的通用性,在开发前就可进行,有利于预算部门合理安排预算费用和项目管理者提前对项目进行计划把控。功能点分析方法来源于最初的工程实践。随着软件项目的发展,行业应用软件越来越专业化、复杂化,常规的IFPUG-FPA方法显现出不足。目前在应用IFPUG-FPA方法时存在如下问题:

(1)虽然IFPUG-FPA对功能点有比较清晰的定义和识别规则,但在实际评估中,功能点复杂度的判断是依据功能点描述来确定的,功能点的描述要素包括数据元素类型(Data Element Type,DET)、记录元素类型(Record Element Type,RET)和文件类型参考(File Type Record,FTR),基于这些要素针对功能点进行描述的详细程度带有一定的主观性,例如一项功能需求在被描述成多项功能点时,评估得到的功能点往往会超出描述成单项功能点得到的结果,造成评估功能点与实际功能点偏离。

(2)在功能点二次优化的情况下,如果仍然按照新增功能点计算,得到的功能点数往往超出实际功能点数。

(3)当功能点之间存在相似处理逻辑,在代码复用情况下,评估功能点往往会超出实际功能点。

(4)对于典型的管理信息系统,IFPUG-FPA方法具有较好的度量效果。但是当电信行业很多软件具有非管理信息系统特征时,如采用新技术或者存在复杂的计算或处理流程时,估算出的功能点数与实际功能点数就会存在较大偏差。有研究表明,IFPUG-FPA方法中的GSC项已不能很好地满足现代软件评估的需要。因此,学者提出了优化改进措施,如文献[5]、文献 [6]对 VAF进行了改进;文献[7]、文献[8]对GSC项目取值和类别进行了调整;文献[9]、文献[10]基于VAF额外考虑了一些调整因素;文献[10]~[13]结合电信行业软件定制化特点,分别对各类功能点复杂度取值、GSC项目作适应性调整等。

2 IFPUG-FPA在电信行业应用中的改进

针对电信行业软件项目工作量评估实践中存在的问题,本文提出功能点分析改进建议和方法,要求辨别功能点描述的粗细颗粒度,同时增加一项针对功能点进行调整的独立补偿因子(Independent Complementary Factor,ICF),以修正上述问题带来的功能点数估算偏差,提高IFPUG-FPA方法在软件规模度量上的准确度。

ICF取值主要考虑4个方面维度,下面结合某无线网规划设计审核平台进行详细阐述。该平台业务功能包括系统管理、项目管理、规划审核、勘察设计审核、数据管理、GIS模块和辅助审核规则,其中系统管理、项目管理、规划审核、勘察设计审核和数据管理具有典型的管理信息系统特征,而GIS模块和辅助审核规则具有一些不同的技术特征。

2.1 功能点描述维度

以规划审核中的宏站规划流程导入功能点为例。该功能包括数据入库和数据校验两部分,分别以粗、细粒度进行描述,估算功能点数如表2所示。

从表2可以看出,对功能点进行拆分描述后,估算的功能点数要明显放大。在实际项目中,厂家往往倾向于对功能点进行拆分描述以获得更大的预算。针对这种情况,建议在软件项目工作量评估时采取两种措施:①根据软件业务实际需求,统一功能点描述的颗粒度,能够合并的功能点建议进行合并后以粗粒度描述,是否需要合并可以参考DET和FTR的情况;②根据业务功能,对存在功能点拆分描述的情况给予系数调整值ICFI,根据经验,单个功能点拆分为两项时,系数平均取值0.6,拆为三项时系数平均取值0.5,拆分描述项N越多,对估算功能点数的放大越明显,系数扣减值越大,据此进行线性拟合系数调整取值:ICFI=0.8-0.1*N,2≤N≤6

(4) 措施1:能使功能点描述估算的结果更好地贴近FPA方法,但是对功能点粗细粒度的辨别往往需花费较多的时间;措施2:不需要对功能点表进行大的调整,操作更方便。如果拆分功能点项数N>6,为了防止估算结果偏离过大,建议采用措施1进行合并描述,合并后ICFI取值为1。

2.2 功能点优化维度

电信行业软件应用具有规模大、使用周期長的特点,通常分阶段实施,二期项目中往往含有对一期项目已有功能点的调整或者优化。针对这类功能点,需要考虑一定的调整系数,按照软件项目各阶段工作量比例优化功能点调整系数。

ICFII=∑阶段比例*阶段新增工作量占比 (5)

阶段比例为需求20%、管理10%、设计20%、开发40%、测试10%,优化功能点新增工作量占各阶段总工作量的比重分别为:需求70%、管理90%、设计60%、开发80%、测试60%,计算一般优化功能点调整系数建议值(也可根据具体项目按照公式(5)进行调整)。ICFII=20%*70%+10%*90%+20%*60%+endprint

40%*80%+10%*60%=0.73

(6)2.3 功能點间相似性维度

对于典型的管理信息系统,相同模块内或者不同模块之间,功能点与功能点之间业务需求和软件开发具有一定的相似性。以规划审核中的宏站规划库操作为例,估算功能点与实际功能点如表3所示。

当功能点相似度较高时,估算的功能点数高于实际开发的功能点数,在进行软件规模评估时应注意识别功能点之间的相似度。根据实例统计,建议相似度调整系数ICFIII取值在0.6~0.8之间,本案例平台选取调整系数为0.75。

2.4 功能点技术复杂度维度

当系统中的部分功能点开发存在一定技术复杂度时,额外增加一项调整系数ICFIV,根据经验值建议取值范围在1.0~1.5之间,通常技术复杂度增加一个项目,系数取值增加0.1。例如案例平台的GIS模块中的部分功能点,涉及展示要求复杂和大数据量运算两个技术复杂度项目,在软件规模评估时取ICFIV值为1.2;对于辅助审核规则模块中的功能点仅涉及运算实时性要求较高的一个项目,则ICFIV取值为1.1。

基于上述4个维度的关联系数,得出功能点的独立补偿因子计算值为:ICF=ICFI*ICFII*ICFIII*ICFIV

(6) 经过上述步骤,调整后单个功能点(Adusted Single Function Point,ASFP)估算公式为:ASFPi=UFPi*ICFi

=UFPi*ICFI,i*ICFII,i*ICFIII,i*ICFIV,i

(7) i为第i项功能点。

全部功能点独立调整,再经过VAF后系统功能点估算公式为:FP=∑iASFPi*VAF

(8) 基于以上改进措施对案例平台提供的原始功能点进行功能点数重新估算,改进前后功能点数对比如表4所示。从表4可以看出,经过改进措施处理后的估算功能点数与实际开发功能点数的偏差,由改进前的11.12%缩减到4.97%。

3 结语

通过对电信行业软件规模度量过程中的问题进行分析,阐述了软件功能点评估过程中应当注意的事项,并从几个维度考虑,提出了针对单个功能点估算增加一项独立补偿因子的改进方法。基于实际案例进行分析,显示该方法对软件项目功能点估算结果具有积极的改进效果。

参考文献:

[1] 蒋辉,尹俊文,何鸿君,等.功能点方法的分析与比较[J].计算机工程与科学,2009,31(5):87-89.

[2] 胡云龙.软件规模度量方法介绍[J].计算机时代,2006(7):17-21.

[3] 田志伟,张广泉.基于IFPUG的功能点分析方法[J].计算机与数字工程,2007,35(12):121-123.

[4] 刘迪.基于改进的功能点分析方法在软件项目规模估计中的应用研究[D].合肥:合肥工业大学,2007.

[5] ARCHANA SRIVASTAVA, DR SYED QAMAR ABBAS, DR S K SINGH. Enhancement in function point analysis[J].International Journal of Software Engineering & Application(USEA), 2012,3(6):129-136.

[6] 尹柯,蒋军成.基于IFPUG功能点分析方法改进特征值因子的应用研究[J].计算机与数字工程,2014,42(11):2123-2127.

[7] 刘文浩,樊丽华.基于IFPUG 功能点分析方法的值调整因子的应用研究[J].青海师范大学学报:自然科学版,2011(1):25-34.

[8] 宁静锋,童旅杨.软件项目功能点估算[J].长春工业大学学报:自然科学版,2014,35(3):309-314.

[9] 罗光春,聂坤苗,温川彪,等.功能点分析法的研究和改进[J].电子科技大学学报,2009,38(6):983-986.

[10] 高腾岗,方小龙,徐应涛.软件复杂度因子在功能点规模估算中的分析与应用[C].第一届中国高校通信类院系学术研讨会论文集,2007.

[11] 江韶志,罗梓威.电信行业应用软件需求工作量评估应用浅析[J].广东通信技术,2013(7):58-60.

[12] 陈婷,吴俊.功能点法在电信IT支撑系统中的改进应用[J].广东通信技术,2011(1):23-26.

[13] 赵钉,陈亚峰.基于FPA的软件工程量评估方法及应用[J].邮电设计技术,2014(11):14-17.

(责任编辑:杜能钢)endprint