999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

融合加權代碼異味強度因子軟件缺陷預測模型

2022-12-30 08:15:46陳鏡如黃子杰高建華
計算機工程與設計 2022年12期
關鍵詞:檢測模型

陳鏡如,黃子杰,高建華

(1.上海師范大學 計算機科學與技術系,上海 200234;2.華東理工大學 計算機科學與工程系,上海 200237)

0 引 言

研究表明[1],分析與源代碼質量相關的結構度量來預測缺陷及其發生傾向,但使用單一的結構度量作為特征沒有取得良好的預測效果。缺陷預測是一種有監督學習的任務,它將特征因子作為一組獨立變量,將類的缺陷傾向性作為因變量,訓練機器學習分類器,并給出預測結果。文獻[2]指出在添加代碼異味強度作為軟件缺陷的預測因子時,可以為模型帶來信息增益,并提高缺陷模型的預測能力。

代碼異味已經成為軟件系統在維護軟件質量方面造成復雜性的一個標志[3]。代碼異味用于識別要重構的代碼部分,以提高軟件的整體可維護性[4]。代碼異味與軟件缺陷成正相關,并能對缺陷檢測模型的性能產生積極影響[5]。使用文獻[6]中提及的方法,將使用改進代碼異味強度檢測方法作為預測因子添加到預測模型中,分析預測模型性能。

機器學習技術在預測代碼異味方面有很大的潛力,有助于檢測這些異味并提高軟件質量[7]。當進行特征選擇和應用分類模型時,具有隨機森林分類器的BFS森林分類器給出了最好的性能[8]。

Palomba等[9]認為與復雜/長源代碼相關的異味通常被開發者視為重要威脅。代碼異味一旦被引入,就難以被移除,因此應盡快將其重構[10],否則將會在代碼實現和軟件架構的粒度上引發更嚴重的問題[11],提升系統的易錯性,進而導致軟件缺陷[12,13]。研究表明,可以通過組合結構度量和閾值來檢測代碼異味[14],并進一步衡量代碼異味強度表示其嚴重程度。

1 相關術語

1.1 本文涉及的代碼異味

本文主要考慮以下6種代碼異味:God Class、Data Class、Brain Method、Shotgun Surgery、Dispersed Coupling和Message Chain,因為這6種代碼異味不僅是最常見的異味[15],而且與軟件缺陷的相關性最強[5]。6種代碼異味具體介紹如下。

God Class:類承擔太多不同的職責,使得代碼耦合性增強,內聚性降低。

Data Class:類的函數沒有行為,僅用于存取類的屬性。

Brain Method:集中實現多個函數功能的過大方法。

Shotgun Surgery:每一次子方法發生變化,都會觸發其它幾個類許多的變化的一個類。

Dispersed Coupling:與其它的類發生太多耦合的類。

Message Chains:過度耦合的函數調用鏈,在執行某個功能時,需要調用連續的多個方法。

上述代碼異味的檢測策略將在2.1節詳述。

1.2 隨機森林

隨機森林是一種基于Bagging的集成學習方法,其核心思想是將Bootstrap方法應用到Cart算法中。

Gini指數的計算如式(1)所示

(1)

式中:K表示K個類別,pmk表示節點m中類別k所占的比例。

特征Xj在節點m的重要性,即節點m分枝前后的Gini指數變化量如式(2)所示

(2)

式中:GIl和GIr分別表示分枝后兩個新節點的Gini指數。

特征Xj在決策樹i中出現的節點在集合M中,那么Xj在第i棵樹的重要性,如式(3)所示

(3)

(4)

為了能夠更方便的對特征重要性評分作比較,對其進行歸一化處理,如式(5)所示

(5)

2 基于隨機森林加權的代碼異味強度

本文提出了一種基于隨機森林的代碼異味強度檢測方法,對Fontana等[15]提出的代碼異味強度計算公式進行了改進,給每個度量賦予相應的權值。本文提出的算法整體框架流程如圖1所示:

圖1 加權強度因子總體流程

(1)獲取軟件系統源文件。

(2)使用JCodeOdor進行代碼異味強度檢測,導出數據。

(3)不同的檢測策略對度量的選擇各有側重,且度量的區分度不同,依照JCodeOdor中檢測策略中的度量整理數據,無需進行特征提取。

(4)將檢測策略中的各個度量作為特征,代碼異味強度作為標簽,使用隨機森林評估特征重要度。

