







摘 要: 針對傳統(tǒng)軟件測試成本高及測試過程依賴于軟件用例的設(shè)置等問題,設(shè)計了基于BP,JCUDA_BP和JCUDASA_BP的軟件缺陷預(yù)測模型,并通過調(diào)研、實驗的方式對基于改進(jìn)BP算法的軟件缺陷預(yù)測算法進(jìn)行了相關(guān)的研究分析,探討了JCUDA技術(shù)對于BP算法的影響,證明了模擬退火算法與JCUDA技術(shù)相結(jié)合的方式具有改進(jìn)軟件缺陷預(yù)測模型的可能性。
關(guān)鍵詞: 缺陷預(yù)測模型; 模擬退火算法; JCUDA技術(shù); BP算法
中圖分類號: TN915?34; TQ028.1 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2016)11?0136?05
Abstract: Since the cost of traditional software testing is high, and the test process relies on the set of software use case, a software defect prediction model based on BP, JCUDA_BP and JCUDASA_BP was designed. The software defect prediction algorithm based on improved BP algorithm is relevantly researched and analyzed by means of survey and experiment. The influence of JCUDA technology on BP algorithm is discussed, which proved that the combination of simulated annealing algorithm and JCUDA technology can improve the software defect prediction model.
Keywords: defect prediction model; simulated annealing algorithm; JCUDA technology; BP algorithm
隨著軟件應(yīng)用領(lǐng)域的不斷延伸,軟件系統(tǒng)安全日益受到研究人員的重視,軟件測試等方法已經(jīng)越來越受到工程人員的重視。伴隨著IT行業(yè)人工成本的不斷上漲,軟件測試的成本更是水漲船高[1]。因此,如何便捷、快速、優(yōu)質(zhì)地進(jìn)行軟件測試或發(fā)現(xiàn)軟件缺陷已經(jīng)成為一個難以避免的問題,如何通過機器快速、準(zhǔn)確地進(jìn)行軟件缺陷預(yù)測也就成為研究的一個熱點[2]。所以,如何建立合理的軟件缺陷預(yù)測模型成為近年來的研究重點。本文以通過一系列的實驗,研究驗證了將BP算法運用于軟件缺陷預(yù)測模型的可行性,分析其存在的缺陷,提出基于JCUDA的BP算法的預(yù)測模型和基于改進(jìn)BP算法的預(yù)測模型,并通過實驗分析,證明了模擬退火算法與JCUDA技術(shù)結(jié)合的方式具有改進(jìn)軟件缺陷預(yù)測模型的可能性。
1 BP算法運用于軟件缺陷預(yù)測模型的可行性研究
BP算法是一個前向傳播與后向反饋相互結(jié)合的過程,前向過程用于求出當(dāng)前神經(jīng)網(wǎng)絡(luò)權(quán)值情況下的輸出值,利用誤差行程反饋信息[3?4]。然后利用反饋信息對神經(jīng)網(wǎng)絡(luò)進(jìn)行進(jìn)一步的修正以獲得新的求解結(jié)果。多次反復(fù),直至前向神經(jīng)網(wǎng)絡(luò)計算的誤差值能夠被用戶接受,這時BP神經(jīng)網(wǎng)絡(luò)處于當(dāng)前最優(yōu)解的情況,也就是BP神經(jīng)網(wǎng)絡(luò)完成了反饋操作。該算法流程圖如圖1所示。
基于BP算法的軟件缺陷預(yù)測模型包含一個輸入層、一個隱含層和一個輸出層[5]。將軟件缺陷模型的相關(guān)數(shù)據(jù)作為BP算法的學(xué)習(xí)樣本,利用BP神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進(jìn)行學(xué)習(xí),從而對未知的軟件數(shù)據(jù)進(jìn)行預(yù)測以獲得較好的預(yù)測效果。采用MDP數(shù)據(jù)集作為實驗數(shù)據(jù),采用對比實驗的方式對基于BP的軟件缺陷模型的預(yù)測效果進(jìn)行分析。實驗表明,BP算法能夠有效地對軟件缺陷進(jìn)行預(yù)測。但是基于BP算法的軟件缺陷預(yù)測模型仍然存在易陷入局部最小值、BP網(wǎng)絡(luò)基本參數(shù)較難確認(rèn)、計算時間過長和訓(xùn)練結(jié)果依賴學(xué)習(xí)樣本等不足。
2 基于JCUDA_BP算法的軟件缺陷預(yù)測模型研究
利用JCUDA進(jìn)行BP算法優(yōu)化設(shè)計時,采用CPU與GPU都承擔(dān)部分計算工作的協(xié)同方式,即具有較強并行性的計算交由GPU進(jìn)行處理,CPU既負(fù)責(zé)管理GPU也進(jìn)行部分的非并行性計算。有效地激發(fā)GPU/CPU的計算能力,從而使基于JCUDA_BP算法的軟件缺陷模型具有更高的計算效率,具體實現(xiàn)過程如下:
其中:表示第個樣本組合計算完的誤差值;表示全部樣本集計算的平均誤差值。
(2) 基于JCUDA_BP算法利用BP算法的反向誤差對BP神經(jīng)網(wǎng)絡(luò)內(nèi)的權(quán)值進(jìn)行調(diào)整。調(diào)整完成后,驗證誤差值范圍是否滿足需求。如果誤差仍然無法滿足BP算法的準(zhǔn)確性要求,則反復(fù)進(jìn)行迭代,直至獲得最佳的學(xué)習(xí)效果。結(jié)合JCUDA_BP算法的軟件缺陷,預(yù)測算法利用多線程、數(shù)據(jù)分組的方式加快BP算法效果。軟件缺陷預(yù)測模型是采用與BP網(wǎng)絡(luò)相似的網(wǎng)絡(luò)結(jié)構(gòu),利用JCUDA算法對軟件缺陷預(yù)測的運行時間進(jìn)行優(yōu)化、模擬。CPU承擔(dān)誤差求解與驗證的任務(wù),同時實現(xiàn)GPU運行監(jiān)測的工作。
基于JCUDA_BP算法對軟件缺陷信息學(xué)習(xí)的學(xué)習(xí)過程如下:
① CPU、GPU內(nèi)完成BP神經(jīng)網(wǎng)絡(luò)初始化;
② 利用JCUDA編程技術(shù)實現(xiàn)BP算法在JCUDA上的學(xué)習(xí)過程;
③ 采用CPU存儲BP算法的計算結(jié)果;
④ 利用CPU對GPU內(nèi)數(shù)據(jù)計算的效果進(jìn)行分析與監(jiān)控。
BP算法采用JCUDA實現(xiàn)是將BP計算迭代的過程置于GPU內(nèi)進(jìn)行計算,利用CPU對學(xué)習(xí)過程誤差進(jìn)行分析,調(diào)整GPU內(nèi)神經(jīng)網(wǎng)絡(luò)拓?fù)鋱D內(nèi)邊的權(quán)值。其中BP算法的相關(guān)處理流程如圖2所示。
3 基于改進(jìn)BP算法的軟件缺陷預(yù)測模型研究
4 實驗分析
4.1 基于JCUDA_BP算法的軟件缺陷預(yù)測模型實驗分析
基于BP與基于JCUDA_BP的軟件缺陷預(yù)測模型的評估實驗采用MDP數(shù)據(jù)集作為實驗數(shù)據(jù),如表1所示。實驗采用Eclipse作為編程環(huán)境,使用基于Java的JCUDA技術(shù)實現(xiàn)GPU與CPU下的編程操作。
本試驗結(jié)果與分析從“基于BP的軟件缺陷預(yù)測與基于JCUDA_BP算法的軟件缺陷預(yù)測對比分析”和“基于不同隱含節(jié)點個數(shù)JCUDA_BP對軟件缺陷預(yù)測的影響的分析”兩方面入手,說明基于JCUDA_BP的軟件缺陷預(yù)測算法與基于BP的軟件缺陷算法的差異和JCUDA_BP可能會在實際使用中產(chǎn)生的問題與影響。
(1) 速率改進(jìn)實驗結(jié)果與分析
在實驗數(shù)據(jù)相同的情況下,不同數(shù)據(jù)集用JCUDA優(yōu)化的軟件缺陷預(yù)測模型和基于BP算法的軟件缺陷預(yù)測模型進(jìn)行計算,計算GPU學(xué)習(xí)過程與CPU學(xué)習(xí)過程消耗時間的差值,計算該差值與CPU計算時間求得優(yōu)化率,具體結(jié)果見表2。
分析實驗結(jié)果可知,針對MDP軟件模塊信息數(shù)據(jù)集,基于JCUDA技術(shù)改進(jìn)的BP算法一定程度上能夠?qū)W(xué)習(xí)過程進(jìn)行優(yōu)化,獲得較好的優(yōu)化效果。但是,該優(yōu)化過程在軟件缺陷模型學(xué)習(xí)樣本較多時優(yōu)化效果明顯;如果學(xué)習(xí)樣本較少則優(yōu)化效果不理想。
(2) 隱含節(jié)點實驗結(jié)果與分析
PC5隱含節(jié)點數(shù)與GPU\CPU處理時間對照:
實驗結(jié)果表明:當(dāng)隱含節(jié)點個數(shù)增加時,GPU與CPU運行BP軟件缺陷模擬算法的時間都會增加,但是隨著隱含節(jié)點個數(shù)的增加GPU計算的時間會優(yōu)于CPU計算時間,即當(dāng)隱含節(jié)點個數(shù)達(dá)到一個數(shù)量級以后,GPU的優(yōu)化后的BP算法效果遠(yuǎn)好于CPU下的BP算法,學(xué)習(xí)效果會得到提升。當(dāng)隱含節(jié)點較少時,軟件缺陷預(yù)測速度、CPU的處理時間更短。
4.2 基于改進(jìn)BP算法的軟件缺陷預(yù)測模型實驗分析
本實驗使用的數(shù)據(jù)集及實驗環(huán)境同第4.1節(jié)。在基于JCUDASA_BP算法的軟件缺陷預(yù)測研究的實驗過程中,BP算法的輸入?yún)?shù)設(shè)置為37個,輸出參數(shù)設(shè)置為1個,學(xué)習(xí)率設(shè)置為0.01,訓(xùn)練次數(shù)設(shè)置為10 000次,誤差允許值設(shè)置為0.001。該實驗主要從準(zhǔn)確性和效率兩個方面進(jìn)行分析。
(1) 改進(jìn)算法準(zhǔn)確性分析
改進(jìn)算法準(zhǔn)確性實驗主要說明“基于JCUDASA_BP的軟件缺陷預(yù)測的準(zhǔn)確性分析的實驗結(jié)果”。利用該實驗結(jié)果與基于BP算法的軟件缺陷預(yù)測結(jié)果進(jìn)行對比,分析基于模擬退火算法改進(jìn)的軟件缺陷預(yù)測模型的預(yù)測效果,具體對比結(jié)果如表4所示。
由表4對比可知,基于JCUDASA_BP算法對于軟件缺陷預(yù)測的準(zhǔn)確性優(yōu)于基于BP算法的軟件缺陷預(yù)測,并且能夠較好地避免局部最優(yōu)解的出現(xiàn)。
(2) 改進(jìn)算法效率分析
改進(jìn)算法效率實驗對比分析基于BP算法的軟件缺陷預(yù)測模型、基于JCUDA_BP算法的軟件缺陷預(yù)測模型、基于JCUDASA_BP算法軟件缺陷預(yù)測模型針對MDP軟件信息數(shù)據(jù)集中軟件模塊信息學(xué)習(xí)過程時間的長短,其實驗結(jié)果如表5所示。
分析實驗結(jié)果可知:當(dāng)數(shù)據(jù)集較少時,由于基于JCUDA改進(jìn)的BP算法需耗費一定時間進(jìn)行GPU啟動,基于JCUDASA_BP算法需要消耗較多時間進(jìn)行模擬退火算法計算。因此,數(shù)據(jù)集較少時,傳統(tǒng)BP算法的軟件缺陷預(yù)測模型對于軟件缺陷數(shù)據(jù)的預(yù)測速率較高;當(dāng)數(shù)據(jù)集較多時,利用傳統(tǒng)BP算法對于軟件缺陷信息的學(xué)習(xí)時間長于基于JCUDA技術(shù)改進(jìn)的BP算法的學(xué)習(xí)時間。其主要原因是JCUDA技術(shù)對計算量進(jìn)行了分解,加速了運行速度。基于JCUDASA_BP算法進(jìn)行的軟件缺陷預(yù)測學(xué)習(xí)過程消耗的時間較長,其主要原因是由于模擬退火算法對原始算法的影響較大,其迭代計算的過程消耗了較多的計算時間。
5 結(jié) 論
本文對基于BP的軟件缺陷預(yù)測模型、基于JCUDA_BP的軟件缺陷預(yù)測模型和基于JCUDASA_BP的軟件缺陷預(yù)測模型進(jìn)行了相關(guān)研究,驗證了BP算法在軟件缺陷預(yù)測模型中使用的可行性。分析上述算法的不足,證明了JCUDA技術(shù)能夠幫助BP算法進(jìn)行處理優(yōu)化,但是不能有效地解決陷入局部最小值的情況,基于改進(jìn)的BP算法的軟件缺陷預(yù)測模型通過結(jié)合模擬退火算法可以實現(xiàn)防止陷入局部最小值的情況,能夠獲得較好的處理效果。然而本文所提出軟件缺陷預(yù)測模型算法仍未對數(shù)據(jù)做出更好的預(yù)處理,在未來的工作中,后期需要對預(yù)處理進(jìn)行深入的總結(jié),通過優(yōu)化學(xué)習(xí)樣本獲得更高效的學(xué)習(xí)樣本。
參考文獻(xiàn)
[1] 韓璐,荊曉遠(yuǎn).一種新型軟件缺陷預(yù)測模型研究[J].南京郵電大學(xué)學(xué)報(自然科學(xué)版),2015, 35(1):95?101.
[2] 尹然,丁曉明,李小亮,等.基于SA?BP神經(jīng)網(wǎng)絡(luò)的軟件缺陷預(yù)測模型的研究[J].西南師范大學(xué)學(xué)報(自然科學(xué)版),2013,38(8):147?152.
[3] 張麗紅,王艷.基于回歸神經(jīng)網(wǎng)絡(luò)自適應(yīng)快速BP算法[J].計算機測量與控制,2015,12(5):480?482.
[4] 侯彥東,方惠敏,楊國勝,等.一種改進(jìn)的可變學(xué)習(xí)速率的BP神經(jīng)網(wǎng)絡(luò)算法[J].河南大學(xué)學(xué)報(自然科學(xué)版),2015,38(3):309?312.
[5] YIN R, DING X M, LI X L, et al. Research on software defect prediction model based on SA?BP [J]. Journal of Southwest China Normal University, 2013(8): 120?139.
[6] FAN Xiujuan, LI Chenguo. The research in yarn quality prediction model based on an improved BP algorithm [C]// Procee?dings of 2009 WRI World Congress on Computer Science and Information Engineering. US: IEEE, 2009: 167?172.
[7] 張少迪.基于PSO?BP神經(jīng)網(wǎng)絡(luò)的短期負(fù)荷預(yù)測算法[J].現(xiàn)代電子技術(shù),2013,36(12):155?158.
[8] 朱旭東,梁光明,馮雁.基于改進(jìn)SFS特征選擇BP識別算法[J].現(xiàn)代電子技術(shù),2015,38(12):1?4.