国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于代價敏感半監(jiān)督的跨項目軟件缺陷數(shù)預(yù)測模型

2022-02-14 03:15:26
關(guān)鍵詞:軟件缺陷源代碼代價

高 晶

(煙臺職業(yè)學(xué)院 信息工程系,山東 煙臺 264670)

隨著網(wǎng)絡(luò)的蓬勃發(fā)展與日益普及,軟件在社會工作與生活中起著至關(guān)重要的作用。若部署了含有缺陷的軟件,極有可能引發(fā)不堪設(shè)想的后果。因此,精準(zhǔn)預(yù)測出軟件缺陷具有重要的現(xiàn)實意義。為了降低缺陷修復(fù)代價,應(yīng)在項目開發(fā)初期就完成項目中潛在缺陷程序模塊的識別,預(yù)測對象主要為模塊中的缺陷、缺陷數(shù)及缺陷密度等。眾多相關(guān)學(xué)者對軟件缺陷預(yù)測技術(shù)展開研究,以滿足更新?lián)Q代較快的軟件需求。

文獻[1]提出基于文件粒度的多目標(biāo)軟件缺陷預(yù)測方法,通過對比無監(jiān)督學(xué)習(xí)方法與有監(jiān)督學(xué)習(xí)方法間的性能,設(shè)計了一種多目標(biāo)優(yōu)化的MULTI方法,基于FL-SDP 問題對兩個不同的優(yōu)化目標(biāo)進行設(shè)定,采用Logistic回歸方法完成預(yù)測模型訓(xùn)練,將FL-SDP 問題轉(zhuǎn)換為經(jīng)典的二元分類問題后,對模塊是否存在缺陷實施判定。文獻[2]研究了一種兩階段的軟件模塊缺陷數(shù)預(yù)測特征選擇方法,F(xiàn)SDNP 方法中的階段分為特征聚類與特征選擇,前者采用密度峰聚類算法劃分相關(guān)性較高的缺陷特征,后者通過啟發(fā)式排序策略,對冗余、無效特征進行濾除。文獻[3]則架構(gòu)了一種基于深度自編碼網(wǎng)絡(luò)的軟件缺陷預(yù)測方法,通過無監(jiān)督學(xué)習(xí)采樣策略,采集不同開源項目數(shù)據(jù)集,從而避免數(shù)據(jù)集出現(xiàn)類別不平衡,利用創(chuàng)建的深度自編碼網(wǎng)絡(luò)模型,降維數(shù)據(jù)集特征,經(jīng)過連接3 種分類器對其進行訓(xùn)練,最終完成測試集預(yù)測。

由于上述方法多數(shù)是用于預(yù)測同項目軟件缺陷,無法精準(zhǔn)預(yù)測存在較大差異的源項目與目標(biāo)項目數(shù)據(jù)集,所以本文設(shè)計了一種基于代價敏感半監(jiān)督的跨項目軟件缺陷數(shù)預(yù)測模型。依據(jù)選取的度量元集合,收集各版本源代碼,應(yīng)用搜索下載的方式,采集缺陷數(shù)據(jù)。經(jīng)過在源代碼中提取度量元,將其與缺陷信息一一對應(yīng),完成度量元矩陣構(gòu)建,采用清洗、集成、規(guī)約及變換對數(shù)據(jù)進行預(yù)處理,隨后設(shè)定屬性復(fù)雜度的閾值為中位數(shù),得到最終采樣結(jié)果。利用設(shè)計的代價敏感半監(jiān)督支持向量機,劃分樣本數(shù)據(jù)集,通過對預(yù)測模型實施訓(xùn)練學(xué)習(xí),實現(xiàn)缺陷數(shù)預(yù)測。

1 代價敏感半監(jiān)督下跨項目軟件缺陷數(shù)預(yù)測模型設(shè)計

1.1 數(shù)據(jù)分析

1.1.1 數(shù)據(jù)采集

數(shù)據(jù)的采集階段不僅是預(yù)測跨項目軟件缺陷數(shù)的基本,也是預(yù)測模型設(shè)計的重要環(huán)節(jié)。在軟件開發(fā)階段,相關(guān)數(shù)據(jù)一般為軟件源代碼[4]、開發(fā)人員溝通歷史記錄、有關(guān)文檔和缺陷追蹤信息等。其中,軟件缺陷主要存在于軟件源代碼信息與歷史缺陷信息中。跨項目軟件缺陷數(shù)據(jù)的采集共分為以下5個階段:

