專利名稱:一種缺陷跟蹤系統(tǒng)的軟件缺陷報(bào)告自動(dòng)分發(fā)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種缺陷跟蹤系統(tǒng)的軟件缺陷報(bào)告自動(dòng)分發(fā)方法,屬于計(jì)算機(jī)軟件開發(fā)技術(shù)領(lǐng)域。
背景技術(shù):
軟件缺陷作為衡量軟件質(zhì)量的重要指標(biāo),一直受到學(xué)術(shù)界和工業(yè)界的關(guān)注(參考專利:專利號(hào)ZL201110209093.5,名稱“一種軟件缺陷報(bào)告修復(fù)方法”)。軟件缺陷管理是軟件開發(fā)過程中較為重要的環(huán)節(jié)之一,軟件缺陷的數(shù)量及分布直接關(guān)系到軟件項(xiàng)目的時(shí)間成本和金錢開銷。在軟件開發(fā)過程中,及時(shí)發(fā)現(xiàn)并修復(fù)軟件產(chǎn)品中的缺陷可有效地提高軟件產(chǎn)品質(zhì)量。軟件 缺陷的存在會(huì)導(dǎo)致軟件產(chǎn)品在一定程度上無法滿足用戶的需求。為了有效管理缺陷,軟件開發(fā)組織在開發(fā)和維護(hù)大型軟件系統(tǒng)時(shí),通常使用Bugzilla及JIRA等缺陷跟蹤系統(tǒng)管理軟件的缺陷及需求。通過缺陷跟蹤系統(tǒng),軟件使用者及開發(fā)者可以方便地向系統(tǒng)提交及時(shí)發(fā)現(xiàn)的軟件缺陷。缺陷跟蹤系統(tǒng)記錄、跟蹤每個(gè)缺陷報(bào)告的狀況,有效地展示軟件產(chǎn)品的整體質(zhì)量現(xiàn)狀,同時(shí)還提供搜索缺陷、分配缺陷等功能。在缺陷跟蹤系統(tǒng)中,開發(fā)者討論缺陷的修復(fù),QA分發(fā)缺陷報(bào)告、測(cè)試缺陷報(bào)告,項(xiàng)目管理者跟蹤軟件質(zhì)量現(xiàn)狀。缺陷跟蹤系統(tǒng)是軟件開發(fā)過程中開發(fā)者、QA及項(xiàng)目管理者等角色的重要交流樞紐。當(dāng)前,在大型軟件開發(fā)組織中,每天會(huì)有大量的新增軟件缺陷被提交到缺陷跟蹤系統(tǒng),這些缺陷報(bào)告主要通過人工進(jìn)行分發(fā)給修復(fù)者,給軟件組織成員,包括軟件開發(fā)者、軟件項(xiàng)目管理人員,帶來沉重的負(fù)擔(dān)。面對(duì)大量新增缺陷報(bào)告,將缺陷報(bào)告?zhèn)€性化地推薦給相關(guān)修復(fù)者,減少人工參與分發(fā)缺陷報(bào)告所花費(fèi)的時(shí)間。
發(fā)明內(nèi)容
鑒于軟件缺陷修復(fù)人推薦的重要性以及現(xiàn)有人工方法的局限性,本發(fā)明提供了一種缺陷跟蹤系統(tǒng)的軟件缺陷報(bào)告自動(dòng)分發(fā)方法。本發(fā)明的目的是將新增的軟件缺陷報(bào)告自動(dòng)推薦給相關(guān)的修復(fù)人員進(jìn)行修復(fù)。本發(fā)明的技術(shù)內(nèi)容為:—種缺陷跟蹤系統(tǒng)的軟件缺陷報(bào)告自動(dòng)分發(fā)方法,其步驟為:I)從缺陷跟蹤系統(tǒng)的軟件缺陷報(bào)告數(shù)據(jù)庫(kù)中提取已修復(fù)的歷史缺陷報(bào)告,及所提取歷史缺陷報(bào)告的主體描述部分、歷史缺陷報(bào)告的標(biāo)題、及參與討論的相關(guān)開發(fā)人員;2)對(duì)缺陷跟蹤系統(tǒng)歷史缺陷報(bào)告的文本內(nèi)容進(jìn)行自然語言處理,得到每一歷史缺陷報(bào)告的標(biāo)引詞集合;3)缺陷跟蹤系統(tǒng)在歷史缺陷報(bào)告的標(biāo)引詞集合的基礎(chǔ)上對(duì)歷史缺陷報(bào)告進(jìn)行主題建模,通過人為設(shè)定主題的數(shù)目,得到相應(yīng)的主題以及每一歷史缺陷報(bào)告在這些主題上的概率分布;4)對(duì)所有開發(fā)人員,缺陷跟蹤系統(tǒng)計(jì)算他們?cè)谶@些主題上的概率分布;
5)缺陷跟蹤系統(tǒng)將一未分配修復(fù)推薦人的缺陷報(bào)告進(jìn)行同樣的自然語言處理,得到該未分配缺陷報(bào)告的標(biāo)引詞集合并計(jì)算其在這些主題上的概率分布;6)對(duì)于5)中提及的未分配修復(fù)推薦人的缺陷報(bào)告,缺陷跟蹤系統(tǒng)根據(jù)4)所得的所有開發(fā)人員在主題上的概率分布和5)所得該缺陷報(bào)告在每一主題上的概率分布,計(jì)算每一開發(fā)人員參與修復(fù)該缺陷報(bào)告的概率;7)缺陷跟蹤系統(tǒng)根據(jù)6)所得的所有開發(fā)人員參與修復(fù)缺陷報(bào)告的概率,對(duì)開發(fā)人員進(jìn)行排序,選取排名靠前的S個(gè)開發(fā)人員做為該未分配修復(fù)推薦人缺陷報(bào)告的修復(fù)人對(duì)其進(jìn)行修復(fù)。進(jìn)一步的,所述開發(fā)人員指參與評(píng)論歷史缺陷報(bào)告的開發(fā)人員。進(jìn)一步的,歷史缺陷報(bào)告的文本內(nèi)容為歷史缺陷報(bào)告的主體描述及其標(biāo)題。進(jìn)一步的,對(duì)缺陷報(bào)告的文本內(nèi)容進(jìn)行自然語言處理,包括英文分詞、去除停用詞及詞干還原。進(jìn)一步的,采用 LDA主題建模的方法,對(duì)缺陷報(bào)告進(jìn)行主題建模,并得到一定數(shù)目的主題集合T = IT1, T2,...,TJ以及歷史缺陷報(bào)告在這些主題上的概率分布,N為主題的數(shù)目。進(jìn)一步的,步驟4)對(duì)所有開發(fā)人員,缺陷跟蹤系統(tǒng)計(jì)算他們?cè)谶@些主題上的概率分布的方法為:首先將每一個(gè)開發(fā)人員所參與修復(fù)的所有缺陷報(bào)告表示為一個(gè)集合:
BR— = {bii,br2,…,bra}, m為第i個(gè)開發(fā)人員參與修復(fù)的所有缺陷報(bào)告的數(shù)目,即
a = |/說^.卜集合中的每一個(gè)缺陷報(bào)告可以表示為一個(gè)所有主題上的概率分布的列表:brk
=(Pu,Pu,...pk,N),其中,pk, t為第k個(gè)缺陷報(bào)告在第t個(gè)主題上的概率分布,N為主題的數(shù)目,I彡k彡m ;進(jìn)一步的,提取未分配修復(fù)推薦人的缺陷報(bào)告的文本內(nèi)容,與步驟2) —致,對(duì)其進(jìn)行自然語言處理,用步驟3)所得的主題模型計(jì)算該缺陷報(bào)告在所有主題上的概率分布,并將其表示為一個(gè)概率分布列表Pti = (Pq.pPqd,...pq,N),其中pq,t表示該編號(hào)為q的缺陷報(bào)告屬于第t個(gè)主題的概率,I ^ t ^ N0進(jìn)一步的,計(jì)算所有開發(fā)人員參與修復(fù)該缺陷報(bào)告的概率的方法為:對(duì)于每一個(gè)開發(fā)人員,每一個(gè)主題,首先計(jì)算該開發(fā)人員參與修復(fù)該主題的缺陷報(bào)告的概率
Σ h
)HH....=^^它表示第i個(gè)開發(fā)人員參與修復(fù)第t個(gè)主題的缺陷報(bào)告的概率,
2, 7, Pk j
;1 i>r.K.1W,
其中N為主題的數(shù)目,Im ;最后,計(jì)算該開發(fā)人員參與修復(fù)該缺陷報(bào)告的概率
pi,q = Σ puv) X P,J -1 彡 t 彡 N。
i進(jìn)一步的,根據(jù)第6)步計(jì)算所得的開發(fā)人員修復(fù)該缺陷報(bào)告的概率Ρ“,對(duì)開發(fā)人員進(jìn)行降序排序,選取排名靠前的前S名開發(fā)人員做為該未分配修復(fù)推薦人缺陷報(bào)告的修復(fù)人對(duì)其進(jìn)行修復(fù),其中I < i < H,H為所有開發(fā)人員的數(shù)目。下面說明本發(fā)明的核心內(nèi)容。
本發(fā)明方法的整體框架如附圖
所示。具體地,一種基于主題模型的軟件缺陷修復(fù)分派方法,其步驟為:1.構(gòu)建歷史數(shù)據(jù)集合此階段目的是為提取歷史缺陷報(bào)告的數(shù)據(jù),并構(gòu)建歷史缺陷報(bào)告集合和開發(fā)人員集合。。首先需要提取歷史缺陷報(bào)告數(shù)據(jù),包括每個(gè)缺陷報(bào)告的主體描述部分、標(biāo)題和參與其討論的開發(fā)人員。其次需要對(duì)每個(gè)缺陷報(bào)告的文本內(nèi)容進(jìn)行文本預(yù)處理,包括英文分詞、去除停用詞和詞干提取。最后為經(jīng)過文本預(yù)處理后的歷史缺陷報(bào)告構(gòu)建缺陷報(bào)告集合和開發(fā)人員集合。具體的步驟如下:(I)英文分詞對(duì)于英文缺陷報(bào)告,分詞較為簡(jiǎn)單,采用空格和標(biāo)點(diǎn)符號(hào)對(duì)句子進(jìn)行分割,如果是對(duì)于中文描述的缺陷報(bào)告,使用中文分詞軟件;(2)去除停用詞米用停用詞表去除停用詞(3)詞干提取采用Porter算法提取詞干,獲得能代表文檔的標(biāo)引詞集合。(4)構(gòu)建歷史缺陷報(bào)告集合將所有經(jīng)過文本預(yù)處理之后的缺陷報(bào)告構(gòu)成一個(gè)集合BR = Ibr1, br2,...,brM},
所有開發(fā)人員構(gòu)成一個(gè)集合i =皿^,J,其中M為所有歷史缺陷報(bào)告的
數(shù)目,H為所有開發(fā)人員的數(shù)目,bri = {text,, DJ,BRdevj為第j個(gè)開發(fā)人員參與討論的歷史缺陷報(bào)告集合,I≤ j ≤ H, texti為缺陷報(bào)告bn經(jīng)過預(yù)處理之后的文本內(nèi)容,Di為參與討論的開發(fā)人員,沒/ C I),, c浦2.主題建模在構(gòu)建了歷史數(shù)據(jù)集合之后,首先需要對(duì)歷史缺陷報(bào)告進(jìn)行主題建模,得到一定數(shù)目的主題以及所有歷史缺陷報(bào)告在這些主題上的概率分布。而后需要計(jì)算出所有開發(fā)人員參與討論的主題集合。具體的步驟如下:(I)對(duì)歷史缺陷報(bào)告進(jìn)行主題建模對(duì)于歷史缺陷報(bào)告集合BR中的每一個(gè)缺陷報(bào)告bri;通過LDA (請(qǐng)參考:D.M.Blei,A.Y.Ng, and Μ.1.Jordan.Latent dirichlet allocation.J.Mach.Learn.Res.,3:993-1022,Mar.2003.)等主題建模方法,對(duì)其進(jìn)行主題建模,得到一定數(shù)目的主題集合T =ITpT2,...,TN}及其在這些主題上的概率分布brk = {ρ^,ρ^,...,pk,N},其中N為主題的數(shù)目,Tt為某一主題,K t < N,是一個(gè)由屬于它的缺陷報(bào)告組成的缺陷報(bào)告集合,i/ [ B,Pk, t為缺陷報(bào)告brk屬于主題Tt的概率。(2)計(jì)算開發(fā)人員參與討論屬于某一主題的缺陷報(bào)告的概率每個(gè)開發(fā)人員參與討論修復(fù)的所有缺陷報(bào)告都以某一概率屬于某個(gè)主題,通過主題建模過程中得到的缺陷報(bào)告在主題上的分布,可以計(jì)算開發(fā)人員參與討論屬于某一主題 的缺陷報(bào)告的概率
權(quán)利要求
1.一種缺陷跟蹤系統(tǒng)的軟件缺陷報(bào)告自動(dòng)分發(fā)方法,其步驟為: 1)缺陷跟蹤系統(tǒng)從軟件缺陷報(bào)告數(shù)據(jù)庫(kù)中提取已修復(fù)的歷史缺陷報(bào)告,及所提取歷史缺陷報(bào)告的主體描述部分、歷史缺陷報(bào)告的標(biāo)題、及參與討論的相關(guān)開發(fā)人員; 2)缺陷跟蹤系統(tǒng)對(duì)歷史缺陷報(bào)告的文本內(nèi)容進(jìn)行自然語言處理,得到每一歷史缺陷報(bào)告的標(biāo)引詞集合; 3)缺陷跟蹤系統(tǒng)根據(jù)歷史缺陷報(bào)告的標(biāo)引詞集合對(duì)歷史缺陷報(bào)告進(jìn)行主題建模,得到設(shè)定數(shù)目的主題以及每一歷史缺陷報(bào)告在這些主題上的概率分布; 4)缺陷跟蹤系統(tǒng)計(jì)算每一開發(fā)人員在3)所得每一主題上的概率分布; 5)缺陷跟蹤系統(tǒng)將一未分配修復(fù)推薦人的缺陷報(bào)告進(jìn)行自然語言處理,得到該缺陷報(bào)告的標(biāo)引詞集合并計(jì)算其在3)所得每一主題上的概率分布; 6)缺陷跟蹤系統(tǒng)根據(jù)4)所得的所有開發(fā)人員在主題上的概率分布和5)所計(jì)算該缺陷報(bào)告在每一主題上的概率分布,計(jì)算每一開發(fā)人員參與修復(fù)該缺陷報(bào)告的概率; 7)缺陷跟蹤系統(tǒng)根據(jù)6)所得的所有開發(fā)人員參與修復(fù)缺陷報(bào)告的概率,對(duì)開發(fā)人員進(jìn)行排序,將該缺陷報(bào)告分發(fā)給排名靠前的S個(gè)開發(fā)人員。
2.如權(quán)利要求1所述的方法,其特征在于所述自然語言處理包括英文分詞、去除停用詞及詞干還原。
3.如權(quán)利要求1所述的方法,其特征在于采用LDA主題建模的方法,對(duì)缺陷報(bào)告進(jìn)行主題建模,并得到一個(gè)包含一 定數(shù)目的主題集合T = IT1, T2,...,TN}以及歷史缺陷報(bào)告在這些主題上的概率分布,N為主題的數(shù)目。
4.如權(quán)利要求3所述的方法,其特征在于計(jì)算每一開發(fā)人員在3)所得每一主題上的概率分布的方法為:首先將每一個(gè)開發(fā)人員所參與的所有缺陷報(bào)告表示為一個(gè)集合:_“l(fā),m為第i個(gè)開發(fā)人員參與的所有缺陷報(bào)告的數(shù)目,集合中的每一個(gè)缺陷報(bào)告brm表不為一個(gè)所有主題上的概率分布的列表:brk = (pka Pk,2 ...Pk,t...Pk,N),其中,Pk, t為第k個(gè)缺陷報(bào)告在第t個(gè)主題上的概率,I彡t彡N,I彡k彡m。
5.如權(quán)利要求4所述的方法,其特征在于計(jì)算每一開發(fā)人員參與修復(fù)該缺陷報(bào)告的概率的方法為:首先計(jì)算每一開發(fā)人員參與修復(fù)每一主題的缺陷報(bào)告的概率Σ Pk.,— I, 表示第i個(gè)開發(fā)人員參與修復(fù)第t個(gè)主題的缺陷報(bào)告的概/ -1 bvHH..,.Pi f率;然后計(jì)算每一開發(fā)人員參與修復(fù)該缺陷報(bào)告的概率= Σ C X Am ^Pq, t表示該 = \缺陷報(bào)告q屬于第t個(gè)主題的概率,Pi,,為開發(fā)人員i參與修復(fù)該缺陷報(bào)告q的概率。
6.如權(quán)利要求1或2所述的方法,其特征在于采用Porter算法提取詞干,獲得能代表缺陷報(bào)告文檔的標(biāo)引詞集合。
全文摘要
本發(fā)明公開了一種缺陷跟蹤系統(tǒng)的軟件缺陷報(bào)告自動(dòng)分發(fā)方法。本方法為1)從軟件缺陷報(bào)告數(shù)據(jù)庫(kù)中提取已修復(fù)的歷史缺陷報(bào)告;2)對(duì)歷史缺陷報(bào)告的文本內(nèi)容進(jìn)行自然語言處理,得到每一歷史缺陷報(bào)告的標(biāo)引詞集合;3)對(duì)歷史缺陷報(bào)告進(jìn)行主題建模,得到一定數(shù)目的主題以及所有歷史缺陷報(bào)告在這些主題上的概率分布;4)對(duì)所有開發(fā)人員,計(jì)算他們參與討論的主題的概率分布;5)將未分配修復(fù)推薦人的缺陷報(bào)告進(jìn)行自然語言處理,并計(jì)算其在這些主題上的概率分布;6)根據(jù)4)所得的所有開發(fā)人員在主題上的概率分布,計(jì)算所有開發(fā)人員參與修復(fù)該缺陷報(bào)告的概率,將該缺陷報(bào)告分發(fā)給排名靠前的S個(gè)開發(fā)人員。本發(fā)明大大提高了缺陷報(bào)告的修復(fù)效率。
文檔編號(hào)G06F11/36GK103246603SQ20131009273
公開日2013年8月14日 申請(qǐng)日期2013年3月21日 優(yōu)先權(quán)日2013年3月21日
發(fā)明者張文, 謝錫浩, 楊葉, 王青 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所