基于功能点法的软件工作量评估方法研究与应用探讨

2017-12-27 03:37朱明英姚文胜邢豫陈春华
现代计算机 2017年33期
关键词:工作量复杂度度量

朱明英,姚文胜,邢豫,陈春华

(中国电信股份有限公司广东研究院,广州 510630)

基于功能点法的软件工作量评估方法研究与应用探讨

朱明英,姚文胜,邢豫,陈春华

(中国电信股份有限公司广东研究院,广州 510630)

通过对软件项目工作量评估方法的研究,重点分析功能点法的优点和使用难点,结合电信IT支撑系统的特点,在不改变功能点法的基本思想的基础上,对功能点法进行改进,使其更容易理解和使用。最后,给出在电信IT支撑系统中使用改进的功能点法评估软件工作量的实际示例来验证本方法的可用性。

软件工作量评估;改进的功能点法;度量因子;度量方式

0 引言

软件工作量评估是软件工程的研究范畴,是软件项目管理的核心所在,是编制成本预算、策划合理项目进度的基础。一直以来,对软件工作量的估算都很困难,一是由于软件的本质带来的软件复杂性和不可见性,二是项目经验数据的缺少,或由于新技术的不断出现和应用导致经验数据不可用,评估参考不准确导致估算结果可信度不高,三是参与软件工作量评估的人的主观因素,也往往会对工作量估算造成很大的干扰。

由于软件工作量评估直接关系到项目投资,因此软件项目工作量的合理估算,是引导精准投资,加强资产管理和精准管控的体现。国际上也一直有软件组织致力于软件工作量评估方法的研究,目前常用的软件工作量估算方法包括代码行法、功能点法、类比法、专家判断法等,这些方法各有偏重,各具特点,适用于在不同阶段进行软件工作量的评估。国内的运营商也依据自身的特点,在软件工作量评估方面有不同的评估思路,并在实际的软件项目中进行应用。本文通过对国际上应用比较广泛的功能点法进行了深入的研究,并参考了功能点法在国内运营商中使用的案例,对功能点法进行了改进,使其更容易被理解,便于在实际的软件项目中应用。

1 功能点法介绍

1.1 功能点法的起源与发展

功能点法(FPA)最早由IBM公司的工程师A.J.Al⁃brecht于1979年提出,站在用户的视角,基于用户需求来度量软件规模的一种方法。随着各国研究者的不断研究细化又有许多具体的方法,如国际功能点用户协会(IFPUG The International Function Point Users Group)提出的IFPUG方法、英国软件度量协会(UKSMA Unit⁃ed Kingdom Software Metrics Association)提出的 Mk II FPA方法、荷兰功能点用户协会(NEFPUG Netherlands Function Point Users Group)提出的NESMA方法以及软件度量共同协会(COSMIC the COmmon Software Met⁃rics Consortium)提出的COSMIC-FFP方法,这些方法都属于Albrecht功能点(Function Point)方法的发展和细化。

1.2 功能点法的基本思想

功能点法是基于软件的功能数和一组独立的项目因子进行估算,它认为一个典型的软件由人机交互功能(事务处理)和数据功能(数据存储)两方面构成。

(1)事务处理:包括外部输入处理(EI)、外部输出处理(EO)、外部查询处理(EQ)等3类功能文件

●外部输入处理EI:是获得数据的过程,对终端用户的输入进行相关的处理

●外部输出处理EO:是反馈数据的过程,完成对票据、报表等的输出

●外部查询处理EQ:针对终端用户的查询请求,输出相应的检索结果

(2)数据存储:包括内部逻辑文件(ILF)、外部接口文件(EIF)等2类功能文件

●内部逻辑文件ILF:在信息系统内部,为了完成相关功能使用的逻辑文件,包括顺序文件、数据库表等

●外部接口文件EIF:该系统和外部其他信息系统为了交换数据而使用的接口文件

上述5类功能文件称为度量因子。通过对这两方面5类功能文件的数量以及文件复杂程度的判定,结合总体的性能特征,借助一定的规则定量转换为软件规模的功能点数。

1.3 功能点法的基本步骤

(1)根据需求确定信息域,并确定各信息域的类型,即确定信息域所属的度量因子。

(2)计算各个信息域的DET、RET/FTR数目。DET是指ILF/EIF中唯一的标识字段;RET是指ILF/EIF中DET的集合,通常在一起被Update的DET集合就做为一个RET;FTR是为了完成EI/EO/EQ而被访问的ILF/EIF,一个ILF/EIF不管被EI/EQ/EQ访问了多少次都记为一个FTR。