1)度量元集合的合理選取

作為軟件缺陷預(yù)測模型的輸入部分,度量元可以實現(xiàn)源代碼缺陷信息的挖掘。因為度量元數(shù)量會隨著數(shù)據(jù)信息量的提升而增多,所以由較多度量元所組建的模型將具有更理想的預(yù)測精準(zhǔn)度。但是,當(dāng)度量元增加到一定數(shù)量時,高維數(shù)據(jù)就會引發(fā)過擬合問題,降低預(yù)測性能。因此,為了使預(yù)測模型性能達到最佳狀態(tài),應(yīng)通過斯皮爾曼等級相關(guān)系數(shù)[5]的選擇方法對合適的度量元進行選取。

已知X=(X1,X2,…,Xn)與Y=(Y1,Y2,…,Yn)為兩個變量,經(jīng)過排列Xi與Yi的順序,獲得xi與yi,則采用下列公式對斯皮爾曼等級相關(guān)系數(shù)進行運算:

其中,xi與yi的均值分別為xˉ和yˉ。由式(1)可以看出,度量元和缺陷數(shù)量的關(guān)聯(lián)性與斯皮爾曼等級相關(guān)系數(shù)成正比,依據(jù)斯皮爾曼等級相關(guān)系數(shù)降序排列度量元,所選取的度量元集合由序列中前N個度量元架構(gòu)而成。

2)源代碼收集

由于大部分項目的源代碼均被儲存于代碼倉庫,以便于項目協(xié)作與代碼管理,所以開發(fā)人員只需運用版本控制工具,就可以完成每個版本的源代碼收集任務(wù)。控制工具的選取主要由項目數(shù)據(jù)托管平臺種類決定。

3)缺陷數(shù)據(jù)采集

收集源代碼數(shù)據(jù)后,要從Bugzilla 與Jira 的Bug跟蹤系統(tǒng)里采集與源代碼相對應(yīng)的缺陷信息。因為兩系統(tǒng)性能相似,所以數(shù)據(jù)提取方法也大致相同,通過搜索下載就能夠完成,最后將獲取的缺陷數(shù)據(jù)與軟件源代碼文件進行聯(lián)立。Bugzilla開源缺陷跟蹤系統(tǒng)的缺陷信息統(tǒng)計如表1所示。

表1 缺陷信息統(tǒng)計表

4)度量元提取

靜態(tài)分析統(tǒng)計源代碼就是度量元的提取過程,可以通過諸如OOMeter、semmle等提取工具完成。

5)度量元矩陣架構(gòu)

各矢量均為代價敏感半監(jiān)督支持向量機的輸入,分類標(biāo)簽則是缺陷信息,依據(jù)取得的度量元與缺陷信息,將兩者進行一一對應(yīng)后,即可得到度量元數(shù)據(jù)矩陣。

1.1.2 數(shù)據(jù)預(yù)處理

預(yù)處理階段由清洗、集成、規(guī)約及變換組成。在軟件模塊內(nèi),提取的標(biāo)簽值主要用于缺陷存在判定,采集的度量屬性如表2 所示。若數(shù)據(jù)有屬性值缺失現(xiàn)象,則利用屬性期望值進行填充。

表2 數(shù)據(jù)集度量元統(tǒng)計表

為了避免發(fā)生對0 取對數(shù)的情況,通過引入極小值方法,完成屬性值的對數(shù)化預(yù)處理,其計算式如下所示:

式中,x為屬性值。

1.1.3 數(shù)據(jù)采樣

由于缺陷預(yù)測數(shù)據(jù)呈不均勻分布狀態(tài),只有部分數(shù)據(jù)存在缺陷,所以基于源代碼度量元與缺陷之間的潛在相關(guān)性,制定理想的采樣策略。通過觀察缺陷數(shù)據(jù)與非缺陷數(shù)據(jù)的度量元數(shù)值可知,存在缺陷的模塊度量元數(shù)值相對更高。將屬性中位數(shù)作為衡量屬性復(fù)雜度的閾值,通過保證所選樣本不存在過低的缺陷率,使模型性能得到提升。圖1 所示為數(shù)據(jù)采樣流程。

圖1 數(shù)據(jù)采樣流程

