摘要:传统的IFPUG功能点分析方法对行业应用软件项目进行软件规模度量时,调整因子考虑的是系统整体特征。该方法对典型的管理信息系统较为有效,但当系统或者系统的部分模块具有一些其它技术特征时,度量结果会出现较大偏差。针对行业应用软件专业化和复杂化的特点,首先按照软件应用的业务流程和技术特征,对软件进行模块分解,针对不同模块分别考虑通用系统特征和调整因子,提出模块分解的基本过程和改进的通用调整因子计算方法;然后基于不同的模块权重算加权后的功能点总数;最后利用上述方法选取了实际项目进行软件规模度量分析。实验结果表明,与传统的IFPUG功能点分析方法相比,改进后的功能点计算结果与项目实际功能点数更为接近。
关键词:软件规模度量; IFPUG-FPA; 模块分解; 调整因子; 权重
中图分类号: TP319
文献标识码:A
文章编号:16727800(2017)004015904
0引言 随着企业信息化的不断发展和升级,各行业软件应用呈现数量多、应用专业化、系统复杂化等特点,不同行业间的软件应用也存在不同特征。在众多的软件项目中,有效地度量软件规模正成为项目管理过程中越来越重要的环节。合理的软件规模度量能够有助于管理部门最大程度地利用预算资金,同时有助于生产部门准确地把握项目时间和项目进度等。目前,国际流行的软件规模度量方法是功能点分析方法。本文主要基于软件模块分解,研究改进适用于不同软件特征的功能点分析方法。1IFPUG功能点分析方法概述
1.1功能点分析方法 功能点分析方法[1](Fuction Point Analysis,FPA)对于软件功能规模的度量主要从用户需求方面考虑,并不考虑软件的具体物理实现和采用的技术手段。目前,常用的FPA方法[2]包括Mark II-FPA、COSMIC-FPA和IFPUG-FPA,其中IFPUG-FPA应用最为广泛。 Mark II-FPA认为整个应用软件应该是一系列逻辑事务的集合,各个逻辑事务应当包含输入、过程和输出3个部分;COSMIC-FPA是将应用软件系统看作是一系列功能过程的集合,每个功能过程分别进行功能规模的度量,最终对所有功能规模进行累加,就可以计算出整个应用软件的整体规模;而IFPUG-FPA认为应用软件是由功能组件和数据组件构成,通过以IFPUG定义的功能点为单位对每类组件进行软件规模的度量,从而计算出整个应用软件的总功能点数,利用该功能点数来体现应用软件规模大小。1.2IFPUG-FPA处理过程 IFPUG-FPA通常的处理过程[3~5]如图1所示。
主要包括以下几个步骤: Step1:确定功能点的计数类型,包括新开发项目和二次开发项目两种计数类型。 Step2:识别计数范围及应用系统边界,明确哪些功能应被计数。
Step3:确定未调整的功能点数UFP。从业务角度考虑应用系统开发的功能点数,包括事务处理功能点数和数据功能点数。事务功能分为外部输入(External Input,EI)、外部输出(External Output,EO)和外部查询(External Query,EQ);数据功能分为内部逻辑文件(Internal Logic File,ILF)和外部接口文件(External Interface File,EIF)。确定功能点类型后判断其对应的复杂度,复杂度转换表[6]如表1所示。计算未调整功能点数:其中, [K]{x}={F(t)}为根据不同的复杂度而定的5个部分的加权因子,X为应用中每个部分的数量。(1)确定调整因子VAF。从系统特征的角度考虑对应用系统开发功能点数的影响,IFPUG-FPA考虑了14项基本系统特征(General System Characteristic,GSC),分别是:数据通信、分布式数据处理、性能、重度配置、处理速率、在线数据输入、最终用户使用频率、在线升级、复杂处理、可重用行、易安装性、易操作性、多场所和支持变更。每项按照其对系统的重要程度分为6个级别:无影响、影响较小、有一定影响、重要、比较重要和很重要,相应的赋予数值为0、1、2、3、4和5。计算调整因子:其中,DI为GSC的影响程度。(2)计算调整后功能点数(FP)。综合考虑业务和技术因素,用调整系数VAF对未调整的功能点数UFP进行调整,得到应用系统的最终功能点数FP。
1.3IFPUG-FPA分析与其它软件规模度量方法相比,IFPUG-FPA分析方法更适用于管理信息系统,功能点的计算独立于编程语言等技术因素,通用性较强、计算方便,比较容易理解和使用,且仅与用户需求相关。明确软件需求后就可以完成软件规模的度量,为软件项目管理带来便利。当然,IFPUG-FPA的简单易用性也存在一定局限,例如调整因子考虑的是整个系统的综合因素,默认各项GSC关联功能的软件工作量权值相当,实际上可能存在这样一种情况,系统内的某些功能模块的软件工作量权值较大,其对应的某些GSC对调整因子的影响也应该占有较大的权重;调整因子所考虑的14项GSC是否仍然适用于目前的各类应用软件;对于非管理信息系统特征的软件规模度量,其准确度存在一定的偏差,现有调整因子的各个项目不能很好地适用于此类系统。
2基于模块分解的IFPUG功能点分析方法改进
2.1模块分解IFPUG-FPA通常的做法是计算出整个系统的UFP,然后评估整个系统的VAF,最后得出总功能点FP。所评估的VAF是针对整个系统而言,考虑的是各项因素的平均影响,当某一部分功能的某些GSC对功能点结果影响比较大时,这些影响将会被平衡、抵消,从而导致度量结果产生偏差。基于此,文献[6]提出在VAF中增加一项权值因子,以权衡不同的GSC在VAF中的占比影响。本文考虑针对待度量的软件系统进行模块分解,对分解后的模块分别计算VAF,利用模块本身的UFP作为权重,更具有合理性,分解过程为:(1)功能模块分解,根据业务功能进行初步模块分解。(2)模块间局部调整,将不同模块中GSC影响程度相似的功能点调整到同一模块,如某些模块对应分布式处理,某些模块偏重实时数据处理,某些模块为常用的信息管理或者偏重UI体验效果。(3)模块分解后FP的计算方法,按照原计算方法: 如此便可以平衡不同模块功能点及其GSC的权重影响,下文讨论针对不同的模块,对模块调整因子取值的计算方法。2.2调整因子计算IFPUG-FPA中VAF的计算考虑了14项GSC,随着软件项目的不断发展,后续研究发现对于某些系统现有的GSC无法满足评估的需要,部分GSC的重要性已经没有那么明显。并基于此,提出了一些改进措施,如文献[6]中新增了与其它应用的接口、特殊的安全特征、与第三方的直接交互、用户训练特征和文档需求5项GSC;文献[7]对GSC的取值进行了重新划定;文献[8]仅保留了6项GSC,取消了其它8项GSC,作者认为取消这些系统特征对估算结果差异较小,同时新增了1项GSC即新技术运用难度并给出了具体确定规则。文献[9]~[12]也从业务需求、系统特性等方面直接或者间接地改进了VAF的影响。以上文献均基于各自的经验考虑,针对VAF的计算进行了改进调整,然而不同专家对于项目的经验可能不同,导致其改进意见具有明显的个性化特征。本文基于上述经验和思路,在IFPUG-FPA基础上抽取出适用于不同系统特征的通用调整因子(General Value Adjustment Factor, GVAF)计算方法。(1)GSC类型和数量动态化。针对不同特征的系统或者模块,调整因子的调整幅度不同,其考虑的GSC类型和数量不同,因此相应的GVAF的计算结果也不一样。式(2)中,各项GSC的影响程度DI均取平均影响程度2.5时,VAF计算结果为1,系统功能点不做调整;各项DI取最低影响程度0时,VAF计算结果为最小值0.65;各项DI取最高影响程度5时,VAF计算结果为最大值1.35。据此分析提出GVAF计算公式如下:
针对不同的系统或模块,可以分别提出各自关联性较强的GSC项类型,分别计算各模块的GVAF值。(2)GVAF取值参数化。VAF的取值范围固定在0.65~1.35之间,实践证明该取值对于管理信息系统具有较好的度量效果。为了使GVAF的取值能够同时更好地适应其它系统特征,对公式(6)进行参数化处理:
式中αm为GVAFm 的最小值,βm为GVAFm的最大值。条件〖SX(〗αm+ βm2SX)=1的设定是为了将αm和βm限定在区间[0,2],因为超出此区间范围时评估偏离值过大,可以认为GVAF值调整已经没有什么意义。参数化后的GVAF取值更加灵活,将可以更好地适应不同的模块或者其他应用系统,如对于实时系统、分布式系统等,可以根据多项目评估经验,采用模式分类的方法,对αm和βm的取值进行训练学习,获得经验取值,方便以后其他项目的软件规模度量。经过以上过程处理后,基于模块分解的FP计算公式为:
3案例分析与对比以笔者主要参与的某无线网规划审核平台为例,按照业务流程系统可分为项目管理、需求管理、规划审核、勘察设计审核、数据管理、GIS、审核规则和系统管理8个业务模块,根据业务和技术特征相似的原则进行分类,其中项目管理、需求管理、规划审核、勘察设计审核、数据管理和系统管理具有典型的管理信息系统特征,统一归为第一类模块;GIS涉及地图操作,归为第二类模块;审核规则具有典型的算法及实时特征,归为第三类模块。在对系统进行模块分解前,统一考虑VAF因子,按照公式(2)针对14项GSC进行打分,如表2所示,最终计算的系统VAF=0.65+0.01*31=0.96 。
在ο低辰行模块分解后,第一类模块仍然按照14项GSC进行打分,GVAF1=0.65+0.01*31=0.96 ;第二类模块根据其技术特征,取定8项GSC:GIS技术难度、数据通信、性能、重度配置、处理速率、最终用户使用频率、复杂处理、易操作性,如表3所示,αm取0.65,按照公式(7)计算得到:
第三类模块根据其技术特征,取定9项GSC:算法复杂度、实时响应、数据通信、分布式数据处理、性能、重度配置、处理速率、复杂处理、可重用性,如表4所示,αm取0.65,按照公式(7)计算得到:
可以看到,针对不同分解模块,基本系统特征的考虑侧重点不同,即使是相同的GSC项目,其在不同的模块中评分值也不尽相同,简单的基于系统整体考虑VAF显然忽略了这些因素对最终功能点的影响。模块分解前后,软件规模度量的各项值如表5所示,分解后对于第二类模块, FP与实际偏差由原来的22.86%降低到11.21%;对于第三类模块,FP与实际偏差由原来的18.40%降低到11.69%。当系统中这些分解模块的功能点占比较大时,其对总体FP的影响程度就会较大,极端情况下,对于非管理信息系统,该方法对FP度量的影响效果将十分显著。
4结语 本文基于模块分解的FPA方法,在保留IFPUG-FPA原有优点的同时,一方面考虑了VAF中GSC的权值影响,另一方面针对分解模块允许灵活调整GSC项和取值范围,改进了对于管理信息系统的度量方法,能够很好地适应非管理信息系统的软件规模度量。
参考文献:[1]蒋辉,尹俊文,何鸿君,方礼远.功能点方法的分析与比较[J].计算机工程与科学,2009,31(5):8789.
[2]胡云龙.软件规模度量方法介绍[J].计算机时代,2006(7):1721.
[3]马贤颖,张敏,董石磊.功能点估算方法研究与应用[J].现代电子技术,2011,34(8):58 68.
[4]ARCHANA SRIVASTAVA.Enhancement in function point analysis[J].International Journal of Software Engineering & Applications(USEA),2012,3(6):129136.
[5]田志伟,张广泉.基于IFPUG的功能点分析方法[J].计算机与数字工程,2007,35(12):121123.
[6]宁静锋,童旅杨.软件项目功能点估算[J].长春工业大学学报:自然科学版,2014, 35(3):309314.
[7]刘文浩,樊丽华.基于IFPUG功能点分析方法的值调整因子的应用研究[J].青海师范大学学报:自然科学版,2011(1):2526.
[8]刘迪.基于改进的功能点分析法在软件项目规模估计中的应用研究[D].合肥:合肥工业大学,2007.
[9]罗光春,聂坤苗,温川彪,等.功能点分析法的研究和改进[J].电子科学大学学报,2009,38(6):983986.
[10]尹柯,蒋军成.基于IFPUG功能点分析方法改进特征值因子的应用研究[J].计算机与数字工程,2014,42(11):21232127.
[11]江韶志,罗梓威.电信行业应用软件需求工作量评估应用浅析[J].广东通信技术,2013(7):5860.
[12]刘庚.简化的功能点度量方法的比较和分析[J].计算机科学与探索,2015,9(12):1459 1470.
(责任编辑:陈福时)