一種組合式軟件缺陷報告分類方法
【專利摘要】本發(fā)明公開了一種組合式軟件缺陷報告分類方法,包括以下步驟:提取軟件缺陷報告的非結(jié)構(gòu)型特征屬性,并進行預(yù)處理而得到特征詞集合;利用監(jiān)督式的文本挖掘技術(shù)預(yù)測所述特征詞集合所描述內(nèi)容傾向于修正性缺陷的程度等級;將所述等級的預(yù)測結(jié)果與該軟件缺陷報告的編號ID與有用的結(jié)構(gòu)型特征屬性相結(jié)合,從而生成一新的軟件缺陷報告;利用數(shù)據(jù)挖掘的方法預(yù)測新的缺陷報告是否為修正性缺陷。本發(fā)明通過濾除非修正性的缺陷,降低缺陷數(shù)據(jù)庫的噪聲,從而提高基于缺陷報告數(shù)據(jù)庫的缺陷預(yù)測研究的精確度。
【專利說明】一種組合式軟件缺陷報告分類方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種軟件缺陷報告分類方法,屬于計算機軟件開發(fā)領(lǐng)域。
【背景技術(shù)】
[0002]軟件缺陷是衡量軟件質(zhì)量的重要指標,缺陷的及時修復(fù)對提高用戶滿意度相當(dāng)重要。為了有效的管理軟件缺陷,通常使用缺陷跟蹤系統(tǒng)(BTS)來管理軟件缺陷以及需求。當(dāng)一個軟件發(fā)布以后,相應(yīng)的BTS就負責(zé)收集程序測試人員或者終端用戶提交的對軟件缺陷的描述報告,軟件的開發(fā)人員可以通過這些報告對軟件進行適當(dāng)?shù)木S護和完善。
[0003]軟件開發(fā)人員最需要維護的是修正性缺陷(bug),這些缺陷涉及到代碼的修改,對系統(tǒng)的運行至關(guān)重要。相對而言,那些對系統(tǒng)功能的期望,即提高型或者完善型的缺陷(non-bug)可緩一步進行或者可不需維護。然而,提交缺陷報告人員的軟件知識水平參差不齊,大多數(shù)非軟件行業(yè)的終端用戶對于任何使用過程中出現(xiàn)的不盡如人意的地方都會認為是修正性缺陷,這就向BTS里添加了很多維護的噪聲,同時也為基于軟件缺陷報告的科學(xué)研究引入了偏差。
[0004]過去的缺陷預(yù)測重點在于模型的建立,通過改良模型不斷的提高預(yù)測的精確度,卻忽視了數(shù)據(jù)源本身的優(yōu)良。缺陷預(yù)測所使用的大多數(shù)的數(shù)據(jù)庫都是由BTS等提供源數(shù)據(jù)。由上述可知,數(shù)據(jù)庫里存在可觀的噪聲。眾所周知,軟件缺陷預(yù)測的關(guān)鍵就是訓(xùn)練集和測試集,數(shù)據(jù)庫里的噪聲必然引入誤差。為了減少誤差,數(shù)據(jù)源的降噪處理變得尤為重要。
[0005]近年,缺陷預(yù)測開始涉及到對數(shù)據(jù)的處理上。目前通過人工標記和監(jiān)督式學(xué)習(xí),已經(jīng)可以高效的預(yù)測缺陷報告是否為修正型缺陷。一般地,軟件缺陷報告的特征屬性分為結(jié)構(gòu)型屬性,如編號ID、優(yōu)先級(priority)、嚴重性(severity)等和非結(jié)構(gòu)型或者是半結(jié)構(gòu)型屬性,如小結(jié)(summary)、描述(description)、討論(discussion)。一般對于它的預(yù)測要么是基于結(jié)構(gòu)型的屬性,利用機器學(xué)習(xí)的方法進行預(yù)測;要么是基于非結(jié)構(gòu)型屬性,利用文本挖掘的技術(shù)進行預(yù)測;或者是將結(jié)構(gòu)性的屬性與非結(jié)構(gòu)型的屬性處理成文本信息,在進行文本挖掘。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一個組合式缺陷報告分類方法,通過濾除非修正性缺陷報告,達到降低缺陷數(shù)據(jù)庫的噪聲、提高缺陷預(yù)測研究精確度的目的。
[0007]為了達到上述目的,本發(fā)明組合式軟件缺陷報告分類方法包括以下步驟:
[0008]I)提取該軟件缺陷報告的非結(jié)構(gòu)型特征屬性,并進行預(yù)處理而得到特征詞集合;
[0009]2)利用監(jiān)督式的文本挖掘技術(shù)預(yù)測所述特征詞集合所描述的內(nèi)容傾向于所述期望類型的程度等級;
[0010]3)將所述程度等級的預(yù)測結(jié)果與該軟件缺陷報告的編號與有用的結(jié)構(gòu)型特征屬性相結(jié)合,生成一新的軟件缺陷報告;
[0011]4)利用數(shù)據(jù)挖掘的方法預(yù)測新的軟件缺陷報告是否為所述期望類型。[0012]進一步的,步驟I)中僅提取非結(jié)構(gòu)型特征屬性的小結(jié)。
[0013]進一步的,對所述小結(jié)進行分詞、去停用詞和提取詞干的處理,且停用詞根據(jù)文本特性自由添加。
[0014]進一步的,利用貝葉斯多項式預(yù)測非結(jié)構(gòu)型屬性偏向于修正性缺陷的程度等級,并使用十倍交叉驗證。而且,在所述十倍交叉驗證中,每次迭代都有九份數(shù)據(jù)是人工標引的實例,且所述人工標引的實例由相應(yīng)特征詞集合和對應(yīng)的程度等級標引組成。
[0015]進一步的,所述非結(jié)構(gòu)型屬性的十倍交叉驗證的十份數(shù)據(jù)由編寫的代碼完成分害I],從而便于對應(yīng)的軟件缺陷報告編號ID進行追蹤。
[0016]進一步的,在步驟4)中利用貝葉斯網(wǎng)絡(luò)對缺陷報告進行預(yù)測,并使用十倍交叉驗證,且所述十倍交叉由機器學(xué)習(xí)工具完成。且在該十倍交叉驗證中,每次迭代都有九份數(shù)據(jù)是人工標引的實例,且所述人工標引的實例是由相應(yīng)新的軟件缺陷報告的有用的結(jié)構(gòu)型特征屬性以及缺陷報告是否為修正性缺陷的分類組成。
[0017]由上可知,本發(fā)明通過分析軟件缺陷報告來判斷缺陷的類型是否為修正性缺陷,通過濾除非修正性的缺陷,降低缺陷數(shù)據(jù)庫的噪聲,從而提高基于缺陷報告數(shù)據(jù)庫的缺陷預(yù)測研究的精確度。
【專利附圖】
【附圖說明】
[0018]圖1是本發(fā)明組合式軟件缺陷報告分類方法的流程圖;
[0019]圖2是圖1實施例的數(shù)據(jù)嫁接算法的偽代碼實現(xiàn);
[0020]圖3是圖1實施例中合成新軟件缺陷報告的示意圖。
【具體實施方式】
[0021]下面結(jié)合附圖對本發(fā)明作更進一步的說明。
[0022]以下將結(jié)合附圖1,對本發(fā)明的技術(shù)方案進行詳細說明。
[0023]1、第一階段
[0024]從軟件缺陷報告追蹤器中提取歷史缺陷報告數(shù)據(jù)。提取軟件缺陷報告里非結(jié)構(gòu)型特征屬性,并對非結(jié)構(gòu)型特征屬性進行預(yù)處理。預(yù)處理包括分詞、去停用詞和提取詞干,停用詞可根據(jù)文本特性自由添加。經(jīng)預(yù)處理后得到特征詞集合。
[0025]正如前述內(nèi)容所提及的,軟件缺陷報告中的非結(jié)構(gòu)型特征屬性通常包括小結(jié)(summary)、描述(description)、討論(discussion)等內(nèi)容,本實施例優(yōu)選小結(jié)進行預(yù)處理?!靶〗Y(jié)”通常用于概要性地描述軟件缺陷內(nèi)容或者發(fā)生問題時的現(xiàn)象,“描述”則用來描述缺陷的詳細信息,通常描述缺陷的重現(xiàn)步驟,供修改缺陷時查看。
[0026]得到特征詞集合之后,再通過文本分類器,采用監(jiān)督式的文本挖掘技術(shù),如貝葉斯多項式預(yù)測該非結(jié)構(gòu)型特征屬性傾向于修正性缺陷的程度等級分類,分類結(jié)果被分成不同等級(high、middle 或 low),并采用十倍交叉驗證(10-fold cross-validation)。
[0027]在此,十倍交叉驗證的十份數(shù)據(jù)由編寫的代碼完成分割,而不是依靠挖掘工具,這樣可以對小結(jié)對應(yīng)的軟件缺陷報告編號ID進行追蹤。
[0028]在本階段的十倍交叉驗證中,每次迭代都有九份數(shù)據(jù)是被人工標記的實例。已標記實例是由相應(yīng)小結(jié)Sirnimary所得到的特征詞集合以及程度等級標記組成,目的是為了實現(xiàn)監(jiān)督式文本分類。
[0029]2、數(shù)據(jù)嫁接
[0030]將第一階段的等級預(yù)測結(jié)果依據(jù)軟件缺陷報告的編號ID與原始有用的結(jié)構(gòu)型特征屬性相結(jié)合生成新的軟件缺陷報告。圖2是數(shù)據(jù)嫁接算法實現(xiàn)的偽代碼,數(shù)據(jù)嫁接依據(jù)軟件缺陷報告編號ID來實現(xiàn)第一階段預(yù)測結(jié)果和原始的有用結(jié)構(gòu)型特征屬性一一對應(yīng)的嫁接。
[0031]圖3所示第一階段數(shù)據(jù)集為小結(jié)的特征詞集合和分類預(yù)測結(jié)果。第二階段將小結(jié)的分類預(yù)測結(jié)果possibility—一對應(yīng)與原軟件缺陷報告有用的結(jié)構(gòu)型特性屬性相結(jié)合生成新的軟件缺陷報告。
[0032]3、第二階段
[0033]根據(jù)新生成的軟件缺陷報告的描述,利用數(shù)據(jù)挖掘的方法,如貝葉斯網(wǎng)絡(luò)和十倍交叉驗證預(yù)測該缺陷報告是否為修正性缺陷,并將整個新的軟件缺陷報告人工標記為bug或non-bug,從而達到預(yù)測原軟件缺陷報告分類的目的。在此,十倍交叉可有機器學(xué)習(xí)工具完成。
[0034]在本階段的十倍交叉驗證中,每次迭代都有九份數(shù)據(jù)是被人工標記的實例。已標記實例是由相應(yīng)新缺陷報告的所有有用的結(jié)構(gòu)型特征屬性以及該缺陷報告是否為修正性缺陷的分類組成 ,目的是為了實現(xiàn)監(jiān)督式分類。
[0035]以下結(jié)合試驗數(shù)據(jù)說明本發(fā)明的方法相對于單一的內(nèi)部分類器而言,提高分類的準確度。本試驗所采用的三組驗證數(shù)據(jù)集如下表所示:
[0036]
【權(quán)利要求】
1.一種組合式軟件缺陷報告分類方法,用于判斷一軟件缺陷報告是否屬于期望的類型,其特征是,該方法包括以下步驟: 1)提取該軟件缺陷報告的非結(jié)構(gòu)型特征屬性,并進行預(yù)處理而得到特征詞集合; 2)利用監(jiān)督式的文本挖掘技術(shù)預(yù)測所述特征詞集合所描述的內(nèi)容傾向于所述期望類型的程度等級; 3)將所述程度等級的預(yù)測結(jié)果與該軟件缺陷報告的編號與有用的結(jié)構(gòu)型特征屬性相結(jié)合,生成一新的軟件缺陷報告; 4)利用數(shù)據(jù)挖掘的方法預(yù)測新的軟件缺陷報告是否為所述期望類型。
2.根據(jù)權(quán)利要求1所述的組合式軟件缺陷報告分類方法,其中,步驟I)中僅提取非結(jié)構(gòu)型特征屬性中的小結(jié)。
3.根據(jù)權(quán)利要求2所述的組合式軟件缺陷報告分類方法,其中,所述預(yù)處理包括分詞、去停用詞和提取詞干,且停用詞根據(jù)文本特性自由添加。
4.根據(jù)權(quán)利要求1所述的組合式軟件缺陷報告分類方法,其中,利用貝葉斯多項式預(yù)測所述程度等級,并使用十倍交叉驗證。
5.根據(jù)權(quán)利要求4所述的組合式軟件缺陷報告分類方法,其中,在所述十倍交叉驗證中,每次迭代都有九 份數(shù)據(jù)是人工標引的實例,且所述人工標引的實例由相應(yīng)特征詞集合和對應(yīng)的程度等級標引組成。
6.根據(jù)權(quán)利要求4組合式軟件缺陷報告分類方法,其中,所述非結(jié)構(gòu)型屬性的十倍交叉驗證的十份數(shù)據(jù)由編寫的代碼完成分割,從而便于對應(yīng)的軟件缺陷報告編號進行追蹤。
7.根據(jù)權(quán)利要求1所述的組合式軟件缺陷報告分類方法,其中,步驟4)中利用貝葉斯網(wǎng)絡(luò)對缺陷報告進行預(yù)測,并使用十倍交叉驗證,且所述十倍交叉由機器學(xué)習(xí)工具完成。
8.根據(jù)權(quán)利要求7所述的組合式軟件缺陷報告分類方法,其中,在所述十倍交叉驗證中,每次迭代都有九份數(shù)據(jù)是人工標引的實例,且所述人工標引的實例是由相應(yīng)新的軟件缺陷報告的有用的結(jié)構(gòu)型特征屬性以及缺陷報告是否為修正性缺陷的分類組成。
【文檔編號】G06F17/30GK104021180SQ201410250512
【公開日】2014年9月3日 申請日期:2014年6月9日 優(yōu)先權(quán)日:2014年6月9日
【發(fā)明者】周宇, 童燕翔, 古睿航 申請人:南京航空航天大學(xué)