圖1 中,軟件樣本屬性值為Y1~Y6,樣本集合為S1~S7。如果待采樣的帶標(biāo)簽樣本[7]有N個,則采樣步驟描述如下:

1)對所有模塊的屬性中位數(shù)進行求解;

2)針對各樣本屬性值,若大于該屬性中位數(shù),則稱之為高屬性值;

3)將高屬性值個數(shù)降序排列,得到新的樣本列表;

4)選取列表的前2N個樣本構(gòu)成候選集;

5)對候選集內(nèi)的N個樣本進行隨機抽取,并將其作為最終的采樣結(jié)果。

1.2 代價敏感半監(jiān)督支持向量機

通過尋求一個代價敏感半監(jiān)督支持向量機的超平面,最小化分類整體代價,該方法通過代價敏感[8]學(xué)習(xí)思想的引入,實現(xiàn)半監(jiān)督支持向量機的算法擴展。已知一個含有帶標(biāo)簽樣本與無標(biāo)簽樣本的數(shù)據(jù)集:帶標(biāo)簽樣本呈獨立分布,設(shè)為{(x1,y1),…,(xl,yl)},l表示帶標(biāo)簽樣本的數(shù)量;無標(biāo)簽樣本屬于同一分布,表示為{(xl+1,yl+1),…,(xl+u,yl+u)},u為無標(biāo)簽樣本數(shù)量,分類標(biāo)簽y∈{± 1} 。假設(shè)Il={1,2,…,l} 為帶標(biāo)簽樣本,Iu={l+1,l+2,…,l+u}為無標(biāo)簽樣本,錯誤地將有缺陷樣本劃分為無缺陷樣本的代價為c(+1),把不存在缺陷樣本劃分為存在缺陷的代價為c(-1),則代價敏感半監(jiān)督支持向量機的代價矩陣如表3所示。

表3 代價矩陣

式中,H為核函數(shù)k產(chǎn)生的再生核希爾伯特空間;l(yi,f(xi))為加權(quán)損失函數(shù)[9];C1與C2為正則化參數(shù);r為模型設(shè)置參數(shù),主要是為了避免將訓(xùn)練集全部無標(biāo)簽樣本劃分至一個類別里。

對訓(xùn)練集合內(nèi)帶標(biāo)簽樣本與無標(biāo)簽樣本的錯分率與復(fù)雜度進行權(quán)衡,加權(quán)損失函數(shù)如圖2 所示。如果c(+1)=c(-1),則該函數(shù)為標(biāo)準(zhǔn)對稱函數(shù),此時的代價敏感半監(jiān)督支持向量機轉(zhuǎn)換為半監(jiān)督支持向量機模型;若c(+1)≠c(-1),損失函數(shù)值將呈現(xiàn)連續(xù)性。

圖2 損失函數(shù)

新參數(shù)代價比率的引入實現(xiàn)了代價添加對預(yù)測模型性能的影響評估,下式即為參數(shù)代價比率表達式:

C取不同值,得到相應(yīng)的預(yù)測性能數(shù)據(jù),從而評估性能發(fā)揮程度。

1.3 跨項目軟件缺陷數(shù)預(yù)測模型架構(gòu)

基于代價敏感半監(jiān)督支持向量機的最小化分類代價目標(biāo),創(chuàng)建跨項目軟件缺陷數(shù)預(yù)測模型,流程共分為以下5個步驟:

1)通過分析缺陷數(shù)據(jù)特征,對合適的度量元進行選?。?/p>

2)按照清洗、規(guī)約等順序,預(yù)處理所得數(shù)據(jù)集;

3)標(biāo)記采樣的數(shù)據(jù)樣本,并將任意選取的無標(biāo)簽樣本與帶標(biāo)簽樣本進行組合,得到訓(xùn)練樣本;

4)合理設(shè)定模型參數(shù)值;

5)對預(yù)測模型實施訓(xùn)練學(xué)習(xí),利用學(xué)習(xí)到的模型對測試集所含的缺陷數(shù)實施類標(biāo)簽預(yù)測。

基于代價敏感半監(jiān)督的跨項目軟件缺陷數(shù)預(yù)測模型架構(gòu)流程如圖3所示。

圖3 預(yù)測模型架構(gòu)流程

2 仿真實驗

2.1 實驗環(huán)境

仿真實驗環(huán)境的硬件部分為英特爾酷睿i5-3337U1.8GHz 處理器,運行內(nèi)存為6 GB,操作系統(tǒng)為64 位Windows10,軟件部分是Matlab R2013a 版本[10]。

