本發(fā)明屬于跨公司軟件缺陷預(yù)測(cè)技術(shù)領(lǐng)域,特別是涉及一種基于遷移學(xué)習(xí)和缺陷數(shù)量信息的跨公司軟件缺陷預(yù)測(cè)方法。
背景技術(shù):
(1)軟件項(xiàng)目缺陷預(yù)測(cè)技術(shù)
軟件產(chǎn)業(yè)作為信息產(chǎn)業(yè)的重要組成部分,在促進(jìn)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整、經(jīng)濟(jì)發(fā)展方式轉(zhuǎn)變、工業(yè)化與信息化融合及維護(hù)國(guó)家安全方面均發(fā)揮著重要作用。然而隨著軟件應(yīng)用領(lǐng)域的不斷擴(kuò)展,和設(shè)計(jì)復(fù)雜度的不斷提升,軟件項(xiàng)目的質(zhì)量問題越來越難把控。在這種需求背景下,高效的軟件缺陷預(yù)測(cè)技術(shù)越來越引起人們的關(guān)注。
軟件缺陷預(yù)測(cè)技術(shù)可以在軟件系統(tǒng)開發(fā)早期,高效的預(yù)測(cè)系統(tǒng)各個(gè)軟件模塊是否存在缺陷,并根據(jù)預(yù)測(cè)結(jié)果,合理分配測(cè)試人力資源,從而有效降低測(cè)試成本并減小測(cè)試周期。此外,對(duì)于每個(gè)具體的軟件項(xiàng)目來說,不同時(shí)期修復(fù)缺陷的成本是完全不同的,一般來說,其修復(fù)成本是隨時(shí)間呈正比例上升的。比如,文獻(xiàn)1其中提到,1985到1987年,therac-25輻射治療設(shè)備卷入多宗因輻射劑量嚴(yán)重超標(biāo)引發(fā)的醫(yī)療事故,其罪魁禍?zhǔn)资轻t(yī)療設(shè)備電力軟件的bug,導(dǎo)致大量患者接受了高達(dá)100倍的預(yù)定治療劑量,其中三人直接死于輻射劑量超標(biāo),。假定我們能在軟件測(cè)試的早期就發(fā)現(xiàn)并修復(fù)這個(gè)bug,上述悲劇將不再重演。
現(xiàn)有的缺陷預(yù)測(cè)技術(shù)主要包括:缺陷數(shù)量預(yù)測(cè)技術(shù)、缺陷分布預(yù)測(cè)技術(shù)和軟件預(yù)測(cè)模型技術(shù)。
其中缺陷數(shù)量預(yù)測(cè)技術(shù)一般用來確定整體項(xiàng)目缺陷的個(gè)數(shù),如文獻(xiàn)2,其中akahashi將代碼與具體的文檔數(shù)量對(duì)應(yīng)起來,給出了缺陷密度的估計(jì)式:§=67.98+0.46f1-9.69f2-0.08f3,其中§為缺陷率(單位:thenumberoferrors/kloc,kloc為千行代碼),f1為程序規(guī)約變更的頻率(單位:thenumberofpages/kloc),f2為程序員技能(單位:years),f3為程序設(shè)計(jì)文檔頁(yè)數(shù)(單位:thenumberofpages/kloc)。
缺陷分布預(yù)測(cè)技術(shù)則利用分類或回歸技術(shù),如線性判別分析lda(1ineardiscriminantanalysis),分類回歸樹cart(classificationandregressiontree),支持向量機(jī)svm(supportvectormachine),人工神經(jīng)網(wǎng)絡(luò)ann(artificialneuralnetwork),邏輯回歸lr(logisticregression),多元線性回歸mlr(multiplelinearregression)等方法,來對(duì)模塊是否存在缺陷進(jìn)行預(yù)測(cè)。
不同于上述兩種技術(shù)一般選定一些特殊度量元來通過分類回歸找到缺陷模塊的方法,軟件預(yù)測(cè)模型技術(shù)則基于歷史缺陷數(shù)據(jù)構(gòu)建模型。相比而言,這種方法更能將一些其他的缺陷影響因素考慮在內(nèi),比如團(tuán)隊(duì)因素等,且無需人為的參數(shù)調(diào)整。因此,軟件預(yù)測(cè)模型技術(shù)也成為了當(dāng)今主流的軟件缺陷預(yù)測(cè)技術(shù)。
(2)跨公司軟件項(xiàng)目缺陷預(yù)測(cè)技術(shù)
然而在一些實(shí)際測(cè)試場(chǎng)景中,當(dāng)需要用軟件模型預(yù)測(cè)技術(shù)來對(duì)一些新的公司的軟件項(xiàng)目進(jìn)行缺陷預(yù)測(cè)時(shí),并沒有大量的歷史的缺陷數(shù)據(jù)來供我們來訓(xùn)練模型。但在網(wǎng)絡(luò)上存在很多高質(zhì)量的開源軟件項(xiàng)目缺陷數(shù)據(jù)集,因此就有學(xué)者試圖從這些跨公司的開源項(xiàng)目缺陷數(shù)據(jù)集出發(fā),來訓(xùn)練預(yù)測(cè)模型從而對(duì)新的公司的軟件項(xiàng)目進(jìn)行缺陷預(yù)測(cè)。然而直接使用跨項(xiàng)目的缺陷數(shù)據(jù)集來對(duì)新公司的軟件項(xiàng)目進(jìn)行缺陷預(yù)測(cè)還存在一些問題,原因是不同項(xiàng)目之間可能存在著不同的特征分布,直接套用跨公司的軟件缺陷預(yù)測(cè)經(jīng)驗(yàn)可能會(huì)導(dǎo)致預(yù)測(cè)精度過低。
文獻(xiàn)3中馬櫻等人提出了一種transfernaivebayes(tnb)算法,tnb算法考慮了源數(shù)據(jù)和目標(biāo)數(shù)據(jù)來自不同公司的跨公司預(yù)測(cè)場(chǎng)景,為了較好利用跨公司數(shù)據(jù),tnb運(yùn)用了遷移學(xué)習(xí)的方法來建立一個(gè)更有效的預(yù)測(cè)模型。遷移學(xué)習(xí)的目標(biāo)是將從一個(gè)環(huán)境中學(xué)習(xí)到的知識(shí)用來解決新環(huán)境中的任務(wù)。因此,遷移學(xué)習(xí)用來解決跨項(xiàng)目缺陷預(yù)測(cè)過程中出現(xiàn)的問題尤為合適。遷移學(xué)習(xí)處理原始跨項(xiàng)目缺陷數(shù)據(jù)的基本思路是:對(duì)于原始的跨項(xiàng)目缺陷數(shù)據(jù),其與待預(yù)測(cè)數(shù)據(jù)之間的相似度越高,賦予的權(quán)重越高。在此基礎(chǔ)上,那些跟我們待預(yù)測(cè)數(shù)據(jù)相似度高的跨項(xiàng)目缺陷數(shù)據(jù)就能在預(yù)測(cè)結(jié)果中起到更大的作用,同時(shí)也能削弱不相關(guān)的跨項(xiàng)目缺陷數(shù)據(jù)對(duì)預(yù)測(cè)結(jié)果的影響。
(3)樸素貝葉斯
這里之所以選擇貝葉斯算法作為我們預(yù)測(cè)模型的基礎(chǔ),是因?yàn)?,?dāng)遇到一個(gè)需要考慮多個(gè)因素來得到最終預(yù)測(cè)概率的問題,許多算法會(huì)在計(jì)算過程中忽略弱特征的影響,而貝葉斯算法卻是使用所有的特征來修正預(yù)測(cè)結(jié)果,這很適合需要考慮多個(gè)因素的缺陷預(yù)測(cè)問題。盡管單個(gè)分離的特征對(duì)結(jié)果造成的影響很小,但組合起來卻能對(duì)最終的結(jié)果產(chǎn)生大的影響。
使用貝葉斯算法進(jìn)行預(yù)測(cè)的思想基礎(chǔ)是:假定一個(gè)待預(yù)測(cè)實(shí)例為x,它可能所屬的類別c為:{′y′,′n′},′y′和′n′分別代表有缺陷和無缺陷。對(duì)于待預(yù)測(cè)實(shí)例x,其屬于有缺陷和無缺陷類別的后驗(yàn)概率分別為p(′y′|x)和p(′n′|x),如果p(′y′|x)≥p(′n′|x),即x屬于有缺陷類別的后驗(yàn)概率大于等于其屬于無缺陷類別的后驗(yàn)概率,那么認(rèn)為實(shí)例x有缺陷,反之,無缺陷。基于貝葉斯定理,p(′c′|x)可寫為
[文獻(xiàn)1]leveson,nancyg.;turner,clarks.(july1993)."aninvestigationofthetherac-25accidents".ieeecomputer.26(7):18–41.
[文獻(xiàn)2]王青,伍書劍,李明樹."軟件缺陷預(yù)測(cè)技術(shù)".journalofsoftware,vol.19,no.7,july2008,pp.1565—1580.
[文獻(xiàn)3]may,luog,zengx,etal.transferlearningforcross-companysoftwaredefectprediction[j].information&softwaretechnology,2012,54(3):248–256.
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有的基于遷移學(xué)習(xí)的跨項(xiàng)目缺陷預(yù)測(cè)方法中存在的類不平衡和數(shù)據(jù)間距離相等時(shí)權(quán)值排名無法確定的問題,即當(dāng)兩個(gè)實(shí)例和待預(yù)測(cè)數(shù)據(jù)之間擁有相同的相似度時(shí),哪一個(gè)實(shí)例該被賦予更高的權(quán)值,或者,在類不平衡問題中,大量無缺陷實(shí)例權(quán)值的累加會(huì)導(dǎo)致有缺陷實(shí)例權(quán)值對(duì)結(jié)果的影響微乎其微,這種不良影響該如何消除的問題,本發(fā)明提供了一種基于遷移學(xué)習(xí)和缺陷數(shù)量信息的跨公司軟件缺陷預(yù)測(cè)方法。
本發(fā)明所采用的技術(shù)方案是:一種基于遷移學(xué)習(xí)和缺陷數(shù)量信息的跨公司軟件缺陷預(yù)測(cè)方法,其特征在于,包括以下步驟:
步驟1:標(biāo)注每個(gè)跨項(xiàng)目實(shí)例即訓(xùn)練數(shù)據(jù)有多少個(gè)缺陷;
步驟2:根據(jù)經(jīng)驗(yàn)提取實(shí)例內(nèi)的度量屬性;
步驟3:數(shù)據(jù)預(yù)處理;
步驟4:基于加權(quán)跨項(xiàng)目實(shí)例集構(gòu)建貝葉斯缺陷預(yù)測(cè)模型;
步驟5:根據(jù)貝葉斯缺陷預(yù)測(cè)模型預(yù)測(cè)本項(xiàng)目實(shí)例是否有缺陷。
本發(fā)明對(duì)現(xiàn)有跨項(xiàng)目缺陷數(shù)據(jù)的權(quán)值計(jì)算方法進(jìn)行改進(jìn),提出一種基于遷移學(xué)習(xí)和缺陷數(shù)量信息的跨公司軟件缺陷預(yù)測(cè)方法,即在根據(jù)遷移學(xué)習(xí)計(jì)算權(quán)值的基礎(chǔ)上,考慮缺陷個(gè)數(shù)信息的加成作用,有效避免了不平衡問題對(duì)預(yù)測(cè)結(jié)果造成的影響,從而提高了跨項(xiàng)目缺陷預(yù)測(cè)的精度。
附圖說明
圖1本發(fā)明實(shí)施的流程示意圖;
圖2本發(fā)明實(shí)施的構(gòu)建貝葉斯預(yù)測(cè)模型示意圖。
具體實(shí)施方式
為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,應(yīng)當(dāng)理解,此處所描述的實(shí)施示例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
請(qǐng)見圖1和圖2,本發(fā)明提供的一種基于遷移學(xué)習(xí)和缺陷數(shù)量信息的跨公司軟件缺陷預(yù)測(cè)方法,包括以下步驟:
步驟1:人工標(biāo)注每個(gè)跨項(xiàng)目實(shí)例有多少個(gè)缺陷;
對(duì)存在缺陷的實(shí)例標(biāo)注缺陷個(gè)數(shù)為n(n>0),無缺陷的實(shí)例標(biāo)注缺陷個(gè)數(shù)為0;
步驟2:根據(jù)經(jīng)驗(yàn)提取實(shí)例內(nèi)的度量屬性ai;
本實(shí)施例選取了20個(gè)度量屬性,它們分別為:加權(quán)方法數(shù)(wmc),繼承樹深度(dit),子節(jié)點(diǎn)數(shù)(noc),對(duì)象類之間的耦合度(cbo),類的響應(yīng)(rfc),內(nèi)聚缺乏度(lcom),傳入耦合(ca),傳出耦合(ce),公開方法數(shù)(npm),代碼行數(shù)(loc),數(shù)據(jù)訪問度量(dam),聚合度量(moa),功能抽象度量(mfa),方法間的內(nèi)聚度(cam),繼承耦合(ic),方法間耦合(cbm),平均方法復(fù)雜度(amc),最大mccabe環(huán)形復(fù)雜度(max_cc),平均mccabe環(huán)形復(fù)雜度(avg_cc);
步驟3:數(shù)據(jù)預(yù)處理;
步驟3.1:計(jì)算每個(gè)跨項(xiàng)目實(shí)例x和本項(xiàng)目實(shí)例集之間的相似度;
首先計(jì)算本項(xiàng)目實(shí)例集即待預(yù)測(cè)實(shí)例中每個(gè)屬性的取值范圍,即每個(gè)屬性的最小值和最大值組成的左閉右閉區(qū)間。比如有跨公司的缺陷數(shù)據(jù)x1=(1,2,2,0),x2=(2,1,3,0),x3=(2,2,4,3),其中前三位分別為三個(gè)屬性的屬性值,最后一位的數(shù)字表示缺陷的個(gè)數(shù)?,F(xiàn)在來預(yù)測(cè)一個(gè)新項(xiàng)目的實(shí)例y1=(2,2,3)有無缺陷。那么該本項(xiàng)目實(shí)例集的每個(gè)屬性取值范圍為:第一個(gè)屬性取值范圍為[2,2],第二個(gè)屬性取值范圍為[2,2],第三個(gè)屬性取值范圍為[3,3]。然后判斷跨項(xiàng)目實(shí)例的每個(gè)屬性是否在該取值范圍內(nèi),那么該跨項(xiàng)目實(shí)例與本項(xiàng)目實(shí)例集之間的相似度si為,跨項(xiàng)目實(shí)例中的屬性滿足上述取值范圍的個(gè)數(shù)。對(duì)于x1=(1,2,2,0),只有第二個(gè)屬性在對(duì)應(yīng)屬性的取值范圍里,故s1=1,對(duì)于x2=(2,1,3,0),則第一和第三個(gè)屬性在對(duì)應(yīng)屬性的取值范圍里,故s2=2,對(duì)于x3=(2,2,4,3),則第一和第二個(gè)屬性在對(duì)應(yīng)屬性的取值范圍里,故s3=2。
步驟3.2:基于根據(jù)相似度si來確定每個(gè)跨項(xiàng)目實(shí)例的初始權(quán)重wi;
參考萬有引力公式,本實(shí)施例定義每個(gè)跨項(xiàng)目實(shí)例的初始權(quán)重為:
步驟3.3:考慮跨項(xiàng)目實(shí)例的缺陷個(gè)數(shù)信息來調(diào)整初始權(quán)重wi的值;
即在步驟3.2的基礎(chǔ)上乘以該跨項(xiàng)目實(shí)例缺陷的個(gè)數(shù)。假定第i個(gè)跨項(xiàng)目實(shí)例的缺陷個(gè)數(shù)為ni,那么該跨項(xiàng)目實(shí)例的最終權(quán)值為
步驟4:構(gòu)建加權(quán)貝葉斯預(yù)測(cè)模型;
由背景介紹可知,要計(jì)算實(shí)例x分別屬于有缺陷和無缺陷的后驗(yàn)概率p('y'|x)和p('n'|x),需要分別計(jì)算
接下來本實(shí)施例將依次來計(jì)算有無缺陷的先驗(yàn)概率p('c'),c={'y','n'},有無缺陷條件下的每個(gè)屬性的條件概率p(aj|'c')以及本項(xiàng)目實(shí)例的歸一化證據(jù)因子p(x)。
首先,有無缺陷的先驗(yàn)概率為:
接下來在有無缺陷條件跨項(xiàng)目實(shí)例每個(gè)屬性的條件概率為:
最后本實(shí)施例來計(jì)算本項(xiàng)目實(shí)例的歸一化證據(jù)因子:
步驟5:根據(jù)步驟4所得的先驗(yàn)概率和有無缺陷條件下的條件概率來預(yù)測(cè)本項(xiàng)目實(shí)例的特征分布有無缺陷;
本項(xiàng)目實(shí)例被預(yù)測(cè)為有無缺陷的概率為
本實(shí)施例可由本領(lǐng)域技術(shù)人員采用計(jì)算機(jī)軟件技術(shù)依據(jù)下述技術(shù)細(xì)節(jié)自行實(shí)現(xiàn)。
應(yīng)當(dāng)理解的是,本說明書未詳細(xì)闡述的部分均屬于現(xiàn)有技術(shù)。
應(yīng)當(dāng)理解的是,上述針對(duì)較佳實(shí)施例的描述較為詳細(xì),并不能因此而認(rèn)為是對(duì)本發(fā)明專利保護(hù)范圍的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明權(quán)利要求所保護(hù)的范圍情況下,還可以做出替換或變形,均落入本發(fā)明的保護(hù)范圍之內(nèi),本發(fā)明的請(qǐng)求保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。