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

?

基于相似度匹配的軟件缺陷預(yù)測方法研究

2017-09-09 22:49:38劉雅新吳高艷何鵬
軟件導(dǎo)刊 2017年8期

劉雅新+吳高艷+何鵬

摘 要:針對跨項目缺陷預(yù)測(Cross-Project Defect Prediction,CPDP)中為目標(biāo)項目選擇合適的訓(xùn)練數(shù)據(jù)問題,在已有相似度匹配方法的基礎(chǔ)上,引入項目情境信息,從而提出一種改進的CPDP預(yù)測模型。實驗結(jié)果表明:引入項目的情境信息,有助于提高CPDP性能;所提方法的F-measure值比已有方法提高了15.04%和6.57%,但相比WPDP方法,仍有待提高。

關(guān)鍵詞:軟件質(zhì)量保證;缺陷預(yù)測;相似度匹配;訓(xùn)練數(shù)據(jù)選擇

DOIDOI:10.11907/rjdk.171465

中圖分類號:TP301

文獻標(biāo)識碼:A 文章編號文章編號:1672-7800(2017)008-0009-03

0 引言

軟件缺陷預(yù)測研究一直是軟件工程領(lǐng)域中的熱門方向,最早可以追溯到上世紀(jì)70年代。常規(guī)的方法是利用項目自身已有歷史數(shù)據(jù)訓(xùn)練預(yù)測模型后,再用于后續(xù)版本的缺陷預(yù)測,即項目內(nèi)缺陷預(yù)測(Within-Project Defect Prediction,簡稱WPDP),如圖1(a)所示。然而,已有研究表明訓(xùn)練高質(zhì)量的WPDP模型要求有充足的歷史數(shù)據(jù),這對一些新項目或還不活躍的軟件項目便難以滿足。

近些年來隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,尤其是開源社區(qū)如 Github的興起,互聯(lián)網(wǎng)上可供獲取的公開缺陷數(shù)據(jù)集越來越多,而且數(shù)量仍在不斷增長。為有效利用互聯(lián)網(wǎng)上已有的豐富數(shù)據(jù)資源,一些研究者提出利用其它軟件項目的數(shù)據(jù)來訓(xùn)練,構(gòu)建跨項目的缺陷預(yù)測模型(Cross-Project Defect Prediction, 簡稱CPDP),用于解決WPDP中訓(xùn)練數(shù)據(jù)受限的瓶頸[1-5],如圖1(b)所示,為軟件缺陷預(yù)測研究開辟了一條嶄新的途徑。

在CPDP早期研究中,都是將來自其它軟件項目的所有數(shù)據(jù)作為訓(xùn)練集,并不涉及訓(xùn)練集的精簡。常常出現(xiàn)因訓(xùn)練數(shù)據(jù)包含過多噪聲,從而降低了模型準(zhǔn)確性[5]。在某種程度上,數(shù)據(jù)的質(zhì)量遠比數(shù)量對CPDP性能的影響更大。然而,如何才能從大量的可供使用的缺陷數(shù)據(jù)中挑選出質(zhì)量更高的部分用于預(yù)測模型訓(xùn)練,仍然是CPDP研究中急需解決的一個問題[6]。

針對以上問題,目前主要有兩種思路。一種是通過特征降維的方法減少冗余指標(biāo)信息,從而減少數(shù)據(jù)噪音來改善缺陷預(yù)測的性能和效率[7]。另一種方法則是本文將考慮的通過減少數(shù)據(jù)量來減少重復(fù)的無價值的實例[8]。在訓(xùn)練數(shù)據(jù)總量的精簡方面,以往研究都只是根據(jù)數(shù)據(jù)的度量指標(biāo)信息進行相似度匹配,再返回top-k個最相關(guān)的實例構(gòu)成新的訓(xùn)練數(shù)據(jù)集,但它們并沒有充分考慮項目的情境信息。實踐中,每個項目的情境信息存在差異,例如項目的主題、服務(wù)對象、編程語言等。

