洪曉彬,姜利群,趙 鵬
(1.廣州工商學(xué)院 計(jì)算機(jī)科學(xué)與工程系, 廣州 510850;2.中國(guó)礦業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 江蘇 徐州 221116;3.太原師范學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系, 太原 030619)
從20世紀(jì)90年代開始,隨著計(jì)算機(jī)的普及和推廣,電腦操作系統(tǒng)得到了快速發(fā)展。各類軟件應(yīng)用程序也迅速出現(xiàn)并在越來越多的企業(yè)中得到應(yīng)用。企業(yè)需求的不斷增多和技術(shù)的不斷進(jìn)步,導(dǎo)致軟件的復(fù)雜度呈現(xiàn)出指數(shù)型增長(zhǎng)態(tài)勢(shì)[1],其功能和存儲(chǔ)大小都不斷增加。越來越復(fù)雜和龐大的軟件程序使出現(xiàn)故障的可能性也隨之不斷提高,而現(xiàn)在的企業(yè)已十分依賴軟件系統(tǒng)。如果軟件程序出現(xiàn)故障,會(huì)對(duì)企業(yè)造成不可預(yù)知的嚴(yán)重影響。因此,軟件的缺陷分析成為了軟件開發(fā)步驟中必要的環(huán)節(jié)。通過軟件缺陷分析,能夠有效地確保軟件質(zhì)量,加強(qiáng)軟件的安全性。
目前,通常將軟件失效分為3個(gè)方面:軟件錯(cuò)誤(software error)、軟件故障(software fault)、軟件缺陷(software defect)。其中,軟件缺陷是指系統(tǒng)或系統(tǒng)部件中那些導(dǎo)致系統(tǒng)或部件不能實(shí)現(xiàn)其功能的缺陷。軟件缺陷屬性包括缺陷標(biāo)識(shí)、缺陷類型、缺陷嚴(yán)重程度、缺陷產(chǎn)生可能性、缺陷優(yōu)先級(jí)、缺陷狀態(tài)、缺陷起源、缺陷來源、缺陷原因。在軟件開發(fā)的過程中,軟件缺陷的產(chǎn)生是不可避免的。因此,如何準(zhǔn)確、有效地發(fā)現(xiàn),并快速修復(fù)軟件缺陷成為研究的一個(gè)熱點(diǎn)。文獻(xiàn)[4]提出了一種評(píng)估動(dòng)態(tài)系統(tǒng)中軟件構(gòu)件可靠性的模型選擇方法;文獻(xiàn)[5]提出一種基于優(yōu)化BP神經(jīng)網(wǎng)路的軟件缺陷預(yù)測(cè)方法,通過灰狼優(yōu)化算法克服BP神經(jīng)網(wǎng)絡(luò)陷入局部搜索,從而解決其參數(shù)設(shè)置依賴性問題;文獻(xiàn)[6]運(yùn)用粒子群優(yōu)化算法(PSO)優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,提出了一種基于PSO-BP軟件缺陷預(yù)測(cè)模型,在一定程度上提高了預(yù)測(cè)的準(zhǔn)確性。
相比PSO算法,量子粒子群優(yōu)化算法通過結(jié)合量子進(jìn)化理論,進(jìn)一步提升了全局搜索能力,能在一定程度上克服BP神經(jīng)網(wǎng)絡(luò)算法在收斂性能上的不足。因此,本文將量子粒子群算法和BP神經(jīng)網(wǎng)絡(luò)相結(jié)合,以提高軟件缺陷預(yù)測(cè)模型的準(zhǔn)確性和適用性。以3層BP神經(jīng)網(wǎng)絡(luò)構(gòu)為基礎(chǔ),運(yùn)用量子粒子群優(yōu)化算法對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行優(yōu)化,從而在調(diào)節(jié)參數(shù)較少的條件下優(yōu)化全局搜索能力。仿真實(shí)驗(yàn)結(jié)果顯示:相比傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)和粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò),提出的軟件缺陷預(yù)測(cè)模型算法在準(zhǔn)確率、效率方面均得到有效提高。
軟件缺陷預(yù)測(cè)模型可以有效節(jié)約軟件測(cè)試項(xiàng)目的成本和資源,提高軟件工程質(zhì)量。近幾年,基于BP神經(jīng)網(wǎng)絡(luò)的軟件缺陷預(yù)測(cè)技術(shù)研究成為了主流。
BP神經(jīng)網(wǎng)絡(luò)的本質(zhì)是一種多層次的前饋網(wǎng)絡(luò),典型的架構(gòu)為3層感知模型[7-8]。3層BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)包含1個(gè)輸入層、1個(gè)隱含層和1個(gè)輸出層,如圖1所示。
圖1 3層BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
在第1層(輸入層)中輸入和輸出分別為:
(1)
(2)
在第2層(隱含層)中,利用高斯函數(shù)對(duì)上一層的數(shù)值進(jìn)行分類。該層的輸入和輸出分別為:
i=1,2;j=1,2,…,n
(3)
i=1,2;j=1,2,…,n
(4)
輸出層的輸入和輸出分別為:
(5)
(6)
其中W為連接權(quán)重。
參數(shù)αij和參數(shù)βij的更新方法如下:
λ(αik(t)-αik(t-1))
(7)
λ(βik(t)-βik(t-1))
(8)
圖2 基于BP神經(jīng)網(wǎng)絡(luò)的軟件缺陷預(yù)測(cè)流程
群智能優(yōu)化算法作為一種人工模仿動(dòng)物群體生活習(xí)性的仿生技術(shù),在數(shù)據(jù)挖掘算法方面具有較大的應(yīng)用前景。例如,粒子群優(yōu)化算法作為群智優(yōu)化的重要方法之一,能夠模擬簡(jiǎn)單群落中個(gè)體以及個(gè)體之間的互動(dòng)行為來搜索全局最優(yōu)解[9]。2004年提出的量子粒子群優(yōu)化算法通過結(jié)合量子進(jìn)化理論,進(jìn)一步提升了全局搜索能力。利用該特性,文獻(xiàn)[10]將量子粒子群優(yōu)化算法應(yīng)用于電網(wǎng)規(guī)劃問題。在量子粒子群優(yōu)化算法中設(shè)種群規(guī)模為M,粒子位置更新方法如下:
P=a×Pbest(i)+(1-a)×Gbest
(9)
其中:Pbest表示粒子個(gè)體最佳值;Gbest表示粒子群最佳值;a為一個(gè)隨機(jī)數(shù),取值范圍為[0,1]。粒子個(gè)體最佳值的平均值為:
(10)
在取值空間內(nèi),粒子群搜索過程中收縮擴(kuò)張因子的更新方式如下:
(11)
其中:generation表示當(dāng)前進(jìn)化代數(shù);max generation表示最大進(jìn)化代數(shù)。
position=
(12)
其中u為一個(gè)隨機(jī)數(shù),取值范圍為[0,1]。相比粒子群優(yōu)化算法,量子粒子群優(yōu)化算法更容易實(shí)現(xiàn),且所需的調(diào)節(jié)參數(shù)更少。此外,在全局搜索的過程,其陷入局部最優(yōu)的可能性更低。
經(jīng)研究發(fā)現(xiàn),基于BP神經(jīng)網(wǎng)絡(luò)的軟件缺陷預(yù)測(cè)模型一般具有較高的概率陷入局部最小值,會(huì)導(dǎo)致學(xué)習(xí)時(shí)間長(zhǎng)、預(yù)測(cè)精度差的問題。因此,不少文獻(xiàn)對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行了各種優(yōu)化和調(diào)整,以提高軟件缺陷模型的預(yù)測(cè)性能。例如,文獻(xiàn)[11]提出用模擬退火技術(shù)代替局部梯度下降法修正BP神經(jīng)網(wǎng)絡(luò)的權(quán)值。
本文研究目的是使用量子粒子群優(yōu)化算法改進(jìn)BP神經(jīng)網(wǎng)絡(luò)各層的連接權(quán)值和閾值,從而提高其收斂性能。在確定軟件缺陷預(yù)測(cè)模型的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和相關(guān)參數(shù)后,采用量子粒子群優(yōu)化算法對(duì)學(xué)習(xí)結(jié)果進(jìn)行優(yōu)化,將優(yōu)化結(jié)果反饋到BP神經(jīng)網(wǎng)絡(luò),從而解決BP神經(jīng)網(wǎng)絡(luò)收斂速度慢、易陷入局部最優(yōu)的缺陷。BP神經(jīng)網(wǎng)絡(luò)中隱含層采用的應(yīng)激函數(shù)S(z)設(shè)置為:
(13)
其中:k表示一個(gè)控制應(yīng)激函數(shù)陡峭性的調(diào)整因子;z表示該應(yīng)激函數(shù)的輸入值。
量子粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法的實(shí)現(xiàn)過程如下:
① 創(chuàng)建BP神經(jīng)網(wǎng)絡(luò);
② 初始化粒子群,設(shè)定種群規(guī)模及相關(guān)參數(shù)并完成迭代過程;
③ 評(píng)估粒子的適應(yīng)度以便得到每個(gè)粒子的個(gè)體極值和全局極值,并記錄全局極值;
④ 對(duì)于每個(gè)粒子的極值都要進(jìn)行實(shí)時(shí)的更新,如式(12)所示;
⑤ 重新計(jì)算每個(gè)粒子的適應(yīng)度,并記錄全局極值;
⑥ 判斷是否滿足收斂條件,是則跳轉(zhuǎn)下一步,否則繼續(xù)執(zhí)行步驟3;
⑦ 通過獲得的最佳位置對(duì)全局最佳值(BP神經(jīng)網(wǎng)絡(luò)各層的連接權(quán)值和閾值)進(jìn)行更新,算法運(yùn)行結(jié)束。
基于量子粒子群優(yōu)化BP算法的軟件缺陷預(yù)測(cè)模型如圖3所示。
本文采用NASA提供的MDP 軟件信息數(shù)據(jù)集(arff文件格式)[12-14],對(duì)基于量子粒子群優(yōu)化BP算法(QPSO-BP)的軟件缺陷預(yù)測(cè)模型進(jìn)行驗(yàn)證分析和性能對(duì)比。具體使用MDP數(shù)據(jù)集中的7個(gè)數(shù)據(jù)集文件進(jìn)行了軟件缺陷預(yù)測(cè),其相關(guān)信息如表1所示。實(shí)驗(yàn)環(huán)境:Windows 10操作系統(tǒng),6 GB內(nèi)存。在Eclipse平臺(tái)上采用Java開發(fā)語(yǔ)言進(jìn)行具體編程實(shí)現(xiàn)。設(shè)定學(xué)習(xí)率為0.02,訓(xùn)練次數(shù)為10 000次,最大誤差為0.002。
圖3 軟件缺陷預(yù)測(cè)模型
名稱訓(xùn)練文件大小/KB學(xué)習(xí)樣本數(shù)驗(yàn)證文件大小/KB驗(yàn)證抽取樣本數(shù)MC19469 2772341 988MC21912719125PC19975992705PC21811 58590745PC31451 1251391 077PC41691 3991581 287PC51 63717 0012191 711
為了對(duì)提出模型的性能進(jìn)行量化分析,選用3種常用的評(píng)價(jià)準(zhǔn)則[15-17]:均值誤差平方和、回歸曲線方程的相關(guān)指數(shù)和準(zhǔn)確度來比較模型的預(yù)測(cè)能力。均值誤差平方和的計(jì)算方法如式(14)所示。
(14)
(15)
其中:yave表示yi的均值;RSq的數(shù)值越接近1,可靠性評(píng)估性能越好。準(zhǔn)確度的計(jì)算方法如式(16)所示:
(16)
其中:T表示正確預(yù)測(cè)的模塊數(shù)量;C表示觀測(cè)數(shù)據(jù)實(shí)例的總數(shù)。準(zhǔn)確度的數(shù)值越高越好。
表2分別列出了基于傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)、PSO-BP和QPSO-BP的3種軟件缺陷預(yù)測(cè)模型在7個(gè)數(shù)據(jù)集文件上的預(yù)測(cè)結(jié)果。
表2 不同模型的預(yù)測(cè)結(jié)果
從7個(gè)數(shù)據(jù)集文件上的預(yù)測(cè)結(jié)果可以看出:相比其他2種基于BP神經(jīng)網(wǎng)絡(luò)的軟件缺陷預(yù)測(cè)模型,基于量子粒子群優(yōu)化BP算法的軟件缺陷預(yù)測(cè)模型的性能最佳,準(zhǔn)確度最高。從表2中可以看出:本文提出模型的MSE數(shù)值均最小,分別為98.86、8.92、58.47、127.46、143.8、21.57和62.82。RSq數(shù)值均接近1,分別為0.993、0.99、0.982、0.898、0.971、0.96、0.973。7組預(yù)測(cè)的準(zhǔn)確度結(jié)果也最高,均能達(dá)到90%左右。
3種軟件缺陷預(yù)測(cè)模型的預(yù)測(cè)計(jì)算時(shí)間結(jié)果如圖2所示??梢钥闯觯合啾然趥鹘y(tǒng)BP神經(jīng)網(wǎng)絡(luò)和PSO-BP的方法,基于量子粒子群優(yōu)化BP算法的軟件缺陷預(yù)測(cè)模型所需的學(xué)習(xí)時(shí)間最短。這是由于量子粒子群優(yōu)化算法更容易實(shí)現(xiàn),且所需的調(diào)節(jié)參數(shù)更少。
圖4 軟件缺陷預(yù)測(cè)的計(jì)算時(shí)間對(duì)比
本文將量子粒子群算法和BP神經(jīng)網(wǎng)絡(luò)相結(jié)合,提出了一種基于QPSO-BP的軟件缺陷預(yù)測(cè)模型。提出的優(yōu)化方法能更有效地提高BP神經(jīng)網(wǎng)絡(luò)的收斂速度,防止陷入局部極小。仿真實(shí)驗(yàn)結(jié)果顯示:相比傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)和粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò),提出軟件預(yù)測(cè)模型的準(zhǔn)確率、效率均得到有效提高。但是,提出算法的預(yù)測(cè)精度仍有提升空間,后續(xù)將會(huì)對(duì)BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)做進(jìn)一步改進(jìn)和優(yōu)化。