APP下载

软件项目功能点估算

2014-03-26宁静峰童旅杨

长春工业大学学报 2014年3期
关键词:点数度量复杂度

宁静峰, 童旅杨

(长春工业大学计算机科学与工程学院,吉林长春 130012)

0 引 言

软件开发早期阶段,首要工作就是对软件功能点估算,再到对工作量估算、成本估算,这将为项目的计划、决策及资源分配提供必要的支持。目前较为广泛的方法是功能点估算方法[1-4]。功能点是代码行度量的替代方法之一,是对程序规模的综合度量,可以用于项目早期阶段的规模估算。从需求说明计算出功能点比计算出代码行更容易,而且可以使用功能点作为基础,计算出以代码行表示的规模度量值[5]。IFPUG功能规模度量(Functional Size Measurement,FSM)是用功能点分析(FPA)方法[6]来度量软件功能规模。功能点分析从用户角度度量软件开发,不考虑软件的物理实现。

1 功能点估算的原则[7]

1)早期估算结果与最后实际成本相比,其误差在±30%的范围内。这是当前所能达到的对开发的早期阶段估算的精度。

2)此估算方法允许在软件生命周期中对估算去粗取精、去伪存真。每当有更多的可用信息时,则可通过监控与再估算达到更高的精确度。

3)此估算方法易于为估算员所使用。这样在需要的时候就能快速进行估算。例如进度检查对策略变更的评价就有这种情况。

4)每个有关人员都了解这些规则。当估算过程易于理解的时候,应用软件功能点估算,管理部门会感到更加安全。

5)此估算方法由工具及文档所支持。工具的适用性增加了该方法的效果,这主要是因为能更快且按标准样式获得估算结果。

6)此估算方法被软件开发队伍及其管理部门所信任。这有助于赢得每个关心该估算人员的参与。

2 IFPUG功能点估算研究[8]

2.1 功能点估算过程

软件功能规模估算过程一般分为如下几步:

1)收集可得的文档确定估算的类型;

2)确定估算范围和应用边界;

3)度量数据功能和事务功能;

4)确定未调整功能点数;

5)确定调整因子;

6)计算调整后的功能点数并编写文档,报告度量结果。

软件功能规模度量过程如图1所示。

图1 IFPUG功能点法计算过程

要对软件项目进行功能规模度量,首先要熟悉该软件所交付的功能或所影响的功能,这些信息的主要来源就是该软件项目的文档,以支持后续的功能规模度量活动。在熟悉文档的基础上,根据功能点计数的目的识别出功能点计数类型,然后确定计数范围和应用边界。由于软件功能规模是度量功能用户需求的结果,因此要识别功能用户需求,进而为后续的功能点计数过程做准备。度量数据功能和事务功能是功能规模度量过程中最重要的活动,把识别出来的功能用户需求分为数据功能和事务功能,然后根据相关规则对这些功能进行度量,得到这些数据功能和事务功能的功能规模。不同的功能点计数类型有不同的功能规模计算公式,结合前面得到的数据功能和事务功能的功能规模,计算基于14项系统基本特征的值的调整因子,根据公式得到调整后的功能点数量。

2.2 用户功能类型

软件项目管理中的功能点估算法将功能点分为5类:内部逻辑文件(Internal Logical File,ILF),外部接口文件(External Interface File,EIF),外部输入(External Input,EI),外部输出(External Output,EO)和外部查询(External Inquiry,EQ)。其中,ILF和EIF属于数据类型的功能点;EI,EO,EQ属于事务类型的功能点。

2.2.1 EI

处理来自边界外的数据或控制信息的基本过程,它的主要目的是维护一个或多个ILF或者改变应用行为。增、删、改是典型的EI。

2.2.2 EO

发送数据或控制信息到边界外部的基本过程,与EQ相比包含了额外的处理过程。EO的主要目的是通过处理逻辑呈现信息给用户,不仅仅是在应用中提取数据或控制信息。

2.2.3 EQ

把数据或者控制信息发送到边界外部的基本过程,它的主要目的是通过对数据或控制信息的提取而把数据呈现给用户。其处理逻辑不包含数学公式或计算,也不会创建衍生数据,不能维护ILF,也不能改变应用行为。

2.2.4 ILF

被度量应用边界内部维护的、用户可识别的、逻辑相关的数据或控制信息组。ILF的主要目的是保存由被度量应用的一个或多个基本过程维护的数据。

2.2.5 EIF

用户可识别的、逻辑相关的数据组或控制信息,其由被度量应用所引用,但在另一个应用边界内维护。EIF的主要目的是保存由被度量应用的一个或多个基本过程引用的数据,这意味着一个应用的EIF必定是另一个应用的ILF。

2.3 确定未调整的功能点数

未调整功能点(UFP)是数据功能点和事务功能点的总和。识别业务中所有的数据对象和系统中基本事务处理。确定功能类型属于外部接口文件、内部逻辑文件、外部输入、外部输出还是外部查询。确定功能点类型之后判断其对应的功能和复杂度,复杂度转换见表1。

表1 复杂度转换表

计算功能数(UFC):