本文在為CPDP預(yù)測選擇合適跨項目訓(xùn)練數(shù)據(jù)集時,通過考慮項目的5個常規(guī)屬性信息(包括項目主題、目標(biāo)受眾、編程語言、運行環(huán)境、開源認證),并利用自然語言處理中的TF-IDF技術(shù)將它們量化,從而得到每個項目的情境信息向量。最后,結(jié)合項目的情境信息與項目中實例特征值計算數(shù)據(jù)集的相似度。本文的主要貢獻可歸納為:

(1)引入項目的情境信息,提出一種改進的基于相似度匹配的CPDP預(yù)測方法,并使CPDP預(yù)測性能得到改進。

(2)驗證本文方法的CPDP預(yù)測模型在樸素貝葉斯分類器下效果最好。

1 跨項目缺陷預(yù)測(CPDP)

CPDP形象表示為利用其它項目組成的缺陷數(shù)據(jù)集S={P1,P2,…,Ps}對目標(biāo)項目Pt作缺陷預(yù)測。假設(shè)一個項目P由n實例(類文件)組成,即P={I1,I2,…,Ii,…,In},實例Ii表示為Ii={fi1,fi2,…,fij,…,fim},fij為實例Ii在第j個度量指標(biāo)上的值,m為用于度量實例的指標(biāo)個數(shù)。一個項目數(shù)據(jù)集P中度量指標(biāo)Fi對應(yīng)的向量可表示為Fi={f1i,f2i,…,fji,…,fni},fji為第j個實例在該度量指標(biāo)上的值,各實例指標(biāo)值的分布特性可表示為Ci={SCi1,SCi2,…,SCik},SC為對應(yīng)的度量指標(biāo)值的分布特性(最大值、最小值、中位數(shù)、均值和標(biāo)準(zhǔn)方差)。因此,項目P可根據(jù)度量指標(biāo)量化為V={C1,C2,…,Ck,…,Cm}。 這樣,項目A和B之間的相似性可表示為:

Sim(A,B)metric=cos(VA,VB)=VA·VB|VA||VB|(1)

另外,假定每個項目情境信息按照主題、目標(biāo)受眾、編程語言、運行操作系統(tǒng)、認證順序來進行量化表示,則可以表示為U=(ATt,ATia,ATpl,ATos,ATlic),其中ATi分別為上述屬性前面幾個字母的縮寫。因此,項目A和B之間的屬性相似性可表示為:

Sim(A,B)context=cos(UA,UB)=UA·UB|UA||UB|(2)

而表示項目情境信息的每個屬性本身又為一個向量ATi=(wi1,wi2,…,wim), m為屬性i中包括的元素種類,因此,項目情境信息相似性為所有5個屬性向量下的余弦相似性總和,可用式(3)表示,系數(shù)α表示每個屬性的比重系數(shù),本文視每個屬性具有相同的重要性,即α=0.2。

Sim(A,B)context=∑ni=1αicos(AATi,BATi)(3)

對于每個屬性向量ATi中的wij,可通過修改后的tf,idf表示為式(4):

wij=(logfij+1)log#p#pj(4)

其中,fij為項目在屬性i元素j上的頻率,#p和#pj分別代表項目總數(shù)和具有元素j的項目數(shù)。結(jié)合式(3)和式(4),得到:

