莫有印



摘 ?要: 軟件缺陷檢測的主要目的是對程序模塊中是否存在缺陷進行自動檢測,以此有效促進軟件的測試進程,使軟件系統質量得到提高。針對傳統軟件缺陷預測模型的問題,提出在軟件缺陷預測模型中使用粒子群優化BP算法。此模型使用粒子群優化算法對BP神經網絡權值及閾值進行優化,通過交叉驗證方法實現實驗,并且同傳統機器學習方法及BP神經網絡等方法進行對比,實驗結果表明提出的方法預測精準性比較高。
關鍵詞: 軟件缺陷; 預測模型; 量子粒子群; BP算法; 交叉驗證; 預測精準性
中圖分類號: TN911.1?34 ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2019)15?0127?04
Abstract: The main purpose of software defect detection is to automatically detect whether there are defects in the program module, which can promote the software testing process effectively and improve the quality of the software system. In allusion to the traditional software defect prediction model, the BP algorithm optimized by quantum particle swarm used in the software defect prediction model is proposed. This model uses particle swarm optimization algorithm to optimize the weights and thresholds of BP neural network. The experiment is carried out with cross?validation method. The method is compared with traditional machine learning method and BP neural network method. The experimental results show that the proposed method has high prediction accuracy.
Keywords: software defect; prediction model; quantum particle swarm optimization; BP algorithm; cross?validation; prediction accuracy
0 ?引 ?言
隨著互聯網時代的到來,市場對于軟件產品質量要求也在持續提高,軟件的可靠性、安全性與人們的財產及生命安全密切相關。所以,研究軟件安全,保證每個服務軟件都是安全且穩定的很有必要[1]。目前軟件缺陷預測方法主要包括線性判別、支持向量機、人工神經網絡、分類回歸樹等。但是傳統預測模型都是通過軟件缺陷相應數據實現統計分析,大部分都存在問題。比如,線性判別不滿足非高斯分布樣本降維,會出現擬合數據。所以,選擇參數對于支持向量機尤為重要,但是無法使用良好的方法選擇。分類回歸樹的泛化性能比較差,人工神經網絡的收斂速度比較慢。目前,對于軟件缺陷預測的方法比較多,它們都有優點和缺點,量子粒子群優化BP算法是目前常見且實用的方法[2]。綜上,本文提出量子粒子群優化BP算法,并將其應用在軟件缺陷預測模型中,結果表明改進算法不僅能夠解決自身缺點,還能夠實現BP網絡的優化。
1 ?相應工作
1.1 ?改進粒子群算法
標準粒子群算法將復雜適應系統作為基礎,屬于具備隨機性的搜索算法,其也是群集智能,通過眾人合力解決問題。[w]屬于標準粒子群算法較為重要并且能夠改變的參數,對于算法改進具有重要的作用。在[w]增大時,速度就會變小,對全局搜索有利。在[w]減小時,速度會縮小,對局部搜索有利。如何對[w]的值進行控制,使其能夠有效解決問題是研究過程中的熱點[3]。相關研究提出線性遞減慣性權重,也就是LDW,通過線性方式改變[w],從而提高算法的收斂性:
通過以上公式可知:在[t]值小時,[w]近似與[wmax]相等,[w]取值比較大時,對全局搜索是非常有利的;在[t]不斷增加的過程中,[w]非線性減小,[w]值比較小時,能夠保證算法良好的局部搜索能力,以此對全局搜索及局部搜索進行靈活調整[4]。
1.2 ?神經網絡
目前神經網絡種類比較多,其使用領域較為廣泛,在較為常見的模型中,大部分都是利用BP神經網絡實現,其屬于根據誤差反向傳播,具有教師監督的典型多層前向學習算法。良好的學習規則是算法學習能力的基礎,梯度下降法對BP神經網絡的學習進行了規約,是調整降低網絡總誤差的有效方法[5]。一般,使用三層結構網絡能夠使優化設計問題得到解決,所以,大多使用三層神經網絡,也就是輸入、輸出及隱含三層。在有信號輸入時,并且信號正向傳播,下層神經元狀態會受到上層影響。如果在輸出層沒有得到期望輸出,就會出現反向傳播。在進行反向傳播過程中的各層神經元值在不斷調整,降低誤差信號[6],整個過程為:
1) 網絡初始化。每層都有各自的權系數[wij],隨機給定比較小的非零數,實現各層閾值初始化,對學習速率和神經元激勵函數進行確定。
2) 各層輸出計算。首先,實現樣本[X=(x1,x2,…,xn])的輸入,實現[Y=(y1,y2,…,yn)]的輸出,通過以下公式對神經元輸出進行計算:
式中:[H]屬于隱含層輸出;[i]為節點數;[a]為閾值;[f]為激勵函數;[wij]為輸入層及隱含層的連接權值;[O]指的是輸出層輸出;[b]指的是閾值;[wki]指的是隱含層和輸出層的連接權值。
3) 對網絡輸出[O]及期望輸出[O1]的誤差[e]進行計算:
4) 更新網絡連接及閾值:
2 ?創建軟件缺陷預測模型
2.1 ?軟件缺陷預測模型
量子粒子群BP算法的軟件缺陷預測模型流程圖如圖1所示。

