席圣渠,徐鋒,陳鑫,李宣東
1. 南京大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系,江蘇 南京 210023;2. 計(jì)算機(jī)軟件新技術(shù)國家重點(diǎn)實(shí)驗(yàn)室(南京大學(xué)),江蘇 南京 210023
在軟件開發(fā)過程中,軟件測試與缺陷修復(fù)往往會占據(jù)軟件總開發(fā)成本的三分之一以上[1]。為了更有效地管理缺陷,軟件項(xiàng)目中普遍使用缺陷報(bào)告進(jìn)行系統(tǒng)的記錄和追蹤。當(dāng)缺陷報(bào)告被確認(rèn)為新缺陷時(shí),項(xiàng)目管理者首先會進(jìn)行缺陷報(bào)告預(yù)檢(以下簡稱缺陷預(yù)檢),對缺陷報(bào)告進(jìn)行預(yù)評估,以確定缺陷的優(yōu)先等級、委派相關(guān)責(zé)任開發(fā)者進(jìn)行修復(fù),并在責(zé)任開發(fā)者無法按時(shí)完成修復(fù)時(shí)委派新的責(zé)任開發(fā)者,即缺陷再分派。缺陷預(yù)檢位于缺陷報(bào)告生命周期的起點(diǎn),良好的缺陷預(yù)檢能極大地提高軟件維護(hù)的效率與質(zhì)量,是保障軟件可信性的關(guān)鍵環(huán)節(jié)。
傳統(tǒng)意義上,缺陷預(yù)檢由項(xiàng)目管理者人工完成。然而,隨著軟件項(xiàng)目的不斷擴(kuò)大,缺陷的數(shù)量與日俱增,繁雜而耗時(shí)的缺陷預(yù)檢給管理者帶來了很大負(fù)擔(dān)。對于快速發(fā)展,數(shù)量、種類、涵蓋范圍不斷增大的開源軟件項(xiàng)目而言,此類問題更是如此。由于開源項(xiàng)目開發(fā)者自由加入、流動性大、組織松散等特點(diǎn),開源項(xiàng)目往往存在缺陷數(shù)量多、預(yù)檢不及時(shí)、分派難度大等問題。據(jù)統(tǒng)計(jì),截至2009年8月,開源項(xiàng)目Eclipse已收錄超過25萬份缺陷報(bào)告,開源項(xiàng)目Mozilla已收錄超過50萬份缺陷報(bào)告。平均而言,前者平均每天收到120份新缺陷報(bào)告,后者則有170份之多[2]。此外,提交到Eclipse項(xiàng)目的新缺陷報(bào)告平均需要16.7天才會得到項(xiàng)目管理團(tuán)隊(duì)的首次操作[3]。由此可見,在開源項(xiàng)目中,由于缺陷數(shù)量眾多、組織管理松散、開發(fā)者自由加入且水平高低不一的特點(diǎn),缺陷預(yù)檢容易出現(xiàn)繁雜性、困難性、滯后性,因而需要自動化、智能化的方法輔助開源項(xiàng)目管理者進(jìn)行缺陷預(yù)檢,以保障開源軟件的可信性,進(jìn)而促進(jìn)開源軟件生態(tài)的良性發(fā)展。
另外,經(jīng)過數(shù)十年積累,開源軟件生態(tài)已經(jīng)儲備了大量與軟件開發(fā)相關(guān)的數(shù)據(jù),尤其是高質(zhì)量的已修復(fù)缺陷報(bào)告,為自動化、智能化缺陷預(yù)檢提供了先決條件??赏ㄟ^數(shù)據(jù)挖掘、信息檢索等方法,從大規(guī)模的已修復(fù)缺陷報(bào)告中學(xué)習(xí)相關(guān)的缺陷預(yù)檢經(jīng)驗(yàn)知識,用于輔助解決開源項(xiàng)目缺陷數(shù)量多、預(yù)檢不及時(shí)、分派難度大的問題,從而提高開源項(xiàng)目軟件維護(hù)的效率與質(zhì)量,進(jìn)而保障開源軟件的可信性。軟件項(xiàng)目從業(yè)者(管理者、開發(fā)者、測試者)普遍認(rèn)可自動缺陷報(bào)告管理技術(shù)的積極作用[4]。具體到缺陷預(yù)檢技術(shù),可以利用已修復(fù)缺陷報(bào)告數(shù)據(jù)設(shè)計(jì)并訓(xùn)練相應(yīng)機(jī)器學(xué)習(xí)模型,用于缺陷報(bào)告的優(yōu)先級分類、為缺陷報(bào)告分派責(zé)任開發(fā)者,并在責(zé)任開發(fā)者無法及時(shí)完成修復(fù)任務(wù)時(shí),推薦新的責(zé)任開發(fā)者。
上述基于軟件大數(shù)據(jù)的智能化缺陷預(yù)檢技術(shù)已成為當(dāng)前的研究熱點(diǎn)[3-31],然而,當(dāng)前研究的主要關(guān)注點(diǎn)在于如何利用新的機(jī)器學(xué)習(xí)模型與方法、特征提取技術(shù),或?qū)で蟾嗟臄?shù)據(jù)特征,以取得在測試數(shù)據(jù)集上的準(zhǔn)確率的提升。當(dāng)前技術(shù)較少考慮開源項(xiàng)目的特點(diǎn),難以滿足開源項(xiàng)目缺陷預(yù)檢的需求。
為此,本文首先根據(jù)開源項(xiàng)目的特點(diǎn),歸納了缺陷預(yù)檢的3個(gè)關(guān)鍵任務(wù)及其挑戰(zhàn),并提出一套完整的自動化缺陷預(yù)檢框架與技術(shù)。
軟件缺陷管理一直是軟件維護(hù)實(shí)踐中的重要內(nèi)容,也是軟件工程研究的重點(diǎn)問題。從工業(yè)界和學(xué)術(shù)界的普遍認(rèn)知來看,缺陷預(yù)檢是缺陷報(bào)告生命周期(如圖1所示)的開端和重要環(huán)節(jié),缺陷預(yù)檢包含以下3個(gè)較為關(guān)鍵的任務(wù)。
● 缺陷優(yōu)先級分類:用于確定缺陷修復(fù)的優(yōu)先次序,對應(yīng)“新缺陷”向“已分派缺陷”轉(zhuǎn)換的過程,人工進(jìn)行缺陷優(yōu)先級分類往往要求缺陷報(bào)告管理者具有豐富的經(jīng)驗(yàn)和對軟件項(xiàng)目當(dāng)前目標(biāo)的充分理解,而錯(cuò)誤的優(yōu)先級分類將導(dǎo)致項(xiàng)目團(tuán)隊(duì)資源利用率的低下[5]。
● 缺陷分派:用于確定新缺陷報(bào)告的責(zé)任開發(fā)者,對應(yīng)的缺陷報(bào)告將被標(biāo)記為“已分派缺陷”,人工進(jìn)行缺陷分派往往要求缺陷報(bào)告管理者逐條閱讀缺陷報(bào)告,并將其與合適的開發(fā)者匹配,而錯(cuò)誤的缺陷分派會導(dǎo)致缺陷再分派,進(jìn)而延誤缺陷修復(fù)進(jìn)程[3]。
圖1 缺陷報(bào)告生命周期
● 缺陷再分派:當(dāng)責(zé)任開發(fā)者無法修復(fù)缺陷時(shí),選擇新的責(zé)任開發(fā)者。對于已分派缺陷、歸檔缺陷,由于責(zé)任開發(fā)者能力不足、無法及時(shí)處理等原因,需要進(jìn)行缺陷再分派。不及時(shí)的缺陷再分派會影響缺陷修復(fù)效率,而開源項(xiàng)目中有接近40%的缺陷報(bào)告需要至少一次再分派[3]。
開源項(xiàng)目組織管理松散、開發(fā)者可自由加入且水平高低不一等特點(diǎn)使得缺陷預(yù)檢中上述3個(gè)關(guān)鍵任務(wù)的自動化面臨挑戰(zhàn),具體如下。
● 缺陷優(yōu)先級分類方面。開源項(xiàng)目管理松散,缺乏專職的缺陷管理者,這使得開源項(xiàng)目中存在大量未分類的缺陷報(bào)告(其優(yōu)先級為默認(rèn)優(yōu)先級),導(dǎo)致從開源項(xiàng)目中獲得的訓(xùn)練數(shù)據(jù)的優(yōu)先級分布很不均衡,即默認(rèn)優(yōu)先級缺陷報(bào)告數(shù)量巨大,而其他優(yōu)先級類別的缺陷報(bào)告數(shù)量較少。若將其簡單建模為分類問題,則容易出現(xiàn)默認(rèn)優(yōu)先級分類預(yù)測準(zhǔn)確率較高,而真正影響項(xiàng)目團(tuán)隊(duì)資源分配的邊沿優(yōu)先級(edge priority),即較低或較高優(yōu)先級的分類預(yù)測準(zhǔn)確率低下的情況。因此,如何利用開源項(xiàng)目中的分類標(biāo)簽不平衡且存在大量噪聲的訓(xùn)練數(shù)據(jù)來提高邊沿優(yōu)先級的預(yù)測準(zhǔn)確率,成為缺陷優(yōu)先級分類任務(wù)面臨的主要挑戰(zhàn)。
● 缺陷分派方面。由于開源項(xiàng)目開發(fā)者可自由加入,大量開發(fā)者利用業(yè)余時(shí)間加入開源項(xiàng)目,不同開發(fā)者的參與意愿強(qiáng)弱存在差異,表現(xiàn)為投入項(xiàng)目的時(shí)間長短不一,活躍程度也有差別。若簡單地推薦能力與缺陷描述相近的開發(fā)者,容易出現(xiàn)開發(fā)者失效,即開發(fā)者長時(shí)間無響應(yīng),甚至開發(fā)者已經(jīng)離開項(xiàng)目的情況,嚴(yán)重時(shí)可影響缺陷修復(fù)流程[6],降低缺陷分派準(zhǔn)確率;相反,在存在多名能力相近的開發(fā)者時(shí),選擇參與意愿強(qiáng)、活躍程度高的開發(fā)者更符合現(xiàn)實(shí)場景需求。因此,如何動態(tài)地建模和評估開發(fā)者的參與意愿,并在能力相近的開發(fā)者中優(yōu)先推薦活躍程度高的開發(fā)者,以降低失效風(fēng)險(xiǎn)、提高缺陷分派準(zhǔn)確率,成為缺陷分派任務(wù)面臨的主要挑戰(zhàn)。
● 缺陷再分派方面。由于開源項(xiàng)目開發(fā)者水平高低不一,當(dāng)開發(fā)者因能力不足等原因無法修復(fù)缺陷時(shí),往往需要尋找經(jīng)驗(yàn)更豐富且原有責(zé)任開發(fā)者信賴的開發(fā)者,以完成缺陷的修復(fù)。若將問題簡化為缺陷分派,則缺乏對原有責(zé)任開發(fā)者無法修復(fù)缺陷這一反饋信息的利用,會降低缺陷再分派的準(zhǔn)確率。另外,用作訓(xùn)練的已修復(fù)缺陷報(bào)告中往往包含大量缺陷傳遞序列,即責(zé)任開發(fā)者變更的歷史記錄,其中隱含著開發(fā)者之間經(jīng)驗(yàn)與信賴的偏序關(guān)系,其為反饋信息的利用提供了可參照的經(jīng)驗(yàn)規(guī)律。因此,如何充分使用缺陷傳遞序列、挖掘其中隱含的開發(fā)者之間的經(jīng)驗(yàn)與信賴關(guān)系,以利用無法修復(fù)的反饋信息來提升缺陷再分派的準(zhǔn)確率,成為缺陷再分派任務(wù)面臨的主要挑戰(zhàn)。
缺陷預(yù)檢領(lǐng)域存在大量缺陷優(yōu)先級分類[7-15]、缺陷分派[16-27]的研究工作,以及源于或服務(wù)于工業(yè)界的文獻(xiàn)資料[2,21]。這些工作普遍基于缺陷報(bào)告文本信息,采用機(jī)器學(xué)習(xí)方法構(gòu)建分類問題,或采用信息檢索方法構(gòu)建相似度模型。而對于開源項(xiàng)目中較為突出的缺陷再分派問題,相關(guān)研究工作較少。因此,本節(jié)將主要介紹前兩者的研究思路與進(jìn)展,并討論其在應(yīng)對開源項(xiàng)目預(yù)檢任務(wù)面臨的挑戰(zhàn)時(shí)存在的不足。
參考文獻(xiàn)[7]最早提及缺陷報(bào)告優(yōu)先級分類,采用監(jiān)督與無監(jiān)督混合的方法將相似缺陷報(bào)告聚類,并認(rèn)為同一個(gè)聚類內(nèi)的缺陷報(bào)告描述相似或相同的問題,因而應(yīng)當(dāng)具有相同的優(yōu)先級;作者在特征選取、聚類方法、可視化等方面做了較為深入的研究,然而該方法未對缺陷報(bào)告優(yōu)先級做出明確判斷,較難進(jìn)行實(shí)際應(yīng)用。
隨后,Kanwal J等人[8]提出基于支持向量機(jī)(support vector machine,SVM)的分類方法,目標(biāo)是為新缺陷報(bào)告分配一個(gè)優(yōu)先級級別,優(yōu)先級高的缺陷報(bào)告將更受項(xiàng)目組重視,并更快被修復(fù)。該方法將精度(precision)和召回率(recall)作為評估指標(biāo),并通過實(shí)驗(yàn)驗(yàn)證了方法的有效性。Tian Y等人[9]深入研究了多種可能影響優(yōu)先級分類的因素,以選取更有效的訓(xùn)練特征,并采用線性回歸和閾值截?cái)嗟姆椒ㄓ?xùn)練分類模型,以緩解訓(xùn)練數(shù)據(jù)不平衡的問題。Umer Q等人[10]進(jìn)一步研究了情感分析在缺陷優(yōu)先級分類中的作用,采用支持向量機(jī)模型,將缺陷報(bào)告情感特征作為輸入,以提升優(yōu)先級分類的準(zhǔn)確率。其后,Umer Q等人[11]進(jìn)一步研究了分類器的影響,采用基于深度學(xué)習(xí)的分類模型,用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)抽取文本特征,并融合情感特征,共同預(yù)測缺陷優(yōu)先級。然而,這些工作仍存在邊沿優(yōu)先級預(yù)測準(zhǔn)確率低的問題,難以應(yīng)用于實(shí)際軟件的開發(fā)過程,需要進(jìn)一步研究優(yōu)化改進(jìn)的相關(guān)技術(shù)。
另外,區(qū)別于以上預(yù)測明確優(yōu)先等級的工作,Valdivia-Garcia H等人[12]關(guān)注檢測阻塞缺陷,此類缺陷會影響其他缺陷的修復(fù),因而具有很高的修復(fù)優(yōu)先級。作者基于6個(gè)大型開源項(xiàng)目數(shù)據(jù),總結(jié)出了與阻塞缺陷關(guān)聯(lián)較為密切的14個(gè)因素,并以此建立了決策樹,以辨別阻塞缺陷。Jiang Y等人[13]則將缺陷報(bào)告按嚴(yán)重程度分為2類,并采用排序?qū)W習(xí)(learning to rank)過濾掉部分嚴(yán)重程度低的缺陷報(bào)告,以建立更有效的數(shù)據(jù)集,最終采用監(jiān)督學(xué)習(xí)進(jìn)行訓(xùn)練和預(yù)測。Yang X L等人[14]關(guān)注高影響力缺陷報(bào)告的識別,結(jié)合非均衡學(xué)習(xí)策略(imbalanced learning strategies),緩解數(shù)據(jù)不均衡的問題。Ren H等人[15]則對阻塞缺陷進(jìn)行了實(shí)證研究,從修復(fù)時(shí)間、開發(fā)者經(jīng)驗(yàn)等5個(gè)方面開展調(diào)研,結(jié)果表明,阻塞缺陷的修復(fù)往往更加耗時(shí)耗力,應(yīng)當(dāng)具有更高的修復(fù)優(yōu)先級。然而,此類工作往往將缺陷報(bào)告簡化為二分類問題,缺乏對缺陷優(yōu)先級的完整辨別與評估,降低了優(yōu)先級分類的精確性。
綜上所述,相關(guān)工作或者邊沿優(yōu)先級預(yù)測準(zhǔn)確率低,難以應(yīng)用于實(shí)際的開源軟件項(xiàng)目開發(fā)過程;或者將缺陷報(bào)告簡化為二分類問題,降低了優(yōu)先級分類的精度,難以為開源項(xiàng)目的缺陷修復(fù)決策提供明確的信息。
缺陷分派問題最早由Cubranic D等人[16]提出,作者將問題建模為文本分類(開發(fā)者被視為類別)任務(wù),輸入為缺陷報(bào)告文本,輸出為缺陷報(bào)告的候選責(zé)任開發(fā)者;利用標(biāo)記數(shù)據(jù)訓(xùn)練樸素貝葉斯模型,在開源項(xiàng)目數(shù)據(jù)集上驗(yàn)證了方法的有效性。隨后,Anvik J等人[17]針對開源項(xiàng)目中的缺陷分派問題做了系統(tǒng)性的調(diào)研,并在樸素貝葉斯模型的基礎(chǔ)上,使用支持向量機(jī)、決策樹等方法來解決此類問題,結(jié)果顯示支持向量機(jī)的方法取得了最好的效果。由于開源項(xiàng)目具有開發(fā)周期長、開發(fā)者流動性大的特點(diǎn),Tamrawi A等人[18]提出了基于模糊集的方法——Bugzie方法,通過過濾不活躍的開發(fā)者來提高預(yù)測準(zhǔn)確率;然而,過濾篩選的方式過于簡單,無法刻畫開發(fā)者活躍程度的差異。
在文本信息之外,研究者也嘗試結(jié)合缺陷報(bào)告隸屬的產(chǎn)品、模塊等元數(shù)據(jù)信息。Yang G等人[19]首先使用主題模型抽取缺陷報(bào)告文本的特征,隨后在元數(shù)據(jù)一致的限制下查找相似缺陷報(bào)告,最后基于這些相似缺陷報(bào)告,推薦責(zé)任開發(fā)者。Xia X等人[20]則將元數(shù)據(jù)作為監(jiān)督信息,設(shè)計(jì)全新的主題模型結(jié)構(gòu),以獲得更好的文本特征表示,并以此對開發(fā)者能力特征進(jìn)行建模,基于新缺陷報(bào)告與開發(fā)者能力特征的匹配程度來推薦責(zé)任開發(fā)者。然而,雖然主題模型(如LDA[32-33])在自然語言處理方面得到了廣泛應(yīng)用,但仍存在無法對詞序關(guān)系進(jìn)行建模等問題,在文本內(nèi)容理解上仍有提升空間。
近期,隨著深度學(xué)習(xí)方法在自然語言處理領(lǐng)域的廣泛應(yīng)用,也出現(xiàn)了基于深度學(xué)習(xí)的缺陷分派研究。Lee S R等人[21]使用卷積神經(jīng)網(wǎng)絡(luò)建模缺陷報(bào)告文本,并在多個(gè)工業(yè)界項(xiàng)目上驗(yàn)證了方法的有效性。Mani S等人[22]則使用基于注意力機(jī)制的雙向循環(huán)神經(jīng)網(wǎng)絡(luò)建模缺陷報(bào)告文本,以求準(zhǔn)確率的提升。然而,這些方法大部分局限于缺陷報(bào)告文本,未能充分使用缺陷報(bào)告蘊(yùn)含的多種信息。
研究者也嘗試融入代碼、相似缺陷報(bào)告、修復(fù)記錄等信息,進(jìn)一步提升缺陷分派準(zhǔn)確率。Alkhazi B等人[23]結(jié)合代碼相似度,認(rèn)為編寫過缺陷相關(guān)代碼的開發(fā)者更適合修復(fù)缺陷。Zhang T等人[24]發(fā)現(xiàn)較短的缺陷報(bào)告不利于分派,故通過查找相似缺陷報(bào)告的方式拓展缺陷報(bào)告文本,并在此基礎(chǔ)上推薦責(zé)任開發(fā)者。Sun X B等人[25]關(guān)注安全缺陷,并對開發(fā)者的安全缺陷修復(fù)經(jīng)驗(yàn)進(jìn)行建模,針對嚴(yán)重的安全缺陷,推薦經(jīng)驗(yàn)豐富的開發(fā)者。Yadav A等人[26]對開發(fā)者修復(fù)效率進(jìn)行建模,并采用相似度的方式篩選責(zé)任開發(fā)者。Guo S等人[27]則關(guān)注開發(fā)者的修復(fù)歷史,優(yōu)先選取近期有相似修復(fù)經(jīng)驗(yàn)的開發(fā)者。然而,這些方法普遍采用較簡單的語言模型,難以精確刻畫缺陷報(bào)告的文本特征。
綜上所述,相關(guān)工作存在信息使用不充分、文本建模較簡單的問題,導(dǎo)致開發(fā)者能力刻畫不全面、匹配缺陷相關(guān)開發(fā)者效果較差,且缺乏對開源項(xiàng)目中開發(fā)者活躍度的差異化區(qū)分,難以在能力相近的開發(fā)者中識別最活躍的開發(fā)者。
缺陷再分派方面的研究工作最近才被人們重視,相關(guān)研究工作較少,較為相似的工作如下所述。
Jeong G等人[3]整合缺陷再分派過程中責(zé)任開發(fā)者傳遞、變更的有向圖,并以此為依據(jù),調(diào)整缺陷分派結(jié)果,提高傳遞圖上位于終點(diǎn)的開發(fā)者的排名,以此優(yōu)化缺陷分派效果。Bhattacharya P等人[28]則在Jeong G等人[3]的基礎(chǔ)上進(jìn)一步優(yōu)化,通過分析包含元數(shù)據(jù)的傳遞圖,進(jìn)一步優(yōu)化缺陷分派效果。Wu H R等人[29]對缺陷傳遞序列的長度進(jìn)行了研究,發(fā)現(xiàn)產(chǎn)品、模塊等4項(xiàng)屬性對缺陷傳遞序列的長度有顯著影響。然而,這些工作仍停留在對缺陷分派問題的優(yōu)化層面,缺乏對缺陷再分派任務(wù)的關(guān)注。
Xia X等人[30]則研究了復(fù)發(fā)缺陷的成因,并提出了基于集成學(xué)習(xí)的復(fù)發(fā)缺陷預(yù)測方法。然而,該方法仍只關(guān)注復(fù)發(fā)缺陷的預(yù)測,缺乏復(fù)發(fā)缺陷可能存在的責(zé)任開發(fā)者變更的解決方法。Mi Q等人[31]發(fā)現(xiàn),復(fù)發(fā)缺陷中存在部分不影響用戶體驗(yàn)的非負(fù)面(non-negative)缺陷,此類缺陷普遍較容易修復(fù),且不需要變更責(zé)任開發(fā)者。然而,這些工作更關(guān)注調(diào)研、分析層面,缺乏具體的應(yīng)對缺陷再分派任務(wù)的方法。
綜上所述,缺陷再分派方面的研究工作較少,難以簡單采用缺陷分派技術(shù)應(yīng)對開源項(xiàng)目中存在的大量缺陷再分派問題。
為了系統(tǒng)地解決開源軟件項(xiàng)目缺陷預(yù)檢中存在的3個(gè)關(guān)鍵任務(wù),本文提出了一個(gè)基于大數(shù)據(jù)資源的缺陷報(bào)告智能預(yù)檢技術(shù)框架,如圖2所示。框架以開源項(xiàng)目缺陷追蹤系統(tǒng)中海量已修復(fù)缺陷報(bào)告的大數(shù)據(jù)資源為數(shù)據(jù)支撐。針對新缺陷,提出基于半監(jiān)督學(xué)習(xí)的缺陷優(yōu)先級分類方法、基于開發(fā)者活躍度的缺陷分派方法,分別預(yù)測缺陷報(bào)告的優(yōu)先級和責(zé)任開發(fā)者;針對已分派缺陷或復(fù)發(fā)缺陷,提出基于開發(fā)者信賴關(guān)系的缺陷再分派方法,預(yù)測新的責(zé)任開發(fā)者??蚣苤饕ㄒ韵聨追N方法。
● 基于半監(jiān)督學(xué)習(xí)的缺陷優(yōu)先級分類方法:由于開源項(xiàng)目組織管理松散,容易出現(xiàn)優(yōu)先級未分類的情況,導(dǎo)致默認(rèn)優(yōu)先級P3中混雜了更高、更低優(yōu)先級的數(shù)據(jù),可信性不足。另外,由于P3數(shù)據(jù)中存在大量真實(shí)優(yōu)先級標(biāo)簽,全部丟棄也將影響訓(xùn)練結(jié)果。假設(shè)P3中的數(shù)據(jù)符合以P3為均值的正態(tài)分布,結(jié)合其文本對標(biāo)簽進(jìn)行擬合,擾動得到P3數(shù)據(jù)的可能的優(yōu)先級分布;將擾動后的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),在犧牲部分P3準(zhǔn)確率的代價(jià)下,提升邊沿優(yōu)先級的準(zhǔn)確率。因此,為了充分利用已有數(shù)據(jù),使用半監(jiān)督學(xué)習(xí)的方法來提升缺陷邊沿優(yōu)先級的分類準(zhǔn)確率。
● 基于開發(fā)者活躍度的缺陷分派方法:由于開源項(xiàng)目開發(fā)周期長、開發(fā)者自由加入,開發(fā)者存在數(shù)量巨大、人員流動頻繁、活躍周期不固定的特點(diǎn),優(yōu)先推薦活躍程度高的開發(fā)者有利于又快又好地修復(fù)缺陷。為評估當(dāng)前開發(fā)者的活躍程度,可以參照開發(fā)者在缺陷追蹤系統(tǒng)中的活動記錄,評估與缺陷報(bào)告相關(guān)度較高的開發(fā)者,當(dāng)前時(shí)刻附近活動記錄越多的開發(fā)者越活躍,距離當(dāng)前時(shí)刻越近的活動對活躍程度的影響越大。因此,結(jié)合開發(fā)者的活動記錄,對開發(fā)者活躍程度進(jìn)行度量評估,以提升缺陷分派的準(zhǔn)確率。
● 基于開發(fā)者信賴關(guān)系的缺陷再分派方法:由于開源項(xiàng)目的開發(fā)者水平高低不一,責(zé)任開發(fā)者無法完成修復(fù)時(shí),往往要求助于能力更強(qiáng)且自身信賴的開發(fā)者。為了充分利用責(zé)任開發(fā)者無法完成修復(fù)這一反饋信息,可參照缺陷傳遞序列,對開發(fā)者之間的信賴關(guān)系進(jìn)行建模,靠近序列末尾的開發(fā)者往往具有更加豐富的經(jīng)驗(yàn),且更受其他開發(fā)者信賴。另外,缺陷的提交者也可能是開發(fā)者,將提交者納入信賴關(guān)系的建模有助于提高建模準(zhǔn)確性。因此,為充分利用反饋信息,需結(jié)合缺陷傳遞序列,對開發(fā)者信賴關(guān)系進(jìn)行建模,以提升缺陷再分派的準(zhǔn)確率。
圖2 缺陷報(bào)告智能預(yù)檢技術(shù)框架
后文將依次對上述3個(gè)方法與技術(shù)進(jìn)行具體介紹。
缺陷優(yōu)先級分類的目標(biāo)是預(yù)測新缺陷報(bào)告的優(yōu)先等級。由于開源項(xiàng)目管理松散,存在大量默認(rèn)優(yōu)先級的缺陷報(bào)告,數(shù)據(jù)分布很不均衡[9],導(dǎo)致相關(guān)工作普遍出現(xiàn)分類失衡的狀況[9-10]。因此,采用半監(jiān)督學(xué)習(xí)的方法將默認(rèn)優(yōu)先級數(shù)據(jù)視為無標(biāo)簽或標(biāo)簽可信性不高的數(shù)據(jù),在盡可能犧牲少量默認(rèn)優(yōu)先級精度的情況下,換取邊沿優(yōu)先級的準(zhǔn)確性。為此,筆者提出了一個(gè)基于生成對抗網(wǎng)絡(luò)[34-35]的半監(jiān)督學(xué)習(xí)方法——BrCCGAN來解決上述問題。
該方法的主要思想是:給定缺陷報(bào)告br,需訓(xùn)練評分函數(shù)S(br)=prior∈{P1, P2,P3, P4, P5}。其中,邊沿優(yōu)先級P1、P2、P4、P5更重要;P3為默認(rèn)優(yōu)先級,其標(biāo)簽可信性不高[36]。因此,通過擾動默認(rèn)優(yōu)先級P3的標(biāo)簽,擬合出符合文本的P3數(shù)據(jù)的標(biāo)簽分布,以損失部分P3分類準(zhǔn)確率為代價(jià),提高邊沿優(yōu)先級的分類準(zhǔn)確率。
基于半監(jiān)督學(xué)習(xí)的缺陷優(yōu)先級分類方法的工作流程如圖3所示。具體而言:①將缺陷報(bào)告br和優(yōu)先級prior視為完整的數(shù)據(jù)對
,優(yōu)先級準(zhǔn)確的數(shù)據(jù)對具有較高的融洽度,而優(yōu)先級不準(zhǔn)確的數(shù)據(jù)對融洽度較低;②生成器通過符合高斯分布的隨機(jī)擾動z來變更數(shù)據(jù)對中的優(yōu)先級,產(chǎn)生虛假的優(yōu)先級prior’;③判別器檢驗(yàn)缺陷報(bào)告br與真實(shí)優(yōu)先級prior或虛假優(yōu)先級prior’的融洽度;④當(dāng)生成器與判別器互相博弈,達(dá)到穩(wěn)定收斂狀態(tài)時(shí),固定其內(nèi)部缺陷報(bào)告br的特征抽取網(wǎng)絡(luò),并用此網(wǎng)絡(luò)抽取的特征單獨(dú)訓(xùn)練分類模型,即最終的評分函數(shù)S。
此方法中生成器、判別器相互博弈的過程可表示為:
其中,G表示生成器,其輸入為缺陷報(bào)告br和符合高斯分布的隨機(jī)擾動z,輸出為虛假的優(yōu)先級prior’;D表示判別器,其輸入為缺陷報(bào)告br與優(yōu)先級組成的數(shù)據(jù)對,優(yōu)先級可能為真實(shí)優(yōu)先級prior或虛假優(yōu)先級prior’;Objective表示目標(biāo)函數(shù),E表示數(shù)學(xué)期望,訓(xùn)練過程需依次最小化生成器G的損失、最大化判別器D的損失,以達(dá)到兩者相互博弈的目的。
整個(gè)模型包含訓(xùn)練、預(yù)測兩個(gè)部分。訓(xùn)練部分,將由優(yōu)先級確定的缺陷報(bào)告大數(shù)據(jù)作為輸入,此過程的主要目標(biāo)為訓(xùn)練生成器G和判別器D,為了降低參數(shù)規(guī)模,將兩者缺陷報(bào)告特征抽取網(wǎng)絡(luò)的參數(shù)共享,以簡化訓(xùn)練過程、降低訓(xùn)練開銷。預(yù)測部分,使用缺陷報(bào)告特征抽取網(wǎng)絡(luò)抽取新缺陷報(bào)告的特征向量,并使用獨(dú)立的優(yōu)先級分類模型預(yù)測優(yōu)先級prior。
圖3 基于半監(jiān)督學(xué)習(xí)的缺陷優(yōu)先級分類方法的工作流程
筆者基于CCGAN[34]實(shí)現(xiàn)了上述優(yōu)先級分類方法BrCCGAN,主要改進(jìn)在于選擇了更合理的文本特征抽取方法,并優(yōu)化了整個(gè)生成對抗網(wǎng)絡(luò)的結(jié)構(gòu)。
為了驗(yàn)證方法的有效性,選取開源項(xiàng)目Eclipse作為實(shí)驗(yàn)對象,共收集166 081份缺陷報(bào)告,按7:1:2的比率將其分割為訓(xùn)練集、驗(yàn)證集和測試集;選取基于線性回歸和閾值截?cái)嗟腄RONE[9]、基于雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的BiRNN[10]、基于卷積神經(jīng)網(wǎng)絡(luò)和情感分析的CPur[11]作為對比方法;選取精度和召回率作為評估指標(biāo)。
表1 基于半監(jiān)督學(xué)習(xí)的缺陷優(yōu)先級預(yù)測方法的精度與召回率
基于半監(jiān)督學(xué)習(xí)的缺陷優(yōu)先級分類方法BrCCGAN的實(shí)驗(yàn)結(jié)果見表1,橫向?yàn)椴煌瑑?yōu)先級下的精度與召回率,縱向?yàn)檫x取的對比方法。實(shí)驗(yàn)結(jié)果顯示,較同類工作,BrCCGAN的P3優(yōu)先級預(yù)測準(zhǔn)確率稍有下降,但邊沿優(yōu)先級的預(yù)測準(zhǔn)確率有顯著提升,表明本文所提優(yōu)先級分類方法具有較強(qiáng)的實(shí)用價(jià)值。
缺陷分派的目標(biāo)是推薦責(zé)任開發(fā)者。開源項(xiàng)目容易出現(xiàn)推薦的責(zé)任開發(fā)者失效的情況。另外,當(dāng)前較為活躍的開發(fā)者往往愿意為項(xiàng)目貢獻(xiàn)更多的力量。因此,筆者提出了一個(gè)基于循環(huán)神經(jīng)網(wǎng)絡(luò)的開發(fā)者活躍度建模方法DeepTriage來進(jìn)行缺陷分派。
本方法的主要思想是:在利用循環(huán)神經(jīng)網(wǎng)絡(luò)建模缺陷報(bào)告文本詞序關(guān)系的同時(shí),對開發(fā)者活躍度進(jìn)行建模,優(yōu)先推薦當(dāng)前活躍的開發(fā)者修復(fù)缺陷,以緩解推薦的開發(fā)者無法修復(fù)、修復(fù)效率低的問題,即給定缺陷報(bào)告br、修復(fù)記錄信息his,需訓(xùn)練評分函數(shù)S(br,his)=d∈D。其中,D表示開源項(xiàng)目開發(fā)者的集合。
基于開發(fā)者活躍度的缺陷分派方法的工作流程如具體而言,包括3個(gè)重要部分:①文本高層特征抽取,對缺陷報(bào)告文本br建模,并獲取文本特征表示ht;②開發(fā)者活躍度高層特征抽取,建模修復(fù)記錄信息his,并獲取活躍度特征表示ha;③高層特征融合,將ht和ha的特征表示進(jìn)行融合,以獲取分類器的輸入特征。以下將依次對這3個(gè)部分進(jìn)行詳細(xì)介紹。圖4所示。
圖4 基于開發(fā)者活躍度的缺陷分派方法的工作流程
(1)文本高層特征抽取
文本高層特征抽取使用了雙向循環(huán)神經(jīng)網(wǎng)絡(luò)。得益于循環(huán)神經(jīng)網(wǎng)絡(luò)在文本分類上的進(jìn)步[37-38],基于雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的文本高層特征抽取方法逐漸成為主流。具體而言,以獨(dú)熱編碼的形式依次輸入單詞,從順序、倒序兩個(gè)方向進(jìn)行遍歷;對于每個(gè)單詞,將其正向、逆向的特征進(jìn)行拼接,輸入最大池化層,以整合單詞特征,得到保留了最關(guān)鍵信息的整體表示,此過程可表示為:
其中,br=(t1,t2,…,tN)表示缺陷報(bào)告的文本信息,第i個(gè)單詞表示為ti;N表示文本長度;forward、backward分別表示雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的正向、逆向遍歷過程;hti表示第i個(gè)單詞的高層特征,和分別表示第i-1個(gè)單詞的正向特征和第i+1個(gè)單詞的逆向特征;maxpooling表示最大池化層;ht表示缺陷報(bào)告的文本高層特征。
(2)開發(fā)者活躍度高層特征抽取
開發(fā)者活躍度高層特征抽取首先獲取開發(fā)者的修復(fù)記錄信息his,然后將修復(fù)記錄信息輸入神經(jīng)網(wǎng)絡(luò),以得到高層特征。在修復(fù)記錄獲取方面,給定新缺陷報(bào)告的提交時(shí)刻,需獲取提交時(shí)刻向前一段時(shí)間內(nèi)的修復(fù)記錄,并將其按照時(shí)間順序排列;由于開源項(xiàng)目缺陷報(bào)告數(shù)量巨大,為了約束his的長度,采用目標(biāo)缺陷報(bào)告的產(chǎn)品、模塊元數(shù)據(jù)進(jìn)行過濾,即只保留產(chǎn)品、模塊相同的修復(fù)記錄;若無法找到相應(yīng)修復(fù)記錄,則his被設(shè)置為空列表。在高層特征抽取方面,采用單向循環(huán)神經(jīng)網(wǎng)絡(luò)獲得最后節(jié)點(diǎn)的狀態(tài),以保障越靠近當(dāng)前時(shí)間節(jié)點(diǎn)的修復(fù)記錄影像越大,此過程可表示為:
其中,forward表示順序輸入的單向循環(huán)神經(jīng)網(wǎng)絡(luò);M表示修復(fù)記錄的長度;haM-1表示第M-1個(gè)修復(fù)記錄對應(yīng)的高層特征,其值同樣由forward輸出得到;hisM表示第M條修復(fù)記錄;ha表示開發(fā)者活躍度高層特征表示,由于將最后節(jié)點(diǎn)的狀態(tài)作為特征表示,故ha=haM。
(3)高層特征融合
高層特征融合將文本高層特征、開發(fā)者活躍度高層特征融合在一起,共同進(jìn)行后續(xù)預(yù)測,即:
其中,ht和ha分別表示文本高層特征、開發(fā)者活躍度高層特征;h表示融合后的特征;⊕表示特征融合操作,是此步驟的核心。特征融合操作通常采用拼接、元素間相加、元素間相乘3種較為簡單的方法。本文采用特征向量相互影響更為激烈的元素間相乘方法,以便讓開發(fā)者活躍度特征更多地影響責(zé)任開發(fā)者的預(yù)測。
模型的最后,評分函數(shù)S需建立融合的高層特征到項(xiàng)目開發(fā)者的映射,并選擇預(yù)測值最高的開發(fā)者作為推薦的責(zé)任開發(fā)者。采用深度學(xué)習(xí)中常用的全連接層完成映射,可表示為:
其中,h表示融合后的高層特征,dense為全連接層,其輸出維度等同于項(xiàng)目中開發(fā)者的數(shù)量|D|;argmax表示選擇預(yù)測值最高的開發(fā)者;d表示推薦的責(zé)任開發(fā)者的編號。
整個(gè)模型包含訓(xùn)練、預(yù)測兩個(gè)部分。訓(xùn)練部分,將已經(jīng)標(biāo)記歸檔的缺陷報(bào)告大數(shù)據(jù)作為輸入,這些缺陷報(bào)告皆包含真實(shí)修復(fù)缺陷的責(zé)任開發(fā)者信息,并可抽取出文本信息及開發(fā)者修復(fù)記錄信息。這些數(shù)據(jù)共同構(gòu)成訓(xùn)練實(shí)體,完成模型的訓(xùn)練。測試部分,輸入新的缺陷報(bào)告,以及從缺陷追蹤系統(tǒng)中抽取的開發(fā)者活動記錄,則可得到推薦的責(zé)任開發(fā)者d。
筆者基于oh-LSTMp(one-hot LSTM with pooling)[37]實(shí)現(xiàn)了上述缺陷分派方法DeepTriage,主要改進(jìn)在于增加了開發(fā)者活躍度的特征抽取網(wǎng)絡(luò),并試驗(yàn)了多種特征融合方法對分派結(jié)果的影響。
為了驗(yàn)證方法的有效性,選取開源項(xiàng)目Eclipse、Netbeans、Mozilla、Redhat作為實(shí)驗(yàn)對象,將缺陷報(bào)告按照時(shí)間排序,并分為11份,每次選取前n份作為訓(xùn)練集、第n+1份作為測試集,共進(jìn)行10輪實(shí)驗(yàn),并對比平均結(jié)果;選取經(jīng)典分類方法SVM[39]、Yang等人[19]基于主題模型并融合元數(shù)據(jù)的方法提出的模型(以下簡寫為Yang)、TopicMinerMTM[20]作為對比方法;選取準(zhǔn)確率(accuracy)作為評估指標(biāo)。
表2 基于開發(fā)者活躍度的缺陷分派方法的Top-1準(zhǔn)確率
基于開發(fā)者活躍度的缺陷分派方法DeepTriage的Top-1準(zhǔn)確率見表2,縱向表示選取的4個(gè)實(shí)驗(yàn)對象,橫向表示選取的對比方法。實(shí)驗(yàn)結(jié)果顯示,與對比算法相比,DeepTriage的Top-1準(zhǔn)確率在各個(gè)項(xiàng)目中均有顯著提升,表明優(yōu)先推薦活躍度高的開發(fā)者有利于切實(shí)完成缺陷修復(fù)工作,本文所提缺陷分派方法具有較強(qiáng)的實(shí)用價(jià)值。
缺陷再分派的目標(biāo)是在需要變更責(zé)任開發(fā)者時(shí),推薦新的責(zé)任開發(fā)者。不同于缺陷分派任務(wù),缺陷再分派包含額外的傳遞序列tos信息,tos中靠后的開發(fā)者通常具有更強(qiáng)的技術(shù)水平,更加受到其他開發(fā)者信賴;建模開發(fā)者之間的信賴關(guān)系有利于缺陷的有效修復(fù),且更加符合項(xiàng)目開發(fā)者的再分派任務(wù)。為此,筆者提出了一個(gè)基于編碼器、解碼器(encoder-decoder)模型[40-41]的方法iTriage來解決上述問題,以同時(shí)建模缺陷報(bào)告文本信息與開發(fā)者之間的信賴關(guān)系。
本方法的主要思想是:將傳遞序列tos建模為解碼過程,預(yù)訓(xùn)練開發(fā)者間的信賴關(guān)系;當(dāng)需要進(jìn)行缺陷再分派時(shí),使用此預(yù)訓(xùn)練模型獲取文本、傳遞序列的特征,并結(jié)合元數(shù)據(jù)特征共同預(yù)測最終的責(zé)任開發(fā)者。此過程避免了對缺陷傳遞過程的模擬,直接關(guān)注最終目標(biāo),有利于提高缺陷再分派的準(zhǔn)確率,即給定需要變更責(zé)任開發(fā)者的缺陷報(bào)告br、缺陷報(bào)告的傳遞序列tos,需訓(xùn)練評分函數(shù)S,使得S(br,tos)=d∈D。其中,D表示開源項(xiàng)目開發(fā)者的集合;tos表示從缺陷提交者開始,包含一個(gè)或多個(gè)責(zé)任開發(fā)者的傳遞序列。對于已修復(fù)的缺陷,tos中最后的開發(fā)者表示完成修復(fù)的開發(fā)者;對于需再分派的缺陷,則表示無法完成修復(fù)的開發(fā)者,通常需要指定不同的新責(zé)任開發(fā)者。
基于開發(fā)者信賴關(guān)系的缺陷再分派方法的工作流程如圖5所示。具體而言,包括3個(gè)重要部分:①文本編碼器,建模缺陷報(bào)告文本br的特征;②傳遞序列解碼器,模擬缺陷報(bào)告的傳遞過程,通過預(yù)訓(xùn)練的方式學(xué)習(xí)開發(fā)者間的信賴關(guān)系;③開發(fā)者推薦模型,結(jié)合文本特征、傳遞狀態(tài)特征和元數(shù)據(jù)特征,共同推薦新的責(zé)任開發(fā)者。以下將依次對這3個(gè)部分進(jìn)行詳細(xì)介紹。
(1)文本編碼器
文本編碼器采用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)建模缺陷報(bào)告文本特征。區(qū)別于缺陷分派,此處直接輸出每個(gè)單詞的特征表示,并記錄遍歷所有單詞后的狀態(tài)特征,可表示為:
其中,br=(t1,t2,…,tN)表示缺陷報(bào)告文本的集合;hti表示第i個(gè)單詞的高層特征,這些特征將通過后續(xù)的注意力機(jī)制進(jìn)行整合;state0表示完整遍歷后的狀態(tài)信息,其中數(shù)字0表示解碼器的初始狀態(tài)。
(2)傳遞序列解碼器
傳遞序列解碼器采用循環(huán)神經(jīng)網(wǎng)絡(luò)建模。解碼器通過循環(huán)神經(jīng)網(wǎng)絡(luò)模擬缺陷報(bào)告在責(zé)任開發(fā)者間傳遞的過程,學(xué)習(xí)開發(fā)者之間的信賴關(guān)系。為確定j時(shí)刻輸出的開發(fā)者,需要缺陷報(bào)告的全部文本特征、j-1時(shí)刻的隱含狀態(tài)、j-1時(shí)刻的責(zé)任開發(fā)者。可表示為:
其中,statej、dj分別表示j時(shí)刻的隱含狀態(tài)、輸出的責(zé)任開發(fā)者。statej的初始狀態(tài)為解碼器最后輸出的狀態(tài);dj的初始狀態(tài)則區(qū)別于傳統(tǒng)模型采用特殊開始符
在此過程中,也將采用注意力機(jī)制整合文本特征。具體方法為:使用解碼器j-1時(shí)刻的隱含狀態(tài),重新計(jì)算單詞特征的權(quán)重,并加權(quán)求和??杀硎緸椋?/p>
其中,cj表示j時(shí)刻的完整缺陷報(bào)告文本上下文特征。
(3)開發(fā)者推薦模型
開發(fā)者推薦模型采用基于全連接層的分類方法。其輸入包括當(dāng)前j時(shí)刻的文本上下文特征、解碼器隱含狀態(tài)特征,以及缺陷報(bào)告整體的元數(shù)據(jù)特征??杀硎緸椋?/p>
其中,m表示元數(shù)據(jù)特征,此特征可使用簡單的嵌入層獲得;由于元數(shù)據(jù)在缺陷報(bào)告中長期保持穩(wěn)定,因而在任意時(shí)刻j都可使用相同的元數(shù)據(jù)特征m。
整個(gè)模型包括訓(xùn)練、預(yù)測兩個(gè)部分。訓(xùn)練部分,將歸檔缺陷報(bào)告大數(shù)據(jù)作為監(jiān)督,學(xué)習(xí)并優(yōu)化模型參數(shù)。測試部分,模型參數(shù)固定,給定待變更責(zé)任開發(fā)者的缺陷報(bào)告,首先經(jīng)過文本編碼器、傳遞序列解碼器獲取文本上下文特征c、解碼器隱含狀態(tài)特征state;其次,提取元數(shù)據(jù),并得到元數(shù)據(jù)特征m;最后,將3種特征輸入開發(fā)者推薦模型,則可得到推薦的新責(zé)任開發(fā)者。
筆者基于編碼器、解碼器模型[41]實(shí)現(xiàn)了上述缺陷再分派方法iTriage,主要改進(jìn)在于將缺陷在開發(fā)者間傳遞的過程建模為解碼過程,并添加了開發(fā)者推薦模型,結(jié)合缺陷再分派時(shí)刻的文本上下文特征、傳遞狀態(tài)特征、元數(shù)據(jù)特征,直接預(yù)測最終的修復(fù)者。
圖5 基于開發(fā)者信賴關(guān)系的缺陷再分派方法的工作流程
為了驗(yàn)證方法的有效性,選取開源項(xiàng)目Eclipse、Mozilla、Gentoo作為實(shí)驗(yàn)對象,采用模擬時(shí)序的十折驗(yàn)證作為測試方法;選取經(jīng)典文本分類方法SVM[39]、基于注意力機(jī)制的循環(huán)神經(jīng)網(wǎng)絡(luò)DBRNN+A方法[21]、基于卷積神經(jīng)網(wǎng)絡(luò)的方法CNN Triager[22]作為對比方法;選取準(zhǔn)確率作為評估指標(biāo)。
表3 基于開發(fā)者信賴關(guān)系的缺陷再分派方法的Top-1準(zhǔn)確率
基于開發(fā)者信賴關(guān)系的缺陷再分派方法iTriage的Top-1準(zhǔn)確率見表3,縱向表示實(shí)驗(yàn)對象,橫向表示對比方法。此外,實(shí)驗(yàn)進(jìn)一步驗(yàn)證了缺陷再分派情況下的分派準(zhǔn)確率,iTriage@1表示第一次分派的預(yù)測準(zhǔn)確率,iTriage@2、iTriage@3分別表示第一次、第二次再分派(即第二次、第三次分派)的準(zhǔn)確率。實(shí)驗(yàn)結(jié)果顯示,iTriage第一次分派的預(yù)測準(zhǔn)確率已有顯著提升,表明了將提交者納入信賴關(guān)系建模的有效性;且在隨后的第一次、第二次再分派中,準(zhǔn)確率得到進(jìn)一步提升,表明了缺陷報(bào)告在開發(fā)者間傳遞的反饋信息的有效性,本文所提缺陷再分派方法具有較強(qiáng)的實(shí)用價(jià)值。
本文提出了一個(gè)智能化缺陷報(bào)告預(yù)檢技術(shù)的框架,結(jié)合開源項(xiàng)目的特點(diǎn),并利用已修復(fù)缺陷報(bào)告的大數(shù)據(jù)作為支撐,基于深度學(xué)習(xí)的相關(guān)模型與技術(shù),針對缺陷預(yù)檢的3個(gè)關(guān)鍵任務(wù)提出了相應(yīng)的自動化技術(shù):基于半監(jiān)督學(xué)習(xí)的缺陷報(bào)告優(yōu)先級預(yù)測方法、基于開發(fā)者活躍度的缺陷分派方法、基于開發(fā)者信賴關(guān)系的缺陷再分派方法。
面向開源項(xiàng)目的缺陷報(bào)告預(yù)檢技術(shù),尤其是缺陷再分派技術(shù)的研究日益被重視,仍有許多問題需要更加深入的分析和研究,如缺陷報(bào)告質(zhì)量對缺陷預(yù)檢工作的影響如何,代碼托管平臺中缺陷報(bào)告和代碼變更的關(guān)聯(lián)信息、開發(fā)者評價(jià)信息等如何用于提高缺陷預(yù)檢的準(zhǔn)確率等。