(5)將特征重要度作為各個特征的權值,計算加權代碼異味強度。本文在計算代碼異味強度時使用檢測策略中的度量。

本文提出的加權代碼異味強度,體現了各個度量對異味強度的不同影響,求得的代碼異味強度更為精確。

2.1 驗證代碼異味檢測策略

JCodeOdor是一個代碼異味檢測器,它依賴于度量和閾值組成的檢測策略來檢測代碼異味強度。其度量詳情見文獻[15],檢測策略見表1。

表1 代碼異味檢測策略

不同的檢測策略對度量的選擇各有側重,且度量的區分度不同,所以不同的檢測規則結果存在一定的差異[16]。不僅如此,度量指標之間存在的相關性[17]可能會影響規則的檢測效果。

為了驗證規則中的度量對本文數據集的適切程度,本文衡量其相關性。若規則中存在高度相關的度量,說明規則可能會部分失效,且這些度量會造成多重共線性問題(multicollinearity)。通過因變量R,即Pearson系數的高低,可以計算自變量x1,x2,……xn,n∈[1,20] 之間的相關性。兩個變量之間的Pearson相關系數,用兩個變量之間的協方差和標準差的商來定義。

樣本Pearson相關系數如式(6)所示

(6)

r的相關程度判斷標準如下:[0.00,0.20)極低相關,[0.02,0.40)低相關,[0.40,0.60)中等相關,[0.60,0.80)高度相關,[0.80,1.0)極高相關。

2.2 數據預處理

JCodeOdor在檢測代碼異味強度時,對檢測到的值進行標準化處理,將數值縮放到1到10之間便于比較,如式(7)所示

(7)

式中:min和max是在數據集[18]中包含的指標的統計分布中的最小值和最大值。JCodeOdor利用1到10范圍內的數值和提供強度語義描述的標簽來呈現代碼異味強度,如圖2所示。

圖2 異味強度標簽和范圍

本文選用JCodeOdor作為檢測工具來衡量代碼異味強度因子,該工具基于度量進行檢測。6種異味的閾值見表2[15]。

表2 6種異味的度量及其默認閾值

JCodeOdor在檢測異味時使用檢測策略中所有的度量并且對這些度量賦予相同的權重,如式(8)所示

(8)

式中:Int表示該代碼異味的代碼異味的強度,Metrici表示應用JCodeOdor測得的第i個度量的值,n為代碼異味檢測策略中所用到的度量的個數。

經對比各種分析計算方法,發現因子分析和主成分分析利用了數據信息的濃縮原理,利用方差解釋率進行權值運算,可能會忽略部分因子,而隨機森林計算權值可以解決這一問題。根據隨機森林評估特征重要性來改進代碼異味強度公式,加權代碼異味強度的計算公式,如式(9)所示

(9)

式中:WInt表示該代碼異味的加權代碼異味的強度,ai為應用隨機森林計算得出的特征重要度,Metrici表示應用JCodeOdor測得的第i個度量的值。

以Heritrix1.14.4為例,本文首先利用JCodeOdor對其系統進行檢測,測得該系統中只有4種代碼異味,即Brain Method、Disperse Coupling、Message Chain、Shotgun Surgery。部分代碼異味度量值和代碼異味強度的值(Intensity)的結果見表3。

2.3 權值計算

根據上文中檢測出的數據,以Heritrix v1.14.4中的setAttribute(CrawlerSettings,Attribute)方法為例,它檢測出具有Shotgun Surgery異味,其具有以下度量值:CC:8;CM:10;FANOUT:6。這些度量值滿足Shotgun Surgery檢測策略中定義的約束條件: CC≥HIGH(5)∧CM≥HIGH(6)∧FANOUT≥LOW(3)。

將得到的實際度量值與表2中這5個點的閾值進行比較,來定義檢測規則中每個度量的強度標簽,具體規則見式(10)

(10)

由上文的強度閾值和劃分出的強度標簽和范圍,如表2和圖2所示,可知,在Shotgun Surgery代碼異味檢測策略中的度量與強度標簽相對應如下:CC=高,CM=高,FANOUT=非常高。

原代碼異味強度計算公式為代碼異味強度為其檢測策略中各個度量強度的加和平均值,且每個強度標簽與相應值范圍的下限相關。