實驗數(shù)據(jù)集由5 個開源項目的16 個版本所構(gòu)成,各項目含有11 個靜態(tài)代碼特征與類別標(biāo)注,將類作為程序模塊的粒度。

預(yù)測模型仿真過程中,選取查全率recall與查準(zhǔn)率precision對軟件模型性能進行評估,計算公式如下所示:

式中,TP表示實際存在缺陷且分類正確;FP表示實際不存在缺陷且劃分正確;FN則表示實際不存在缺陷但分類錯誤。

查全率是指所有缺陷被預(yù)測正確的占比,查準(zhǔn)率是指預(yù)測為缺陷的數(shù)量與實際缺陷數(shù)的比值。

由于兩指標(biāo)的評估效果比較片面,所以采用F1 指標(biāo)將其進行綜合,以有效達成模型性能評價,計算公式如下:

由式(7)可知,模型性能與F1值成正相關(guān)。

2.2 性能對比分析

為了驗證本文模型的通用性與有效性,分別利用靜態(tài)軟件缺陷預(yù)測方法與本文模型,對數(shù)據(jù)集進行一對一形式與多對一形式的跨項目缺陷數(shù)預(yù)測模擬實驗。實驗數(shù)據(jù)均為獨立操作5 次的運行結(jié)果均值,兩者的比較曲線如圖4和圖5所示。

圖4 一對一形式下跨項目預(yù)測對比

圖5 多對一形式下跨項目預(yù)測對比

通過圖4 可以看出,本文模型的F1 均值相比靜態(tài)預(yù)測方法增加了28.5%,且曲線走勢一直位于較高水平。

根據(jù)圖5 可知,基于多對一形式的跨項目預(yù)測,對比靜態(tài)預(yù)測方法,本文模型的F1均值大幅度提升,增幅約為30.7%,波動狀態(tài)較為平穩(wěn),說明本文模型的預(yù)測性能具有顯著的穩(wěn)定性。

3 結(jié)論

針對新啟動的軟件項目,搜集理想的缺陷預(yù)測數(shù)據(jù)集是一項挑戰(zhàn)。所以,本文創(chuàng)建一種基于代價敏感半監(jiān)督的跨項目軟件缺陷數(shù)預(yù)測模型。根據(jù)度量元對軟件源代碼信息與歷史缺陷信息的數(shù)據(jù)進行采集,經(jīng)過預(yù)處理,分析非缺陷數(shù)據(jù)與缺陷數(shù)據(jù)的度量元值關(guān)系;采用中位數(shù)閾值完成數(shù)據(jù)采樣,依據(jù)代價敏感半監(jiān)督支持向量機的超平面,對樣本存在的缺陷情況進行分類;通過整合帶標(biāo)簽樣本與無標(biāo)簽樣本,架構(gòu)訓(xùn)練樣本,從而使測試集缺陷數(shù)預(yù)測得以達成。該模型為未來的研究工作奠定相關(guān)理論基礎(chǔ),提供重要數(shù)據(jù)資料,具有廣闊的應(yīng)用前景與重要的實踐價值。

猜你喜歡
軟件缺陷源代碼代價
人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
計算機仿真(2023年8期)2023-09-20 11:23:42
基于TXL的源代碼插樁技術(shù)研究
基于源文件可疑度的靜態(tài)軟件缺陷檢測方法研究
基于NPE-SVM的軟件缺陷預(yù)測模型
軟件源代碼非公知性司法鑒定方法探析
愛的代價
海峽姐妹(2017年12期)2018-01-31 02:12:22
代價
開源程序的軟件缺陷分布特征的量化分析研究
揭秘龍湖產(chǎn)品“源代碼”
成熟的代價
兴仁县| 宣城市| 海林市| 桃园市| 保亭| 镇巴县| 来宾市| 通山县| 昌图县| 宕昌县| 凤庆县| 建湖县| 陵川县| 阳朔县| 辽宁省| 长垣县| 财经| 德化县| 天全县| 龙州县| 雅安市| 南昌市| 凤庆县| 雅江县| 宁南县| 龙南县| 资溪县| 东辽县| 保亭| 古田县| 镇远县| 逊克县| 长岭县| 金阳县| 铁岭市| 上思县| 周口市| 尼木县| 同心县| 辽宁省| 仙居县|