基于优化BP神经网络的高准确度软件缺陷预测应用研究*
2018-05-28张福泉
曾 毅, 张福泉
(1.广西大学 行健文理学院,广西 南宁 530005;2.北京理工大学 软件学院,北京 100081)
随着现代信息技术的快速发展,软件系统在各个领域中的应用越来越多.伴随着应用范围的扩大,软件系统不可避免的缺陷问题已经开始引起社会越来越多的关注.一般来说,软件可靠性对软件开发成本和软件质量具有较大的影响[1-2].如果能够在软件系统开发的初期尽可能地检测出系统存在的各种BUG,并及时对其进行修改的话,就能够直接提高软件可靠性.因此,软件缺陷预测对于软件可靠性具有重要的研究价值[3].现阶段,软件缺陷预测模型大致可以分为5种类型[4-5]:(1) 贝叶斯模型;(2) 线性判别模型;(3) 分类决策模型;(4) 支持向量机模型;(5) 马尔可夫模型.众多研究人员已经对以上模型开展了各种分析和研究,但是以上模型在软件缺陷预测中的应用效果达不到人们的预期,仍旧存在不少问题.比如,对于现在研究得较多的马尔可夫模型方法,由于过于依赖初期的假设问题,导致其实际应用范围十分有限.随着人工智能算法的兴起,人工神经网络模型在软件缺陷预测中的应用成为目前人们研究的热点,主要采用的是BP 神经网络[6].但是BP 神经网络采用均方误差梯度下降方向进行收敛,容易陷入局部极小值点,且收敛速度慢.此外,BP 神经网络对初始化参数中的权值和阈值具有较大的敏感性,不同的初始化权值和阈值将对BP 神经网络的性能造成较大影响.
为了有效提高软件缺陷测试任务中的准确度,本文提出了一种基于灰狼算法优化BP神经网络的软件缺陷预测模型.该模型利用灰狼优化算法的全局搜索能力,有效克服了BP神经网络的局部极小值点陷入,解决了其对初始化权值和阈值参数设置的依赖性问题.实验结果表明,相比于现有BP优化算法,本文算法的仿真拟合效果最优,表现出了更高的软件缺陷预测准确度.
1 提出的软件缺陷预测模型
1.1 模型结构设计
本文提出的基于优化BP神经网络的软件缺陷预测模型如图 1 所示.其中,模型的预测准确率达到预先设置的阈值或者循环次数达到最大值时终止优化循环.
1.2 BP神经网络的建立
本文采用4层BP神经网络构建多层感知模型[7-8].该BP神经网络具体包括:输入层、变量层、模糊规则层和输出层,如图2所示.
在第一层(输入层)中,IN1输入节点表示误差数值,IN2输入节点表示误差的变化率.该层的输入和输出分别为:
在第二层(变量层)中,本文利用高斯函数对上一层的数值进行分类.该层的输入和输出分别为:
在规则层中输入和输出分别为:
输出层用于解模糊,其输入和输出分别为:
2 灰狼算法优化 BP 神经网络
本文采用灰狼算法[10]优化BP神经网络,以达到克服BP算法的缺陷和提高泛化性能的目的.
在一个维度为D的空间中,设Xi表示族群中第i只狼的位置,i=1,2,…,N.狼群包围并追捕猎物的行为抽象为[10]:
Xi(t+1)=X0(t)-Ai·Di,Di=|Ci·X0-Xi|,
式中,t为迭代次数,X0表示猎物位置向量,Di表示灰狼与猎物之间的距离,Ai和Ci均为因子参数.灰狼算法的实现主要模仿了头狼α,副头狼β、小头目δ和普通灰狼ω的集体狩猎行为,分别表示为搜索空间中的最优解、优解、次优解和待选解,其更新方式如下:
式中,ωj(j=α,β,δ)为最优解、优解和次优解的权重因子.提出的灰狼算法优化BP神经网络算法流程如图3所示.
3 实例分析
3.1 实验数据
本文采用了NASA提供数据库中的4个数据集,对提出的方法进行了性能和模型拟合分析.这4组数据集均为真实软件项目,具体参数如表1所示.
表1 实验数据相关参数
3.2 评估指标
为了对提出模型的性能和模型拟合结果进行量化分析,选用3种常用的评价准则[11]:均值误差平方和、回归曲线方程的相关指数和准确度来比较模型的预测能力.均值误差平方和的计算方法为
式中,yave表示yi的均值,RSq的数值越靠近1,可靠性评估性能越好.准确度的计算方法为accuracy=T/C,式中,T表示正确预测的模块数量,C表示观测数据实例的总数.准确度的数值越高越好.
3.3 结果与分析
表2列出了各模型在两组失效数据集上的模型拟合结果.
表2 不同模型的测试结果对比
从实验结果可以看出,相比于实验中的其他2种BP优化模型,本文提出模型的拟合效果最好且软件缺陷预测准确度最高.本文模型实验结果中MSE数值均最小,RSq数值均最接近1,准确度的结果均最高.
4 结 论
本文提出一种基于优化BP神经网路的软件缺陷预测方法.采用4层BP神经网络构建多层感知模型,并结合模糊控制原理实现任意复杂非线性关系逼近.该模型利用灰狼优化算法的全局搜索能力,有效克服了BP神经网络的局部极小值点陷入,解决了其对初始化权值和阈值参数设置的依赖性问题.通过实际软件项目进行了测试,结果显示相比于PSO-BP算法和SA-BP算法,本文算法表现出了更高的软件缺陷预测准确度和较高的软件可靠性.
参考文献
[1] 杨波, 吴际, 徐珞,等. 一种软件测试需求建模及测试用例生成方法[J]. 计算机学报, 2014, 37(3):522-538.
[2] 王蓁蓁. 软件测试理论初步框架[J]. 计算机科学, 2014, 41(3):12-16.
[3] 张策, 崔刚, 刘宏伟,等. 软件测试资源与成本管控和最优发布策略[J]. 哈尔滨工业大学学报, 2014, 46(5):51-58.
[4] GARG M, LAI R, KAPUR P K. A method for selecting a model to estimate the reliability of a software component in a dynamic system[C]//Software Engineering Conference.IEEE,2013, 8144:40-50.
[5] LIN C T, HUANG C Y. Enhancing and measuring the predictive capabilities of testing-effort dependent software reliability models[J]. Journal of Systems & Software, 2008, 81(6):1025-1038.
[6] 张伟杰. 一种软件测试算法的改进及对比实验[J]. 科学技术与工程, 2014, 14(35):245-248.
[7] 于安雷, 皮德常. 基于PSO-BP的软件缺陷预测模型[J]. 计算机工程与应用, 2013, 49(7):64-67.
[8] PINHEIRO S. Optimal harvesting for a logistic growth model with predation and a constant elasticity of variance[J]. Annals of Operations Research,2018,260(1-2):461-480.
[9] 尹然, 丁晓明, 李小亮,等. 基于SA-BP神经网络的软件缺陷预测模型的研究[J]. 西南师范大学学报(自然科学版), 2013, 38(8):147-152.
[10] SINGH N, SINGH S B. A novel hybrid GWO-SCA approach for optimization problems[J]. Engineering Science & Technology An International Journal, 2017, 20(6):1586-1601.
[11] HUANG C Y, KUO S Y, LYU M R. An assessment of testing-effort dependent software reliability growth models[J]. Reliability IEEE Transactions on, 2007, 56(2):198-211.