Software Engineering and Applications
Vol.06 No.03(2017), Article ID:20841,9 pages
10.12677/SEA.2017.63006

The Prediction of Software-Stage Effort Based on Improved Metabolic GM (1,1) Model

Yong Wang, Peipei Han

Ocean University of China, Qingdao Shandong

Received: May 10th, 2017; accepted: May 29th, 2017; published: Jun. 1st, 2017

ABSTRACT

At present, the researches of software effort prediction mainly focus on the prediction of total effort, and the prediction of software project stage effort is less, but the software industry has a strong demand for it. So, this paper studies software-stage effort prediction by using the GM (1,1) model of grey theories, and improves the metabolic model of GM (1,1), selects the initialization dynamically, and proposes a prediction method IGM. Experiments on three different datasets demonstrate that IGM method is superior to traditional metabolic GM (1,1) model, GV method and LR model, and has greater potential.

Keywords:Software Effort, Stage Effort Prediction, Metabolic GM (1,1) Model

基于改进的新陈代谢GM (1,1)模型的软件阶段成本预测

王勇,韩佩佩

中国海洋大学,山东 青岛

收稿日期:2017年5月10日;录用日期:2017年5月29日;发布日期:2017年6月1日

摘 要

目前,关于软件成本预测的研究主要集中在对总成本的预测,对软件项目阶段成本的预测较少,然而软件行业对此有强烈的需求。为此,本文研究了使用灰色理论的GM (1,1)模型进行软件阶段成本的预测,并对GM (1,1)的新陈代谢模型进行了改进,动态选择模型初始条件,并提出了一种软件项目阶段成本的预测方法IGM。在三个不同数据集上的实验证明IGM方法优于传统新陈代谢GM (1,1)模型、GV方法和LR模型,显示出较大的潜力。

关键词 :软件成本,阶段成本预测,新陈代谢GM (1,1)模型

Copyright © 2017 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

1. 引言

随着信息时代、知识经济时代的到来,计算机行业发展迅速,软件产品已经渗入到人们的生活、工作、学习当中。但随着软件规模越来越大,软件复杂度也不断增加,导致在上个世纪60年代中期,爆发了严重的软件危机。世界范围内大量软件项目不能按期完成或者被迫取消,很多项目虽然完成但严重超支。例如,2014年投资8.4亿美元的美国健康医保网站超支1.63亿美元且交付日期拖延半年后仍无法正常运行。出现如此严重问题的一个重要原因是对软件成本估算不足,或在项目早期所做的总成本预测随着项目的进展变得越来越不实际 [1] 。因此,为减少软件失败造成的巨大损失,除了要对项目总成本进行估算外,还需要在开发过程中对项目的阶段成本进行预测,使项目在规定的时间和预算内完成。

软件成本估算是指根据软件项目的计划以及其他影响因子的信息,进行估算和确定各项活动的成本以及总成本的软件项目管理活动 [2] 。软件阶段成本的估算是指对开发过程中每个阶段的成本进行估算。由于在软件实际开发过程中,项目经理一般是按周、月或季度等物理时间来记录工作量,管理软件开发过程。因此本文采用月作为阶段单位,例如,整个项目持续了10个月,则我们称该项目共有10个阶段。

科学合理的估算软件项目的阶段成本,有助于项目管理人员来决定每个活动阶段的成本,进而决定软件各开发阶段的人员分配及工作计划。在开发过程中动态地预测各阶段的成本,还可以使项目管理人员发现可能出现的成本进度方面的问题,提前采取措施,减少不必要的损失。

目前,大部分的研究者的关注点在总成本预测上,对总成本预测的方法和模型已经有很多研究成果 [3] - [9] ,但对于软件项目阶段成本的预测的研究非常少 [10] [11] [12] 。MacDonell等人通过建立线性回归模型,根据项目前期阶段的成本来预测后面开发阶段的成本,对16个类似软件项目的任意两个开发阶段成本做相关性检验,选择相关程度较大的两个开发阶段建立回归模型。例如,对计划和测试阶段建立了回归模型,根据前者的成本数据预测了后者的成本 [10] 。王勇等人提出GV(GM (1,1)和Verhulst相结合)方法用来预测软件阶段成本,根据软件项目阶段成本序列的凹凸性来动态构建模型,进而预测后续阶段的成本 [11] 。与本文研究不同的是,MacDonell的研究针对软件生命周期阶段,如设计、编码阶段等,而本文的阶段是以物理时间如月为单位。王勇等人的研究 [11] 使用了GM (1,1)和Verhulst的新陈代谢模型,但模型的初始条件始终是建模序列的第一个元素。本文对初始条件进行了改进,提出了一种新的软件阶段成本预测方法IGM,研究结果表明,IGM具有比对比方法更好的预测性能,显示出一定的潜力。

