洪晓彬,姜利群,赵 鹏
(1.广州工商学院 计算机科学与工程系, 广州 510850;2.中国矿业大学 计算机学院, 江苏 徐州 221116;3.太原师范学院 计算机科学与技术系, 太原 030619)
从20世纪90年代开始,随着计算机的普及和推广,电脑操作系统得到了快速发展。各类软件应用程序也迅速出现并在越来越多的企业中得到应用。企业需求的不断增多和技术的不断进步,导致软件的复杂度呈现出指数型增长态势[1],其功能和存储大小都不断增加。越来越复杂和庞大的软件程序使出现故障的可能性也随之不断提高,而现在的企业已十分依赖软件系统。如果软件程序出现故障,会对企业造成不可预知的严重影响。因此,软件的缺陷分析成为了软件开发步骤中必要的环节。通过软件缺陷分析,能够有效地确保软件质量,加强软件的安全性。
目前,通常将软件失效分为3个方面:软件错误(software error)、软件故障(software fault)、软件缺陷(software defect)。其中,软件缺陷是指系统或系统部件中那些导致系统或部件不能实现其功能的缺陷。软件缺陷属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。在软件开发的过程中,软件缺陷的产生是不可避免的。因此,如何准确、有效地发现,并快速修复软件缺陷成为研究的一个热点。文献[4]提出了一种评估动态系统中软件构件可靠性的模型选择方法;文献[5]提出一种基于优化BP神经网路的软件缺陷预测方法,通过灰狼优化算法克服BP神经网络陷入局部搜索,从而解决其参数设置依赖性问题;文献[6]运用粒子群优化算法(PSO)优化BP神经网络的权值和阈值,提出了一种基于PSO-BP软件缺陷预测模型,在一定程度上提高了预测的准确性。
相比PSO算法,量子粒子群优化算法通过结合量子进化理论,进一步提升了全局搜索能力,能在一定程度上克服BP神经网络算法在收敛性能上的不足。因此,本文将量子粒子群算法和BP神经网络相结合,以提高软件缺陷预测模型的准确性和适用性。以3层BP神经网络构为基础,运用量子粒子群优化算法对BP神经网络的权值和阈值进行优化,从而在调节参数较少的条件下优化全局搜索能力。仿真实验结果显示:相比传统BP神经网络和粒子群优化BP神经网络,提出的软件缺陷预测模型算法在准确率、效率方面均得到有效提高。
软件缺陷预测模型可以有效节约软件测试项目的成本和资源,提高软件工程质量。近几年,基于BP神经网络的软件缺陷预测技术研究成为了主流。
BP神经网络的本质是一种多层次的前馈网络,典型的架构为3层感知模型[7-8]。3层BP神经网络模型结构包含1个输入层、1个隐含层和1个输出层,如图1所示。
图1 3层BP神经网络模型结构
在第1层(输入层)中输入和输出分别为:
(1)
(2)
在第2层(隐含层)中,利用高斯函数对上一层的数值进行分类。该层的输入和输出分别为:
i=1,2;j=1,2,…,n
(3)
i=1,2;j=1,2,…,n
(4)
输出层的输入和输出分别为:
(5)
(6)
其中W为连接权重。
参数αij和参数βij的更新方法如下:
λ(αik(t)-αik(t-1))
(7)
λ(βik(t)-βik(t-1))
(8)
图2 基于BP神经网络的软件缺陷预测流程
群智能优化算法作为一种人工模仿动物群体生活习性的仿生技术,在数据挖掘算法方面具有较大的应用前景。例如,粒子群优化算法作为群智优化的重要方法之一,能够模拟简单群落中个体以及个体之间的互动行为来搜索全局最优解[9]。2004年提出的量子粒子群优化算法通过结合量子进化理论,进一步提升了全局搜索能力。利用该特性,文献[10]将量子粒子群优化算法应用于电网规划问题。在量子粒子群优化算法中设种群规模为M,粒子位置更新方法如下:
P=a×Pbest(i)+(1-a)×Gbest
(9)
其中:Pbest表示粒子个体最佳值;Gbest表示粒子群最佳值;a为一个隨机数,取值范围为[0,1]。粒子个体最佳值的平均值为:
(10)
在取值空间内,粒子群搜索过程中收缩扩张因子的更新方式如下:
(11)
其中:generation表示当前进化代数;max generation表示最大进化代数。
position=
(12)
其中u为一个随机数,取值范围为[0,1]。相比粒子群优化算法,量子粒子群优化算法更容易实现,且所需的调节参数更少。此外,在全局搜索的过程,其陷入局部最优的可能性更低。
经研究发现,基于BP神经网络的软件缺陷预测模型一般具有较高的概率陷入局部最小值,会导致学习时间长、预测精度差的问题。因此,不少文献对BP神经网络进行了各种优化和调整,以提高软件缺陷模型的预测性能。例如,文献[11]提出用模拟退火技术代替局部梯度下降法修正BP神经网络的权值。
本文研究目的是使用量子粒子群优化算法改进BP神经网络各层的连接权值和阈值,从而提高其收敛性能。在确定软件缺陷预测模型的BP神经网络结构和相关参数后,采用量子粒子群优化算法对学习结果进行优化,将优化结果反馈到BP神经网络,从而解决BP神经网络收敛速度慢、易陷入局部最优的缺陷。BP神经网络中隐含层采用的应激函数S(z)设置为:
(13)
其中:k表示一个控制应激函数陡峭性的调整因子;z表示该应激函数的输入值。
量子粒子群优化BP神经网络算法的实现过程如下:
① 创建BP神经网络;
② 初始化粒子群,设定种群规模及相关参数并完成迭代过程;
③ 评估粒子的适应度以便得到每个粒子的个体极值和全局极值,并记录全局极值;
④ 对于每个粒子的极值都要进行实时的更新,如式(12)所示;
⑤ 重新计算每个粒子的适应度,并记录全局极值;
⑥ 判断是否满足收敛条件,是则跳转下一步,否则继续执行步骤3;
⑦ 通过获得的最佳位置对全局最佳值(BP神经网络各层的连接权值和阈值)进行更新,算法运行结束。
基于量子粒子群优化BP算法的软件缺陷预测模型如图3所示。
本文采用NASA提供的MDP 软件信息数据集(arff文件格式)[12-14],对基于量子粒子群优化BP算法(QPSO-BP)的软件缺陷预测模型进行验证分析和性能对比。具体使用MDP数据集中的7个数据集文件进行了软件缺陷预测,其相关信息如表1所示。实验环境:Windows 10操作系统,6 GB内存。在Eclipse平台上采用Java开发语言进行具体编程实现。设定学习率为0.02,训练次数为10 000次,最大误差为0.002。
图3 软件缺陷预测模型
名称训练文件大小/KB学习样本数验证文件大小/KB验证抽取样本数MC19469 2772341 988MC21912719125PC19975992705PC21811 58590745PC31451 1251391 077PC41691 3991581 287PC51 63717 0012191 711
为了对提出模型的性能进行量化分析,选用3种常用的评价准则[15-17]:均值误差平方和、回归曲线方程的相关指数和准确度来比较模型的预测能力。均值误差平方和的计算方法如式(14)所示。
(14)
(15)
其中:yave表示yi的均值;RSq的数值越接近1,可靠性评估性能越好。准确度的计算方法如式(16)所示:
(16)
其中:T表示正确预测的模块数量;C表示观测数据实例的总数。准确度的数值越高越好。
表2分别列出了基于传统BP神经网络、PSO-BP和QPSO-BP的3种软件缺陷预测模型在7个数据集文件上的预测结果。
表2 不同模型的预测结果
从7个数据集文件上的预测结果可以看出:相比其他2种基于BP神经网络的软件缺陷预测模型,基于量子粒子群优化BP算法的软件缺陷预测模型的性能最佳,准确度最高。从表2中可以看出:本文提出模型的MSE数值均最小,分别为98.86、8.92、58.47、127.46、143.8、21.57和62.82。RSq数值均接近1,分别为0.993、0.99、0.982、0.898、0.971、0.96、0.973。7组预测的准确度结果也最高,均能达到90%左右。
3种软件缺陷预测模型的预测计算时间结果如图2所示。可以看出:相比基于传统BP神经网络和PSO-BP的方法,基于量子粒子群优化BP算法的软件缺陷预测模型所需的学习时间最短。这是由于量子粒子群优化算法更容易实现,且所需的调节参数更少。
图4 软件缺陷预测的计算时间对比
本文将量子粒子群算法和BP神经网络相结合,提出了一种基于QPSO-BP的软件缺陷预测模型。提出的优化方法能更有效地提高BP神经网络的收敛速度,防止陷入局部极小。仿真实验结果显示:相比传统BP神经网络和粒子群优化BP神经网络,提出软件预测模型的准确率、效率均得到有效提高。但是,提出算法的预测精度仍有提升空间,后续将会对BP神经网络结构和参数做进一步改进和优化。