在本例中,CC和CM度量取標簽高即7.75,FANOUT度量取標簽非常高即10。將上述值帶入式(8)求代碼異味強度值,即式(11)所示

(11)

根據圖2中的強度標簽,代碼異味強度因子值8.5與“高”強度標簽相關,即在范圍[7.75,10]內。

根據表3中的數據,應用隨機森林評估特征重要度,并將得到的基尼系數作為度量的權值,故加權代碼異味強度因子計算帶入式(9),如式(12)所示

表3 Code Smell度量及其異味值

0.329×7.75+0.321×7.75+0.35×10=8.5

(12)

由圖2中的強度標簽來看,加權代碼異味強度因子值8.5與“高”強度標簽相關,即在范圍[7.75,10]內。

3 實 驗

將加權代碼異味強度作為預測因子加入到現有的缺陷預測模型構建新模型,并將新模型與原本模型進行對比,評估代碼異味強度的貢獻。

本文提出的預測模型框架流程如圖3所示:

圖3 缺陷預測流程

(1)確定基本預測因子,構建基本軟件缺陷預測模型;

(2)確定代碼異味檢測過程;

1)JCodeOdor檢測軟件系統源文件;

2)隨機森林特征重要度評估;

3)加權代碼異味強度計算;

(3)在基本缺陷預測模型的基礎上加入加權代碼異味強度作為預測因子,構建新模型;

(4)確定用于分類的機器學習技術;

本文在一個由Jureczko等[19]定義的20個軟件度量組成的缺陷預測模型中測試代碼異味強度作為預測因子的貢獻。

3.1 實驗環境

本文的實驗在Intel(R) Core(TM)i7-5500U、4 GB內存的Windows 10環境下進行,實驗的計算和分析使用Python完成。本文選取PROMISE數據集中的缺陷數據作為實驗對象,本文用到的數據集見表4。

表4 實驗項目

本文對這5個軟件系統進行實驗,并回答以下問題:

Q1:本文使用的檢測策略規則是否適用于數據集?

Q2:本文所建構的模型是否能提升缺陷預測的性能?

Q3:與Fontana等提出的代碼異味強度因子相比,加權代碼異味強度作為預測因子是否能為缺陷預測模型帶來增益?可帶來多少增益?

3.2 實驗過程

本文使用以下3種預測因子組合構建新模型,分析預測因子對模型貢獻的模型,以直觀地顯示預測因子帶來的模型性能提升,這些組合包括:

(1)基本模型:

基于Jureczko等[19]定義的20個軟件度量的軟件缺陷預測模型;

(2)基本模型+代碼異味強度因子:

1)將20個軟件度量和Fontana等提出的代碼異味強度作為預測因子,對于沒有異味的類,將其代碼異味強度因子設為0,構建軟件缺陷預測模型;

2)將20個軟件度量和本文提出的加權代碼異味強度作為預測因子,對于沒有異味的類,將其代碼異味強度因子設為0構建軟件缺陷預測模型。

本文對比了文獻[2]中使用的常見分類器,包括決策樹、邏輯回歸和簡單邏輯回歸等,發現簡單邏輯回歸的效果最好。這一實驗結果和文獻[2]的結果相吻合。

3.3 實驗結果與分析

為了回答Q1,本文驗證規則中的度量對數據集的適切程度,包括以下幾個方面:①度量間是否存在高相關性;②度量是否包含多種衡量代碼異味的角度。如代碼異味常表現出的低內聚和高耦合,高復雜性等。因此,應考慮度量中是否包含內聚、耦合、復雜性和數據訪問。

相關性分析是指對兩個或多個具備相關性的變量元素進行分析,從而衡量兩個變量因素的相關密切程度。若存在相關性較過高的度量意味著多重共線性,機器學習模型和信息增益算法可能無法有效區分共線的特征,因此它們需要被移除。本文使用python檢測到的度量之間的相關性(Heritrix1.14.4)如圖4所示,線條上的數字為它們之間的相關性。本文發現,檢測策略中的度量無顯著的相關性,不會造成多重共線問題。

圖4 度量相關性網絡

由相關性圖可知,各個度量之間有著復雜且多元的關系。具有極高相關性的有{FANOUT,CINT},{CINT,CFNAMM},{FANOUT,CFNAMM},{CC,CM};具有高度相關性的有:{ATLD,NOVA},{NOVA,NOLV},{CYCLO,LOC},{FDP,ATFD};具有極低相關性的有:{FANOUT,CM},{FANOUT,CC}。在同一異味下,檢測策略之間的相關性多處于高度相關以下。本文發現,檢測策略中的度量無顯著的相關性,不會造成多重共線問題。