2. 改进的新陈代谢GM (1,1)模型

2.1. 新陈代谢GM (1,1)模型

GM (1,1)模型主要用来模拟准指数序列,其预测原理为:是将无规律或规律性不强的的原始数据进行累加,得到规律性较强的准指数序列后建模。将建模生成的模拟序列进行累减后得到原始序列的模拟值 [13] 。

在利用灰色模型建模的过程中,随着时间的推移,系统逐渐发生变化,老的数据已不能反映当前系统的特征。所以在建模时,引进新信息的同时要将老信息去除,这样得到的模型称为新陈代谢模型 [14] 。其概念为:

设原始序列置入最新信息,去掉最老信息,称用建立的模型为新陈代谢灰色模型。

具体的建模过程为:

步骤1:设原始序列,通过一次累加运算之后生成的累加序列(1-AGO)为:

其中:

(1)

的均值生成序列为:

(2)

其中:

(3)

步骤2:建立灰微分方程:

(4)

其中,a为发展系数,b为灰色作用量。

式(4)的白化微分方程为

(5)

步骤3:求参数向量

对于式(5)中的参数向量利用最小二乘法估计得

(6)

其中:

步骤4:求解方程

继续求解微分方程(5),得到:

(7)

其中:C为待定常数。

为求解常数C,需要选定一个初始值,假定,则有

(8)

代入式(7)得

(9)

则传统GM (1,1)模型的时间响应式为

(10)

步骤5:再求出模型的还原数据

(11)

2.2. 改进的新陈代谢GM (1,1)模型

传统的GM (1,1)模型公式如式(10)中始终存在,这就等于让拟合曲线必须过点(1,)。最小二乘的原理并不要求拟合曲线过第一个数据点,针对初始条件的选取,党耀国等人按照灰色系统理论中新信息优先原理,选取最新点即的最后一个分量作为初始条件 [15] 。这个改进在一定的条件下可以提高预测精度,但由于最小二乘拟合的曲线理论上并不要求通过某一个点,所以本文提出了一种更全面的初始条件选择方法。依次选取累加序列中的各元素作为初始条件,在训练集上建模,选择其中误差最小的元素作为初始条件,在测试集上预测,这个元素所在的位置索引记为I。

如传统GM (1,1)模型所定义,取误差最小的元素作为初始条件,则灰微分方程的白化方程的时间响应式为:

(12)

还原值为:

(13)

称式(12)和(13)为改进的新陈代谢GM (1,1)模型,即IGM (1,1)模型。

3. 基于改进的新陈代谢GM (1,1)模型的软件阶段成本预测过程

本文中利用改进的新陈代谢GM (1,1)模型即IGM (1,1)模型来建模预测软件项目阶段成本,并使用误差补偿的技术来提高预测精度,并将该软件阶段成本的预测方法称为IGM方法。

利用IGM方法预测软件项目阶段性成本的基本过程为:

1) 选取建模子序列;

2) 对建模序列进行光滑性处理;

3) 在训练集上用IGM (1,1)模型建模预测,得到误差最小的I和误差补偿值;

4) 在测试集上,以I所在的元素为初始条件,建立IGM (1,1)模型并预测;

5) 用误差补偿值来修正预测结果,得到最优预测值和预测误差。

在本文真实的数据集上预测过程如图1所示:

下面将详细介绍建模子序列的选取、数据的光滑性处理、建模预测、求误差补偿值、测试集的建模预测及误差补偿、计算预测误差的过程。

Figure 1. The prediction process of IGM method

图1. IGM方法的预测过程

1) 选取建模子序列

在本文的软件项目月工作量预测中,由于在软件开发的前期工作量数据较少,所以我们只选择3个月的工作量数据建模。当有新数据加入时,就舍弃最老的一个数据,始终保持使用最近3个阶段的数据,形成滚动预测。

例如,某一个项目的规模为个月,则需要对个工作量数据转变成的矩阵形式,对矩阵中每一行的前三个数据进行建模,利用第四个数据来验证误差大小。

假设一个持续时间为个月的项目工作量序列为:,将其转变成的的矩阵为:

2) 建模序列的光滑性处理

