白鳳鳳
(呂梁學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系, 山西 呂梁 033000)
軟件缺陷數(shù)據(jù)常常又被叫做Bug,即為計(jì)算機(jī)軟件或程序在運(yùn)行時(shí),所出現(xiàn)的一些破壞其正常運(yùn)行能力的問題、錯(cuò)誤或是隱藏某種功能的缺陷等.缺陷的存在導(dǎo)致軟件產(chǎn)品在某種程度上不能滿足用戶的需要,甚至阻礙了軟件應(yīng)用的正常運(yùn)行[1-3].這就需要對缺陷數(shù)據(jù)進(jìn)行及時(shí)提取,保證服務(wù)的正常運(yùn)行,通過對缺陷數(shù)據(jù)進(jìn)行提取,可以提高軟件的可信度.科技的發(fā)展,在帶來便利的同時(shí),也對軟件帶來一定的破壞性.缺陷數(shù)據(jù)會降低軟件可用的能力,使其優(yōu)勢不能得以發(fā)揮,甚至造成軟件數(shù)據(jù)泄露.由于缺陷數(shù)據(jù)的不可避免,使得開發(fā)人員只能盡可能減少缺陷數(shù)據(jù)而無法徹底消除缺陷數(shù)據(jù).對缺陷數(shù)據(jù)進(jìn)行準(zhǔn)確提取,是保證軟件正常運(yùn)行的關(guān)鍵技術(shù)[4].
國內(nèi)外學(xué)者對于缺陷數(shù)據(jù)提取方面進(jìn)行了研究,張延旭等[5]分析了關(guān)聯(lián)規(guī)則與Apriori方法的基本思路,建立了基于關(guān)聯(lián)規(guī)則的二次設(shè)備缺陷模型,在模型中考慮了二次設(shè)備缺陷的幾個(gè)重要屬性:二次設(shè)備的生產(chǎn)廠家、設(shè)備類型、設(shè)備缺陷的原因、發(fā)生缺陷的設(shè)備部位以及缺陷等級,以一組自動(dòng)化設(shè)備缺陷數(shù)據(jù)為例,闡述了基于Apriori方法的二次設(shè)備缺陷數(shù)據(jù)提取方法,實(shí)現(xiàn)過程簡單,然而提取準(zhǔn)確度不高.李克文等[6]通過設(shè)置不同的隱藏層數(shù)、稀疏性約束和加噪方式,直接高效地從軟件缺陷數(shù)據(jù)中提取出分類預(yù)測所需的各層次特征,該方法較傳統(tǒng)特征提取方法具有更好的性能,但在數(shù)據(jù)提取過程中對特定缺陷數(shù)據(jù)提取性能受限,提取時(shí)間較長.針對上述問題,本文提出了基于多特征權(quán)重分配的軟件缺陷數(shù)據(jù)自適應(yīng)提取方法.
軟件是依據(jù)一系列指定順序的計(jì)算機(jī)數(shù)據(jù)和指令組成的,包括計(jì)算機(jī)程序及有關(guān)文檔,是機(jī)器人系統(tǒng)理科、工業(yè)制造系統(tǒng)中必不可少的組件.在工業(yè)企業(yè)信息系統(tǒng)中,軟件缺陷數(shù)據(jù)是在軟件開發(fā)和維護(hù)的過程中出現(xiàn)的某種錯(cuò)誤,或是程序在系統(tǒng)中運(yùn)行時(shí),違背了需要完成某種功能指令.通過軟件缺陷數(shù)據(jù)自適應(yīng)提取可以為用戶提供缺陷數(shù)據(jù)采集與分析的服務(wù).軟件缺陷數(shù)據(jù)自適應(yīng)提取模型如圖1所示.
圖1 軟件缺陷數(shù)據(jù)自適應(yīng)提取模型Fig.1 Adaptive extraction model for software defect data
利用計(jì)劃執(zhí)行模塊發(fā)布的命令進(jìn)行缺陷數(shù)據(jù)檢測時(shí),需要對系統(tǒng)的環(huán)境進(jìn)行評估,確定環(huán)境運(yùn)行是否存在異常狀態(tài),當(dāng)未出現(xiàn)異常狀態(tài)時(shí),進(jìn)行計(jì)劃執(zhí)行模塊;當(dāng)出現(xiàn)異常狀態(tài)時(shí),需要對缺陷數(shù)據(jù)進(jìn)行提取,并調(diào)整計(jì)劃執(zhí)行模塊,重新計(jì)劃執(zhí)行模塊.軟件缺陷數(shù)據(jù)自適應(yīng)提取是根據(jù)系統(tǒng)運(yùn)行環(huán)境調(diào)整目標(biāo)庫,并自適應(yīng)提取數(shù)據(jù)缺陷的方法.
目標(biāo)庫通過輪詢得到內(nèi)存映像中的數(shù)據(jù),構(gòu)造數(shù)據(jù)標(biāo)簽完成對數(shù)據(jù)的分析,同時(shí)為計(jì)劃執(zhí)行模塊提供數(shù)據(jù)源.得到目標(biāo)庫中的缺陷數(shù)據(jù)后,自動(dòng)完成數(shù)據(jù)保存、報(bào)表形成與報(bào)警等功能[7-9].
在整體軟件數(shù)據(jù)中,假設(shè)n個(gè)數(shù)據(jù)點(diǎn)組成的數(shù)據(jù)集為X={X1,X2,…,Xi,…,Xn},將該數(shù)據(jù)集中的數(shù)據(jù)按照數(shù)據(jù)類型劃分到k類,其中2≤k≤n,在數(shù)據(jù)集X中隨機(jī)選擇多個(gè)數(shù)據(jù)點(diǎn)作為k類軟件樣本數(shù)據(jù)的聚類中心,依據(jù)剩余軟件樣本數(shù)據(jù)點(diǎn)與多個(gè)聚類中心的距離進(jìn)行相似度比較,并將其劃分到最相似的類別中.通過計(jì)算各類均值得到不同的聚類中心,再重新分類各軟件樣本數(shù)據(jù)點(diǎn),持續(xù)迭代此過程,使其形成各種聚類中心,當(dāng)準(zhǔn)則函數(shù)約束平方誤差函數(shù)使其函數(shù)值最小時(shí)為止,準(zhǔn)則函數(shù)可表示為
(1)
式中:Xi為軟件數(shù)據(jù)對象;Cj為聚類中心的均值.在上述分析基礎(chǔ)上,通過K均值[10]進(jìn)行聚類處理,針對多個(gè)不同類型的軟件數(shù)據(jù)節(jié)點(diǎn),把不同節(jié)點(diǎn)的特征分配于初始聚類中心,進(jìn)行迭代后獲取多特征權(quán)重,其表達(dá)式為
(2)
(3)
式中:Si為量化融合輸出系數(shù);wc為聚類迭代誤差.整體的聚類流程如圖2所示.
圖2 K均值聚類算法流程圖Fig.2 Flow chart of K-means clustering algorithm
按照多特征權(quán)重特征分布完成量化融合跟蹤,輸出的多特征權(quán)重類型可表示為
(4)
式中:xi為多特征權(quán)重特征狀態(tài)量;yi為權(quán)重特征因子.
把多特征權(quán)重特征量輸入BP神經(jīng)網(wǎng)絡(luò)分類器,完成多特征權(quán)重分配,BP神經(jīng)網(wǎng)絡(luò)計(jì)算公式為
(5)
式中:fx(x,t)、fθ(x,t)、gx(x,t)、gθ(x,t)分別為多特征權(quán)重類型、神經(jīng)元數(shù)量、比例神經(jīng)元數(shù)量、積分神經(jīng)元數(shù)量;u(t)為權(quán)重分配函數(shù);dx(t)和dθ(t)分別為不同比例和積分下的準(zhǔn)則函數(shù).在BP神經(jīng)網(wǎng)絡(luò)分類器輸出端獲取多特征權(quán)重分配結(jié)果.
軟件結(jié)構(gòu)多特征權(quán)重信號一般為非平穩(wěn)寬帶信號,通過時(shí)頻分析法完成對多特征權(quán)重特征的分配,獲取的多特征權(quán)重特征分配模型[11]可表示為
A=Fi(xi,wi)D(xi,q(xi))
(6)
式中:wi為多特征權(quán)重特征常數(shù);Fi(*)和D(*)分別為時(shí)間域與頻率域的聯(lián)合分布信息;q(*)為頻率強(qiáng)度.
對軟件多特征權(quán)重特征進(jìn)行分配,為多特征權(quán)重提取提供數(shù)據(jù)基礎(chǔ).
在多特征權(quán)重分配模型的基礎(chǔ)上,對缺陷數(shù)據(jù)進(jìn)行提取.首先構(gòu)造缺陷數(shù)據(jù)信號模型,對信號進(jìn)行檢測[12].在實(shí)際應(yīng)用中,通常處于干擾環(huán)境下,本文在干擾環(huán)境下完成對缺陷數(shù)據(jù)信號離散數(shù)據(jù)的解析處理,構(gòu)造信息網(wǎng)絡(luò)缺陷數(shù)據(jù)的多特征權(quán)重分配模型,其表達(dá)式為
p(t)=v(t)xi+l(t)
(7)
式中:p(t)為缺陷數(shù)據(jù)信號;v(t)為缺陷數(shù)據(jù)多特征權(quán)重分配模型的實(shí)部;l(t)為缺陷數(shù)據(jù)信號的固有模態(tài)函數(shù).經(jīng)模態(tài)分解多特征權(quán)重分配模型,將缺陷數(shù)據(jù)信號分配到不同窄帶信號.
通過引用多特征權(quán)重分配模型,對軟件缺陷數(shù)據(jù)進(jìn)行提取.在對軟件缺陷數(shù)據(jù)進(jìn)行提取的過程中,用T表示多特征權(quán)重特征中含四元組的信任關(guān)系,數(shù)據(jù)分配屬性為G={G1,G2,…,Gm},則軟件缺陷數(shù)據(jù)提取公式為
(8)
式中:e-jks為軟件缺陷數(shù)據(jù)的指數(shù)提取因子;r為權(quán)重特征信任誤差系數(shù).
根據(jù)軟件缺陷數(shù)據(jù)提取結(jié)果,獲取的軟件缺陷信號特征模型為
(9)
式中,n(t)為相位信息.
對缺陷數(shù)據(jù)進(jìn)行序列采樣與時(shí)間更新,獲取缺陷數(shù)據(jù)庫非平穩(wěn)寬帶信號z(t)的頻譜,通過時(shí)頻分析實(shí)現(xiàn)瞬時(shí)頻率估測,軟件缺陷數(shù)據(jù)自適應(yīng)提取函數(shù)為
Hi(t)=∑Qk(d(t),z(t))
(10)
式中,Qk為自適應(yīng)提取因子.通過自適應(yīng)提取函數(shù)實(shí)現(xiàn)軟件缺陷數(shù)據(jù)的自適應(yīng)提取.
為了驗(yàn)證本文提出的基于多特征權(quán)重分配的軟件缺陷數(shù)據(jù)自適應(yīng)提取方法的可行性,在Matlab上進(jìn)行了實(shí)驗(yàn),實(shí)驗(yàn)平臺如圖3所示.實(shí)驗(yàn)數(shù)據(jù)源于某自適應(yīng)軟件,在進(jìn)行實(shí)驗(yàn)時(shí),將不同缺陷數(shù)據(jù)應(yīng)用于該平臺,觀察不同方法的提取效果.
圖3 實(shí)驗(yàn)平臺Fig.3 Experimental platform
將本文方法應(yīng)用于軟件中,從軟件中采集的數(shù)據(jù)集共40 GB,其中包含缺陷數(shù)據(jù)2 GB.對缺陷數(shù)據(jù)進(jìn)行精準(zhǔn)定位,才能對其進(jìn)行有效提取,因此,本文對采集的缺陷數(shù)據(jù)定位準(zhǔn)確性進(jìn)行對比,定位準(zhǔn)確度計(jì)算公式為
(11)
式中:Sz為檢測數(shù)據(jù)總量;Sq為檢測數(shù)據(jù)中包含的缺陷數(shù)據(jù)總量;Sj為檢測到的缺陷數(shù)據(jù)總量.根據(jù)式(11)計(jì)算得出采集的缺陷數(shù)據(jù)定位準(zhǔn)確度,具體結(jié)果如圖4所示.
由圖4可知,文獻(xiàn)[5]的缺陷數(shù)據(jù)定位準(zhǔn)確度約為75%,文獻(xiàn)[6]的缺陷數(shù)據(jù)定位準(zhǔn)確度約為65%,而本文所提基于多特征權(quán)重匹配的缺陷數(shù)據(jù)定位準(zhǔn)確度約為95%,并且較為穩(wěn)定.由實(shí)驗(yàn)結(jié)果可知,本文方法應(yīng)用多權(quán)重特征分配模型,能夠準(zhǔn)確提取缺陷數(shù)據(jù)的特征權(quán)重,進(jìn)而準(zhǔn)確提取曲線數(shù)據(jù),該結(jié)果充分證明本文方法的優(yōu)勢,具有較高的實(shí)用性.
圖4 不同方法缺陷數(shù)據(jù)定位準(zhǔn)確度對比Fig.4 Comparison of defect data location accuracy among different methods
采用不同方法提取40 GB數(shù)據(jù)中的缺陷數(shù)據(jù),并記錄提取時(shí)間,得到本文方法、文獻(xiàn)[5]方法與文獻(xiàn)[6]方法提取相同缺陷數(shù)據(jù)所需的時(shí)間比較結(jié)果,如圖5所示.
圖5 三種方法提取時(shí)間比較結(jié)果Fig.5 Comparison results for extraction time of three methods
分析圖5可以看出,在缺陷數(shù)據(jù)逐漸增加的情況下,不同方法的提取時(shí)間也逐漸增加.文獻(xiàn)[5]方法和文獻(xiàn)[6]方法的提取時(shí)間分別為36.5 s與39 s;而本文方法的提取時(shí)間為17.5 s.本文方法采用K均值聚類算法,根據(jù)多特征權(quán)重特征分布完成量化融合跟蹤,提升了缺陷數(shù)據(jù)提取準(zhǔn)確率,同時(shí)也提高了提取速度.實(shí)驗(yàn)結(jié)果表明,本文方法和傳統(tǒng)方法相比提取效率大大增加,驗(yàn)證了本文方法的高效性.
圖6為不同方法的缺陷數(shù)據(jù)提取效果.
圖6 不同方法的缺陷數(shù)據(jù)提取效果Fig.6 Defect data extraction effect of different methods
由圖6可以看出,待處理的原始缺陷數(shù)據(jù)分布較為分散,不同類型的缺陷數(shù)據(jù)相互混雜,經(jīng)過不同方法處理后,提取的缺陷數(shù)據(jù)其聚類中心均較為集中,但文獻(xiàn)[5]方法不能完全提取出不同類型的缺陷數(shù)據(jù),類間仍混雜著不同類型的缺陷數(shù)據(jù);文獻(xiàn)[6]方法提取的不同類型的缺陷數(shù)據(jù)非均勻分布,類間不完整;本文方法提取到的數(shù)據(jù)效果最佳,可實(shí)現(xiàn)分類提取.這是由于本文方法針對多個(gè)不同類型軟件數(shù)據(jù)節(jié)點(diǎn)的特征分配到初始聚類中心,進(jìn)行迭代后獲取多特征權(quán)重,從而使得到的不同類型的缺陷數(shù)據(jù)輪廓界限清晰,類間距離較小,該結(jié)果證明了本文方法比傳統(tǒng)方法提取的缺陷數(shù)據(jù)分類效果更好.
本文提出了一種新的基于多特征權(quán)重分配的軟件缺陷數(shù)據(jù)自適應(yīng)提取方法.利用K均值進(jìn)行聚類分析,將處理后的缺陷數(shù)據(jù)特征量輸入BP神經(jīng)網(wǎng)絡(luò)分類器,完成軟件缺陷數(shù)據(jù)多特征權(quán)重分配.建立缺陷數(shù)據(jù)信號模型,利用時(shí)頻分析法完成對缺陷數(shù)據(jù)特征的提取,最終完成軟件缺陷數(shù)據(jù)自適應(yīng)提取.
實(shí)驗(yàn)結(jié)果表明,采用所提方法對軟件缺陷數(shù)據(jù)進(jìn)行自適應(yīng)提取,有較好的抑制干擾能力,能夠完成對缺陷數(shù)據(jù)的有效提取,說明所提方法準(zhǔn)確性高,且所提方法和傳統(tǒng)方法相比提取效率大大增加,驗(yàn)證了所提方法的高效性.