軟件缺陷預測模型的步驟為:
1) 得到軟件缺陷數據集;
2) 以訓練樣本為基礎,創建BP神經網絡軟件缺陷預測模型,使用sigmoid轉移函數及三層網絡結構;
3) 通過PSO算法對BP網絡閾值及權值進行優化;
4) 使用測試樣例對模型進行分類預測,假如預測結果滿足終止條件,則停止優化,從而得出優化軟件預測模型。否則,返回步驟3),繼續優化模型。
基于終止條件,模型對精準率進行預測,對閾值及循環次數進行設置,并以此設置最大值[8]。
2.2 ?優化BP神經網絡
要求BP神經網絡誤差梯度下降法的函數可導、可微,那么就使用量子粒子群實現BP神經網絡閾值及權值的優化,從而實現BP算法缺陷的改進,使泛化性能得到提高。簡單來說,也就是使用粒子群優化算法對每個粒子在不同方向中的速度及位置到BP神經網絡閾值及權值的映射進行計算,所以粒子在群體及個體經驗指導中能夠尋找群體最優解,其主要步驟為:
1) 粒子群初始化。實現粒子群規模的設置,并且設置粒子位置、速度和向量維度。本文中的粒子規模設置為30,BP神經網絡及向量維數的閾值、權值數量相等。另外,對每個粒子速度、位置和個體、群體的最優解進行初始化,以經驗將慣量權重設置為0.3,設置加速常數為2,最大進化代數設置為[Tmax]。
2) 對BP神經網絡實現粒子速度及位置分量的映射,根據公式對每個粒子適應度進行計算。
3) 根據以下方法對比適應度:
假如current 其中,current為粒子當前適應值;pbestfit為粒子個體最優值;gbestfit為種群全局最優適應值;pbestfit為粒子個體最優值;gbest為種群全局最優值;[xi]為粒子當前位置。 4) 以上述條件對粒子位置及速度進行更新,一般為了使粒子能夠滿足最佳全局尋優能力,實現速度閾值[Vmax]的設置。 5) 對比迭代次數和[Tmax],假如比[Tmax]要大,那么算法終止,并且目前gbest屬于BP神經網絡優化閾值及權值,否則,就跳轉到步驟2),繼續迭代。 2.3 ?特征屬性預處理 實際項目中的所有訓練和待測數據集都具有大量樣本特征屬性,導致軟件缺陷預測模型具有較為沉重的計算負擔。另外,因為分類中屬性的貢獻程度不同,無法實現屬性的任意添加或者刪除,所以選擇Relief算法對問題進行解決。Relief算法專門為兩種數據分類問題實現設計,能夠對軟件缺陷預測問題實現各特征屬性排名、權重計算,在選擇特征之后,還能夠保證分類模型的精準度,而且具有較高的運行效率,算法如下: 樣本實例空間設置為[T={T1,T2,…,Tn}],其中,[Ti={t1,t2,…,tm}]。 1) 賦值樣本特征屬性權值為0,并且使非數值屬性數值化,之后根據最大最小歸一化方法實現全部數值歸一化處理。 2) 隨機選擇樣本[Ti],并且從其同類型樣本及非同類型樣本中選擇最近鄰樣本,表示為[Thit]及[Tmiss]。 3) 根據以下公式對屬性[tk]的權值進行更新: 式中:[D(Ti,Tj,tk)]指的是[Ti]及[Tj]在屬性[tk]中的歐氏距離;[max(D(tk))]指的是全部樣本在屬性[tk]中的最大歐氏距離。 4) 從步驟3)開始迭代此過程[n]次,最后對特征屬性平均權重進行計算,根據此特征屬性實現排序,之后和特征屬性閾值對比,或者根據預設數量得出最終保留特征屬性的集合,使其能夠支持向量機模型訓練。 3 ?實驗分析 3.1 ?實驗數據 本文中收錄的數據源都是最近一年利用工作檢測項目得出的,保證數據來源的可靠性。通過傳統實驗選擇9個數據集,使其成為本文數據源,表1為實驗數據。表1 ?實驗數據