(3)根据各信息域的类型和RET/FTR、DET的数目以及复杂性参照表确定各信息域的复杂性。

(4)根据各信息域的复杂性、各信息域的加权计数计算未调整功能点(UFP)。

(5)决定系统复杂度调整因子(VAF)。调整因子由14个通用系统特征(GSCs)构成。每个特征都有对应的描述以帮助确定该特征的影响程度。

(6)计算系统功能点(FP)。计算功能点一般使用如下关系式:

FP=UFP×VAF

总结功能点法的计算方法如图1所示。

1.4 功能点法特点分析

功能点法具有操作性好、客观、通用性好、可重复验证等优点,主要体现在以下方面:

(1)易理解:功能点法基于用户需求来度量软件规模,因此是从用户的角度来估算软件工作量,方便用户理解。

(2)可通用:功能点法基于软件的功能数和一组独立的项目因子进行估算,估算方法与和系统的功能相关,与开发语言无关,是一种通用的估算方法。

(3)客观性:功能点法基于对应用软件的外部、内部特性以及软件性能的分析来得到软件的功能数,比较客观。

(4)可验证:功能点法有一套详细的计算规则与计算方法,通过计算公式计算软件的工作量,与参与评估人的关联性不大,可重复实施验证。

同时,功能点法在使用时也有一定的实施难点:

(1)5类功能文件区分不直观,将功能需求映射到功能文件难度较高

●EI/EQ/EO的区分标准不够直观,容易混淆,判断有难度

图1

●数据文件(ILF)的判断有难度,主要是判断过程中难以确定某个文件是算数据文件(ILF)还是和它相关数据文件的记录元素(RET)

(2)功能文件的复杂度要素判断过程繁琐

在进行复杂度判断时,首先需要判断该功能文件的数据元素类型(DET)、记录元素类型(RET)、引用文件类型(FTR)的数量,再根据规则来得到功能文件的复杂度。

因此,在使用功能点法进行评估时,需要对功能点法进行一些改进,尽量避开使用难点,保证实施更为简单、清晰、方便。

2 改进的功能点法及应用探讨

2.1 改进的功能点法介绍

对功能点法进行改进的主要思路是:

①修改信息域的类别,以行业内更容易理解的方式来对功能进行划分。

②修改信息域的复杂度判断标准,以一种相对比较直观的标准来界定信息域的复杂程度。

③简化系统复杂度调整因子,仅选取行业内相对比较重要的因子。

改进后的功能点法如图2所示。

(1)度量因子

根据软件的特征,可以将信息域的功能性需求归结为6大类:界面类、业务逻辑类、接口类、流程类、报表类、数据处理类。将非功能性需求选取3个要求作为影响因素。每类的定义为:

①界面类:指向通过前台用户界面向用户提供的功能点,原则上包含页面(或窗口界面)的所有展现逻辑和相关处理逻辑。

②业务逻辑类:指没有用户界面的后台应用程序的业务逻辑(后台服务处理逻辑、后台定时任务处理逻辑等),例如话单采集、批价处理等。

③接口类:该系统和外部其他信息系统为了交换数据而使用的接口文件。

④流程类:业务或管理流程,用来实现业务处理的环节流转。

⑤报表类:使用配置工具或程序开发的方式提供给用户的统计指标数据。

⑥数据处理类:指配置系统所需要的数据,或提供数据批量处理的模板或程序。

影响因素包括响应速度、集成环境的复杂性和系统可靠性。

(2)度量方式

使用基准工作量标准、复杂度界定标准、影响度界定标准来衡量度量因子的工作量。

①基准工作量标准:是指对信息域的每个类别定义一个基本的工作量,即完成该类别的最简单的工作所需要的人日标准。

②复杂度界定标准:针对信息域的每个类别,定义一个复杂度的判断规则。判断规则使用用户易理解、可量化的标准。如该信息域涉及到的展现元素的个数、使用的字段个数等等。复杂度分4级,每个级别的复杂度对应一个加权因子。级别越高,加权因子越大。

③影响度界定标准:对每个影响因素,根据性能要求带来的架构设计难度分为6级。每个级别对应一个分值。级别越高,分值越大。

(3)计算公式

图2

其中,N为功能点的数量,i表示第i个功能点。调整因子由3个影响度计算得到,计算公式为:

其中M为影响因子的个数,j表示第j个影响因子。

2.2 改进的功能点法的应用

为保证改进的功能点法的可用性,我们选取了一个实际的软件项目,使用改进的功能点法对工作量进行评估。

(1)项目简介

