白鳳鳳
(呂梁學院 計算機科學與技術系, 山西 呂梁 033000)
軟件缺陷數據常常又被叫做Bug,即為計算機軟件或程序在運行時,所出現的一些破壞其正常運行能力的問題、錯誤或是隱藏某種功能的缺陷等.缺陷的存在導致軟件產品在某種程度上不能滿足用戶的需要,甚至阻礙了軟件應用的正常運行[1-3].這就需要對缺陷數據進行及時提取,保證服務的正常運行,通過對缺陷數據進行提取,可以提高軟件的可信度.科技的發展,在帶來便利的同時,也對軟件帶來一定的破壞性.缺陷數據會降低軟件可用的能力,使其優勢不能得以發揮,甚至造成軟件數據泄露.由于缺陷數據的不可避免,使得開發人員只能盡可能減少缺陷數據而無法徹底消除缺陷數據.對缺陷數據進行準確提取,是保證軟件正常運行的關鍵技術[4].
國內外學者對于缺陷數據提取方面進行了研究,張延旭等[5]分析了關聯規則與Apriori方法的基本思路,建立了基于關聯規則的二次設備缺陷模型,在模型中考慮了二次設備缺陷的幾個重要屬性:二次設備的生產廠家、設備類型、設備缺陷的原因、發生缺陷的設備部位以及缺陷等級,以一組自動化設備缺陷數據為例,闡述了基于Apriori方法的二次設備缺陷數據提取方法,實現過程簡單,然而提取準確度不高.李克文等[6]通過設置不同的隱藏層數、稀疏性約束和加噪方式,直接高效地從軟件缺陷數據中提取出分類預測所需的各層次特征,該方法較傳統特征提取方法具有更好的性能,但在數據提取過程中對特定缺陷數據提取性能受限,提取時間較長.針對上述問題,本文提出了基于多特征權重分配的軟件缺陷數據自適應提取方法.
軟件是依據一系列指定順序的計算機數據和指令組成的,包括計算機程序及有關文檔,是機器人系統理科、工業制造系統中必不可少的組件.在工業企業信息系統中,軟件缺陷數據是在軟件開發和維護的過程中出現的某種錯誤,或是程序在系統中運行時,違背了需要完成某種功能指令.通過軟件缺陷數據自適應提取可以為用戶提供缺陷數據采集與分析的服務.軟件缺陷數據自適應提取模型如圖1所示.

圖1 軟件缺陷數據自適應提取模型Fig.1 Adaptive extraction model for software defect data
利用計劃執行模塊發布的命令進行缺陷數據檢測時,需要對系統的環境進行評估,確定環境運行是否存在異常狀態,當未出現異常狀態時,進行計劃執行模塊;當出現異常狀態時,需要對缺陷數據進行提取,并調整計劃執行模塊,重新計劃執行模塊.軟件缺陷數據自適應提取是根據系統運行環境調整目標庫,并自適應提取數據缺陷的方法.
目標庫通過輪詢得到內存映像中的數據,構造數據標簽完成對數據的分析,同時為計劃執行模塊提供數據源.得到目標庫中的缺陷數據后,自動完成數據保存、報表形成與報警等功能[7-9].
在整體軟件數據中,假設n個數據點組成的數據集為X={X1,X2,…,Xi,…,Xn},將該數據集中的數據按照數據類型劃分到k類,其中2≤k≤n,在數據集X中隨機選擇多個數據點作為k類軟件樣本數據的聚類中心,依據剩余軟件樣本數據點與多個聚類中心的距離進行相似度比較,并將其劃分到最相似的類別中.通過計算各類均值得到不同的聚類中心,再重新分類各軟件樣本數據點,持續迭代此過程,使其形成各種聚類中心,當準則函數約束平方誤差函數使其函數值最小時為止,準則函數可表示為
(1)
式中:Xi為軟件數據對象;Cj為聚類中心的均值.在上述分析基礎上,通過K均值[10]進行聚類處理,針對多個不同類型的軟件數據節點,把不同節點的特征分配于初始聚類中心,進行迭代后獲取多特征權重,其表達式為
(2)

(3)
式中:Si為量化融合輸出系數;wc為聚類迭代誤差.整體的聚類流程如圖2所示.