為了回答Q2,需要評估模型的性能。本文采用10次10折交叉驗證。實驗結果見表5、表6,表5是原始缺陷預測模型測得有關模型各項數據,表6是添加代碼異味強度作為預測因子和添加加權代碼異味強度作為預測因子時模型的各項數據。

表5 原始模型結果

由表6可知,在基本預測模型中添加代碼異味強度和加權代碼異味強度作為預測因子后,能夠實現高精度預測。對于Apache Velocity,在分別添加代碼異味強度和改進計算公式后求得的加權代碼異味強度作為模型的預測因子后,其模型精確度較原始模型分別提高25%和28%。這一結果意味著模型僅錯誤的分類了少部分數據。添加代碼異味強度作為預測模型的預測因子時,可提高模型的精確度。圖5描述了原軟件缺陷預測模型與添加代碼異味強度作為預測因子后的模型,模型的各項性能數據。值得注意的是,在基本模型運行良好的情況下,獲得性能增量是相當困難的。盡管如此,在這種情況下,使用代碼異味強度和加權代碼異味強度作為預測因子時,依然能夠提升模型的準確性。

表6 改進模型結果

圖5 Apache Velocity結果

在所有分析的項目中,增加代碼異味強度和加權代碼異味強度作為缺陷預測模型的預測因子時通常會提高基礎缺陷預測模型的性能。

對于Q2,在基本模型中分別添加代碼異味強度作為預測因子和加權代碼異味強度作為預測因子后,均能夠提高原預測模型的分類精確度。添加代碼異味強度作為預測因子模型的分類精確度可提高25%,添加加權代碼異味強度作為預測因子時比添加代碼異味強度作為預測因子時,缺陷預測模型分類精確度可提升約3%。添加加權代碼異味強度作為預測因子的缺陷預測模型的F-Measure比添加代碼強度作為預測因子的缺陷預測模型提升約2%。

為了驗證代碼異味強度在預測模型中所做的貢獻Q3,本文采用信息增益算法來量化代碼異味強度作為預測因子時為預測模型提供的增益。信息增益見式(13)

InfoGain(M,pi)=H(M)-H(M|pi)

(13)

式中:M為預測模型, P={p1,p2……pn} 為模型的預測因子。函數H(M)表示包含預測因子pi的模型的熵,而函數H(M|pi) 表示不包括預測因子pi的熵,見式(14)

(14)

圖6、圖7展示了系統Apache Xerces和系統Apache Lucene排名前十的度量的信息增益。

圖6 Apache Xerces結果

圖7 Apache Lucene 結果

代碼異味強度和改進公式后得到的加權代碼異味強度在Apache Xerces系統中提供的信息增益最少,分別是0.1和0.15。在系統Apache Lucene系統中,與其它度量相比,代碼異味強度因子和加權代碼異味強度因子帶來的信息增益最多,分別是0.50和0.47。在Apache Xerces項目中,基本模型的預測性能很高,獲得增益較為困難,但當使用代碼異味強度作為預測因子時可帶來0.1的性能提升,而使用加權代碼異味強度作為預測因子時可帶來0.11的性能提升。在Apache Lucene項目中,代碼異味強度作為預測因子時可帶來0.47的性能提升,但用于計算代碼異味強度的單個度量帶來的性能提升卻比它低。使用代碼異味強度和加權代碼異味強度作為預測因子相對比其衍生的單個度量具有更高的預測能力。

在所有研究項目中,代碼異味強度和加權代碼異味強度是模型最重要的預測因子之一。

對于Q3,改進公式得到的加權代碼異味強度提供的增益要大于代碼異味強度。Fontana等[14]提出的代碼異味強度因子將影響代碼異味的度量視為同等重要,不能精確地反映各個度量對代碼異味強度的影響程度。本文提出的加權代碼強度因子能夠區分各個度量對代碼異味強度的不同影響程度,測得的代碼異味強度的值相對更為準確。綜上所述,本文提出的加權代碼異味強度在模型中作為預測因子時,相較于代碼異味強度在模型中作為預測因子時,能夠帶來更多的增益。

4 結束語

