摘 要: 針對傳統(tǒng)軟件測試成本高及測試過程依賴于軟件用例的設置等問題,設計了基于BP,JCUDA_BP和JCUDASA_BP的軟件缺陷預測模型,并通過調研、實驗的方式對基于改進BP算法的軟件缺陷預測算法進行了相關的研究分析,探討了JCUDA技術對于BP算法的影響,證明了模擬退火算法與JCUDA技術相結合的方式具有改進軟件缺陷預測模型的可能性。
關鍵詞: 缺陷預測模型; 模擬退火算法; JCUDA技術; BP算法
中圖分類號: TN915?34; TQ028.1 文獻標識碼: 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
隨著軟件應用領域的不斷延伸,軟件系統(tǒng)安全日益受到研究人員的重視,軟件測試等方法已經越來越受到工程人員的重視。伴隨著IT行業(yè)人工成本的不斷上漲,軟件測試的成本更是水漲船高[1]。因此,如何便捷、快速、優(yōu)質地進行軟件測試或發(fā)現(xiàn)軟件缺陷已經成為一個難以避免的問題,如何通過機器快速、準確地進行軟件缺陷預測也就成為研究的一個熱點[2]。所以,如何建立合理的軟件缺陷預測模型成為近年來的研究重點。本文以通過一系列的實驗,研究驗證了將BP算法運用于軟件缺陷預測模型的可行性,分析其存在的缺陷,提出基于JCUDA的BP算法的預測模型和基于改進BP算法的預測模型,并通過實驗分析,證明了模擬退火算法與JCUDA技術結合的方式具有改進軟件缺陷預測模型的可能性。
1 BP算法運用于軟件缺陷預測模型的可行性研究
BP算法是一個前向傳播與后向反饋相互結合的過程,前向過程用于求出當前神經網絡權值情況下的輸出值,利用誤差行程反饋信息[3?4]。然后利用反饋信息對神經網絡進行進一步的修正以獲得新的求解結果。多次反復,直至前向神經網絡計算的誤差值能夠被用戶接受,這時BP神經網絡處于當前最優(yōu)解的情況,也就是BP神經網絡完成了反饋操作。該算法流程圖如圖1所示。
基于BP算法的軟件缺陷預測模型包含一個輸入層、一個隱含層和一個輸出層[5]。將軟件缺陷模型的相關數(shù)據作為BP算法的學習樣本,利用BP神經網絡對數(shù)據進行學習,從而對未知的軟件數(shù)據進行預測以獲得較好的預測效果。采用MDP數(shù)據集作為實驗數(shù)據,采用對比實驗的方式對基于BP的軟件缺陷模型的預測效果進行分析。實驗表明,BP算法能夠有效地對軟件缺陷進行預測。但是基于BP算法的軟件缺陷預測模型仍然存在易陷入局部最小值、BP網絡基本參數(shù)較難確認、計算時間過長和訓練結果依賴學習樣本等不足。
2 基于JCUDA_BP算法的軟件缺陷預測模型研究
利用JCUDA進行BP算法優(yōu)化設計時,采用CPU與GPU都承擔部分計算工作的協(xié)同方式,即具有較強并行性的計算交由GPU進行處理,CPU既負責管理GPU也進行部分的非并行性計算。有效地激發(fā)GPU/CPU的計算能力,從而使基于JCUDA_BP算法的軟件缺陷模型具有更高的計算效率,具體實現(xiàn)過程如下:
其中:表示第個樣本組合計算完的誤差值;表示全部樣本集計算的平均誤差值。
(2) 基于JCUDA_BP算法利用BP算法的反向誤差對BP神經網絡內的權值進行調整。調整完成后,驗證誤差值范圍是否滿足需求。如果誤差仍然無法滿足BP算法的準確性要求,則反復進行迭代,直至獲得最佳的學習效果。結合JCUDA_BP算法的軟件缺陷,預測算法利用多線程、數(shù)據分組的方式加快BP算法效果。軟件缺陷預測模型是采用與BP網絡相似的網絡結構,利用JCUDA算法對軟件缺陷預測的運行時間進行優(yōu)化、模擬。CPU承擔誤差求解與驗證的任務,同時實現(xiàn)GPU運行監(jiān)測的工作。
基于JCUDA_BP算法對軟件缺陷信息學習的學習過程如下:
① CPU、GPU內完成BP神經網絡初始化;
② 利用JCUDA編程技術實現(xiàn)BP算法在JCUDA上的學習過程;
③ 采用CPU存儲BP算法的計算結果;
④ 利用CPU對GPU內數(shù)據計算的效果進行分析與監(jiān)控。
BP算法采用JCUDA實現(xiàn)是將BP計算迭代的過程置于GPU內進行計算,利用CPU對學習過程誤差進行分析,調整GPU內神經網絡拓撲圖內邊的權值。其中BP算法的相關處理流程如圖2所示。
3 基于改進BP算法的軟件缺陷預測模型研究
4 實驗分析
4.1 基于JCUDA_BP算法的軟件缺陷預測模型實驗分析
基于BP與基于JCUDA_BP的軟件缺陷預測模型的評估實驗采用MDP數(shù)據集作為實驗數(shù)據,如表1所示。實驗采用Eclipse作為編程環(huán)境,使用基于Java的JCUDA技術實現(xiàn)GPU與CPU下的編程操作。
本試驗結果與分析從“基于BP的軟件缺陷預測與基于JCUDA_BP算法的軟件缺陷預測對比分析”和“基于不同隱含節(jié)點個數(shù)JCUDA_BP對軟件缺陷預測的影響的分析”兩方面入手,說明基于JCUDA_BP的軟件缺陷預測算法與基于BP的軟件缺陷算法的差異和JCUDA_BP可能會在實際使用中產生的問題與影響。
(1) 速率改進實驗結果與分析
在實驗數(shù)據相同的情況下,不同數(shù)據集用JCUDA優(yōu)化的軟件缺陷預測模型和基于BP算法的軟件缺陷預測模型進行計算,計算GPU學習過程與CPU學習過程消耗時間的差值,計算該差值與CPU計算時間求得優(yōu)化率,具體結果見表2。
分析實驗結果可知,針對MDP軟件模塊信息數(shù)據集,基于JCUDA技術改進的BP算法一定程度上能夠對學習過程進行優(yōu)化,獲得較好的優(yōu)化效果。但是,該優(yōu)化過程在軟件缺陷模型學習樣本較多時優(yōu)化效果明顯;如果學習樣本較少則優(yōu)化效果不理想。
(2) 隱含節(jié)點實驗結果與分析
PC5隱含節(jié)點數(shù)與GPU\CPU處理時間對照:
實驗結果表明:當隱含節(jié)點個數(shù)增加時,GPU與CPU運行BP軟件缺陷模擬算法的時間都會增加,但是隨著隱含節(jié)點個數(shù)的增加GPU計算的時間會優(yōu)于CPU計算時間,即當隱含節(jié)點個數(shù)達到一個數(shù)量級以后,GPU的優(yōu)化后的BP算法效果遠好于CPU下的BP算法,學習效果會得到提升。當隱含節(jié)點較少時,軟件缺陷預測速度、CPU的處理時間更短。
4.2 基于改進BP算法的軟件缺陷預測模型實驗分析
本實驗使用的數(shù)據集及實驗環(huán)境同第4.1節(jié)。在基于JCUDASA_BP算法的軟件缺陷預測研究的實驗過程中,BP算法的輸入參數(shù)設置為37個,輸出參數(shù)設置為1個,學習率設置為0.01,訓練次數(shù)設置為10 000次,誤差允許值設置為0.001。該實驗主要從準確性和效率兩個方面進行分析。
(1) 改進算法準確性分析
改進算法準確性實驗主要說明“基于JCUDASA_BP的軟件缺陷預測的準確性分析的實驗結果”。利用該實驗結果與基于BP算法的軟件缺陷預測結果進行對比,分析基于模擬退火算法改進的軟件缺陷預測模型的預測效果,具體對比結果如表4所示。
由表4對比可知,基于JCUDASA_BP算法對于軟件缺陷預測的準確性優(yōu)于基于BP算法的軟件缺陷預測,并且能夠較好地避免局部最優(yōu)解的出現(xiàn)。
(2) 改進算法效率分析
改進算法效率實驗對比分析基于BP算法的軟件缺陷預測模型、基于JCUDA_BP算法的軟件缺陷預測模型、基于JCUDASA_BP算法軟件缺陷預測模型針對MDP軟件信息數(shù)據集中軟件模塊信息學習過程時間的長短,其實驗結果如表5所示。
分析實驗結果可知:當數(shù)據集較少時,由于基于JCUDA改進的BP算法需耗費一定時間進行GPU啟動,基于JCUDASA_BP算法需要消耗較多時間進行模擬退火算法計算。因此,數(shù)據集較少時,傳統(tǒng)BP算法的軟件缺陷預測模型對于軟件缺陷數(shù)據的預測速率較高;當數(shù)據集較多時,利用傳統(tǒng)BP算法對于軟件缺陷信息的學習時間長于基于JCUDA技術改進的BP算法的學習時間。其主要原因是JCUDA技術對計算量進行了分解,加速了運行速度?;贘CUDASA_BP算法進行的軟件缺陷預測學習過程消耗的時間較長,其主要原因是由于模擬退火算法對原始算法的影響較大,其迭代計算的過程消耗了較多的計算時間。
5 結 論
本文對基于BP的軟件缺陷預測模型、基于JCUDA_BP的軟件缺陷預測模型和基于JCUDASA_BP的軟件缺陷預測模型進行了相關研究,驗證了BP算法在軟件缺陷預測模型中使用的可行性。分析上述算法的不足,證明了JCUDA技術能夠幫助BP算法進行處理優(yōu)化,但是不能有效地解決陷入局部最小值的情況,基于改進的BP算法的軟件缺陷預測模型通過結合模擬退火算法可以實現(xiàn)防止陷入局部最小值的情況,能夠獲得較好的處理效果。然而本文所提出軟件缺陷預測模型算法仍未對數(shù)據做出更好的預處理,在未來的工作中,后期需要對預處理進行深入的總結,通過優(yōu)化學習樣本獲得更高效的學習樣本。
參考文獻
[1] 韓璐,荊曉遠.一種新型軟件缺陷預測模型研究[J].南京郵電大學學報(自然科學版),2015, 35(1):95?101.
[2] 尹然,丁曉明,李小亮,等.基于SA?BP神經網絡的軟件缺陷預測模型的研究[J].西南師范大學學報(自然科學版),2013,38(8):147?152.
[3] 張麗紅,王艷.基于回歸神經網絡自適應快速BP算法[J].計算機測量與控制,2015,12(5):480?482.
[4] 侯彥東,方惠敏,楊國勝,等.一種改進的可變學習速率的BP神經網絡算法[J].河南大學學報(自然科學版),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].現(xiàn)代電子技術,2013,36(12):155?158.
[8] 朱旭東,梁光明,馮雁.基于改進SFS特征選擇BP識別算法[J].現(xiàn)代電子技術,2015,38(12):1?4.