3.2 ?實驗評估指標
為了實現本文方法有效性的對比,使用對比通用指標,包括查準率、準確率及查全率,利用此指標對軟件預測模型的預測水平進行分析。根據交叉矩陣定義三個指標,指標的定義如表2所示。

3.3 ?實驗結果分析
使用量子粒子群實現BP算法的優化,對比使用傳統粒子群實現BP算法優化,分別創建軟件缺陷預測模型,實驗結果詳見表3。




實驗結果表明,使用量子粒子群優化BP算法的軟件缺陷預測模型比傳統粒子群的能力要強,從而提高了預測能力。在對比精準率過程中,使用本文方法測試9組數據中的7組數據精準率都比較高。在對比查準率的過程中,測試9組數據有8組都能夠提高查準率。查全率中本文方法比傳統粒子群方法要強。
4 ?結 ?語
本文創建的軟件缺陷預測模型在實現數據訓練過程中能夠縮小訓練規模,主要是利用改進粒子群算法實現數據樣本優化,使最優解映射實現分類規則集提取。在研究過程中充分考慮訓練數據值變化范圍,提高尋優復雜性,采用值映射方法使尋優空間大小降低。通過仿真實驗表示,本文所提出的方法能夠使缺陷預測精準率得到提高,還能夠縮小預測時間。
參考文獻
[1] 朱朝陽,陳相舟,王志宏,等.基于粒子群優化SVM的面向對象軟件缺陷預測模型[J].計算機應用,2017,37(z2):60?64.
ZHU Chaoyang, CHEN Xiangzhou, WANG Zhihong, et al. Object?oriented software defect prediction model based on particle swarm optimization SVM [J]. Computer applications, 2017, 37(S2): 60?64.
[2] 張蘭.改進量子粒子群優化算法的神經網絡模型負荷預測[J].西北大學學報(自然科學版),2016,46(5):639?644.
ZHANG Lan. Neural network model load forecasting based on improved quantum particle swarm optimization algorithm [J]. Journal of Northwest University (Natural science edition), 2016, 46(5): 639?644.
[3] 程加堂,艾莉,熊燕.基于IQPSO?BP算法的煤礦瓦斯涌出量預測[J].礦業安全與環保,2016,43(4):38?41.
CHENG Jiatang, AI Li, XIONG Yan. Coal mine gas emission prediction based on IQPSO?BP algorithm [J]. Mining safety and environmental protection, 2016, 43(4): 38?41.
[4] 段志梅,程加堂.量子粒子群優化算法在異步電機轉子機械故障診斷中的應用[J].電機與控制應用,2016,43(3):89?92.
DUAN Zhimei, CHENG Jiatang. Application of quantum particle swarm optimization in fault diagnosis of rotor machinery of asynchronous motor [J]. Motor and control applications, 2016, 43(3): 89?92.
[5] 張宏立,李瑞國,范文慧,等.基于量子粒子群的全參數連分式混沌時間序列預測[J].控制與決策,2016,31(1):52?58.
ZHANG Hongli, LI Ruiguo, FAN Wenhui, et al. Full?parameter continuous fractional chaotic time series prediction based on quantum particle swarm optimization [J]. Control and decision, 2016, 31(1): 52?58.
[6] 孫晨,李陽,李曉戈,等.基于布谷鳥算法優化BP神經網絡模型的股價預測[J].計算機應用與軟件,2016(2):276?279.
SUN Chen, LI Yang, LI Xiaoge, et al. Stock price prediction of BP neural network model based on cuckoo algorithm optimization [J]. Computer applications and software, 2016(2): 276?279.
[7] 張飛.改進PSO?ISVM算法的軟件缺陷預測[J].計算機工程與應用,2016,52(11):17?21.
ZHANG Fei. Software defect prediction based on improved PSO?ISVM algorithm [J]. Computer engineering and applications, 2016, 52(11): 17?21.
[8] 楊照峰,時合生.基于改進QPSO的模糊C?均值聚類算法[J].現代電子技術,2014,37(7):118?120.
YANG Zhaofeng, SHI Hesheng. Fuzzy C?means clustering algorithm based on improved QPSO [J]. Modern electronics technique, 2014, 37(7): 118?120.