宫丽娜,马怀志
枣庄学院 信息科学与工程学院,山东 枣庄 277160
粒子群算法优化的BP网络预测软件质量
宫丽娜,马怀志
枣庄学院 信息科学与工程学院,山东 枣庄 277160
对于软件项目来说,越早地获得软件的质量级别,就会越大地减少软件项目的开发和维护成本。质量预测建模技术是软件质量评价体系中的关键技术,通过该技术可以建立起软件中度量数据和质量要素间的非线性关系,这样可以避免主观因素的干扰,得到更加客观的软件质量级别,从而更有利于管理决策[1]。
目前国内外对质量预测建模技术已经有了一些研究。主要有两方面:基于软件错误测试报告或者软件质量度量来预测软件的缺陷数和基于软件质量度量来预测软件的可靠性。
在传统的软件质量预测建模技术中,主要采用回归方法,基于软件的规模、复杂度或者测试数据来预测软件的缺陷数[2-3]。Khoshgoftaar和Seliya[4]提出了采用回归树(Regression Tree)预测软件各模块中的错误数的质量预测模型,Khoshgoftaar等提出了一种结合模糊聚类的质量预测模型[5]。我国的蔡开元教授提出了一种结合模糊方法的模糊软件可靠性的确认模型[6-7]。
1992年,Karunanithi第一次将人工神经网络技术应用于软件质量预测模型中,他建立了基于一个实际项目的错误数据集合来估计累计错误数的质量预测模型,并采用三种不同的神经网络进行实验,得出了比传统的方法更好的结果[8]。Nidhi Gupta和Manu Pratap Singh采用BP神经网络建立基于执行时间来预测软件可能发生的错误数的软件质量预测模型[9]。俞立军,贲可荣采用前向级联神经网络建立软件质量预测模型[10]。Liang Tian和Afzel Noore利用遗传算法优化的神经网
CNKI网络优先出版:2013-05-21,http://www.cnki.net/kcms/detail/11.2127.TP.20130521.1027.002.html络建立了软件质量预测模型[11-12]。
基于以上研究,在软件质量建模技术中,基于软件质量度量利用神经网络和改进的神经网络成了主流,但是选择哪些软件质量度量指标作为模型的输入,以及怎样改进神经网络都是研究的内容。基于此,本文提出了基于粒子群算法的BP神经网络预测模型,该模型是以C&K度量指标表征面向对象软件的度量属性:CBO、RFC、DIT、LCOM、NOC、WMC作为输入。
软件度量就是对影响软件质量的内部属性进行量化测量[13]。而在量化的基础上建立的质量预测模型能够对用户所关心的软件质量特性进行客观的评价。软件的可靠性、功能性等这些质量要素是无法直接度量的,需要通过度量软件的内部属性来间接地得到。所以,软件度量和软件质量预测模型间的关系,如图1所示[14]。
图1 软件度量和软件预测模型间的关系
图中可以直接度量的度量1,度量2,…,度量n作为软件质量预测模型的输入,通过这n个度量指标来得到度量n+1的预测值,从而反映出软件的质量特性。
软件质量预测模型的实质就是从历史数据中寻找软件度量与软件质量要素之间的关系。
1985年,D.Ruvmelhar和McClelland提出了BP神经网络,主要包含输入层、隐含层和输出层。图2所示模型是只有一层隐含层的BP网络。
图2 BP网络结构
BP网络是误差反传误差反向传播算法的学习过程,分为正向传播和反向传播两个阶段。在正向传播中,信息从输入层传递给中间层(中间层可以设计为单隐层或者多隐层),经过中间层的处理传递给输出层,完成一次学习的正向传播处理过程。当实际输出与期望输出不符时,就会进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。神经元节点的特性函数是S型函数,如公式(1)所示:
3.1 粒子群优化算法
粒子群优化(Particle Swarm Optimizer,PSO)算法是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。PSO中,每个优化问题的潜在解就是搜索空间中的一只鸟,称之为“粒子”,所有的粒子都有一个由被优化的函数决定的适应值,每个粒子还有一个速度决定它们飞翔的方向和距离,通过粒子间的相互作用在解空间中进行搜索,从而得到最优解。
粒子群算法的主要思想是初始化一群随机粒子,然后通过迭代找到最优解,每次迭代中粒子跟踪两个极值来更新自己。其中粒子个数称为种群规模m;第i个粒子在 d 维空间的速度表示为Vi=(Vi1,Vi2,…,Vid);位置表示为 Xi=(Xi1,Xi2,…,Xid)(i=1,2,…,m)。在每次迭代中,根据每一个粒子的适应度,更新每个粒子的个体最优 pbest=(p1,p2,…,pd)和全局最优值 gbest=(g1,g2,…,gd)粒子通过动态跟踪个体极值和全局最优值来更新其速度和位置的公式如下:
式中 j=1,2,…,d ;t为迭代次数;C1,C2是学习因子;w为惯性权值;rand()是介于(0,1)之间的随机数。
3.2 粒子群算法优化BP网络
3.2.1 算法简介
BP网络采用的梯度下降法,使得权值收敛到某个值时,不能保证它是误差平面的全局最小值,而PSO算法避免了梯度下降法中的缺点,可以避免BP网络的缺陷,同时也可以缩短神经网络的训练时间。因此用粒子群算法代替梯度下降法训练BP网络的参数,可以改善BP算法性能[15-18]。优化的学习算法中,粒子向量 Xi= (Xi1,Xi2,…,Xid)各元素的值表示BP网络中神经元的权值或阈值,其中d为BP网络中的所有权值和阈值个数。粒子群算法中的粒子的适应度函数为式(5)所示:
式中,n表示样本个数,popIndex=1,2,…,popSize,popSize表示粒子的个数,Yi,j表示第i个样本的第 j个理想输出值,yi,j表示第i个样本的第 j个实际输出值。算法的流程图如图3所示。
图3 算法流程图
3.2.2 算法设计与实现
该算法是将PSO替代BP网络中的梯度下降法。该算法的主要思想是通过PSO算法优化BP神经网络的连接权值和阈值,这样能够改善BP算法的性能。具体如下:
步骤1初始化BP网络结构,主要初始化神经网络各层的神经元个数以及隐含层的层数。
步骤2初始化粒子群,主要初始化粒子的位置向量、速度向量的维数(dimsize)、粒子群的规模(popSize)、学习因子C1,C2、惯性权重w、粒子群及每个粒子的速度和个体极值和全局最优值;确定适应度函数。
步骤3计算各粒子的适应度值。使用训练样本对每一粒子进行前向传播计算训练误差,然后根据公式(5)计算粒子的适应度。
步骤4根据各粒子的适应度值更新个体极值和全局最优值。
步骤5根据个体极值和全局最优值更新各粒子速度和位置。
步骤6判断算法停止条件。计算迭代产生的新的粒子群的适应度,判断算法是否达到最大迭代次数或者达到规定的误差标准,如果条件满足则生成最优解。算法停止迭代;否则迭代次数增1后返回步骤3继续迭代。
通过上述具体的该算法的步骤可以知道,该算法的复杂度为O(n),在训练网络模型时要比BP网络节省很多时间。
4.1 参数设置
本文采用该算法对面向对象的软件的可靠性质量属性进行实验。采用C&K度量指标:CBO、NOC、DIT、LCOM、RFC、WMC作为预测模型的输入变量,软件的可靠性作为模型的输出[19-22]。先通过训练数据对该网络模型进行训练,得到 CBO、NOC、DIT、LCOM、RFC、WMC六个指标和软件可靠性之间的非线性关系,然后通过训练好的这个网络模型,对需要验证的软件进行软件可靠性预测。
本实验基于美国宇航局的度量数据计划中的KC1数据库中的28个历史数据,其中20个为训练数据,8个为验证数据。为了加快训练速度,对历史数据进行归一化处理。
BP网络结构中,隐含层数为1,输入层节点数为6,隐层节点初始化12,输出层节点数为1。PSO算法中粒子数为30;C1=2,C2=1.8;w随迭代次数由0.9线性地减小为0.3。
本实验的机器配置为CPU:Intel®CoreTMi5-2430M,内存:4 GB的联想笔记本,采用C#语言进行代码实现。
4.2 结果分析
实验与BP算法进行了比较,两个算法的误差曲线如图4,5所示。
图4 BP网络误差曲线
图5 基于PSO的BP网络误差曲线
由表1可知,BP网络迭代2 049次达到预期结果,而PSO-BP网络只迭代了100次就达到预期误差由此可知训练时间明显缩短,收敛速度得到了提高,而训练得到的MSE也更小。
表1 学习算法的比较
由图6可知,基于PSO的BP网络优于传统的BP网络,PSO-BP训练出来的神经网络能更好地对数据进行验证。也就是说基于PSO的BP网络建立的软件质量预测模型能够更好地反应软件度量和质量要素之间的非线性关系。
图6 验证数据的曲线拟合
质量预测建模技术是软件质量评价体系中的关键技术,本文将BP神经网络和粒子群算法相结合,用粒子群算法替代BP网络中的梯度下降法,并将该方法应用于软件质量的可靠性预测中,建立了考虑6个度量元的软件可靠性的预测模型,实验表明,粒子群优化神经网络模型能够迅速而精确地预测软件的质量,正确地描述软件度量和质量要素之间的非线性关系。
[1]李虎,史晓华,杨海燕,等.软件质量评价技术[J].计算机研究与发展,2002,39(1):61-67.
[2]Hatton L C.Safety related software development:standards,subsets,testing,metrics,legal issues[M].[S.l.]:McGraw-Hill,1994.
[3]Fenton N E,Lawrence S,Glass R.Science and substance:a challenge to software engineers[J].IEEE Software,1994:86-95.
[4]Khoshgoftaar T M,Seliya N.Tree-based software quality estimation models for fault prediction[C]//Proceedings of the 8th IEEE Symposium on Software Metrics,2002:203-214.
[5]Khoshgoftaar T M,Liu Y.Multiobjective module-order model for software quality enhancement[J].IEEE Transactions on Evolutionary Computation,2004,8(6):593-608.
[6]蔡开元.软件可靠性工程基础[M].北京:清华大学出版社,1995.
[7]蔡开元.一个模糊软件可靠性确认模型[J].航空学报,1993(11):95-98.
[8]Karunanithi N,Whitley D,Malaiya Y K.Using neural networks in reliability prediction[J].IEEE Software,1992,9(4):53-59.
[9]Gupta N,Singh M P.Estimation of software reliability with execution time model using the pattern mapping technique ofartificialneuralnetwork[J].Computerand Operations Research,2005,32(1):187-199.
[10]俞立军,贲可荣.基于神经网络的软件可靠性模型的实现与分析[J].计算技术与自动化,2002,21(3):1-4.
[11]Tian L,Noore A.Evolutionary neural modeling for software cumulative failure time prediction[J].Reliability Engineering and System Safety,2005,87(1):45-51.
[12]Tian L,Noore A.On-line prediction of software reliability using an evolutionary connectionist model[J].Journal of Systems and Software,2005,77(2):173-180.
[13]程杜平,钱红兵.软件质量与度量[J].计算机工程与应用,2002,38(7):80-83.
[14]陈起.软件度量与评测技术研究及Java软件度量与评测工具的实现[D].北京:北京航空航天大学,2001.
[15]陈树,徐保国,王海霞,等.基于粒子群优化神经网络算法在发酵过程控制中的研究[J].计算机与应用化学,2007,24(7):885-887.
[16]曾万里,危韧勇,陈红玲.基于改进PSO算法的BP神经网络的应用研究[J].计算机技术与发展,2008,18(4):49-51. [17]葛哲学,孙志强.神经网络理论与MATLAB R2007实现[M].北京:电子工业出版社,2007.
[18]刘洪波,王秀坤,孟军.神经网络基于粒子群优化的学习算法研究[J].小型微型计算机系统,2005,26(4):638-640.
[19]Thwin M M T,Quah T S.Application of neural network for predicting software development faults using object-oriented design metrics[C]//Proceedingsof9th InternationalConference on NeuralInformation Processing(ICONIP’02),2002,5:2312-2316.
[20]Quah J T S,Thwin M M T.Prediction of software readiness using neural network[C]//Proceedings of 1st International Conference on Information Technology&Applications(ICITA 2002),Australia,2002.
[21]Thwin M M T,Quah T S.Application of neural networks forsoftware quality prediction using objectoriented metrics[J].Journal of Systems and Software,2005,76(2):147-156.
[22]Kanmani S,Rhymend Uthariaraj V,Sankaranarayanan V,et al.Object oriented software quality prediction using generalregressionneuralnetworks[J].ACM SIGSOFT Software Engineering Notes,2004,29(5):1-6.
GONG Lina,MA Huaizhi
College of Information Science and Engineering,Zaozhuang University,Zaozhuang,Shandong 277160,China
The modeling technology of software which can find the nonlinear relationship between metric data and quality factors is the key technology in the software quality evaluation system.BP neural network is a kind of modeling method for the nonlinear relationship between metric data and quality factors,but there are some problems,such as slow convergence speed and easily getting into local minimum.So it proposes that using the optimized BP network based on PSO to establish the prediction model of software quality,which solves the problem of slow convergence speed and easily getting into local minimum well.In the basis of the evolutionary BP neural network,through the experiment with 28 groups of data,and by comparing with the result of BP model,the model is validated.
prediction model of software quality;software metrics;neural network;Particle Swarm Optimization(PSO)
预测软件质量的技术中,软件建模技术是软件质量评价体系中的关键技术,它可以发现软件中度量数据和软件质量要素之间的非线性关系。BP神经网络能够很好地模拟度量数据和质量要素之间的非线性关系,但是BP网络存在易于陷入局部极小和收敛速度慢的问题,所以提出了用粒子群算法优化BP神经网络,通过优化的BP网络建立软件质量模型,这样能很好地解决BP网络收敛速度慢和局部极小的问题。在实现该进化BP神经网络的基础上,利用28组数据进行实验,并通过与BP模型的结果的比较,验证了该模型。
软件质量预测模型;软件度量;神经网络;粒子群算法
A
TP311
10.3778/j.issn.1002-8331.1301-0180
GONG Lina,MA Huaizhi.Software quality prediction of BP network based on PSO.Computer Engineering and Applications,2014,50(23):65-68.
宫丽娜(1985—),女,助教,主要研究方向为软件工程;马怀志(1984—),男,助教,主要研究方向为模式识别。E-mail:390701387@qq.com
2013-01-16
2013-04-27
1002-8331(2014)23-0065-04