本项目是一个产品管理系统,主要是对产品以及产品和产品之间的关系进行管理。本次实施只对产品管理系统的部分功能进行补充完善。

我们以一个销售品组查询的需求为例,说明改进的功能点法的应用情况。

本需求在需求说明书中的描述为:

页面支持根据组ID精确查询、组名模糊查询;

页面支持根据状态、组类型进行查询;

页面查询数据来源:销售品分组表。

(2)评估步骤

①确定应用系统边界与计数范围

在本例中,应用系统即为产品管理系统,计数范围为产品需要升级的功能。本例的输入是产品管理系统的需求说明书。

②确定功能点类型与工作量基准值

对每个功能点,进行功能点类别映射,从而确定工作量基准值。

我们可以确定本功能点类别为界面类,从而可以根据基准工作量标准,确定基准工作量为2个人日。

③确定功能点的复杂度系数

对每个功能点,判断复杂度,从而确定复杂度系数,计算该功能点的未调整工作量。

本需求要求在页面上的显示字段为11个,查询条件为4个,符合B级复杂度标准,可以确定复杂度系数为2。从而得到本需求的未调整工作量为4个人日。

④计算所有功能点的未调整工作量

对需求说明书中所有的功能点,按照步骤(2)和(3)计算出每个功能点的未调整工作量,并合计出本项目的未调整工作量。本需求说明书共179个功能点,合计1160人日。

⑤确定影响度,计算调整因子

分别确定3个影响因素(响应速度、集成环境复杂性、可靠性)的影响度,使用调整因子的公式计算调整因子的值。

本例中确定响应速度影响度分值为4,集成环境复杂性影响度分值为1,可靠性影响度分值为4,从而计算得到调整因子的值为1.1。

⑥计算总工作量

使用总工作量的公式计算,得到软件的工作量。

本例中的总工作量为1276人日。

由于本项目是已经完成的一个软件项目,我们用评估得到的工作量和项目之前认定的工作量进行了比较,差距在10%之内,基本符合预期。

3 结语

本文通过对业界普遍采用的软件开发项目工作量评估方法的研究,重点研究了功能点法的基本思想和使用步骤,分析了功能点法的优点和使用难点,在不改变功能点法的基本思想的基础上,结合电信IT支撑系统的特点,对功能点法进行了改进,将功能性需求的度量因子分为6类,非功能性需求的影响因素精简为3个,保证在实际的评估过程中更容易理解和使用。最后,本文给出了在电信IT支撑系统中使用软件工作量评估方法的实际示例验证本方法,取得了良好的效果,为建立电信IT支撑系统的工作量评估体系提供了借鉴意义。

[1]International Function Point Users Group(IFPUG)IFPUG_Counting_Practices_Manual_4.1

[2]曾圆,杨海栋,陈海勇.基于IFPUG功能点的简化度量方法.计算机工程与应用,2017,53(7):60-63

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

[4]刘存.基于FPA的软件工作量估算研究与实践,2011.

[5]Jones Capes.Applied Software Measurement:Global Analysis of Productivity and Quality,2008.

[6]周汉兵,关昕,马力.功能点度量在软件开发中的应用.计算机工程与设计,2006(03).

Research and Application of Software Workload Evaluation Method Based on Function Point Analysis

ZHU Ming-ying,YAO Wen-sheng,XING Yu,CHEN Chun-hua
(Guangdong Research Institute of China Telecom Corporation Ltd.,Guangzhou 510630)

Based on the research on the workload evaluation method of software development project,analyzes the advantages and difficulties of Func⁃tion Point Analysis(FPA).Combined with IT telecom support system,based on the function point analysis,makes a suggestion of an im⁃proved function point analysis,which is easy to understand and use.Finally,provides a practical example which uses the improved function point method to evaluate software workload in a telecom IT support system to verify the availability of this approach.

Software Workload Evaluation;An Improved Function Point Analysis;Measure Factor;Measure Method

1007-1423(2017)33-0052-05

10.3969/j.issn.1007-1423.2017.33.013

2017-09-14

2017-11-21

猜你喜欢
工作量复杂度度量
鲍文慧《度量空间之一》
嵌入式系统软件工作量多源线性估算方法仿真
一类长度为2p2 的二元序列的2-Adic 复杂度研究*
毫米波MIMO系统中一种低复杂度的混合波束成形算法
Kerr-AdS黑洞的复杂度
代数群上由模糊(拟)伪度量诱导的拓扑
非线性电动力学黑洞的复杂度
突出知识本质 关注知识结构提升思维能力
度 量
思科发布云计算市场发展报告