cos(AATi,BATi)=∑j∈Ai∩Bi(logfij+1)(logfij+1)(log#p#pj)2∑j∈Ai((logfij+1)·log#p#pj)2∑j∈Bi((logfij+1)·log#p#pj)2(5)endprint

最后,在跨項目數(shù)據(jù)集選擇過程中,結(jié)合項目的兩種信息,得到最終的相似度得分:Score(A,B)=Sim(A,B)metric+Sim(A,B)context(6)

對應(yīng)算法實現(xiàn)描述如下:

算法1:基于相似度匹配的CPDP輸入:

1.候選訓(xùn)練數(shù)據(jù)集S={P1,P2,…,Pl};

2.目標(biāo)項目數(shù)據(jù)集Pt={I1,I2,…,Ii,…,In1};輸出:

3.返回預(yù)測結(jié)果result。方法實現(xiàn):

4.P是為Pt從候選集S中返回的最相似的數(shù)據(jù)集;

5.初始化P←Φ

6.for 每個項目Pi(Pi∈S) do;

7.// 對Pi,P進行相似度匹配

8.Set tempScore←Score(Pi,Pt)

9.end for

10.//取集合tempScore中與目標(biāo)項目Pt最相似的項目

11.P←Max(tempScore);

12. //用選擇的數(shù)據(jù)集P訓(xùn)練模型并對Pt進行預(yù)測

13.resultPtmodel(P);//CPDP預(yù)測14.返回result

2 實證分析

2.1 數(shù)據(jù)集

本次實驗使用PROMISE提供的10個項目缺陷數(shù)據(jù)集,表1給出了每個項目的相關(guān)信息。數(shù)據(jù)集中每個實例表示一個類文件(.java),包括20個源代碼度量指標(biāo)用于量化實例,其中CK套件10個、Martins指標(biāo)2個、QMOOM套件5個、McCabes CC指標(biāo)2個,以及代碼行LOC。

2.2 分類器與評價指標(biāo)

本文采用樸素貝葉斯分類器(Nave Bayes)作為本次CPDP預(yù)測模型訓(xùn)練的分類器,Nave Bayes是一個基于條件概率最簡單的分類器,其之所以被稱之為“樸素”是因為它假設(shè)所有特征之間都是相互獨立的。數(shù)學(xué)表示為P(X|Y)=∏ni=1P(xi|Y),X={x1,x2,…,xn}為一個特征向量,Y為分類變量。盡管現(xiàn)實中這種獨立假設(shè)并不完全成立,但樸素貝葉斯已在很多實踐研究中得到有效的應(yīng)用[9]。在預(yù)測過程中,給定一個新的實例(類文件),樸素貝葉斯分類器通過計算該類在各個特征值上的條件概率的乘積來評估存在缺陷的概率,式(7)為基本的計算公式:

P(Y=k|X)=P(Y=k)∏iP(xi|Y=k)∑jP(Y=k)∏iP(xi|Y=k)(7)

預(yù)測過程中存在4種可能情況:假陽性(FP)、假陰性(FN)、真陽性(TP)與真陰性(TN)。根據(jù)4種預(yù)測結(jié)果可計算準(zhǔn)確率(precision)、召回率(recall)和F-measure評價指標(biāo)。準(zhǔn)確率用來衡量有多少真實存在缺陷的實例被成功地預(yù)測。準(zhǔn)確率越高,表明無缺陷實例被誤認為有缺陷的情況會更少。

precision=TPTP+FP(8)

召回率用來衡量被預(yù)測為有缺陷的實例中有多少是真實存在缺陷。召回率越高,表明有缺陷實例被誤認為無缺陷的情況會更少。

recall=TPTP+FN(9)

F-measure用來平衡準(zhǔn)確率與召回率,為兩者的加權(quán)平均值。F-measure 越接近1 表示預(yù)測效果越好。

F-measure=2*precision*recallprecision+recall(10)

2.3 實驗結(jié)果

問題1:引入項目的情境信息,是否有助于提高CPDP性能?

實驗結(jié)果如圖2所示,不難發(fā)現(xiàn),在為目標(biāo)項目選擇合適的跨項目數(shù)據(jù)集過程中,引入項目的情境信息后的CPDP模型性能比不使用時整體都有所提高,其中項目Synapse、Ant和Jedit三個項目性能改進最為顯著,F(xiàn)-measure值改進幅度分別為0.32(86.7%)、0.222(66.2%)和0.207(64.3%)。因此,實驗結(jié)果證實,引入項目的情境信息,有助于提高CPDP性能。

問題2:相比已有CPDP方法,本文所提方法是否性能更好?

為了進一步驗證本文所提出的方法的有效性,引入文獻[1]、[5]中提出的CPDP方法作為比較對象。此外,與WPDP方法進行對比,如圖3所示。結(jié)果顯示,本文所提方法相比兩種基準(zhǔn)方法baseline1和baseline2整體性能分布有所提高,表現(xiàn)為前者均值為0.512,兩種基礎(chǔ)方法的均值分別為0.445和0.481,改進比例分別為15.04%和6.57%,且最大值和最小值均有所提高。然而,本文方法相比于WPDP方法,仍然表現(xiàn)出一定差距。WPDP的均值為0.621,說明選用其它項目的數(shù)據(jù)訓(xùn)練出的模型仍不如目標(biāo)項目自身的數(shù)據(jù)更可靠。盡管如此,但考慮到現(xiàn)實中,對于一些新項目或不活躍的項目,它們可供使用的歷史數(shù)據(jù)并不多,在此數(shù)據(jù)不充分的情境下,即便是有WPDP方法,相信效果也依舊不佳。

本文不足之處:①實驗數(shù)據(jù)只選取了10個項目,實驗結(jié)論還有待在更多項目數(shù)據(jù)集上加以驗證;②本文只考慮了5個項目屬性用于表達情境信息,根據(jù)開源社區(qū)中提供的信息,表達項目情境的屬性還有很多,有待進一步探索。

3 結(jié)語

本文圍繞跨項目缺陷預(yù)測開展研究,針對為目標(biāo)項目選擇合適的訓(xùn)練數(shù)據(jù)問題,在以往通過項目實例度量指標(biāo)相似度匹配的基礎(chǔ)上,引入項目的情境信息,從而改進CPDP預(yù)測模型。實驗結(jié)果表明:①引入項目的情境信息,有助于提高CPDP性能;②相比兩種基準(zhǔn)方法,筆者的方法整體性能有提高,分別提高15.04%和6.57%,但相比WPDP方法,依舊還有待提高。

參考文獻:

[1] HE Z, SHU F, YANG Y, et al. An investigation on the feasibility of cross-project defect prediction[J]. Automated Software Engineering, 2012, 19(2):167-199.endprint

[2] TURHAN B, MENZIES T, BENER A B, et al. On the relative value of cross-company and within-company data for defect prediction[J]. Empirical Software Engineering, 2009, 14(5):540-578.

[3] RYU D, JANG J, BAIK J. A hybrid instance selection using nearest-neighbor for cross-project defect prediction [J]. Journal of Computer Science and Technology, 2015,30(5):969-980.

[4] ZIMMERMANN T, NAGAPPAN N, GALL H, et al. Cross-project defect prediction a large scale experiment on data vs.domain vs.process[C].Joint Meeting of the European Software Engineering Conference and the ACM International Symposium on Foundations of Software Engineering, Amsterdam, Netherlands, 2009:91-100.

[5] PETERS F, MENZIES T, MARCUS A. Better cross company defect prediction[C].Working Conference on Mining Software Repositories. San Francisco, USA, 2013:409-418.

[6] 王星, 何鵬, 陳丹,等. 跨項目缺陷預(yù)測中訓(xùn)練數(shù)據(jù)選擇方法[J]. 計算機應(yīng)用, 2016, 36(11):3165-3169.

[7] LU H, CUKIC B, CULP M. Software defect prediction using semi-supervised learning with dimension reduction[C].Ieee/acm International Conference on Automated Software Engineering. ACM, 2012:314-317.

[8] HERBOLD S. Training data selection for cross-project defect prediction[C].Proceedings of the 9th International Conference on Predictive Models in Software Engineering. 2013:1-10.

[9] HALL T,BEECHAM S,BOWES D,et al. A systematic literature review on fault prediction performance in software engineering[J].Software Engineering IEEE Transactions on,2012,38(6):1276-1304.endprint

龙泉市| 卓资县| 凉山| 绵阳市| 内黄县| 金阳县| 武夷山市| 黄大仙区| 泗阳县| 成都市| 应用必备| 蒲江县| 台北市| SHOW| 巴里| 丰台区| 铅山县| 东安县| 鲁山县| 松阳县| 孟村| 瑞丽市| 荥阳市| 南城县| 邳州市| 西平县| 柳河县| 泽州县| 仲巴县| 桐乡市| 汉寿县| 兴安县| 易门县| 微博| 二连浩特市| 房产| 平和县| 娄底市| 博罗县| 贡山| 炉霍县|