代碼異味強度可以評估代碼異味的嚴重程度。Fontana等[14]提出了一種計算代碼異味強度的方法,它作為缺陷預測模型的預測因子時可提高模型的性能。然而,這種代碼異味強度的計算方法沒有區分各個度量對代碼異味強度的不同影響,測得的代碼異味強度的精確度有待提高。本文通過對各個度量賦予相應的權值來改善這一問題。研究發現,改進公式后測得的加權代碼異味強度更為精確。將加權代碼異味強度作為預測因子添加到缺陷預測模型中,與原始模型和使用未加權代碼異味的強度作為預測因子的模型相比,可提高缺陷預測模型的準確性。加權代碼異味強度作為預測因子比代碼異味強度作為預測因子時,能夠為模型帶來更高的信息增益。

本文為驗證規則中的度量對本文數據集的適切程度,檢驗了各個度量之間的相關性,發現了{CC,CM}、{FANOUT,CINT}這兩組度量呈高度相關關系,為對原始數據集進行處理時提供了依據。JCodeOdor中所提供的檢測策略中各個度量之間并無顯著相關性,不會造成多重共線問題,符合從各個角度考慮代碼異味的思想。今后的工作包括:進一步研究其它代碼異味的強度,提高加權代碼異味強度作為預測因子的普適性;選用開源軟件以外的軟件種類,驗證本文模型的普適性;進一步研究其它檢測策略中的度量之間的相關性,并將其結合到代碼異味強度中;研究代碼異味之間的相關性與軟件缺陷傾向性之間的關系。

猜你喜歡
檢測模型
一半模型
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 欧洲在线免费视频| 99精品在线看| 干中文字幕| 在线观看欧美精品二区| 国产女人18毛片水真多1| 成人福利在线看| 欧美精品v日韩精品v国产精品| 亚洲午夜国产片在线观看| 国产精品白浆无码流出在线看| 国产一级毛片在线| 免费看a毛片| 1024你懂的国产精品| 思思热精品在线8| 无遮挡国产高潮视频免费观看| 亚洲成人黄色网址| 日韩毛片在线视频| 无码AV日韩一二三区| 国产成人8x视频一区二区| 波多野结衣视频一区二区| 国产日韩欧美在线播放| 国产精品人人做人人爽人人添| 久久久久九九精品影院| 人禽伦免费交视频网页播放| 国产成年女人特黄特色毛片免| 小蝌蚪亚洲精品国产| 亚洲人成网站在线观看播放不卡| 日本精品中文字幕在线不卡| 国产乱子伦手机在线| 日本日韩欧美| 无码国内精品人妻少妇蜜桃视频| 亚洲精品欧美重口| a级毛片在线免费观看| 成人毛片免费观看| 国产免费怡红院视频| 欧美α片免费观看| 777国产精品永久免费观看| 草草影院国产第一页| 免费国产无遮挡又黄又爽| 亚洲高清在线天堂精品| 国产精品国产三级国产专业不| 又污又黄又无遮挡网站| 成人噜噜噜视频在线观看| 国模视频一区二区| 精品人妻一区无码视频| 白浆视频在线观看| 欧美97色| 久久动漫精品| 亚洲一区二区无码视频| 精品国产免费观看| 久久人搡人人玩人妻精品| 日韩激情成人| 囯产av无码片毛片一级| 亚洲综合色婷婷中文字幕| 日韩在线成年视频人网站观看| 国产毛片片精品天天看视频| 凹凸国产分类在线观看| 欧美不卡二区| 国产本道久久一区二区三区| 欧美日本一区二区三区免费| 亚洲精品第一页不卡| 99精品国产高清一区二区| 91青青视频| 亚洲国产中文欧美在线人成大黄瓜| 97超碰精品成人国产| 亚洲日韩Av中文字幕无码| 久草网视频在线| 又粗又硬又大又爽免费视频播放| 久久性妇女精品免费| 真实国产精品vr专区| 国产精品香蕉在线| 毛片网站在线看| 91精品久久久无码中文字幕vr| 一本大道香蕉中文日本不卡高清二区| 999国内精品视频免费| 色噜噜在线观看| 国产91成人| 亚洲综合第一区| 亚洲第一极品精品无码| 国产欧美日韩va另类在线播放| 亚洲AⅤ无码日韩AV无码网站| AV不卡在线永久免费观看| 国产网站一区二区三区|