韩 珊,李华北
(工业和信息化部电子第五研究所,广州 510610)
功能点估算法在彩票行业的应用
韩 珊,李华北
(工业和信息化部电子第五研究所,广州 510610)
本文主要介绍了基于NESMA功能点估算法的软件成本度量,及其在彩票行业软件项目中的应用。软件的规模大小在项目的早期计划与实践过程中具有指导作用,NESMA功能点法是一种基于用户需求并且独立于开发语言的估算方法,能够比较准确地度量规模。本文首先阐述了应用NESMA功能点法估算软件规模的详细方法和步骤,并结合彩票行业软件开发的实际情况,以及参考软件行业基准数据,对其在彩票软件开发成本估算中的实际应用进行了总结,并以实例说明该方法在彩票行业的适用性和局限性。
软件成本度量;NESMA;功能点;彩票
随着当代信息时代的快速发展,彩票行业也在不断发生变革,不再只限于线下销售,而是不断的寻求发展,与软件相结合,追求更方便快捷的销售方式[1]。因此,在一个软件项目的早期阶段,如果可以对该项目的规模大小、工作量、成本等做出一个合理的估算,那么这是非常必要的。是否能在软件项目开发早期阶段进行有效的成本估算并在开发过程中进行合理的管理控制成为了项目成败至关重要的因素。
举个例子,对于一个比较复杂的项目来讲,为预算开发成本[2],可以以度量项目规模为基础,通过模型方程得出所需要的工作量和成本估计。
国际上,已经有很多种度量软件产品规模的方法,比如:代码行数(Line of Code)估算法、功能点(Function Point)估算法、特征点(Feature Point)估算法、对象点(Object Point)估算法、德尔菲(Delphi)估算法、模糊逻辑(Fuzzy Logic)估算法、标准构件法(Standard Component )估算法、用例点(Use Case Point)估算法等。每个模型都有其适用的情景与限制,功能点估算法是一种从用户角度来看的规模估算方法,是通过量化数据文件类型与数据输入、输出、查询动作等有关的功能性处理信息,来度量软件规模大小的方法[3-5]。
功能点分析(Function Point Analysis)法是由IBM 的 Albrecht在 1979 年提出的[6],这种方法是一种与程序语言无关,能够有效地度量软件规模大小的方法。国际功能点用户协会提出的 IFPUG 方法、荷兰软件度量协会提出的NESMA方法,英国软件度量协会提出的 Mark IIFPA方法以及通用软件度量国际协会提出的COSMIC方法,都属于功能点分析法。本文主要研究如何结合实际情况,利用目前国际主流的软件规模测算法NESMA功能点分析法来对彩票软件的规模进行估算。
按照行业标准《软件研发成本度量规范》[7],在规模估算之后还要进行工作量估算和成本估算,最终才能得出我们想要的软件项目开发成本预算。简要的实施流程如下,如图1所示。
在整个估算过程中涉及到了一些调整因子及生产率费率等数据,这些都是基于众多软件行业项目中收集到的历史数据,经过统计分析得出的。
图1 软件成本估算流程Fig.1 The process of software cost estimation
功能点分析方法的最主要功能就是度量软件的规模大小,它主要从用户的视角出发,对提供给客户的功能进行量化估计。NESMA功能点分析法[8]的优势在于其为了应对软件不同时期的需求特点,增加了快速估算的指示估算法和可以详细估算的详细估算法,使其共有三种层级可以选用,极大的方便了人们的使用。
1.1 功能点法估算流程
NESMA功能点法的估算流程主要有以下 7个步骤:
(1)收集可以文档,确定估算范围及系统边界;
(2)确定功能点计数类型(指示法,估算法还是详细估算法);
(3)确定所有数据功能;
(4)确定所有事务功能;
(5)计算未调整功能点数;
(6)确定各调整因子;
(7)计算已调整功能点数;
其中估算范围的确定主要取决于计数目的,而边界则必须是从用户角度出发,将该系统与其他系统和用户之间进行划分,不能从技术角度去看。如果项目关联到多个系统,那么必须将被估算的系统和多个系统的边界全部进行区别。由于彩票行业的特殊性,涉及到全国34个省、自治区、直辖市,数据处理量庞大,对于系统边界尤其要描述清楚。
功能点计数类型的选择则是基于软件项目所处阶段决定的。在软件项目最早期,需求粒度较大,功能模糊的时候,适用指示法;当项目进一步推进,需求比较清楚详细时,建议适用估算法;当项目正式准备开始开发或在开发进行中是,可以使用详细估算法进行详细地估算。
1.2 功能点法中五类功能的识别
依据技术规格文件、软件需求说明书等文档,在进行功能点识别时要分别识别出数据功能 ILF、EIF和事务功能EI、EO、EQ。
在这里,数据功能主要指的是供更新、查询和引用的可用逻辑数据,共有两种类型,分别为:内部逻辑文件(ILF)和外部接口文件(EIF)。
内部逻辑文件指的是从用户的视角出发,看到的一组永久性数据的逻辑集合。而这组数据是由被估算的系统使用并维护的。
外部接口文件指的是在该系统中使用但由另一个系统维护的一组永久性数据的逻辑集合。被估算的系统直接使用该数据,但不对数据进行维护操作。
而事务功能描述的是系统如何使用或维护数据,具体分为三种:外部输入(EI),外部输出(EO)和外部查询(EQ)。
外部输入是指数据和或控制信息从系统外部进入到系统内部,是对内部逻辑文件进行维护的动作,例如对数据的增、删、改。同时处理输入信号并改变系统的行为也可识别为EI。
外部输出是跨越了系统边界的一种独特的输出功能,给用户和或其他系统输出展示数据的一种操作。外部输出通常包括复杂的计算和数据处理。
外部查询指的是被用户认识到的一个独特的单纯输出或“输入/输出”的组合,系统不需要进一步进行处理的,确定规模的输出,数据也会穿越边界。
对于软件项目最早期最早期,使用指示法进行估算时,只需要识别出数据功能(ILF,EIF)即可,而在使用估算法时,上文介绍的五类功能都要完整的识别出来。本文在进行彩票软件项目估算时,采用的就是估算法。
至于详细估算法,不仅要识别出五类功能,还要识别出每个功能分别对应的复杂度。由于本文没有使用详细估算法,在这里就不对复杂度的识别进行详细的描述。
1.3 功能点法的计数及调整
在上述功能分析的基础上,可以计算系统的未调整功能点数,对于指示法来说,每个内部逻辑文件是35个功能点,每个外部接口文件是15个功能点,相加即可得出总功能点数。对于估算法来说,则可以使用以下公式计算出系统的未调整功能点数:
其中UFP代表未调整功能点数。
由于在软件系统中,还受到很多非功能因素的影响,所以NESMA功能点方法还提供了14个通用系统特征GSC调整因子。根据系统相关的特性来决定每个GSC的影响程度,可以从无任何影响(容实现)到强烈影响(极难实现),共分为6个档,估算值从0~5,每个GSC影响程度的估算值之和就是总影响程度(TDI),然后根据TDI 来计算估算调整因子VAF:
VAF=0.65+0.01*TDI (2)
除非功能性需求之外,软件需求的变更也会对最终功能点的计数造成影响。按照行业标准《软件研发成本度量规范》,考虑到预算时需求较模糊,未来将有很多隐含需求及需求变更,设置了一个规模变更调整因子CF。在收集到的历史项目数据库中,将最终实际功能点数和项目初期进行估算的功能点数做统计比较,得出的结论如下表,在预算阶段功能通常会发生2倍左右的变更,招标时CF取值为1.5,投标是CF为1.26:
综上所述,调整后的软件规模功能点数可表示为:S=UFP*CF*VAF (3)其中S为调整后的最终软件规模功能点数。
表1 规模变更调整因子CF的取值Table 1 The value of scale change adjustment factor CF
下面以某彩票公司的彩票助手软件为例,在了解该系统基本功能的前提下,估算该软件规模,并估算相关工作量及成本。
该软件的主要功能:
(1)在不同省份,开放不同的彩票游戏,用户可以自选投注,每个游戏都有自己独立的投注规则;
(2)展示每个游戏每期的中奖结果及中奖详情,客户可以对每个游戏进行验奖操作;
(3)各种促销和红包活动;
依据提供的软件需求说明书以及网页设计文件可以看出,整个软件是由安卓客户端,IOS客户端以及Web服务端,三大部分组成的。这三大部分都是我们要估算的系统的内部。需要注意的是,对于在两种不同的客户端上要实现的功能要分别独立计数,系统结构图如图2所示。
图2 彩票助手系统框架图Fig.2 Frame diagram of lottery assistant system
因为在软件需求说明书中,对各功能需求的描写粒度比较详细,所有在本次估算中,采用的是估算法来估算系统的规模大小。
2.1 未调整功能点的计算
以安卓客户端的未调整功能点计算为例,识别出的部分功能项实例,如表2所示。
表2 部分功能项识别实例Table 2 Examples of how to recognize the function items
对安卓客户端中所有子模块的功能点计数项进行识别统计,最终得出各类别功能项数据为如表 3所示。
则根据公式(1),彩票助手安卓客户端的未调整功能点数如下,为913个功能点:
UFP安卓=28*7+5*5+34*4+80*5+39*4=913 FP
依据同样的流程和公式计算,可以得出彩票助手IOS客户端和Web服务端的未调整功能点数,三者相加即为整个彩票助手软件的总未调整功能点数,在本实例中,UFP为2123个功能点。
2.2 调整因子及调整后功能点的计算
根据NESMA提供的14个GSC调整因子,为这个彩票助手软件进行打分,打分结果如表4所示。
最终总影响程度依据公式(2)计算结果为:
VAF=0.65+0.01*54 =1.19
并且由于该软件项目在估算时尚处于投标阶段,则规模变更调整因子CF依据表1取值为1.26。
综上所述,依据公式(3),估算的该彩票助手软件其调整后的功能点规模总数为:
S=2123*1.26*1.19=3183 FP
2.3 工作量及成本的估算
在估算出软件规模之后,有很多种方法可以进一步估算工作量从而得到成本[9-13]。在本次实例中,采用的是方程法来估算工作量。方程法是指利用数学知识,基于统计关系,以过去数据为根据来预测未来。方程法使我们感兴趣的输出结果例如工作量估算值,与一个或多个独立的变量参数产生一定的可计算的数学函数关系,即所谓数字模型,例如乘法模型,分析模型等,将软件工作量成本估算转化为一系列主要成本驱动因子变量的函数。
其核心部分往往是估算方程,方程以影响开发工作量的某些项目因素作为输入,输出的则是项目开发的工作量,依据行业标准《软件研发成本度量规范》,估算工作量的方程如下:
其中 AE即为求出的调整后工作量,单位为人时;PDR代表生产率,单位为人时每功能点;SWF为软件因素调整因子;RDF为开发因素调整因子。
根据数据库中14000多套国内外软件项目历史数据统计分析,软件行业的生产率数据如表5所示。
表5 软件行业最新生产率数据Table 5 Latest production rate data in software industry
其中,中位数为7.31人时/功能点。同时依据行业标准规定,得出软件因素调整因子SWF为1.2,开发因素调整因子为1.0。则本次实例中,工作量的估算标准值为:
AE=7.31*3183*1.3*1=27921人时
同样采用公式(4),但使用生产率的P25和P75值来估算工作量的合理浮动范围,结果估算出的工作量浮动范围为14171~49540人时。
根据求出的工作量,带入以下方程则可进一步得出成本估算值:
P=AE/176*F+DNC (5)
其中P代表预算费用,单位为万元;176仅仅意味着将工作量的单位由人时换算成人月;F代表人月费率(含开发方直接人力成本、开发方间接成本及开发方毛利润),单位为万元每人月,同样依照数据库中的行业数据进行的分析结果显示,北京的人月费率为2.37万元每人月,本实例使用的该值进行估算;DNC代表开发方直接非人力成本,单位为万元,在本实例中,依据彩票助手的软件需求说明书中列举的各种采购费,差率费等非人力成本需求,得出总非人力成本为3.58万元。
则依据公式(5)可以得出最终估算的该彩票助手软件的成本为:
P=39742/176*2.37+3.58= 379.6万元
其相应的合理浮动范围为194.4~670.7万元。
NESMA功能点分析法是目前软件项目众多估算方法中比较有技术含量的一种方法,有应用广泛、易于使用的优点,在彩票行业软件开发早期成本估算中起到了重要作用。但该方法在实践中还是存在一些局限性,例如在本实例中,在实际开发彩票软件时,有一定比例的工作是在做游戏规则的设计,这部分的规模按照传统功能点识别规则是很难识别出来的,这时就要根据具体情况来和甲方,乙方共同讨论确定下双方都可以接收的识别规则,来进一步得到准确性更高的结果。
因此,虽然NESMA功能点分析法并不是一种十全十美的方法,但它在实际应用中发挥很大的作用,在项目早期为软件开发项目的成本估算提供依据,从而尽可能早地制定软件的开发与管理计划,这是十分重要的。
[1] 张健. 移动互联网时代的移动商务[J]. 新型工业化, 2011,1(6): 41-48.
[2] 冯文霞, 王广安. 数据挖掘在服务成本预测方面的应用研究(SDCF-DM)[J]. 软件, 2013, 34(4): 46-48.
[3] 李帜, 林立新, 曹亚波. 软件工程项目管理: 功能点分析方法与实践[M]. 北京: 清华大学出版社, 2005.
[4] 朱坤云, 沈洪明. 功能点方法在软件项目管理中的应用[J].企业科技与发展, 2008(2): 88-90.
[5] 张俊光, 吕廷杰. 基于规模的软件工作量估计方法研究[J].中国管理科学, 2008, V16(5): 118-122.
[6] 曹济. 软件项目功能点度量方法与应用[M]. 北京: 清华大学出版社, 2012.
[7] SJ/T11463-2013. 软件研发成本度量规范[S]. 北京: 中华人民共和国工业和信息化部, 2013.
[8] NESMA功能点估算基本方法: http: //www.nesma.org.au/.
[9] 宁静峰, 童旅杨. 软件项目功能点估算[J]. 长春工业大学学报: 自然科学版, 2014(3): 309-314.
[10] 任雪利. 协同过率在工作量估算中的应用[J]. 软件, 2013,34(10): 12-14.
[11] 刘静, 杨海栋. 浅析功能点估算方法的运用[J]. 电信技术研究, 2014, (6): 33-39.
[12] 马贤颖, 张敏, 董石磊. 功能点估算方法研究及应用[J].现代电子技术, 2011, 34(8): 58-61.
[13] 王颖, 柳小平, 郭继光, 等. 基于功能点的软件度量在项目管理中的应用[J]. 中国电子科学研究院学报, 2013(1):81-85.
Application of Function Point Method in Lottery Industry
HAN Shan, LI Hua-bei
(CEPREI, Guangzhou 510610, China)
This paper mainly introduces the software cost measurement based on NESMA function point method and its application in the lottery industry. The NESMA function point method is based on the needs of users and the estimation method is independent of the development of language, which can accurately measure the size. This paper describes the detailed steps of NESMA function point method and shows a practical example in the lottery industry. Finally, this paper summary and discuss the applicability and limitations when using function point method in the lottery industry.
Cost measurement; NESMA; Function point; Lottery
TP311
A
10.3969/j.issn.1003-6970.2017.11.018
本文著录格式:韩珊,李华北. 功能点估算法在彩票行业的应用[J]. 软件,2017,38(11):90-94
韩珊(1991-),女,技术经理,广州赛宝认证中心服务有限公司,主要研究方向:软件成本度量;李华北(1961-),男,技术总监,广州赛宝认证中心服务有限公司,主要研究方向:CMMI以及软件成本度量。