式中:W——根据不同的复杂度而定的5个部分的加权因子;

X——应用中每个部分的数量。

2.4 计算调整因子

系统基本特征的属性GSC共14项,其比重占未调整功能点的±35%。这14项分别是:

1)数据通信;

2)分布式数据处理;

3)性能;

4)重度配置;

5)处理速率;

6)在线数据输入;

7)最终用户使用频率;

8)在线升级;

9)复杂处理;

10)可重用性;

11)易安装性;

12)易操作性;

13)多场所;

14)支持变更。

通用系统特征见表2。

表2 通用系统特征

调整因子(VAF)的计算公式如下:

式中:DI——GSC的影响程度。

由式(1)和式(2)得出功能点数:

3 应用案例

以图书管理系统为例,图书管理系统的主要功能包括管理员信息、管理图书信息、管理借阅、归还信息和查询图书信息等。简要说明,应用IFPUG功能点分析方法进行软件项目功能点估算。

功能点说明及复杂度转换表分别见表3和表4。

表3 图书管理系统功能点说明表

表4 复杂度转换表

由式(1)得出系统未调整的功能点数:

由式(2)得出调整因子:

由式(3)计算出功能点数:

4 对IFPUG功能点的改进

由于功能点分析法产生于70年代,现在随着软件开发技术的不断发展,很多系统特性方面的调整系数不适应现在软件规模估算的规模,从而降低了功能点分析法的作用。具体到各个项目,在管理因素往往会有很大的差异,或多或少影响项目的规模和工作量,而这些传统的功能点都没有考虑到,因此有必要对系统特性进行修改。计算未调整的功能点数就是计算所有的功能点复杂性权重和。每个功能点的复杂性等级有“低”、“一般”、“高”3个等级,UFP复杂性权重见表5。

表5 UFP复杂性权重

由式(1)得出系统未调整的功能点数:

在以往的14个调整因子的基础上增加到19个调整因子,增加其主观性。另外增添的5个因子分别是:与其它应用的接口,特殊的安全特征,与第三方的直接交互,用户训练特征,文档需求。技术复杂因子的组成见表6。

表6 技术复杂因子的组成

权值的取值范围调整可以根据不同的项目用线性插值法来解决一些近似的问题,以EI为例,可将RET和DET看作二元函数的两个自变量X,Y,二元函数的因变量Z为EI的权值。利用插值法可以得到Z与X,Y的具体函数关系式。用求得的新的函数关系更加适合当前本项目。避免出现特殊项目的不合理性。

对一些不合理的GSC项重新定新的DI评分标准表,进行加权处理,与实际情况更为接近,估算更为准确,修改主要涉及的项在线输入的复杂度。改进后的在线数据输入复杂度评分标准见表7。

表7 改进后的在线数据输入复杂度评分标准表

针对不同的项目来确定GSC的内容,可通过经验法对其进行确定,添加一个百分比权值的因子W,用来权衡不同的项目在GSC所占不同影响程度,其总和为1,每个W介于0到1之间包括边界。改进的公式:

式中:∑W=1;

N——GSC个数。

由式(4)得出调整因子:

改进后公式更好地反映各个GSC对项目影响的情况,能更加满足不同类型项目功能点的估算。

调整后的功能点数FP用式(3)计算出功能点数:

FP=UFC*VAF=1.590 5*151=240.165 5

实际项目的功能点数为230个,未改进前计算功能点的误差是|206.7-230|/230=10.13%,改进后计算功能点的误差为|240.165 5-230|/230=4.42%。即改进后的功能点估算的方法更接近真实值。

5 结 语

首先从软件项目功能点估算方法中最有代表性的一些方法和技术进行研究,然后对软件项目功能点相应估算方法进行评价,并在此基础上对IFPUG方法进行改进,研究适合一般软件企业的功能点估算方法,以期为软件开发组织提供有效的应用估算技术,为提高功能点估算的准确度提供借鉴。

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

[2] 刘莹.功能点在基于TSP模型开发过程中的应用研究[J].信息技术与信息化,2006(4):69-72.

[3] 赵颖,任永昌,邢涛.基于功能点的软件规模估算方法研究[J].辽宁工业大学学报,2008,28(5):281-283.

[4] 谭仁先,汪艳.功能点分析在软件工程中的应用[J].兰州交通大学学报,2005,24(5):89-91.

[5] 宋锐,徐锋.软件估算:“黑匣子”揭秘[M].北京:电子工业出版社,2007.

[6] 李帜,林立新,曹亚波.功能点分析方法与实践[M].北京:清华大学出版社,2005.

[7] 许寿椿,林寅.软件开发成本估算[M].北京:中央民族学院出版社,1991.

[8] 曹济,温丽.软件项目功能点度量方法与应用[M].北京:清华大学出版社,2012.

猜你喜欢

点数度量复杂度
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
一种低复杂度的惯性/GNSS矢量深组合方法
看不到的总点数
求图上广探树的时间复杂度
画点数
地质异常的奇异性度量与隐伏源致矿异常识别
某雷达导51 头中心控制软件圈复杂度分析与改进
多核并行的大点数FFT、IFFT设计