白首華 胡天彤



摘? 要: 軟件靜態缺陷預測系統經過常規的優化設計后,泛化能力較差,容易將低缺陷率軟件模塊誤判為高缺陷率軟件模塊。為此,提出微型嵌入式軟件靜態缺陷預測系統優化設計。在優化設計中硬件部分使用原有的硬件結構,分析軟件靜態缺陷預測中的問題,建立軟件靜態缺陷預測模型,得到的學習目標用來訓練樣本,利用分類函數和訓練樣本通過多次迭代實現缺陷預測,完成缺陷系統的優化設計。測試結果表明,在數據集和模塊數相同的情況下,與經過常規優化設計的系統相比,所提系統測試結果未發生誤判情況,與實際數據相符,泛化能力較強,適合應用在實際項目中。
關鍵詞: 微型嵌入式軟件; 缺陷預測; 預測模型; 優化設計; 樣本訓練; 系統測試
中圖分類號: TN911.23?34; TP311? ? ? ? ? ? ? ? 文獻標識碼: A? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2020)10?0097?03
Optimization design of static defect prediction system for miniature embedded software
BAI Shouhua, HU Tiantong
(Zhengzhou University of Aeronautics, Zhengzhou 450046, China)
Abstract: The software static defect prediction system achieved by the conventional optimization design has poor generalization ability, and is easy to misjudge the software module with low defect rate as the one with high defect rate. Therefore, an optimization design of static defect prediction system for miniature embedded software is proposed. In the optimization design, the original hardware structure in the hardware part is still used, the problems in the software static defect prediction are analyzed, the software static defect prediction model is established, the obtained learning objectives are used to training sample, and the classification function and training samples are adopted to realize the defect prediction by multiple iterations. In this way, the optimization design of the defect prediction system is completed. The testing results show that, under the condition of the same number of data sets and modules, in comparison with the system designed by the conventional optimization, the proposed system has no misjudgment, is consistent with the actual data, and has strong generalization ability, which is suitable for the application in the actual project.
Keywords: miniature embedded software; defect prediction; prediction model; optimization design; sample training; system testing
0? 引? 言
微型嵌入式軟件已經被廣泛應用到各行各業中,其自身具有內核小、實時性以及專用性強的特點,一般工作在空間及時間資源嚴重被限制環境中,對軟件質量要求比較高,預測軟件缺陷問題難度較大[1]。在微型嵌入式軟件靜態缺陷預測系統中,靜態缺陷是一個研究熱點。預測程序模塊中是否存在靜態缺陷,若存在靜態缺陷,及時發現并解決,可達到加速軟件測試過程、降低軟件測試成本以及提高系統質量的目的[2]。軟件靜態缺陷存在很多種,如程序缺陷、文檔缺陷和設計缺陷等。常規的微型嵌入式軟件靜態缺陷預測系統優化設計,只優化了預測系統對缺陷分布的預測范圍,但是由于其泛化能力較差,容易出現將低缺陷率模塊誤判為高缺陷率模塊的情況,造成測試成本投入增加[3]。為了解決上述問題,提出微型嵌入式軟件靜態缺陷預測系統優化設計。
1? 微型嵌入式軟件靜態缺陷預測系統優化設計
1.1? 建立軟件靜態缺陷預測模型
微型嵌入式軟件靜態缺陷預測系統中標記缺陷數據較少,在建立預測模型過程中,沒有足夠軟件靜態缺陷數據支撐,但未標記的樣本數據能增加建立模型所需樣本數據[4]。如圖1所示,半監督學習方法不只是利用已有的標記缺陷的樣本來訓練預測模型,同時也利用未標記的樣本來增強學習過程[5]。
通過生成式模型參數的估計解釋了半監督學習的有效性。在該方法中,缺陷數據類分布[Kαt]用預測模型集合[Kαt,ε]來表示,更深層的數據類別概率[Kpt]用[λt=Ktλ]表示,其中[t]為標記向量,[ε]表示協方差矩陣,[λ]為混合系數。根據聯合密度模型,[Kαt]可以用[λtKαt,ε]表示,通過在概率[λt=Ktλ]上平均化[λtKαt,ε],得貝葉斯預測分布[6][Ktα,ε],則[Kα]邊緣分布為:
[Kαε,λ=t=1λλtKαt,ε]? ? ?(1)
式中:[α]為缺陷數據;[ε]為協方差矩陣;[λ]為混合系數;[t]為標記向量。在獲得標記缺陷數據樣本和未標記的缺陷數據樣本的情況下,式(1)經最大化處理,得到學習目標就是用來訓練樣本,達到預測軟件靜態缺陷的目的[7]。在預測模型建立完成后,計算分類函數,預測更多未知測試樣本數據[8]。
1.2? 計算分類函數
常規預測系統優化設計中存在誤判的情況,可將決策平面向少數類方向移動閾值,使訓練得到的分類器以及分類函數對于某類數據具有傾向性,解決誤判問題[2]。假設[H=H1,H2,…,Hn]表示n維特征,計算每一維特征的特征均值[argi],根據第i維特征均值,將訓練集劃分為大于等于均值和小于均值的兩部分數據,分別訓練兩個數據集,共同構建成一個強分類器,也就是分類函數[9],即:
[Fx=argmaxdfix,tr] (2)
式中:[fix]表示第i個分類器的分類結果;[tr]表示第r類的軟件模塊標記;[dfix,tr]表示指示函數。
通過setFilter函數設置過濾器,再利用if語句和setClassifier函數建立不同的分類器[10]。實現分類器構建的部分程序代碼如圖2所示。
通過上述方式構建多個強分類器,確定分類函數,提高軟件缺陷預測系統的整體表現能力,再利用相應的算法實現軟件靜態缺陷的預測。
1.3? 優化預測算法
為了解決常規的預測系統優化中存在的誤判問題,對該系統中的預測算法進行優化[11]。在軟件缺陷預測的半監督模型中,假設未標記的缺陷數據樣本集合為Q,大小為q,系統中各個軟件模塊的標記為W,存在缺陷的軟件模塊標記為“true”,無缺陷的軟件模塊標記為“false”。令帶有標記的數據樣本集合大小[12]為t。假設Q的分布為R,最終的分類函數[F:Q→W],[fi]表示集成的分裂期,i為常數。在預測算法中,通過T數據集使分類函數初始化,與之對應的訓練數據集隨著不同的分類函數的初始化結果更新。若出現未標記的分類數據集,通過分類函數的分類結果存在與之相同的結果,則確定對應分類函數后,將其加入到該分類結果對應分類器訓練數據集中[13]。考慮未標記的數據集與帶標記的數據集有相同分布,即:
[1qi=τ+1τ+qwi=1τi=1τwi] (3)
使用分類器對未標記樣本數據集標記時,數據集中主要包括多數類樣本,更新每個分類器訓練數據集時,新的可信度高,被標記的數據仍然偏向多數類[14]。在每次迭代中,訓練樣本集中增加正樣本個數遠遠少于負樣本個數,使用多數表決的方法更新每個分類器對應的數據集,實現軟件靜態缺陷預測。
2? 軟件靜態缺陷預測系統優化測試
2.1? 測試環境與數據
本次測試軟件運行在操作系統為Windows 10,CPU為Intel Pentium Dual,運行內存為4 GB,硬盤內存為500 GB的機器平臺上。測試數據選擇MDP數據包,包含數據如表1所示。本次測試根據數據集模塊缺陷率,使用軟件靜態缺陷測試平臺測試軟件模塊缺陷情況,為了體現明顯的對比效果,在測試平臺中新建兩個預測任務,上傳待預測的數據集,分別用不同的預測系統統一進行預測,任務創建成功后,初始狀態為“等待測試”。新建預測任務界面如圖3所示。
2.2? 測試結果及分析
使用不同的方法優化后的預測系統,預測模塊缺陷情況,如圖4所示。觀察圖4,在數據集和模塊數相同的情況下,使用提出的優化方法優化后的預測系統測試結果與實際數據基本相符,對于軟件靜態缺陷等級判斷,未出現誤判情況。而使用常規優化方法優化后的預測系統,其測試結果整體趨勢偏高,缺陷等級高的數據,預測結果與實際數據相似,但是對于缺陷等級低的數據,預測結果過高,出現將低缺陷率模塊誤判為高缺陷率模塊情況,泛化能力較差。兩者相比,提出使用半監督學習方法優化的預測系統有效改善了常規優化系統中的問題,泛化能力得到提高。
3? 結? 語
由于微型嵌入式軟件預測系統的硬件部分具有較高的安全性,對軟件靜態缺陷預測影響較小,所以在優化設計中默認使用常規的硬件結構。以此為基礎,設計軟件缺陷預測模型,計算分類函數,優化預測算法,實現微型嵌入式軟件靜態缺陷預測。
參考文獻
[1] 楊穎,周志飛,鐘理,等.嵌入式軟件靜態測試技術[J].機車電傳動,2017(1):61?64.
[2] 朱朝陽,陳相舟,閆龍,等.基于主成分分析法的人工免疫識別軟件缺陷預測模型研究[J].計算機科學,2017,44(z1):493?495.
[3] 周末,徐玲,楊夢寧,等.基于深度自編碼網絡的軟件缺陷預測方法[J].計算機工程與科學,2018,40(10):84?92.
[4] 崔軍,劉亞娜,郭新峰,等.基于最大信息系數的軟件缺陷預測模型[J].應用概率統計,2019,35(1):90?112.
[5] 哈清華,劉大有,陳媛,等.基于遷移學習的跨公司航天軟件缺陷預測[J].光學精密工程,2019,27(2):48?55.
[6] 劉愷,包月青,趙先鋒.改進的軟件缺陷預測模型研究[J].浙江工業大學學報,2019,47(2):111?115.
[7] 張肖,王黎明.一種半監督集成學習軟件缺陷預測方法[J].小型微型計算機系統,2018,39(10):12?19.
[8] 王鐵建,吳飛,荊曉遠.基于半監督集成學習的軟件缺陷預測[J].模式識別與人工智能,2017,30(7):646?652.
[9] 楊杰,燕雪峰,張德平,等.考慮KL散度的多源軟件缺陷預測方法[J].小型微型計算機系統,2017,38(11):2494?2498.
[10] 胡蕓,胡國祥,胡世港,等.嵌入式軟件缺陷的自動定位技術實現[J].現代電子技術,2017,40(18):79?82.
[11] 王海林,于倩,李彤,等.基于CS?ANN的軟件缺陷預測模型研究[J].計算機應用研究,2017,34(2):467?472.
[12] 李冉,周麗娟,王華.面向類不平衡數據集的軟件缺陷預測模型[J].計算機應用研究,2018,35(9):252?256.
[13] 李勇,黃志球,王勇,等.數據驅動的軟件缺陷預測研究綜述[J].電子學報,2017,45(4):982?988.
[14] 廖勝平,徐玲,鄢萌.基于采樣的半監督支持向量機軟件缺陷預測方法[J].計算機工程與應用,2017,53(14):161?166.