原始数据序列是影响灰色模型预测精度的重要因素之一。过于离散的数据直接建模,一般不容易拟合而造成预测误差很大。所以要对建模序列进行光滑性处理,光滑性处理可以减少序列中的噪声波动。采用的方法为阶移动加权平均,它对数据序列有修匀和平滑的作用。

假设原序列为,经过光滑性处理后的序列为:

3) 建模预测

对经过光滑性处理的建模序列在训练集上运用IGM (1,1)模型进行建模预测,得到误差最小的I。

4) 求误差补偿值

对训练集中每个项目的每一个建模子序列进行建模预测,并计算出每一次预测的偏差,将训练集中所有的项目都按此过程操作一遍。最后,将所有的偏差值排序,为排除极值的影响,舍弃偏差序列头尾的10%,将中间的80%求出均值作为误差补偿值

5) 在测试集上建模预测及误差补偿

在测试集中,用I所在的元素作为初始条件建模预测并利用训练时得到误差补偿值来修正预测结果,得到最优预测。

6) 计算预测误差

对测试集中的每个项目的每个建模序列求出预测误差,每个项目的预测误差是该项目中所有建模序列预测误差的平均值。该数据集的预测误差为所有项目预测误差的均值。

4. 实验与结果分析

为了检验IGM方法的实用性,本文将IGM方法应用在三个不同工业类型项目的数据集上进行了验证。

(1) 数据集。本文使用的数据集来自EDS公司,共包括14000多个真实的软件工程项目,是世界上最大的软件工程数据集之一。数据来自30多个国家和地区,包括美国(56.7%)、澳大利亚(7%)、瑞士(5%)、加拿大(4.6%)等,开发语言130多种,有COBOL (10.9%)、JCL (9.4%)、SQL (5.2%)、Visual Basic (4.5%)等,并涉及多个工业类型,有金融、制造、运输等。研究中我们把项目按工业类型分类,以其中最典型的3个数据集为代表进行实验。由于本实验需要用连续的3个月的成本数据建模,预测第4个月的成本,因此小于或等于3个月的项目因数据不足,将从数据集中删除。各实验数据集的项目数量如表1所示。

(2) 确认方法。本实验采用交叉验证中的Hold-Out方法。将每个数据集的项目随机均分为五份,选取其中的四份作为训练集,剩余的一份作为测试集。首先对训练集上的每个项目用IGM方法预测,并求出误差最小的I和误差补偿值,在测试集中,以I所在的元素作为初始条件,建立IGM (1,1)模型预测,并利用误差补偿值对预测结果进行修正,得到最优预测。

(3) 评估标准。本文为验证IGM方法的性能,使用在软件成本预测领域通常用到的MMRE、Bias两种指标作为评价标准。

表示预测值与真实值之间的偏离程度,对被预测值,对应的定义如下:

(14)

其中,为真实值,为预测值,越接近0,表示预测的精度越高。

相对误差(Magnitude of Relative Error, MRE)定义如下:

(15)

多次预测的平均相对误差(Mean Magnitude of Relative Error, MMRE)定义如下:

(16)

(4) 基准方法。为了比较IGM方法的性能,在实验中采用其他三种方法作为基准方法进行相同的实验。基准方法一:采用传统的新陈代谢GM (1,1)模型,记为GM1;基准方法二:采用王勇等人提出的GV方法;基准方法三:采用MacDonell在 [10] 中用到的线性回归(LR)模型。四种方法均在相同的数据集上进行实验。

(5) 实验结果。四种方法所得到的MMRE和Bias两项指标的值,分别列在表2表3中。

Table 1. The number of items per data set

表1. 各数据集的项目数量

Table 2. The MMRE of four methods on different data sets

表2. 四种方法在不同数据集上的MMRE

Table 3. The Bias of four methods on different data sets

表3. 四种方法在不同的数据集上的Bias

实验结果显示,在3个数据集上,IGM方法相比其他三种方法取得了更好的预测精度。从表2的MMRE指标来看,IGM方法在3个数据集上都表现出一定的优势,表现全部优于其余三种方法。相比其他三种方法,MMRE最少降低了20.96%,2.11%,10.35%。其中数据集2上四种方法得到的MMRE都比较大,检查数据发现原始数据序列有异常波动,导致预测误差偏大。从表3的Bias指标来看,IGM方法在数据集2上优势明显,均优于其他三种方法。在数据集1上,IGM方法的Bias值比GM1略差,但相差不多,只有0.06%。在数据集3中,GV与IGM两种方法的Bias指标取值接近,GV比IGM低0.22%,略占优势。