圖2 K均值聚類算法流程圖Fig.2 Flow chart of K-means clustering algorithm
按照多特征權重特征分布完成量化融合跟蹤,輸出的多特征權重類型可表示為
(4)
式中:xi為多特征權重特征狀態量;yi為權重特征因子.
把多特征權重特征量輸入BP神經網絡分類器,完成多特征權重分配,BP神經網絡計算公式為
(5)
式中:fx(x,t)、fθ(x,t)、gx(x,t)、gθ(x,t)分別為多特征權重類型、神經元數量、比例神經元數量、積分神經元數量;u(t)為權重分配函數;dx(t)和dθ(t)分別為不同比例和積分下的準則函數.在BP神經網絡分類器輸出端獲取多特征權重分配結果.
軟件結構多特征權重信號一般為非平穩寬帶信號,通過時頻分析法完成對多特征權重特征的分配,獲取的多特征權重特征分配模型[11]可表示為
A=Fi(xi,wi)D(xi,q(xi))
(6)
式中:wi為多特征權重特征常數;Fi(*)和D(*)分別為時間域與頻率域的聯合分布信息;q(*)為頻率強度.
對軟件多特征權重特征進行分配,為多特征權重提取提供數據基礎.
在多特征權重分配模型的基礎上,對缺陷數據進行提取.首先構造缺陷數據信號模型,對信號進行檢測[12].在實際應用中,通常處于干擾環境下,本文在干擾環境下完成對缺陷數據信號離散數據的解析處理,構造信息網絡缺陷數據的多特征權重分配模型,其表達式為
p(t)=v(t)xi+l(t)
(7)
式中:p(t)為缺陷數據信號;v(t)為缺陷數據多特征權重分配模型的實部;l(t)為缺陷數據信號的固有模態函數.經模態分解多特征權重分配模型,將缺陷數據信號分配到不同窄帶信號.
通過引用多特征權重分配模型,對軟件缺陷數據進行提取.在對軟件缺陷數據進行提取的過程中,用T表示多特征權重特征中含四元組的信任關系,數據分配屬性為G={G1,G2,…,Gm},則軟件缺陷數據提取公式為
(8)
式中:e-jks為軟件缺陷數據的指數提取因子;r為權重特征信任誤差系數.
根據軟件缺陷數據提取結果,獲取的軟件缺陷信號特征模型為
(9)
式中,n(t)為相位信息.
對缺陷數據進行序列采樣與時間更新,獲取缺陷數據庫非平穩寬帶信號z(t)的頻譜,通過時頻分析實現瞬時頻率估測,軟件缺陷數據自適應提取函數為
Hi(t)=∑Qk(d(t),z(t))
(10)
式中,Qk為自適應提取因子.通過自適應提取函數實現軟件缺陷數據的自適應提取.
為了驗證本文提出的基于多特征權重分配的軟件缺陷數據自適應提取方法的可行性,在Matlab上進行了實驗,實驗平臺如圖3所示.實驗數據源于某自適應軟件,在進行實驗時,將不同缺陷數據應用于該平臺,觀察不同方法的提取效果.

圖3 實驗平臺Fig.3 Experimental platform
將本文方法應用于軟件中,從軟件中采集的數據集共40 GB,其中包含缺陷數據2 GB.對缺陷數據進行精準定位,才能對其進行有效提取,因此,本文對采集的缺陷數據定位準確性進行對比,定位準確度計算公式為
(11)
式中:Sz為檢測數據總量;Sq為檢測數據中包含的缺陷數據總量;Sj為檢測到的缺陷數據總量.根據式(11)計算得出采集的缺陷數據定位準確度,具體結果如圖4所示.
由圖4可知,文獻[5]的缺陷數據定位準確度約為75%,文獻[6]的缺陷數據定位準確度約為65%,而本文所提基于多特征權重匹配的缺陷數據定位準確度約為95%,并且較為穩定.由實驗結果可知,本文方法應用多權重特征分配模型,能夠準確提取缺陷數據的特征權重,進而準確提取曲線數據,該結果充分證明本文方法的優勢,具有較高的實用性.

圖4 不同方法缺陷數據定位準確度對比Fig.4 Comparison of defect data location accuracy among different methods
采用不同方法提取40 GB數據中的缺陷數據,并記錄提取時間,得到本文方法、文獻[5]方法與文獻[6]方法提取相同缺陷數據所需的時間比較結果,如圖5所示.

圖5 三種方法提取時間比較結果Fig.5 Comparison results for extraction time of three methods
分析圖5可以看出,在缺陷數據逐漸增加的情況下,不同方法的提取時間也逐漸增加.文獻[5]方法和文獻[6]方法的提取時間分別為36.5 s與39 s;而本文方法的提取時間為17.5 s.本文方法采用K均值聚類算法,根據多特征權重特征分布完成量化融合跟蹤,提升了缺陷數據提取準確率,同時也提高了提取速度.實驗結果表明,本文方法和傳統方法相比提取效率大大增加,驗證了本文方法的高效性.
圖6為不同方法的缺陷數據提取效果.

圖6 不同方法的缺陷數據提取效果Fig.6 Defect data extraction effect of different methods
由圖6可以看出,待處理的原始缺陷數據分布較為分散,不同類型的缺陷數據相互混雜,經過不同方法處理后,提取的缺陷數據其聚類中心均較為集中,但文獻[5]方法不能完全提取出不同類型的缺陷數據,類間仍混雜著不同類型的缺陷數據;文獻[6]方法提取的不同類型的缺陷數據非均勻分布,類間不完整;本文方法提取到的數據效果最佳,可實現分類提取.這是由于本文方法針對多個不同類型軟件數據節點的特征分配到初始聚類中心,進行迭代后獲取多特征權重,從而使得到的不同類型的缺陷數據輪廓界限清晰,類間距離較小,該結果證明了本文方法比傳統方法提取的缺陷數據分類效果更好.
本文提出了一種新的基于多特征權重分配的軟件缺陷數據自適應提取方法.利用K均值進行聚類分析,將處理后的缺陷數據特征量輸入BP神經網絡分類器,完成軟件缺陷數據多特征權重分配.建立缺陷數據信號模型,利用時頻分析法完成對缺陷數據特征的提取,最終完成軟件缺陷數據自適應提取.
實驗結果表明,采用所提方法對軟件缺陷數據進行自適應提取,有較好的抑制干擾能力,能夠完成對缺陷數據的有效提取,說明所提方法準確性高,且所提方法和傳統方法相比提取效率大大增加,驗證了所提方法的高效性.