总体来看,在本文的3个数据集上,IGM方法在MMRE和Bias两个指标上都取得了较好的成果,均超过了传统的新陈代谢GM (1,1)模型,GV方法,LR模型,有较大的潜力。

5. 结论

本文对传统新陈代谢GM (1,1)模型进行了改进,动态选择模型初始条件,并提出了一种软件项目阶段成本的预测方法IGM。在3个大规模软件工程数据集上进行了验证,实验证明IGM方法优于传统的新陈代谢GM (1,1)模型、GV方法、LR模型,显示出较好的预测性能,可作为软件阶段成本预测的一种可选方法。

基金项目

本论文得到国家自然科学基金面上项目(61170312)及软件工程国家重点实验室开发基金项目(SKLSE2012-09-14)的支持。

文章引用

王 勇,韩佩佩. 基于改进的新陈代谢GM (1,1)模型的软件阶段成本预测
The Prediction of Software-Stage Effort Based on Improved Metabolic GM (1,1) Model[J]. 软件工程与应用, 2017, 06(03): 49-57. http://dx.doi.org/10.12677/SEA.2017.63006

参考文献 (References)

  1. 1. Jrgensen, M. and Shepperd, M. (2007) A Systematic Review of Software Development Cost Estimation Studies. IEEE Transactions on Software Engineering, 33, 33-53. https://doi.org/10.1109/TSE.2007.256943

  2. 2. Shepperd, M. (2007) Software Project Economics: A Roadmap. Proceedings of the FoSE 2007: Future of Software Engineering, Minneapolis, 23-25 May 2007. https://doi.org/10.1109/fose.2007.23

  3. 3. Shepperd, M. and Schofield, C. (1997) Estimating Software Project Effort Using Analogies. IEEE Transactions on Software Engineering, 23, 736-743. https://doi.org/10.1109/32.637387

  4. 4. Tadayon, N. (2005) Neural Network Approach for Software Cost Estimation. Proceedings of the International Conference on Information Technology: Coding and Computing, Las Vegas, 4-6 April 2005. https://doi.org/10.1109/itcc.2005.210

  5. 5. Srinivasan, K. and Fisher, D. (1995) Machine Learning Approaches to Estimating Software Development Effort. IEEE Transactions on Software Engineering, 21, 126-137. https://doi.org/10.1109/32.345828

  6. 6. Briand, L.C., Emam, K.E. and Surmann, D. (1999) An Assessment and Comparison of Common Software Cost Estimation Modeling Techniques. Proceedings of the 1999 International Conference on Software Engineering, 22 May 1999.

  7. 7. Molokken, K. and Jorgensen, M. (2003) A Review of Software Surveys on Software Effort Estimation. Proceedings of the 2003 International Symposium on Empirical Software Engineering, Rome, 30 September-1 October 2003. https://doi.org/10.1109/isese.2003.1237981

  8. 8. Hughes, R.T. (1996) Expert Judgement as an Estimating Method. Information & Software Technology, 38, 67-75. https://doi.org/10.1016/0950-5849(95)01045-9

  9. 9. 何晓阳, 王亚沙. 基于模型的软件成本估计方法[J]. 计算机研究与发展, 2006, 43(5): 777-783.

  10. 10. Macdonell, S.G. and Shepperd, M.J. (2003) Using Prior-Phase Effort Records for Re-Estimation during Software Projects. Proceedings of the 9th International Software Metrics Symposium, Sydney, 3-5 September 2003. https://doi.org/10.1109/metric.2003.1232457

  11. 11. Wang, Y., Song, Q., Macdonell, S., et al. (2009) Integrate the GM (1,1) and Verhulst Models to Predict Software Stage Effort. IEEE Transactions on Systems, Man and Cybernetics Part C: Applications and Reviews, 39, 647-658. https://doi.org/10.1109/TSMCC.2009.2020690

  12. 12. 王勇, 宋擒豹, 沈钧毅. 根据序列变化率预测软件阶段成本[J]. 计算机学报, 2009, 32(7): 1346-1355.

  13. 13. 刘思峰, 杨英杰, 吴利丰. 灰色系统理论及其应用[M]. 北京: 科学出版社, 2014.

  14. 14. 陈霞, 邱桃荣, 魏玲玲. GM (1,1)模型和新陈代谢模型的应用比较[J]. 微计算机信息, 2008, 24(12): 163-165.

  15. 15. 党耀国, 刘思峰, 刘斌. 以x~((1))(n)为初始条件的GM模型[J]. 中国管理科学, 2005, 13(1): 133-136.

期刊菜单