• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    軟件缺陷預(yù)測(cè)技術(shù)研究進(jìn)展*

    2019-10-24 02:09:40宮麗娜姜淑娟
    軟件學(xué)報(bào) 2019年10期
    關(guān)鍵詞:軟件缺陷度量分類(lèi)器

    宮麗娜,姜淑娟,姜 麗

    1(中國(guó)礦業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 徐州 221116)

    2(礦山數(shù)字化教育部工程研究中心,江蘇 徐州 221116)

    3(棗莊學(xué)院 信息科學(xué)與工程學(xué)院,山東 棗莊 277160)

    隨著軟件規(guī)模的擴(kuò)大和復(fù)雜度的不斷提高,軟件的質(zhì)量問(wèn)題成為了關(guān)注的焦點(diǎn),軟件缺陷是軟件質(zhì)量的對(duì)立面,威脅著軟件質(zhì)量.因此,如何在軟件開(kāi)發(fā)的早期挖掘出缺陷模塊成為一個(gè)亟需解決的問(wèn)題.軟件缺陷預(yù)測(cè)技術(shù)能夠在軟件開(kāi)發(fā)過(guò)程中使用軟件模塊的度量元數(shù)據(jù)來(lái)提前發(fā)現(xiàn)與鎖定缺陷模塊,從而合理地分配有限資源,為軟件質(zhì)量提供保障.

    從20 世紀(jì)70 年代以來(lái),軟件缺陷預(yù)測(cè)技術(shù)一直是軟件研究人員和開(kāi)發(fā)者非常關(guān)注的研究熱點(diǎn)之一[1].研究者從軟件倉(cāng)庫(kù)出發(fā),基于軟件度量數(shù)據(jù),利用統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)等方法來(lái)研究缺陷預(yù)測(cè)技術(shù),并且取得了豐富的研究成果.

    目前已有一些研究人員從不同角度對(duì)缺陷預(yù)測(cè)的相關(guān)研究工作進(jìn)行了總結(jié)[2-5],重點(diǎn)討論了靜態(tài)缺陷預(yù)測(cè)方法、數(shù)據(jù)驅(qū)動(dòng)缺陷預(yù)測(cè)方法等.特別地,Li 等人以數(shù)據(jù)來(lái)源為主線(xiàn)對(duì)版本內(nèi)數(shù)據(jù)、跨版本數(shù)據(jù)和跨項(xiàng)目數(shù)據(jù)進(jìn)行了歸納和分析[2],Chen 等人對(duì)靜態(tài)軟件缺陷預(yù)測(cè)技術(shù)[5]和跨項(xiàng)目缺陷預(yù)測(cè)技術(shù)[3]分別進(jìn)行了歸納和總結(jié).在此基礎(chǔ)上,本文收集了近8 年的缺陷預(yù)測(cè)技術(shù)的相關(guān)文獻(xiàn),以缺陷預(yù)測(cè)形式為主線(xiàn),從數(shù)據(jù)集、構(gòu)建方法、評(píng)價(jià)指標(biāo)等多個(gè)角度對(duì)相關(guān)技術(shù)進(jìn)行了匯總和分析.

    本文使用defect prediction、software defect prediction、fault prediction 及software fault prediction 等搜索關(guān)鍵詞,在A(yíng)CM Digital Library、Springer Link online Library、IEEE Xplore Digital Library、Elsevier ScienceDirect及CNKI 等在線(xiàn)數(shù)據(jù)庫(kù)中全面搜索了2010 年~2017 年在期刊和會(huì)議中發(fā)表的相關(guān)文獻(xiàn),截止到2018 年1 月進(jìn)行人工的篩選和過(guò)濾,選擇出與缺陷預(yù)測(cè)技術(shù)相關(guān)的高質(zhì)量論文117 篇,其中,期刊論文85 篇,會(huì)議論文30 篇,其他2 篇.其發(fā)表出處的分布情況如圖1 所示,發(fā)表的文獻(xiàn)每年呈增長(zhǎng)趨勢(shì).其中不乏在軟件工程領(lǐng)域的國(guó)際頂級(jí)期刊和頂級(jí)會(huì)議上的研究論文.例如:TSE 期刊(14 篇)、FSE/ESEC 期刊(3 篇)、ICSE 會(huì)議(6 篇)、ASE 會(huì)議(2篇)、IST(12 篇)和ESE(12 篇).基于上述分析不難發(fā)現(xiàn),軟件缺陷預(yù)測(cè)技術(shù)一直是軟件工程中一個(gè)重要的研究課題.

    Fig.1 The source distribution of the literature圖1 文獻(xiàn)發(fā)表出處分布

    本文第1 節(jié)對(duì)軟件缺陷預(yù)測(cè)模型的框架進(jìn)行描述.第2 節(jié)系統(tǒng)分析已有軟件缺陷數(shù)據(jù)集及數(shù)據(jù)集的預(yù)處理過(guò)程.第3 節(jié)對(duì)軟件缺陷預(yù)測(cè)模型的構(gòu)建方法進(jìn)行總結(jié)和分析.第4 節(jié)總結(jié)分析目前軟件缺陷預(yù)測(cè)技術(shù)的相關(guān)性能評(píng)價(jià)指標(biāo).最后總結(jié)全文,并對(duì)未來(lái)值得關(guān)注的研究方向進(jìn)行探討.

    1 軟件缺陷預(yù)測(cè)模型框架

    軟件缺陷預(yù)測(cè)技術(shù)通過(guò)使用軟件度量元數(shù)據(jù)來(lái)對(duì)軟件模塊的缺陷傾向性、缺陷數(shù)或者缺陷嚴(yán)重度等進(jìn)行預(yù)測(cè).根據(jù)模型的構(gòu)建方法,軟件缺陷預(yù)測(cè)模型可以用數(shù)學(xué)符號(hào)表示如下.

    假設(shè)給定包含n個(gè)樣本的數(shù)據(jù)集D={(x1,y1),(x2,y2),…,(xi,yi),,,(xn,yn)},其中,xi=(a1,a2,…,aj,…,ad)∈Rd表示軟件模塊i的度量屬性向量,aj表示模塊的第j個(gè)度量元的值,d表示度量元的個(gè)數(shù);yi∈Y表示軟件模塊i的標(biāo)記,Y表示所有標(biāo)記的集合,如若是對(duì)缺陷傾向性進(jìn)行預(yù)測(cè),則Y={有缺陷,無(wú)缺陷},如若是對(duì)缺陷數(shù)進(jìn)行預(yù)測(cè),則Y=N,如若是對(duì)缺陷嚴(yán)重度進(jìn)行預(yù)測(cè),則Y={Z|Z≥0},根據(jù)Y值對(duì)程序模塊嚴(yán)重度進(jìn)行排序.軟件缺陷預(yù)測(cè)模型f:Rd→Y,表示了從軟件模塊的內(nèi)部度量元屬性到軟件外部缺陷的映射.

    具體的缺陷預(yù)測(cè)過(guò)程由4 部分組成[2-5]:收集軟件缺陷數(shù)據(jù)、提取度量元、構(gòu)建軟件缺陷預(yù)測(cè)模型的方法和性能評(píng)價(jià)指標(biāo).圖2 給出了軟件缺陷預(yù)測(cè)模型的框架.

    (1)從包含軟件項(xiàng)目開(kāi)發(fā)周期的全部數(shù)據(jù)的軟件倉(cāng)庫(kù)里收集軟件缺陷數(shù)據(jù);

    (2)提取與軟件缺陷(缺陷數(shù)、缺陷傾向性、缺陷嚴(yán)重性)相關(guān)的不同軟件度量元,并對(duì)軟件模塊進(jìn)行標(biāo)記;

    (3)在提取的數(shù)據(jù)集上利用統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)的技術(shù)構(gòu)建軟件缺陷預(yù)測(cè)模型;

    (4)最后通過(guò)性能評(píng)價(jià)指標(biāo)(比如精確率、召回率、AUC 等)對(duì)構(gòu)建的預(yù)測(cè)模型進(jìn)行評(píng)價(jià).

    Fig.2 The framework of software defect prediction model圖2 軟件缺陷預(yù)測(cè)模型框架

    在上述流程中,第(2)步和第(3)步的處理直接決定著軟件缺陷預(yù)測(cè)模型的性能.因此,本文重點(diǎn)關(guān)注軟件缺陷數(shù)據(jù)集及構(gòu)建方法的研究進(jìn)展,在總結(jié)常用的數(shù)據(jù)集及數(shù)據(jù)預(yù)處理方法的基礎(chǔ)上,對(duì)構(gòu)建缺陷預(yù)測(cè)模型的關(guān)鍵技術(shù)進(jìn)行了綜述,最后給出經(jīng)常使用的評(píng)價(jià)指標(biāo).接下來(lái)的章節(jié)將從這幾方面分別展開(kāi)詳細(xì)的敘述.

    2 軟件缺陷數(shù)據(jù)集

    軟件缺陷預(yù)測(cè)技術(shù)需要大量的缺陷數(shù)據(jù)來(lái)挖掘模塊內(nèi)部的度量元與模塊外部的缺陷之間的某種關(guān)系,因此獲取有效的缺陷數(shù)據(jù)集及度量元是構(gòu)建軟件缺陷預(yù)測(cè)模型的前提.軟件缺陷數(shù)據(jù)倉(cāng)庫(kù)中包含大量項(xiàng)目的缺陷數(shù)據(jù)集,但是存在著異常值、高維度、類(lèi)不平衡等問(wèn)題,所以,在使用前需要對(duì)這些數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行預(yù)處理.使用的軟件缺陷數(shù)據(jù)倉(cāng)庫(kù)、度量元及數(shù)據(jù)預(yù)處理技術(shù)直接關(guān)系到預(yù)測(cè)模型的性能.

    接下來(lái),我們分別從軟件缺陷數(shù)據(jù)倉(cāng)庫(kù)、缺陷度量元以及數(shù)據(jù)處理這3 個(gè)方面進(jìn)行詳細(xì)的總結(jié)和分析.

    2.1 缺陷數(shù)據(jù)倉(cāng)庫(kù)

    缺陷數(shù)據(jù)倉(cāng)庫(kù)收集了軟件項(xiàng)目從需求、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試等各個(gè)生命期階段的缺陷數(shù)據(jù).缺陷庫(kù)對(duì)于能否構(gòu)建一個(gè)有效的預(yù)測(cè)模型起到關(guān)鍵作用.不同的缺陷庫(kù)具有不同的特征信息,其中,用于缺陷預(yù)測(cè)的信息主要包括數(shù)據(jù)來(lái)源、項(xiàng)目成熟度、開(kāi)發(fā)環(huán)境及粒度等.

    (1)數(shù)據(jù)來(lái)源

    隨著越來(lái)越多的大型開(kāi)源軟件的公開(kāi),缺陷數(shù)據(jù)倉(cāng)庫(kù)經(jīng)歷了從私有數(shù)據(jù)集到公開(kāi)數(shù)據(jù)集的發(fā)展階段.缺陷預(yù)測(cè)模型對(duì)不同來(lái)源的缺陷庫(kù)會(huì)產(chǎn)生不同的性能.到目前為止,用于軟件缺陷預(yù)測(cè)的數(shù)據(jù)倉(cāng)庫(kù)大體上可以分為私人/商業(yè)倉(cāng)庫(kù)、部分公共/免費(fèi)倉(cāng)庫(kù)和公共倉(cāng)庫(kù)這3 種類(lèi)型[4].

    ·私人/商業(yè)倉(cāng)庫(kù):缺陷庫(kù)只能公司內(nèi)部使用,以這些數(shù)據(jù)集為依據(jù)進(jìn)行的實(shí)驗(yàn)無(wú)法重現(xiàn).

    ·部分公共/免費(fèi)倉(cāng)庫(kù):缺陷庫(kù)中無(wú)度量元信息,源代碼和錯(cuò)誤信息公開(kāi)使用.

    ·公共倉(cāng)庫(kù):缺陷庫(kù)中度量元及錯(cuò)誤信息都可使用(如:NASA、PROMISE 等公共庫(kù)).

    本文針對(duì)收集和選出的117 篇論文進(jìn)行分析,發(fā)現(xiàn)預(yù)測(cè)模型使用的數(shù)據(jù)來(lái)源的分布如圖3 所示,公共倉(cāng)庫(kù)的數(shù)據(jù)集(NASA、PROMISE、AEEEM 及ReLink)占絕大多數(shù),越來(lái)越多的研究者使用公共缺陷數(shù)據(jù)集,這樣有利于缺陷預(yù)測(cè)模型的重現(xiàn),實(shí)現(xiàn)各個(gè)模型的比較分析.

    Fig.3 The distribution of the repository圖3 數(shù)據(jù)倉(cāng)庫(kù)的分布情況

    (2)項(xiàng)目成熟度

    項(xiàng)目成熟度主要是指項(xiàng)目進(jìn)化的版本數(shù).通常,一個(gè)版本對(duì)應(yīng)于項(xiàng)目的一個(gè)缺陷庫(kù),而不同版本的缺陷庫(kù)會(huì)對(duì)缺陷預(yù)測(cè)模型產(chǎn)生不同影響.因此,部分研究者提出了跨版本的缺陷預(yù)測(cè)模型,研究使用之前版本數(shù)據(jù)對(duì)缺陷預(yù)測(cè)模型的預(yù)測(cè)能力.

    (3)開(kāi)發(fā)環(huán)境

    開(kāi)發(fā)環(huán)境指的是軟件項(xiàng)目開(kāi)發(fā)過(guò)程中使用的軟件工具,比如:Java、C++等.同樣,使用不同開(kāi)發(fā)語(yǔ)言的缺陷庫(kù)會(huì)對(duì)缺陷預(yù)測(cè)模型產(chǎn)生不同的影響.因此,在選取訓(xùn)練集時(shí)需要考慮該項(xiàng)目的開(kāi)發(fā)環(huán)境.

    (4)粒度

    粒度指的是缺陷庫(kù)中每條樣本的項(xiàng)目粒度.其中可以分為類(lèi)粒度、文件粒度或者包粒度等.使用不同粒度的缺陷庫(kù)會(huì)對(duì)缺陷預(yù)測(cè)模型產(chǎn)生不同的影響.因此,部分研究者從不同粒度提取不同的度量元,研究它們對(duì)缺陷預(yù)測(cè)模型的影響.

    綜上所述,由于數(shù)據(jù)來(lái)源、項(xiàng)目成熟度、開(kāi)發(fā)環(huán)境及粒度等的不同會(huì)形成不同類(lèi)型的缺陷庫(kù).但是,目前大部分的研究在建立預(yù)測(cè)模型前很少考慮這些缺陷庫(kù)的特征,而且對(duì)于這些特征對(duì)缺陷預(yù)測(cè)模型的影響的研究也很少.因此,在后續(xù)研究中可以討論這些特征對(duì)缺陷預(yù)測(cè)模型的不同影響程度.

    2.2 軟件缺陷數(shù)據(jù)度量元

    軟件缺陷預(yù)測(cè)技術(shù)可以使項(xiàng)目開(kāi)發(fā)人員重點(diǎn)關(guān)注那些有缺陷的模塊,但是要挖掘出有缺陷的模塊,需要找出與缺陷外在表現(xiàn)有關(guān)系的內(nèi)在屬性,這些屬性就是軟件度量數(shù)據(jù),即度量元.通常,每個(gè)度量都與軟件項(xiàng)目的一些功能屬性相關(guān)(比如耦合、內(nèi)聚、繼承、代碼更改等)[6].目前,現(xiàn)有的度量方法可以分為軟件產(chǎn)品屬性度量和軟件過(guò)程度量?jī)纱箢?lèi),圖4 表明了文獻(xiàn)中使用到的度量方法分類(lèi)情況.本文在文獻(xiàn)[5]的基礎(chǔ)上,對(duì)度量方法作了進(jìn)一步的總結(jié)和分析.

    Fig.4 The literature overview of software metrics圖4 軟件度量元文獻(xiàn)分類(lèi)總覽圖

    2.2.1 軟件產(chǎn)品度量

    軟件產(chǎn)品度量是通過(guò)分析軟件代碼來(lái)設(shè)計(jì)度量元,描述軟件產(chǎn)品的特征,用于產(chǎn)品評(píng)估和決策.軟件產(chǎn)品度量重點(diǎn)關(guān)注的是代碼的規(guī)模和內(nèi)在復(fù)雜度等屬性,軟件產(chǎn)品度量包括規(guī)模度量、復(fù)雜度度量等.

    (1)規(guī)模度量

    軟件產(chǎn)品的規(guī)模度量是以代碼行數(shù)、對(duì)象點(diǎn)、特征點(diǎn)或功能點(diǎn)數(shù)等來(lái)衡量的.常用的度量方法主要有:代碼行度量(lines of code,簡(jiǎn)稱(chēng)LOC)方法[16]、功能點(diǎn)分析法、面向?qū)ο筌浖膶?duì)象點(diǎn)方法及構(gòu)造性成本模型(constructive cost model,簡(jiǎn)稱(chēng)COCOMO).

    (2)復(fù)雜度度量

    軟件產(chǎn)品的復(fù)雜度度量是用于確定程序控制流或軟件系統(tǒng)結(jié)構(gòu)的復(fù)雜程度的指標(biāo).主要有面向過(guò)程的傳統(tǒng)度量和面向?qū)ο蟮亩攘?

    傳統(tǒng)度量是在軟件工程初期,針對(duì)面向過(guò)程程序設(shè)計(jì)的方法級(jí)別進(jìn)行的度量.常用的是 Halstead[6]和McCabe[18]的度量.

    ·Halstead 度量法:依據(jù)程序中可執(zhí)行代碼行的操作數(shù)和操作符的數(shù)量來(lái)計(jì)算程序的復(fù)雜性.其值越大,程序結(jié)構(gòu)就越復(fù)雜.

    ·McCabe 度量法:依據(jù)控制流的復(fù)雜性來(lái)計(jì)算程序的復(fù)雜性,順序結(jié)構(gòu)單一,則程序最簡(jiǎn)單,而選擇和循環(huán)構(gòu)成的環(huán)路越多,程序越復(fù)雜.

    隨著面向?qū)ο箝_(kāi)發(fā)方法成為主流方法,研究者依據(jù)代碼結(jié)構(gòu)中的繼承、耦合、內(nèi)聚等關(guān)系計(jì)算代碼的復(fù)雜度,形成了面向?qū)ο蠖攘恐笜?biāo)[27].主要的面向?qū)ο笾笜?biāo)(OO)包括C&K 度量[28]和MOOD 度量[29].

    2.2.2 軟件過(guò)程度量

    軟件過(guò)程(process)度量是對(duì)軟件開(kāi)發(fā)過(guò)程的各個(gè)因素進(jìn)行度量.過(guò)程度量與軟件開(kāi)發(fā)流程密切相關(guān),對(duì)軟件開(kāi)發(fā)過(guò)程的各階段行為進(jìn)行目標(biāo)管理,為軟件開(kāi)發(fā)的過(guò)程評(píng)價(jià)及控制提供定量性度量.例如,代碼變更度量、開(kāi)發(fā)人員度量等過(guò)程度量元被提了出來(lái).

    (1)源代碼變更度量

    在軟件項(xiàng)目開(kāi)發(fā)過(guò)程中,源代碼是不斷變更的,代碼在不同的版本中會(huì)增加、刪除或者修改,從而有可能導(dǎo)致軟件缺陷.因此,一些研究者借助源代碼的變更,設(shè)計(jì)出新的源代碼變更度量元進(jìn)行軟件缺陷預(yù)測(cè).Madeyski等人[10]通過(guò)實(shí)驗(yàn)確定過(guò)程度量元與缺陷預(yù)測(cè)數(shù)量的關(guān)系,設(shè)計(jì)出了NR(number of revisions)、NDC(number of distinct committers)、NML(number of modified lines)、NDPV(number of defects in previous version)4 個(gè)過(guò)程度量元,并通過(guò)實(shí)驗(yàn)發(fā)現(xiàn) NDC、NML 對(duì)軟件缺陷預(yù)測(cè)有很大的影響.Feng 等人[28]提出了 PL(programming language)、IT(issue tracking)、TLOC(total lines of code)、TNF(total number of files)、TNC(total number of commits)及TND(total number of developers)這6 種度量元,并使用這6 種度量元對(duì)項(xiàng)目?jī)?nèi)和跨項(xiàng)目缺陷預(yù)測(cè)模型進(jìn)行分析.

    (2)基于開(kāi)發(fā)人員度量

    軟件開(kāi)發(fā)過(guò)程中人是不可忽視的重要因素,基于開(kāi)發(fā)人員度量就是對(duì)人進(jìn)行度量.Bhattacharya 等人[24]引入社交網(wǎng)絡(luò)概念,提取變更信息和開(kāi)發(fā)者關(guān)系信息構(gòu)建開(kāi)發(fā)者交互關(guān)系圖.Lee 等人[25]對(duì)開(kāi)發(fā)人員的交互行為進(jìn)行分析,提出了MIMS(micro interaction metrics)度量元,通過(guò)實(shí)驗(yàn)驗(yàn)證MIMS 對(duì)缺陷預(yù)測(cè)性能的影響.Ekanayake 等人[26]提出了開(kāi)發(fā)人員的數(shù)量的度量元,通過(guò)實(shí)驗(yàn)驗(yàn)證得出:該度量元對(duì)預(yù)測(cè)的質(zhì)量有影響.Jiang 等人[7]根據(jù)個(gè)人開(kāi)發(fā)者的表現(xiàn)作為度量元進(jìn)行軟件修改的缺陷預(yù)測(cè),為每一個(gè)開(kāi)發(fā)者建立一個(gè)預(yù)測(cè)模型PCC(personalized change classification).

    2.2.3 度量元分析

    近幾年,隨著開(kāi)源項(xiàng)目以及缺陷公共數(shù)據(jù)集的增多,部分研究者開(kāi)始把工作轉(zhuǎn)移到哪些度量元可以構(gòu)建更好的缺陷預(yù)測(cè)模型研究中.Muhammed 等人[9]通過(guò)實(shí)驗(yàn)對(duì)比靜態(tài)度量元和過(guò)程度量元哪個(gè)是更影響類(lèi)不平衡的數(shù)據(jù),實(shí)驗(yàn)結(jié)果表明,過(guò)程度量元要比靜態(tài)度量元產(chǎn)生更好的分類(lèi)效果.Shin 等人[8]同時(shí)使用復(fù)雜性、代碼變更和開(kāi)發(fā)人員活動(dòng)度量元對(duì)軟件缺陷進(jìn)行預(yù)測(cè),實(shí)驗(yàn)發(fā)現(xiàn),使用這些度量元的組合能夠得到較好的預(yù)測(cè)性能.Shepperd 等人[11]分析了分類(lèi)器、數(shù)據(jù)集、度量元及研究團(tuán)隊(duì)4 個(gè)因素對(duì)缺陷預(yù)測(cè)模型性能的影響,實(shí)驗(yàn)發(fā)現(xiàn),研究團(tuán)隊(duì)對(duì)缺陷預(yù)測(cè)模型的影響最大.接著,Chakkrit 等人[12]對(duì)Shepperd 的研究加以重現(xiàn),發(fā)現(xiàn)研究人員與使用的數(shù)據(jù)集及度量元有很大的關(guān)系,建議使用更廣泛的數(shù)據(jù)集.Okutan 等人[14]設(shè)計(jì)了開(kāi)發(fā)者人數(shù)(number of developers,簡(jiǎn)稱(chēng)NOD)和源代碼質(zhì)量(lack of coding quality,簡(jiǎn)稱(chēng)LOCQ)兩個(gè)度量元,并使用貝葉斯網(wǎng)絡(luò)分析各種度量元與錯(cuò)誤傾向性之間的關(guān)系,發(fā)現(xiàn)RFC(response for class)、LOC(lines of code)及LOCQ 是最有效的度量元,而CBO(coupling between objects)、WMC(weighted method perclass)及LCOM(lack of cohesion of methods)對(duì)缺陷傾向性的影響較小,NOD 和缺陷傾向性預(yù)測(cè)呈正相關(guān)的關(guān)系.

    本文針對(duì)收集的117 篇論文進(jìn)行分析,發(fā)現(xiàn)預(yù)測(cè)模型使用的度量元的分布如圖5 所示.大部分研究者使用混合的度量元集(如:OO+LOC、OO+Process),其次是面向?qū)ο蠛瓦^(guò)程度量元.軟件產(chǎn)品度量用來(lái)描述軟件產(chǎn)品的特征,針對(duì)最終軟件產(chǎn)品進(jìn)行度量,而過(guò)程度量是對(duì)軟件開(kāi)發(fā)過(guò)程的各個(gè)質(zhì)量指標(biāo)進(jìn)行度量,軟件過(guò)程質(zhì)量直接影響軟件產(chǎn)品質(zhì)量.因此,同時(shí)考慮這兩種度量方法可以進(jìn)一步提高缺陷預(yù)測(cè)模型的性能.

    Fig.5 The distribution of the metric圖5 度量元的分布情況

    2.3 數(shù)據(jù)質(zhì)量相關(guān)問(wèn)題處理

    軟件缺陷數(shù)據(jù)集從包含軟件項(xiàng)目開(kāi)發(fā)周期的軟件倉(cāng)庫(kù)里收集.然而,在挖掘軟件歷史倉(cāng)庫(kù)的過(guò)程中,數(shù)據(jù)集中包含一些降低預(yù)測(cè)模型性能的不必要的信息,如異常值、高維度、類(lèi)不平衡、數(shù)據(jù)差異等.因此,在使用這些數(shù)據(jù)集之前,需要處理數(shù)據(jù)集中存在質(zhì)量問(wèn)題的數(shù)據(jù).本文對(duì)文獻(xiàn)進(jìn)行了匯總分析,圖6 所示為具體數(shù)據(jù)質(zhì)量處理的文獻(xiàn)分類(lèi)總覽圖.

    Fig.6 The literature overview of data processing圖6 數(shù)據(jù)處理文獻(xiàn)分類(lèi)總覽圖

    2.3.1 異常值

    在挖掘軟件倉(cāng)庫(kù)的過(guò)程中,對(duì)代碼類(lèi)型標(biāo)記和軟件度量等操作可能產(chǎn)生部分?jǐn)?shù)據(jù)值不一致或一些實(shí)例重復(fù)等異常值[31]問(wèn)題,這些異常值影響到預(yù)測(cè)模型的性能.Gray 等人[30]的實(shí)驗(yàn)結(jié)果表明,異常值降低了缺陷預(yù)測(cè)模型的性能.所以,在構(gòu)建預(yù)測(cè)模型前要處理離群的異常值,研究者在異常值檢測(cè)及處理方面作了相應(yīng)的研究.

    (1)檢測(cè)異常值

    數(shù)據(jù)集中的異常值可以通過(guò)箱線(xiàn)圖進(jìn)行檢測(cè),箱線(xiàn)圖的結(jié)構(gòu)如圖7 所示,分別由最小值、中位數(shù)、最大值和兩個(gè)四分位數(shù)這5 部分組成.

    (2)處理異常值

    對(duì)異常值的處理在缺陷預(yù)測(cè)技術(shù)中主要通過(guò)刪除異常值的方法來(lái)解決.Ryu 等人[32]針對(duì)跨項(xiàng)目缺陷數(shù)據(jù)集中的異常數(shù)據(jù)進(jìn)行處理,結(jié)合實(shí)例中的異常屬性個(gè)數(shù)超過(guò)某個(gè)范圍就剔除該實(shí)例的方法,提出了VAB-SVM(value aware boosting with support vector machine)預(yù)測(cè)方法.Cao 等人[33]對(duì)缺陷數(shù)據(jù)集中的異常值也進(jìn)行了研究,通過(guò)四分位距(inter quartile range,簡(jiǎn)稱(chēng)IQR)去除源項(xiàng)目和目標(biāo)項(xiàng)目數(shù)據(jù)集中的異常數(shù)據(jù),實(shí)驗(yàn)結(jié)果表明,去除了異常值后,缺陷預(yù)測(cè)模型的性能得到提升.

    Fig.7 The structure of boxplot圖7 箱線(xiàn)圖結(jié)構(gòu)

    2.3.2 高維度數(shù)據(jù)

    在程序模塊度量中,不同的度量方法(如規(guī)模度量LOC、過(guò)程度量、傳統(tǒng)度量和面向?qū)ο蠖攘?被應(yīng)用在缺陷預(yù)測(cè)中,文獻(xiàn)[8]的實(shí)驗(yàn)發(fā)現(xiàn),使用度量元的組合能夠得到較好的預(yù)測(cè)結(jié)果.大部分研究者使用的是不同度量方法組合的度量元集,比如OO+LOC、OO+Process+LOC 等.然而,同時(shí)考慮所有的度量元會(huì)導(dǎo)致數(shù)據(jù)集的高維度數(shù)據(jù)問(wèn)題,需要設(shè)計(jì)有效的方法來(lái)識(shí)別出冗余的度量元和無(wú)關(guān)度量元.He 等人[53]認(rèn)為,對(duì)于大量的特征進(jìn)行特征選擇是一種合理的方法,處理后的特征子集有助于提升缺陷預(yù)測(cè)模型的性能.因此,對(duì)缺陷數(shù)據(jù)集進(jìn)行高維度數(shù)據(jù)處理能夠促進(jìn)數(shù)據(jù)可視化和數(shù)據(jù)的可理解,縮短訓(xùn)練時(shí)間,提高預(yù)測(cè)模型的性能.應(yīng)用于軟件缺陷預(yù)測(cè)模型的高維度數(shù)據(jù)處理方法主要包括特征選擇和特征提取這兩種.

    (1)特征選擇

    特征選擇是從原始的缺陷度量元數(shù)據(jù)集中得到最“好”的度量元子集,在選擇度量元子集時(shí),需要一個(gè)評(píng)價(jià)函數(shù)進(jìn)行評(píng)估,根據(jù)評(píng)價(jià)函數(shù)的工作原理,主要分為過(guò)濾和包裝兩種方法[52],其工作流程如圖8 所示.過(guò)濾法是對(duì)每一個(gè)度量元計(jì)算Chi-squared test(CS)或information gain(IG)或correlation coefficient scores 或Pearson correlation等的值,根據(jù)這些值進(jìn)行特征選擇,選擇的過(guò)程與后續(xù)的學(xué)習(xí)器無(wú)關(guān)[63].相反地,包裝方法是根據(jù)學(xué)習(xí)器的性能來(lái)作為最佳特征子集選擇的評(píng)價(jià)準(zhǔn)則.包裝法是將學(xué)習(xí)器的性能作為評(píng)價(jià)函數(shù)[61],所以,包裝法的性能要優(yōu)于過(guò)濾法的性能.但是,包裝法的時(shí)間開(kāi)銷(xiāo)較大,而過(guò)濾式方法與學(xué)習(xí)器無(wú)關(guān),開(kāi)銷(xiāo)較小,所以泛化能力強(qiáng)于包裝法.

    Fig.8 Process of filter and wrapper圖8 過(guò)濾法和包裝法的工作流程

    He 等人[53]提出了一種Topk的特征選擇方法.首先使用過(guò)濾法對(duì)缺陷數(shù)據(jù)集進(jìn)行特征選擇,然后根據(jù)特征在所有的缺陷數(shù)據(jù)集中出現(xiàn)的次數(shù)進(jìn)行排序,并且引入覆蓋索引來(lái)決定最優(yōu)的k值.Sadhana 等人[54]提出了使用局部選擇和全局優(yōu)化的特征選擇方法.首先,利用基于IG 的過(guò)濾法(mutual information maximization,簡(jiǎn)稱(chēng)MIM)和基于correlation coefficient 的過(guò)濾法(sequential backward search,簡(jiǎn)稱(chēng)SBS)得到兩個(gè)初始的特征子集,然后,將這些子集進(jìn)行組合,將全局優(yōu)化技術(shù)(GA(genetic algorithm)、DEFS(differential evolution-cased feature selection)或PSO(particle swarm optimization))分別應(yīng)用到組合的子集中,將方差作為停止標(biāo)準(zhǔn),從而得到有效的特征子集.Chao 等人[55]提出了基于聚類(lèi)的特征選擇方法FeSCH(feature selection using clusters of hybrid-data)以解決跨項(xiàng)目缺陷預(yù)測(cè)問(wèn)題.該方法分為兩個(gè)階段.第1 階段使用基于密度的DPC(density peaks clustering)聚類(lèi)方法將原始特征集劃分為多個(gè)簇,第2 階段分別使用局部密度策略(local density of features,簡(jiǎn)稱(chēng)LDF)、相似特征分布策略(similarity of feature distributions,簡(jiǎn)稱(chēng)SFD)及信息增益策略(feature class relevance,簡(jiǎn)稱(chēng)FCR)對(duì)每個(gè)簇的特征進(jìn)行排序,然后選擇前Topk的特征.

    Yu 等人[58]針對(duì)缺陷數(shù)的預(yù)測(cè)提出了結(jié)合譜聚類(lèi)及特征排序的FSCR(feature spectral clustering and feature ranking)特征選擇方法.首先,根據(jù)每?jī)蓚€(gè)特征之間的相關(guān)性,利用譜聚類(lèi)方法對(duì)原始特征集進(jìn)行聚類(lèi).然后,利用ReliefF 算法計(jì)算每個(gè)特征與缺陷數(shù)之間的相關(guān)性.最后,從每個(gè)聚類(lèi)里選擇Topk的特征組成特征子集.

    Chen 等人[62]首次將多目標(biāo)優(yōu)化的特征選擇方法應(yīng)用于軟件缺陷預(yù)測(cè)中,提出了MOFES(multi-objective feature selection)方法.主要考慮了兩個(gè)目標(biāo),一個(gè)是盡可能地減少特征子集的數(shù)量,另一個(gè)是最大化缺陷預(yù)測(cè)模型的性能.其中,優(yōu)化算法使用NSGA-II方法,染色體的編碼模式根據(jù)特征集決定,若數(shù)據(jù)集有n個(gè)特征,則編碼為n位的串,i-th位的值為1,表明該i-th特征被選擇.

    除此之外,Wang 等人[64]首次研究了不同的性能指標(biāo)對(duì)基于Wrapper 特征選擇的預(yù)測(cè)模型性能的影響.該研究以邏輯回歸學(xué)習(xí)器作為基礎(chǔ)分類(lèi)器,分別使用Accuracy、AUC、Area Under the Precision-Recall Curve(PRC)、Best Geometric Mean(BGM)及Best Arithmetic Mean(BAM)作為性能評(píng)價(jià)指標(biāo),實(shí)驗(yàn)結(jié)果表明,基于BAM 的Wrapper 方法是最好的Wrapper 特征選擇方法.Khoshgoftaar 等人[52]使用16 個(gè)軟件數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),對(duì)比了7個(gè)基于過(guò)濾的特征排序技術(shù).這些技術(shù)包括chi-squared(CS)、信息增益(IG)、增益比(gain rate,簡(jiǎn)稱(chēng)GR)、對(duì)稱(chēng)不確定性(symmetric uncertainty,簡(jiǎn)稱(chēng)SU)和ReliefF(兩個(gè)變體:RF 和RFW).

    (2)特征提取

    特征提取是根據(jù)缺陷度量元之間的關(guān)系,將原始特征集映射到一個(gè)新特征集中.用于軟件缺陷預(yù)測(cè)的特征提取方法主要有主成分分析(principal component analysis,簡(jiǎn)稱(chēng)PCA)方法、判別分析(linear discriminant analysis,簡(jiǎn)稱(chēng)LDA)方法和多維標(biāo)度測(cè)量(multidimensional scaling,簡(jiǎn)稱(chēng)MDS)方法.PCA 和MDS 都是無(wú)監(jiān)督的特征提取方法,而LDA 是有監(jiān)督的特征提取方法.當(dāng)數(shù)據(jù)規(guī)模較小時(shí),PCA 優(yōu)于LDA,但當(dāng)數(shù)據(jù)規(guī)模較大時(shí),LDA 優(yōu)于PCA.

    ?ztürk 等人[37]比較哪種度量元對(duì)類(lèi)不平衡的缺陷預(yù)測(cè)模型影響最大時(shí),使用主成分分析PCA 方法進(jìn)行特征提取.Lu 等人[38]使用半監(jiān)督學(xué)習(xí)方法FTcF(fitting the confident fits)對(duì)軟件缺陷進(jìn)行預(yù)測(cè),在使用該方法前首先使用MDS 方法進(jìn)行特征提取.Jing 等人[69]使用改進(jìn)的LDA 方法對(duì)項(xiàng)目?jī)?nèi)和跨項(xiàng)目的數(shù)據(jù)集進(jìn)行特征提取.

    另外,有些研究者對(duì)特征選擇和特征提取方法進(jìn)行了比較.Lu 等人[39]比較了特征選擇的IG 方法和特征提取的MDS 方法.實(shí)驗(yàn)結(jié)果表明,MDS 方法要優(yōu)于IG 方法.但是特征選擇后的特征是原來(lái)特征的一個(gè)子集,而特征提取則形成了新的特征空間.相比較而言,特征選擇能夠?qū)θ毕蓊A(yù)測(cè)模型有更好的理解和解釋,能夠分辨出哪些度量元對(duì)缺陷更為重要,有利于指導(dǎo)軟件的研發(fā).

    2.3.3 類(lèi)不平衡問(wèn)題

    通常,軟件產(chǎn)品大致符合二八原則,80%的缺陷集中在20%的程序模塊中,缺陷數(shù)據(jù)分布不均勻,有缺陷的模塊要遠(yuǎn)少于無(wú)缺陷模塊,即類(lèi)不平衡問(wèn)題.類(lèi)不平衡嚴(yán)重影響了分類(lèi)模型的性能,無(wú)缺陷的實(shí)例支配著數(shù)據(jù)樣本,學(xué)習(xí)分類(lèi)器會(huì)偏向于無(wú)缺陷的實(shí)例,因而,分類(lèi)器對(duì)于有缺陷的實(shí)例不會(huì)產(chǎn)生好的分類(lèi)結(jié)果[66].而在軟件測(cè)試中,有缺陷的模塊被誤報(bào)為無(wú)缺陷模塊,會(huì)給軟件公司帶來(lái)更大的損失.

    類(lèi)不平衡學(xué)習(xí)是當(dāng)前機(jī)器學(xué)習(xí)中的一個(gè)熱點(diǎn)研究領(lǐng)域.在軟件缺陷預(yù)測(cè)中也有不少研究,形成了若干類(lèi)不平衡的學(xué)習(xí)方法,用于缺陷預(yù)測(cè)的類(lèi)不平衡調(diào)整方法可大體上分為數(shù)據(jù)層面和算法層面兩類(lèi).

    (1)數(shù)據(jù)層面

    數(shù)據(jù)層面決策是從數(shù)據(jù)準(zhǔn)備階段入手,對(duì)原始不平衡的缺陷數(shù)據(jù)進(jìn)行調(diào)整,從而達(dá)到平衡的數(shù)據(jù).主要包括抽樣方法及數(shù)據(jù)集劃分方法.

    (a)抽樣方法

    主要采用隨機(jī)欠抽樣或者隨機(jī)過(guò)抽樣技術(shù)將不平衡的缺陷數(shù)據(jù)集轉(zhuǎn)化成平衡數(shù)據(jù)集.隨機(jī)過(guò)抽樣技術(shù)是隨機(jī)地復(fù)制小類(lèi)(有缺陷)的實(shí)例,但卻使模型訓(xùn)練難度加大,容易導(dǎo)致模型的過(guò)擬合問(wèn)題.針對(duì)此問(wèn)題,可以使用合成少數(shù)類(lèi)過(guò)采樣技術(shù)(synthetic minority over-sampling,簡(jiǎn)稱(chēng)SMOTE),對(duì)少數(shù)類(lèi)樣本進(jìn)行分析并根據(jù)少數(shù)類(lèi)樣本人工合成新的樣本.相反地,隨機(jī)欠抽樣技術(shù)是隨機(jī)剔除大類(lèi)(有缺陷)的實(shí)例,但卻帶來(lái)一些重要信息的缺失.針對(duì)此問(wèn)題,可以采用迭代的思想,如BalanceCascade,是通過(guò)迭代思想不斷更新大類(lèi)的實(shí)例.

    在軟件缺陷預(yù)測(cè)模型中,不少研究者考慮到了類(lèi)不平衡問(wèn)題并采用抽樣技術(shù)解決這個(gè)問(wèn)題.Zhang 等人[67]提出了一種改進(jìn)的采樣算法,被稱(chēng)為擴(kuò)散的基于相似性的分類(lèi)算法(expanded dissimilarity based classification algorithm,簡(jiǎn)稱(chēng)EDBC),實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法優(yōu)于隨機(jī)欠采樣和隨機(jī)過(guò)采樣,但其性能不如集成學(xué)習(xí)方法.Muhammed[9]首先利用主成分分析對(duì)數(shù)據(jù)進(jìn)行特征提取,然后利用SOMTE、Virtual 和HSDD(hybrid sampling for defect data sets)方法進(jìn)行過(guò)抽樣,利用Bayes、Na?ve Bayes(NB)、Random Forest(RF)、J48 和LIB-SVM 進(jìn)行訓(xùn)練,發(fā)現(xiàn)不同抽樣方法的性能差別不大.

    (b)數(shù)據(jù)集劃分方法

    數(shù)據(jù)集劃分法的主要思想是將不平衡的缺陷數(shù)據(jù)集按照一定的規(guī)則劃分為多個(gè)平衡的缺陷數(shù)據(jù)集,然后在平衡的缺陷數(shù)據(jù)集上訓(xùn)練多個(gè)分類(lèi)器,按照一定的學(xué)習(xí)方法集成在一起.

    在軟件缺陷預(yù)測(cè)模型中,有部分研究者采用數(shù)據(jù)集劃分方法解決類(lèi)不平衡問(wèn)題.Xia 等人[70]設(shè)計(jì)了ELBlocker 方法來(lái)預(yù)測(cè)阻礙性錯(cuò)誤.首先,將訓(xùn)練集隨機(jī)分為多個(gè)互斥集合,對(duì)每個(gè)互斥集合構(gòu)建一個(gè)分類(lèi)器.然后,集成這些分類(lèi)器,并能自動(dòng)確定恰當(dāng)?shù)牟黄胶鉀Q策邊界來(lái)區(qū)分阻礙性錯(cuò)誤和非阻礙性錯(cuò)誤.若一個(gè)錯(cuò)誤的似然分?jǐn)?shù)大于決策邊界值,即使它的似然值很低,也會(huì)被分類(lèi)為阻礙性錯(cuò)誤.Jing 等人[69]提出了改進(jìn)的子類(lèi)判別分析(improved subclass discriminant analysis,簡(jiǎn)稱(chēng)ISDA)方法以解決類(lèi)不平衡問(wèn)題,把每個(gè)類(lèi)的數(shù)據(jù)分成若干個(gè)子類(lèi),對(duì)每個(gè)子類(lèi)進(jìn)行判別分析學(xué)習(xí)分類(lèi)能力強(qiáng)的特征,從而解決類(lèi)不平衡問(wèn)題.

    抽樣方法和數(shù)據(jù)集劃分方法都是從數(shù)據(jù)層面上解決缺陷預(yù)測(cè)的類(lèi)不平衡問(wèn)題.抽樣方法簡(jiǎn)單,但容易出現(xiàn)重要數(shù)據(jù)丟失或過(guò)擬合的現(xiàn)象.數(shù)據(jù)集劃分方法需要與集成方法一起使用,相對(duì)比抽樣方法要復(fù)雜,但是可以在一定程度上避免抽樣方法的問(wèn)題.

    (2)算法層面

    除了從數(shù)據(jù)層面降低類(lèi)不平衡的影響外,也可以直接從算法層面進(jìn)行改進(jìn),設(shè)計(jì)出適用于類(lèi)不平衡數(shù)據(jù)的缺陷預(yù)測(cè)分類(lèi)算法.主要包括代價(jià)敏感學(xué)習(xí)方法、集成學(xué)習(xí)方法及分類(lèi)閾值移動(dòng)方法.

    (a)代價(jià)敏感學(xué)習(xí)方法

    該方法對(duì)數(shù)據(jù)集中的有/無(wú)缺陷實(shí)例賦予不同的誤分類(lèi)代價(jià),其中,誤分類(lèi)代價(jià)可以分為基于類(lèi)別的代價(jià)和基于樣本的代價(jià)兩種.在軟件缺陷預(yù)測(cè)模型中,基于類(lèi)別的誤分代價(jià)使用得比較多.Ryu 等人[72]考慮了跨項(xiàng)目的類(lèi)不平衡問(wèn)題,提出了基于代價(jià)敏感的遷移學(xué)習(xí)方法TCSBoost(transfer cost-sensitive boosting).該方法基于分布特征及類(lèi)不平衡特征,對(duì)正確和錯(cuò)誤分類(lèi)的樣本賦予不同的權(quán)值.?mer 等人[73]針對(duì)類(lèi)不平衡問(wèn)題提出了代價(jià)敏感的神經(jīng)網(wǎng)絡(luò)缺陷預(yù)測(cè)方法.為了把人工神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)化為代價(jià)敏感學(xué)習(xí)器,將假陽(yáng)性(FP)及假陰性(FN)引入到誤差函數(shù)中,使用人工蜂群算法對(duì)人工神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練.Liu 等人[71]提出了兩階段的代價(jià)敏感學(xué)習(xí)方法(two-stage cost-sensitive,簡(jiǎn)稱(chēng)TSCS),代價(jià)敏感不僅使用于分類(lèi)階段,而且使用在特征選擇階段.在特征選擇階段,將代價(jià)敏感信息引入到傳統(tǒng)的特征選擇方法中,設(shè)計(jì)了3 種新的代價(jià)敏感特征選擇算法,即代價(jià)敏感方差評(píng)分(cost-sensitive variance score,簡(jiǎn)稱(chēng)CSVS)、代價(jià)敏感拉普拉斯評(píng)分(cost-sensitive Laplacian score,簡(jiǎn)稱(chēng)CSLS)以及代價(jià)敏感約束評(píng)分(cost-sensitive constraint score,簡(jiǎn)稱(chēng)CSCS).

    (b)集成學(xué)習(xí)方法

    集成學(xué)習(xí)方法是結(jié)合多個(gè)弱監(jiān)督分類(lèi)器以得到一個(gè)更好的強(qiáng)監(jiān)督分類(lèi)器,比較常用的集成學(xué)習(xí)方法有Bagging、Boosting 和Stacking.在缺陷預(yù)測(cè)模型中,部分學(xué)者使用集成學(xué)習(xí)方法解決類(lèi)不平衡問(wèn)題.

    Sun 等人[76]針對(duì)缺陷預(yù)測(cè)問(wèn)題提出了基于編碼的集成學(xué)習(xí)(coding based ensemble learning,簡(jiǎn)稱(chēng)CEL)方法,該方法首先將無(wú)缺陷的實(shí)例分成幾個(gè)箱子,每個(gè)箱子樣本的數(shù)量與有缺陷樣本的數(shù)量相同,然后用一個(gè)特定的編碼方案在多類(lèi)數(shù)據(jù)集上構(gòu)建缺陷預(yù)測(cè)模型.Wang 等人[77]將多核學(xué)習(xí)方法和集成學(xué)習(xí)方法相結(jié)合,提出了多核集成學(xué)習(xí)方法(multiple kernel ensemble learning,簡(jiǎn)稱(chēng)MKEL).首先,通過(guò)集成學(xué)習(xí)的boosting 方法反復(fù)學(xué)習(xí)多個(gè)內(nèi)核分類(lèi)器,然后,根據(jù)它們的組合權(quán)重集成起來(lái),從而得到最終的多核集成分類(lèi)器.Ryu 等人[78]針對(duì)跨項(xiàng)目的類(lèi)不平衡問(wèn)題,提出了VCB-SVM(value-cognitive boosting with a support vector machine)方法.該模型的相似性權(quán)值根據(jù)分布特征及非對(duì)稱(chēng)誤分類(lèi)代價(jià)得到.同時(shí),采用Boosting-SVM 和重新采樣技術(shù)來(lái)解決類(lèi)不平衡問(wèn)題.

    (c)分類(lèi)閾值移動(dòng)

    該方法的主要思想是在算法分類(lèi)過(guò)程中,閾值的設(shè)定不再是0.5,而且根據(jù)有/無(wú)缺陷樣本的比例對(duì)閾值進(jìn)行移動(dòng),根據(jù)改變后的閾值在分類(lèi)器上進(jìn)行預(yù)測(cè).部分學(xué)者使用分類(lèi)閾值移動(dòng)方法解決缺陷預(yù)測(cè)的類(lèi)不平衡問(wèn)題.Zheng[80]提出了使用神經(jīng)網(wǎng)絡(luò)算法解決缺陷預(yù)測(cè)的類(lèi)不平衡問(wèn)題.在分類(lèi)過(guò)程中,使用閾值移動(dòng)的方法將分類(lèi)閾值移動(dòng)到無(wú)缺陷的模塊,這樣可使更多的有缺陷模塊得到預(yù)測(cè).與代價(jià)敏感學(xué)習(xí)法相比,實(shí)驗(yàn)結(jié)果表明,閾值移動(dòng)方法要優(yōu)于代價(jià)敏感方法.Wang 等人[79]在10 個(gè)不同的數(shù)據(jù)集上對(duì)采樣方法、閾值移動(dòng)方法、代價(jià)敏感方法和集成學(xué)習(xí)方法進(jìn)行了研究,使用G-means 和AUC 進(jìn)行評(píng)估,集成學(xué)習(xí)方法表現(xiàn)最佳.

    除此之外,部分研究者還將高維度問(wèn)題和類(lèi)不平衡問(wèn)題相結(jié)合來(lái)構(gòu)建軟件缺陷預(yù)測(cè)模型.?mer 等人[65]使用隨機(jī)抽樣方法解決類(lèi)不平衡問(wèn)題,特征選擇使用correlation-based feature selection(CFS)過(guò)濾方法.Kehan 等人[68]使用抽樣的方法解決類(lèi)不平衡問(wèn)題,特征選擇使用Filter 方法.Wan 等人[74]使用代價(jià)敏感解決類(lèi)不平衡問(wèn)題,特征提取使用稀疏編碼方式,采用字典學(xué)習(xí)方法進(jìn)行缺陷預(yù)測(cè).Issam 等人[75]將集成學(xué)習(xí)方法和特征選擇相結(jié)合來(lái)解決類(lèi)不平衡問(wèn)題,該方法同時(shí)使用了靜態(tài)代碼度量元和過(guò)程度量元.Gao 等人[81]提出了兩種結(jié)合抽樣方法的集成學(xué)習(xí)方法:selectRUSBoost 和selectSMOTEBoost.

    但是,大部分研究者集中于對(duì)項(xiàng)目?jī)?nèi)的類(lèi)不平衡問(wèn)題進(jìn)行研究,針對(duì)跨項(xiàng)目類(lèi)不平衡問(wèn)題的研究還比較少,這是今后進(jìn)一步的研究方向.

    2.3.4 數(shù)據(jù)差異性問(wèn)題

    通常,實(shí)際軟件開(kāi)發(fā)中,當(dāng)要預(yù)測(cè)的項(xiàng)目沒(méi)有充足的歷史數(shù)據(jù)時(shí),需要使用其他項(xiàng)目的數(shù)據(jù).但是不同項(xiàng)目開(kāi)發(fā)過(guò)程、使用的語(yǔ)言及應(yīng)用領(lǐng)域不同,導(dǎo)致訓(xùn)練數(shù)據(jù)集與測(cè)試數(shù)據(jù)集分布不一致的問(wèn)題,即存在數(shù)據(jù)差異性.在缺陷預(yù)測(cè)領(lǐng)域,數(shù)據(jù)差異性包括同構(gòu)(度量元集相同但分布不同)及異構(gòu)(度量元不同)兩種情況,其預(yù)測(cè)模型如圖9 所示[82].數(shù)據(jù)差異性的問(wèn)題會(huì)導(dǎo)致無(wú)法直接使用傳統(tǒng)學(xué)習(xí)器進(jìn)行預(yù)測(cè),因?yàn)閭鹘y(tǒng)學(xué)習(xí)器要求訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集同分布,所以需要對(duì)訓(xùn)練集和測(cè)試集的分布進(jìn)行轉(zhuǎn)變.在缺陷預(yù)測(cè)領(lǐng)域,研究者主要通過(guò)轉(zhuǎn)換數(shù)據(jù)分布,篩選相關(guān)數(shù)據(jù)集,遷移學(xué)習(xí)方式來(lái)解決差異性問(wèn)題.

    Fig.9 The prediction model of data difference圖9 數(shù)據(jù)差異的缺陷預(yù)測(cè)模型

    (1)轉(zhuǎn)換數(shù)據(jù)分布

    在實(shí)際軟件開(kāi)發(fā)過(guò)程中,若新項(xiàng)目沒(méi)有足夠的標(biāo)簽數(shù)據(jù),可以使用同公司其他的歷史項(xiàng)目數(shù)據(jù)集,即存在度量元相同但數(shù)據(jù)分布不同的情況.針對(duì)該情況,可以在建立模型前對(duì)數(shù)據(jù)的分布進(jìn)行調(diào)整,使得訓(xùn)練集與測(cè)試集具有相似的分布.Feng 等人[40]首先研究了不同的數(shù)據(jù)轉(zhuǎn)換方法(log、rank 及Box-Cox)對(duì)跨項(xiàng)目缺陷預(yù)測(cè)的影響,發(fā)現(xiàn)3 種方法的影響是相似的,然后整合這3 種數(shù)據(jù)轉(zhuǎn)換方法后提出了多數(shù)據(jù)轉(zhuǎn)換方法MT(multiple transformations),更進(jìn)一步地,使用Box-Cox 轉(zhuǎn)換的參數(shù)來(lái)確定每個(gè)測(cè)試集最適合的訓(xùn)練集,即MT+方法.Li 等人[41]通過(guò)對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化和正態(tài)化(log)處理來(lái)解決數(shù)據(jù)差異性問(wèn)題,然后使用無(wú)監(jiān)督學(xué)習(xí)方法SNN(shared nearest neighbors)提取靜態(tài)代碼度量元的相似模式.

    (2)篩選相關(guān)數(shù)據(jù)集

    針對(duì)特征集相同但數(shù)據(jù)分布不同的情況,在建立模型前,部分研究者通過(guò)算法對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行實(shí)例篩選,篩選出與被測(cè)項(xiàng)目相似性高的數(shù)據(jù)集進(jìn)行訓(xùn)練.Seyedrebvar 等人[43]提出了基于搜索的實(shí)例選擇方法GIS(genetic instance selection),使用遺傳算法進(jìn)行搜索,并且以收斂目標(biāo)來(lái)指導(dǎo)實(shí)例的選擇過(guò)程,從而更精確地匹配測(cè)試集的分布特征.每代的適應(yīng)度函數(shù)通過(guò)NN-filter 得到的確認(rèn)集進(jìn)行評(píng)估.而且基于這些確認(rèn)集,GIS 方法能夠同時(shí)解決數(shù)據(jù)中的潛在噪音和實(shí)例選擇兩個(gè)問(wèn)題.Steffen 等人[42]和Tim 等人[45]比較了全局模型和局部模型對(duì)跨項(xiàng)目缺陷預(yù)測(cè)的影響,在局部模型中使用EM 和WHERE 等聚類(lèi)方法對(duì)訓(xùn)練項(xiàng)目集進(jìn)行聚類(lèi),實(shí)驗(yàn)結(jié)果表明,聚類(lèi)后的數(shù)據(jù)集有更好的性能.He 等人[46]研究了各種實(shí)例選擇方法,發(fā)現(xiàn)可以通過(guò)數(shù)據(jù)集的分布特征進(jìn)行訓(xùn)練實(shí)例的選擇.然后根據(jù)數(shù)據(jù)集的分布特征提出了一種三步法的自動(dòng)實(shí)例選擇方法.Peters 等人[47]針對(duì)數(shù)據(jù)差異性問(wèn)題,提出了Peters filter 方法選擇訓(xùn)練樣本集.該方法假設(shè)訓(xùn)練集中包含了比較小的測(cè)試集的缺陷信息,因此,該方法能夠?yàn)槊總€(gè)訓(xùn)練集發(fā)現(xiàn)距離最近的測(cè)試集實(shí)例.最后每個(gè)測(cè)試實(shí)例會(huì)選擇離它最近的實(shí)例作為篩選訓(xùn)練集的候選.Herbold[48]根據(jù)數(shù)據(jù)集的分布,提出了兩種基于距離的實(shí)例選擇方法,即EM-Clustering 和K-nearest neighbor 策略.

    (3)遷移學(xué)習(xí)技術(shù)

    遷移學(xué)習(xí)是用一個(gè)環(huán)境中學(xué)到的知識(shí)來(lái)幫助新環(huán)境中的學(xué)習(xí)任務(wù),正好可以解決缺陷預(yù)測(cè)中數(shù)據(jù)分布差異問(wèn)題[49,51].根據(jù)被測(cè)項(xiàng)目和源項(xiàng)目之間的度量元空間是否相同,遷移學(xué)習(xí)可以分為同構(gòu)遷移學(xué)習(xí)和異構(gòu)遷移學(xué)習(xí),其中,同構(gòu)遷移又可分為基于實(shí)例的遷移學(xué)習(xí)及基于特征的遷移學(xué)習(xí)等[83].

    ·基于實(shí)例的遷移學(xué)習(xí).根據(jù)被測(cè)項(xiàng)目中部分標(biāo)簽的缺陷數(shù)據(jù),對(duì)源域項(xiàng)目實(shí)例的權(quán)值進(jìn)行調(diào)整,使得源域與目標(biāo)域進(jìn)行匹配.Ma 等人[49]提出了TNB(transfer Na?ve Bayes)模型,首先計(jì)算測(cè)試集每個(gè)特征的最大值和最小值,然后依據(jù)數(shù)據(jù)引力計(jì)算訓(xùn)練集實(shí)例的權(quán)重,利用貝葉斯網(wǎng)絡(luò)對(duì)這些加權(quán)重的訓(xùn)練集進(jìn)行訓(xùn)練,實(shí)驗(yàn)設(shè)計(jì)與直接使用所有的訓(xùn)練集和使用NN-filter 方法進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明,TNB 提高了模型的性能.Ryu 等人[72]提出了基于代價(jià)敏感的遷移學(xué)習(xí)方法,對(duì)于源項(xiàng)目中與目標(biāo)項(xiàng)目有相同分布的實(shí)例分類(lèi)錯(cuò)誤時(shí)增加權(quán)重,分類(lèi)正確的實(shí)例減少權(quán)重;對(duì)于分布不同的實(shí)例分類(lèi)錯(cuò)誤時(shí)減少一定的權(quán)重,分類(lèi)正確的實(shí)例減少更多的權(quán)重.Chen 等人[17]提出了雙遷移Boosting(double transfer boosting,簡(jiǎn)稱(chēng)DTB)方法來(lái)減少消極的數(shù)據(jù)實(shí)例.首先利用NN 和SMOTE 對(duì)源項(xiàng)目數(shù)據(jù)集進(jìn)行處理,然后利用數(shù)據(jù)引力對(duì)選擇的數(shù)據(jù)集賦予權(quán)重,利用Boosting 方法消減小數(shù)據(jù)集的權(quán)重.

    ·基于特征的遷移學(xué)習(xí).主要是通過(guò)特征變換,將源項(xiàng)目和被測(cè)項(xiàng)目的度量元集變換到相同的空間.缺陷預(yù)測(cè)模型中最常用的是遷移主成分分析(transfer component analysis,簡(jiǎn)稱(chēng)TCA).Cao 等人[33]使用遷移主成分分析(TCA)轉(zhuǎn)換訓(xùn)練數(shù)據(jù)集數(shù)據(jù),使得訓(xùn)練數(shù)據(jù)集具有與測(cè)試數(shù)據(jù)集相似的數(shù)據(jù)分布.

    ·異構(gòu)遷移學(xué)習(xí).這是源項(xiàng)目和被測(cè)項(xiàng)目之間的度量元空間不同,而且特征的維度也可能不同的學(xué)習(xí)方法.Yu 等人[50]針對(duì)跨項(xiàng)目缺陷預(yù)測(cè)模型的異構(gòu)問(wèn)題,首先對(duì)源項(xiàng)目和目標(biāo)項(xiàng)目進(jìn)行特征選擇,然后利用特征匹配遷移匹配特征,消除數(shù)據(jù)集的差異性.Feng 等人[84]采用無(wú)監(jiān)督學(xué)習(xí)中的譜聚類(lèi)方法進(jìn)行跨項(xiàng)目缺陷預(yù)測(cè),實(shí)驗(yàn)結(jié)果表明能取得較好的結(jié)果.

    這3 種方法的假設(shè)都是目標(biāo)任務(wù)和源任務(wù)的目標(biāo)都是對(duì)缺陷的傾向性進(jìn)行預(yù)測(cè).其中,基于實(shí)例的遷移學(xué)習(xí)和基于特征的遷移學(xué)習(xí)的假設(shè)是源項(xiàng)目和被測(cè)項(xiàng)目的度量元集相同,數(shù)據(jù)分布不同,而異構(gòu)遷移學(xué)習(xí)的前提是源項(xiàng)目和被測(cè)項(xiàng)目的度量元是不同的.在使用這3 種方法時(shí),如果假設(shè)得不到滿(mǎn)足,則這類(lèi)方法的有效性得不到保障.在特征遷移和異構(gòu)遷移方法中,源項(xiàng)目向被測(cè)項(xiàng)目遷移,或者被測(cè)項(xiàng)目向源項(xiàng)目遷移,與源項(xiàng)目和被測(cè)項(xiàng)目遷向共同的空間之間存在著差異性.Li 等人[85]提出了多核的集成學(xué)習(xí)方法解決異構(gòu)缺陷預(yù)測(cè),實(shí)驗(yàn)發(fā)現(xiàn),源項(xiàng)目向被測(cè)項(xiàng)目轉(zhuǎn)換的性能優(yōu)于后兩個(gè)的性能.基于上述研究工作,在后續(xù)的研究中需要深入地分析全局和局部對(duì)預(yù)測(cè)模型性能的影響.

    3 缺陷預(yù)測(cè)模型構(gòu)建方法

    本文通過(guò)對(duì)收集的117 篇文獻(xiàn)進(jìn)行研究和分析,根據(jù)預(yù)測(cè)形式可以將缺陷預(yù)測(cè)模型大體上分為缺陷傾向性、缺陷嚴(yán)重度及缺陷數(shù)量3 種類(lèi)型,具體的分類(lèi)方法及文獻(xiàn)分布如圖10 所示.

    3.1 缺陷傾向性預(yù)測(cè)

    缺陷傾向性預(yù)測(cè)是把需要預(yù)測(cè)的軟件模塊分類(lèi)為有缺陷或者無(wú)缺陷,是一個(gè)二分類(lèi)問(wèn)題,也是構(gòu)建最多的缺陷預(yù)測(cè)模型.大量的研究者已經(jīng)使用了不同的分類(lèi)技術(shù)來(lái)構(gòu)建缺陷傾向性預(yù)測(cè)模型,主要包括統(tǒng)計(jì)學(xué)方法和機(jī)器學(xué)習(xí)方法.

    3.1.1 機(jī)器學(xué)習(xí)方法

    大部分的研究都是基于機(jī)器學(xué)習(xí)方法來(lái)進(jìn)行缺陷傾向性預(yù)測(cè).具體可以分為有監(jiān)督缺陷預(yù)測(cè)、無(wú)監(jiān)督缺陷預(yù)測(cè)和半監(jiān)督缺陷預(yù)測(cè),下面我們分別介紹應(yīng)用到缺陷傾向性預(yù)測(cè)中的方法.

    (1)有監(jiān)督學(xué)習(xí)方法

    該方法是利用已有標(biāo)簽的有/無(wú)缺陷樣本集優(yōu)化分類(lèi)器的參數(shù),使其達(dá)到最佳預(yù)測(cè)效果的過(guò)程.在117 篇文獻(xiàn)中,應(yīng)用到的有監(jiān)督學(xué)習(xí)主要有:貝葉斯[14,16,65,86,87]、決策樹(shù)[39,88]、集成學(xué)習(xí)[17,34-36,57,72,77,89-92]、神經(jīng)網(wǎng)絡(luò)[33,93-95]、支持向量機(jī)[59,96,97]、邏輯回歸[64]及字典學(xué)習(xí)[66]等.接下來(lái)在文獻(xiàn)[5]的基礎(chǔ)上,對(duì)近兩年的有監(jiān)督的學(xué)習(xí)方法進(jìn)一步地加以總結(jié)和分析.

    Issam 等人[34]將特征選擇和集成學(xué)習(xí)相結(jié)合,提出了平均概率集成(average probability ensemble,簡(jiǎn)稱(chēng)APE)學(xué)習(xí)方法,其中包含了Random Forests(RF)、Gradient Boosting(GB)、Stochastic Gradient Descent(SGD)、Weighted SVMs(W-SVMs)、Logistic Regression(LR)、Multinomial Na?ve Bayes(MNB)及Bernoulli Na?ve Bayes(BNB)這7種分類(lèi)器.在A(yíng)PE 模型里,每個(gè)分類(lèi)器都預(yù)測(cè)出軟件模塊屬于缺陷的概率,然后對(duì)這7 個(gè)概率取平均值作為最后的輸出.

    Yang 等人[35]提出了結(jié)合決策樹(shù)和集成學(xué)習(xí)的雙層集成學(xué)習(xí)方法TLEL(two-layer ensemble learning)來(lái)構(gòu)建預(yù)測(cè)動(dòng)態(tài)缺陷預(yù)測(cè)模型.在內(nèi)層使用基于決策樹(shù)的bagging 集成學(xué)習(xí)方法來(lái)構(gòu)建隨機(jī)森林模型,在外層使用隨機(jī)抽樣的方法來(lái)訓(xùn)練不同的隨機(jī)森林模型,然后按照stacking 方式來(lái)集成這些不同的隨機(jī)森林模型.

    Bowes 等人[89]提出了多樣性選擇的集成學(xué)習(xí)方法.該方法首先選擇來(lái)自4 個(gè)不同家族的分類(lèi)器NB、C4.5、K-NN 及序列最小化作為基礎(chǔ)分類(lèi)器,并且設(shè)計(jì)了加權(quán)精度多樣性WAD(weighted accuracy diversity),然后依據(jù)WAD 使用stacking 技術(shù)集成一個(gè)強(qiáng)分類(lèi)器.

    Xia 等人[92]針對(duì)跨項(xiàng)目的缺陷預(yù)測(cè)問(wèn)題提出了混合重構(gòu)方法 HYDRA(hybrid model reconstruction approach).該方法包括兩個(gè)階段:遺傳算法階段和集成學(xué)習(xí)階段.在遺傳算法階段,首先將每個(gè)帶標(biāo)簽的源訓(xùn)練集與帶標(biāo)簽的測(cè)試集結(jié)合構(gòu)建多個(gè)分類(lèi)器,然后利用遺傳算法,為每個(gè)分類(lèi)器分配不同的權(quán)值構(gòu)建GA 分類(lèi)器.在集成學(xué)習(xí)階段,即多次迭代GA 階段,每次迭代產(chǎn)生一個(gè)GA 分類(lèi)器,然后根據(jù)每個(gè)GA 分類(lèi)器的錯(cuò)誤率分配相應(yīng)的權(quán)重.經(jīng)過(guò)兩階段后就建立了大量的分類(lèi)器,然后將這些分類(lèi)器集成進(jìn)行測(cè)試集的缺陷預(yù)測(cè).

    (2)半監(jiān)督學(xué)習(xí)方法

    該方法是將有監(jiān)督學(xué)習(xí)與無(wú)監(jiān)督學(xué)習(xí)相結(jié)合的一種學(xué)習(xí)方法.該方法在使用大量的未標(biāo)記缺陷數(shù)據(jù)的同時(shí)使用了標(biāo)記的缺陷數(shù)據(jù),來(lái)進(jìn)行缺陷預(yù)測(cè).Zhang 等人[98]提出了基于圖的半監(jiān)督學(xué)習(xí)方法.首先根據(jù)拉普拉斯算子得分從無(wú)缺陷的訓(xùn)練集中抽樣樣本,構(gòu)建一個(gè)類(lèi)平衡的標(biāo)簽訓(xùn)練集.然后用非負(fù)稀疏算法來(lái)計(jì)算關(guān)系圖的非負(fù)稀疏權(quán)值作為聚類(lèi)指標(biāo).最后在非負(fù)稀疏圖上使用一個(gè)標(biāo)簽傳播算法來(lái)迭代預(yù)測(cè)未標(biāo)記的軟件模塊的標(biāo)簽.Wu 等人[99]使用半監(jiān)督結(jié)構(gòu)字典學(xué)習(xí)方法SSDL(semi-supervised dictionary learning)構(gòu)建項(xiàng)目?jī)?nèi)和跨項(xiàng)目的缺陷預(yù)測(cè)總體框架.該方法學(xué)習(xí)了總字典,以及有缺陷、無(wú)缺陷、未標(biāo)記模型3 個(gè)子字典,從而充分提取了缺陷數(shù)據(jù)的有用信息.

    He 等人[100]提出了半監(jiān)督學(xué)習(xí)方法extRF.該方法通過(guò)自我訓(xùn)練模式擴(kuò)展了有監(jiān)督的隨機(jī)森林算法.首先從數(shù)據(jù)集中抽取小部分?jǐn)?shù)據(jù)作為有標(biāo)簽的數(shù)據(jù)集,使用這一部分?jǐn)?shù)據(jù)集訓(xùn)練隨機(jī)森林分類(lèi)器,根據(jù)訓(xùn)練好的分類(lèi)器來(lái)預(yù)測(cè)未標(biāo)記的數(shù)據(jù)集,然后選擇最自信的樣本加入到訓(xùn)練集中,并進(jìn)行訓(xùn)練初始模型,以此類(lèi)推,最后形成精煉模型.

    (3)無(wú)監(jiān)督學(xué)習(xí)方法

    當(dāng)被測(cè)項(xiàng)目為無(wú)任何標(biāo)記的有/無(wú)缺陷數(shù)據(jù)集時(shí),可采用無(wú)監(jiān)督學(xué)習(xí)方法.該方法沒(méi)有導(dǎo)師,需要學(xué)習(xí)器自身形成(form)和評(píng)價(jià)(evaluate)概念.Feng 等人[84]采用無(wú)監(jiān)督學(xué)習(xí)中的譜聚類(lèi)方法進(jìn)行跨項(xiàng)目缺陷預(yù)測(cè).并且,將該方法和5 個(gè)經(jīng)常使用的有監(jiān)督學(xué)習(xí)器RF、NB、LR、DT 及邏輯模型樹(shù)進(jìn)行比較,發(fā)現(xiàn)使用譜聚類(lèi)的無(wú)監(jiān)督學(xué)習(xí)方法在跨項(xiàng)目和項(xiàng)目?jī)?nèi)場(chǎng)景下都有可比較性.Fu 等人[101]重新驗(yàn)證了無(wú)監(jiān)督學(xué)習(xí)對(duì)動(dòng)態(tài)缺陷預(yù)測(cè)模型的影響,發(fā)現(xiàn)并不是所有的無(wú)監(jiān)督學(xué)習(xí)都優(yōu)于有監(jiān)督學(xué)習(xí),提出了OneWay 方法來(lái)自動(dòng)選擇潛在的最好的方法.Rodrigo 等人[102]提出了結(jié)合粒子群算法的基于聚類(lèi)集成方法的缺陷預(yù)測(cè)模型.Park 等人[103]使用無(wú)監(jiān)督學(xué)習(xí)方法(EM 和Xmeans)方法進(jìn)行缺陷傾向性預(yù)測(cè).Muhammed 等人[104]針對(duì)網(wǎng)絡(luò)軟件系統(tǒng),使用無(wú)監(jiān)督學(xué)習(xí)的Kmeans++進(jìn)行缺陷預(yù)測(cè).Bishnu 等人[105]使用基于四叉樹(shù)的K-means 聚類(lèi)算法進(jìn)行缺陷傾向性預(yù)測(cè).

    Fig.10 The overview of the learners圖10 學(xué)習(xí)器分布總覽

    3.1.2 統(tǒng)計(jì)學(xué)方法

    統(tǒng)計(jì)學(xué)方法是收集、整理、分析和解釋統(tǒng)計(jì)數(shù)據(jù),并給出一定結(jié)論的方法.在缺陷傾向性預(yù)測(cè)中統(tǒng)計(jì)學(xué)方法也有一定研究.Shepperd 等人[11]使用統(tǒng)計(jì)學(xué)的方法分析了分類(lèi)器、數(shù)據(jù)集、輸入度量元以及研究團(tuán)隊(duì)4 個(gè)因素對(duì)缺陷預(yù)測(cè)模型的性能影響,實(shí)驗(yàn)結(jié)果表明,研究團(tuán)隊(duì)的影響較大.Pradeep 等人[120]針對(duì)缺陷傾向性提出了模糊規(guī)則,根據(jù)使用的特征比例選擇有用的特征.Chang 等人[121]提出了基于行為的缺陷模型,利用行為修正建議(action correction recommendation,簡(jiǎn)稱(chēng)ACR)構(gòu)建低缺陷行為和高缺陷行為,預(yù)測(cè)算法使用負(fù)關(guān)聯(lián)規(guī)則挖掘技術(shù).Zhang 等人[122]提出了代價(jià)效益規(guī)則,利用規(guī)則進(jìn)行缺陷傾向性預(yù)測(cè),并提出了FN/(FN+TN)的新的性能評(píng)價(jià)指標(biāo).

    一般地,當(dāng)有標(biāo)簽的缺陷數(shù)據(jù)集充足時(shí),使用有監(jiān)督學(xué)習(xí)要優(yōu)于無(wú)監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí);當(dāng)有部分標(biāo)簽缺陷數(shù)據(jù)集時(shí),可以使用半監(jiān)督學(xué)習(xí);當(dāng)無(wú)任何缺陷標(biāo)簽數(shù)據(jù)集時(shí),使用無(wú)監(jiān)督學(xué)習(xí).除此之外,有些研究者使用不同的方法,比較分類(lèi)器的不同分類(lèi)效果,但是,由于項(xiàng)目?jī)?nèi)在特征及評(píng)價(jià)指標(biāo)的不同,沒(méi)有哪個(gè)分類(lèi)器對(duì)所有的數(shù)據(jù)集都能產(chǎn)生好的結(jié)果[25,37,40,41,44,46,47,53,60,67,76,107,126-128],但是,在比較的時(shí)候,對(duì)于分類(lèi)器的參數(shù)一般采用的是默認(rèn)值,所以,在后續(xù)的工作中需要深入地分析分類(lèi)器方法中參數(shù)取值對(duì)缺陷預(yù)測(cè)模型性能的影響.

    3.2 缺陷數(shù)預(yù)測(cè)

    軟件缺陷數(shù)預(yù)測(cè)是通過(guò)軟件歷史數(shù)據(jù)對(duì)軟件模塊的缺陷數(shù)量進(jìn)行預(yù)測(cè),一般地,程序模塊針對(duì)的是類(lèi)級(jí)別或文件級(jí)別.近年來(lái),一些研究者在這個(gè)領(lǐng)域進(jìn)行了研究,大部分研究者使用的是邏輯回歸算法和簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)算法進(jìn)行預(yù)測(cè).

    Bell 等人[118]分析了開(kāi)發(fā)人員對(duì)缺陷預(yù)測(cè)模型的影響,使用標(biāo)準(zhǔn)的負(fù)二項(xiàng)回歸分類(lèi)器預(yù)測(cè)文件缺陷的數(shù)量.Andreou 等人[119]提出了隨機(jī)信念泊松回歸網(wǎng)絡(luò)(stochastic belief Poisson regression network,簡(jiǎn)稱(chēng)SBPRN)來(lái)計(jì)算缺陷數(shù),通過(guò)引入雙隨機(jī)齊次泊松過(guò)程模型,受SBN 公式的啟發(fā),在每個(gè)時(shí)間點(diǎn)的失效log-rate 參數(shù)進(jìn)行建模.Santosh 等人[36]提出將以前版本的數(shù)據(jù)作為依據(jù),利用集成學(xué)習(xí)技術(shù)預(yù)測(cè)現(xiàn)在版本的軟件模塊的缺陷數(shù).首先,把數(shù)據(jù)集按照6、2、2 分成訓(xùn)練集、確認(rèn)集和測(cè)試集,之后,利用meta-training 重新訓(xùn)練3 個(gè)分類(lèi)器(線(xiàn)性規(guī)劃、遺傳算法、多層感知器),用訓(xùn)練好的分類(lèi)器對(duì)確認(rèn)集進(jìn)行訓(xùn)練,得到相應(yīng)的值,然后,利用整合函數(shù)得到最后的缺陷數(shù).Tanvi 等人[114]利用人工神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)缺陷的數(shù)量,并且與模糊邏輯回歸方法進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明,該方法的性能有很大提高.Ratgore 等人[112]比較了6 個(gè)常用的預(yù)測(cè)缺陷數(shù)量的技術(shù),包括歸零校正“泊松回歸”和負(fù)二項(xiàng)回歸,結(jié)果表明,DTR(decision tree regression)、GP(genetic programming)、多層感知器以及LR 在所有考慮的項(xiàng)目中都能得到較好的性能.

    3.3 缺陷嚴(yán)重度預(yù)測(cè)

    研究者近年來(lái)對(duì)缺陷嚴(yán)重性預(yù)測(cè)進(jìn)行了一定的研究,大多采用邏輯回歸方法進(jìn)行預(yù)測(cè).You 等人[106]提出了采用多邏輯回歸方法(multiple linear regression,簡(jiǎn)稱(chēng)MLR)和隨機(jī)梯度下降法來(lái)預(yù)測(cè)缺陷的嚴(yán)重度,進(jìn)而以此對(duì)軟件模塊進(jìn)行排序,指導(dǎo)測(cè)試資源的合理分配.Nguyen 等人[107]針對(duì)缺陷的嚴(yán)重度提出了一種基于排序的方法,根據(jù)軟件模塊的缺陷數(shù)來(lái)對(duì)軟件模塊的嚴(yán)重度排序,通過(guò)實(shí)驗(yàn)表明,該方法提高了缺陷預(yù)測(cè)的性能.Yang 等人[108]將LTR(learning to rank)方法引入到缺陷預(yù)測(cè)模型中,組合不同的評(píng)估指標(biāo)來(lái)優(yōu)化缺陷的嚴(yán)重度,實(shí)驗(yàn)結(jié)果表明了方法的有效性.Yadav 等人[109]使用模糊邏輯提取規(guī)則,預(yù)測(cè)缺陷的嚴(yán)重度,其中,嚴(yán)重度的確定根據(jù)缺陷的數(shù)量來(lái)判斷.You 等人[110]針對(duì)跨項(xiàng)目缺陷預(yù)測(cè)的嚴(yán)重度問(wèn)題,提出了利用單目標(biāo)的多線(xiàn)性回歸方法,分類(lèi)器使用Linear Regression(LR)、RankSVM、RankBoost,嚴(yán)重度根據(jù)bug 的個(gè)數(shù)進(jìn)行排序.

    3.4 其 他

    大部分的研究者主要對(duì)缺陷傾向性、缺陷數(shù)和缺陷嚴(yán)重度進(jìn)行了建模,除此之外,部分研究者還研究了其他預(yù)測(cè)模型.Borg 等人[129]利用K-means 聚類(lèi)方法預(yù)測(cè)缺陷修復(fù)時(shí)間.Parizy 等人[130]基于硬件設(shè)計(jì)資源庫(kù)(私有項(xiàng)目)的缺陷預(yù)測(cè),來(lái)預(yù)測(cè)缺陷的等級(jí).Gupta 等人[131]針對(duì)缺陷預(yù)測(cè)的類(lèi)重疊和噪音問(wèn)題,首先將54 個(gè)軟件項(xiàng)目整理為327 個(gè)二類(lèi)的數(shù)據(jù)集,然后利用數(shù)據(jù)復(fù)雜度對(duì)數(shù)據(jù)集進(jìn)行重疊度計(jì)算,并且對(duì)207 個(gè)重疊度高的數(shù)據(jù)集計(jì)算實(shí)例的重疊度,最后在327 個(gè)Promise 數(shù)據(jù)集上利用KNN、SVM、NB 和C4.5 分別進(jìn)行有重疊實(shí)例和沒(méi)有重疊實(shí)例的計(jì)算,實(shí)驗(yàn)結(jié)果表明,去除重疊的數(shù)據(jù)集有更好的預(yù)測(cè)性能.Rathore 等人[132]提出了一個(gè)推薦系統(tǒng),該系統(tǒng)考慮了影響缺陷性能的10 種因素,從10 種因素提取相應(yīng)的規(guī)則,依據(jù)項(xiàng)目的實(shí)際需求選擇合適的技術(shù)進(jìn)行缺陷預(yù)測(cè).

    綜上所述,研究者采用機(jī)器學(xué)習(xí)的方法對(duì)程序模塊的缺陷傾向性進(jìn)行了大量研究,但對(duì)于程序模塊粗粒度的缺陷數(shù)和缺陷嚴(yán)重度的研究較少,而缺陷數(shù)和缺陷嚴(yán)重度的研究更能指導(dǎo)實(shí)際的軟件開(kāi)發(fā)和測(cè)試工作,所以,在后續(xù)的工作中需進(jìn)一步加強(qiáng)對(duì)缺陷數(shù)或者缺陷嚴(yán)重度模型的研究.

    4 性能評(píng)價(jià)指標(biāo)

    性能評(píng)價(jià)指標(biāo)是對(duì)構(gòu)建的缺陷預(yù)測(cè)模型的性能進(jìn)行評(píng)價(jià),以此來(lái)判斷構(gòu)建的缺陷預(yù)測(cè)模型的好壞.針對(duì)不同的缺陷預(yù)測(cè)模型可以分為不同的評(píng)價(jià)指標(biāo),大體上可以分為缺陷傾向性評(píng)價(jià)指標(biāo)、缺陷數(shù)分析評(píng)價(jià)指標(biāo)和缺陷嚴(yán)重度評(píng)價(jià)指標(biāo).但是目前還沒(méi)有一套通用的評(píng)價(jià)標(biāo)準(zhǔn)來(lái)衡量不同的缺陷預(yù)測(cè)模型的性能,大部分研究者使用多種性能指標(biāo)進(jìn)行評(píng)估.

    4.1 缺陷傾向性評(píng)價(jià)指標(biāo)

    軟件缺陷傾向性預(yù)測(cè)是預(yù)測(cè)軟件模塊為有缺陷模塊還是無(wú)缺陷模塊,是一個(gè)二分類(lèi)問(wèn)題.因此,可以使用機(jī)器學(xué)習(xí)中分類(lèi)問(wèn)題的模型評(píng)價(jià)指標(biāo),混淆矩陣是評(píng)價(jià)分類(lèi)模型好壞的展示工具,具體見(jiàn)表1.矩陣的每一行表示實(shí)例的真實(shí)情況,矩陣的每一列表示預(yù)測(cè)模型預(yù)測(cè)的實(shí)例情況.

    矩陣元素的具體含義分別是:

    True Positive(TP):表示實(shí)例的真實(shí)類(lèi)別是有缺陷模塊,預(yù)測(cè)模型的預(yù)測(cè)結(jié)果也是有缺陷模塊.

    False Negative(FN):表示實(shí)例的真實(shí)類(lèi)別是有缺陷模塊,預(yù)測(cè)模型的預(yù)測(cè)結(jié)果是無(wú)缺陷模塊.

    Table 1 Confusion matrix表1 混淆矩陣

    False Positive(FP):表示實(shí)例的真實(shí)類(lèi)別是無(wú)缺陷模塊,預(yù)測(cè)模型的預(yù)測(cè)結(jié)果是有缺陷模塊.

    True Negative(TN):表示實(shí)例的真實(shí)類(lèi)別是無(wú)缺陷模塊,預(yù)測(cè)模型的預(yù)測(cè)結(jié)果是無(wú)缺陷模塊.

    根據(jù)混淆矩陣衍生了各種評(píng)價(jià)指標(biāo),其中,用于缺陷預(yù)測(cè)的主要有Accuracy、Precision、Recall、F-measure、G-mean、AUC、MCC 等.

    (1)Accuracy:表示預(yù)測(cè)模型的精確度,是預(yù)測(cè)模型預(yù)測(cè)正確的個(gè)數(shù)與數(shù)據(jù)集中實(shí)例總個(gè)數(shù)的比值.公式為

    在軟件缺陷預(yù)測(cè)中,精確度表示被正確分類(lèi)的軟件模塊的比例,但是,這個(gè)度量指標(biāo)有些含糊不清,沒(méi)有說(shuō)明有/無(wú)缺陷的錯(cuò)誤分類(lèi)的信息.

    (2)Precision:表示查準(zhǔn)率,是預(yù)測(cè)模型預(yù)測(cè)為有缺陷實(shí)例中真實(shí)類(lèi)別為有缺陷所占的比例.公式為

    缺陷預(yù)測(cè)中的精確度表示了正確分類(lèi)的缺陷模塊與預(yù)測(cè)為有缺陷模塊的比例,一般情況下,Precision 越高,說(shuō)明預(yù)測(cè)模型的效果越好.

    (3)Recall:表示召回率,是預(yù)測(cè)模型預(yù)測(cè)為有缺陷的實(shí)例的數(shù)量占真實(shí)有缺陷的實(shí)例數(shù)的比例.公式為

    Recall 對(duì)軟件缺陷預(yù)測(cè)非常重要,越早地找到有缺陷的特別是高危的模塊,對(duì)軟件越好.一般情況下,Recall越高,說(shuō)明有更多的有缺陷的模塊被模型預(yù)測(cè)正確,預(yù)測(cè)模型的效果越好,但是,較高的召回率往往是以降低精確度為代價(jià)的.

    (4)pf:表示假陽(yáng)率,是真實(shí)為無(wú)缺陷模塊被預(yù)測(cè)為有缺陷模塊占真實(shí)無(wú)缺陷模塊的比例.其公式表示為

    當(dāng)然,pf 值越小,表明模型的性能越好.因?yàn)閜f 的值過(guò)大,表明越多的無(wú)缺陷模塊被誤分為有缺陷,則需要投入很多的資源到無(wú)缺陷的模型進(jìn)行測(cè)試,造成資源的浪費(fèi).

    (5)F-measure:是一個(gè)綜合評(píng)價(jià)指標(biāo),提供了召回率和精確度之間的權(quán)衡,具體公式如下:

    (6)G-mean:幾何平均數(shù),能夠評(píng)價(jià)類(lèi)不平衡數(shù)據(jù)的表現(xiàn).對(duì)于軟件缺陷數(shù)據(jù)來(lái)說(shuō),有缺陷的模塊占少數(shù),無(wú)缺陷的模塊占多數(shù),所以有類(lèi)不平衡的問(wèn)題.公式如下:

    (7)AUC:表示ROC 曲線(xiàn)下的面積.ROC 曲線(xiàn)叫作接受者工作特征曲線(xiàn),其橫坐標(biāo)為假陽(yáng)性率,縱坐標(biāo)為Recall.一般情況下,AUC 值越大,說(shuō)明缺陷預(yù)測(cè)模型的性能越好[95].

    (8)MCC(Matthews correlation coefficient):表示實(shí)際分類(lèi)與預(yù)測(cè)分類(lèi)之間的相關(guān)系數(shù).該指標(biāo)同時(shí)考慮了TP、FN、FP 及TN,是一個(gè)相對(duì)均衡的指標(biāo),能夠評(píng)價(jià)類(lèi)不平衡數(shù)據(jù)的表現(xiàn)[133].公式如下:

    一般地,Accuracy、Precision、Recall、F-measure、G-mean、AUC 的取值范圍在[0,1],而MCC 的取值范圍是[–1,1].在缺陷數(shù)據(jù)的類(lèi)不平衡情況下,Accuracy 指標(biāo)有很大的缺陷(如有缺陷的模塊只占2%時(shí),Accuracy 等于98%,但無(wú)意義);Precision 是檢索出來(lái)的缺陷模塊有多少是準(zhǔn)確的,Recall 是所有有缺陷的模塊有多少被檢索出來(lái),F-measure 和G-mean 是用來(lái)權(quán)衡Precision 及Recall 兩個(gè)指標(biāo)的,屬于綜合評(píng)價(jià)指標(biāo),Precision、Recall、F-measure 及G-mean 對(duì)類(lèi)分布的改變較敏感;AUC 不受類(lèi)分布的影響,適合評(píng)估類(lèi)分布不平衡的數(shù)據(jù)集;MCC是一個(gè)較均衡的指標(biāo),即使缺陷數(shù)據(jù)集類(lèi)分布嚴(yán)重不平衡,也可以使用MCC.

    4.2 缺陷數(shù)評(píng)價(jià)指標(biāo)

    缺陷數(shù)的預(yù)測(cè)正好與缺陷傾向性相反,評(píng)價(jià)的是連續(xù)的數(shù)值.具體的評(píng)價(jià)指標(biāo)有:AAE、ARE、Measure of Completeness.

    (1)AAE(average absolute error):平均絕對(duì)誤差,表示預(yù)測(cè)值與實(shí)際值之間的距離,在缺陷預(yù)測(cè)中表示預(yù)測(cè)的值與實(shí)際值之前的差值,其被定義為

    (2)ARE(average relative error):平均相對(duì)誤差,表示預(yù)測(cè)的值與被測(cè)的實(shí)際值的比值,首先需要確定絕對(duì)誤差來(lái)計(jì)算相對(duì)誤差,具體的公式為

    (3)Measure of Completeness:完整性測(cè)量,用來(lái)表示模型在預(yù)測(cè)過(guò)程中的完整程度,在軟件系統(tǒng)中,它是測(cè)量實(shí)際的缺陷值與預(yù)測(cè)缺陷值的一個(gè)比值.具體公式為

    如果該值接近100%,表示這個(gè)模型可以接受,如果高于100%,表示該預(yù)測(cè)模型具有很高的假陽(yáng)性率,需要額外的努力來(lái)修復(fù)錯(cuò)誤,如果值小于100%,表示預(yù)測(cè)模型沒(méi)有預(yù)測(cè)到一些錯(cuò)誤.

    4.3 缺陷嚴(yán)重度評(píng)價(jià)指標(biāo)

    缺陷嚴(yán)重度預(yù)測(cè)主要是給開(kāi)發(fā)人員反饋一個(gè)缺陷嚴(yán)重度的推薦列表,具體的評(píng)價(jià)指標(biāo)有:MAP、FPA、CE.

    (1)MAP(mean acerage precision):平均精度均值,表示每個(gè)類(lèi)別的平均準(zhǔn)確率的平均值.預(yù)測(cè)出來(lái)的嚴(yán)重度高的缺陷模塊越靠前,MAP 就越高.具體公式為

    其中,q表示類(lèi)別,0 表示無(wú)缺陷,1 表示有缺陷.AP(q)表示不同查全率的點(diǎn)上的正確率的平均.

    (2)FPA(fault percentile average):平均缺陷百分比,表示Topm模塊中實(shí)際缺陷占整個(gè)系統(tǒng)缺陷的比例的平均值[122].FPA 的值越大,表明排序越好.具體公式為

    其中,k表示模塊的數(shù)量,ni表示根據(jù)預(yù)測(cè)的排序i模塊的實(shí)際缺陷數(shù),n表示k個(gè)模型總的缺陷數(shù).

    (3)CE(cost effectiveness):成本效益,該指標(biāo)是基于源代碼行數(shù)的Alberg 圖的概念.在A(yíng)lberg 圖中,X軸表示從排序模塊中選擇模塊的累積代碼行數(shù)百分比,Y軸表示選擇模塊發(fā)現(xiàn)缺陷數(shù)的累積百分比[134].CEπ(m)的取值范圍為[–1,1],該值越大,代表該模型效果越好.其計(jì)算公式為

    其中,Areaπ(m)是被評(píng)價(jià)模型的曲線(xiàn)面積,Areaπ(random model)是隨機(jī)選擇方法的曲線(xiàn)面積,Areaπ(optimal model)是根據(jù)實(shí)際項(xiàng)目排序的曲線(xiàn)面積.

    本文對(duì)收集的117 篇文獻(xiàn)中的性能評(píng)價(jià)指標(biāo)的使用次數(shù)進(jìn)行了統(tǒng)計(jì),得到的結(jié)果見(jiàn)表2,從表中可以看出,對(duì)于缺陷傾向性預(yù)測(cè),經(jīng)常使用的性能評(píng)價(jià)指標(biāo)是:F-measure、Precision、Recall 及AUC.其中,Recall 為預(yù)測(cè)的實(shí)際有缺陷模塊的比例,當(dāng)該值很高時(shí),表明實(shí)際有缺陷模塊被挖掘;F-measure 及AUC 為綜合評(píng)價(jià)指標(biāo),能夠權(quán)衡Precision 及Recall 之間的關(guān)系,當(dāng)二者都很高時(shí),表明這個(gè)模型性能好,所以使用比較多.MCC 是同時(shí)考慮了4 個(gè)指標(biāo)的評(píng)價(jià)指標(biāo),所以在后期的實(shí)驗(yàn)比較中,加入MCC 更具有說(shuō)服力.

    Table 2 The statistics of performance measures表2 性能評(píng)價(jià)指標(biāo)統(tǒng)計(jì)

    5 總結(jié)

    軟件缺陷預(yù)測(cè)(SDP)在測(cè)試過(guò)程之前預(yù)測(cè)軟件缺陷,從而有助于更好地利用測(cè)試資源,保證軟件質(zhì)量(SQA).因此,軟件缺陷預(yù)測(cè)近年來(lái)吸引了研究人員的注意.本文總結(jié)了軟件缺陷預(yù)測(cè)的相關(guān)工作,如缺陷度量元、數(shù)據(jù)集問(wèn)題、缺陷預(yù)測(cè)方法及性能評(píng)價(jià)指標(biāo).從整理分析的文獻(xiàn)中可以看出,大部分的工作都集中在使用公共數(shù)據(jù)集的面向?qū)ο蠖攘吭瓦^(guò)程度量元上,而且主要是利用機(jī)器學(xué)習(xí)和統(tǒng)計(jì)方法來(lái)進(jìn)行缺陷傾向性預(yù)測(cè);在數(shù)據(jù)質(zhì)量問(wèn)題上,高維度和類(lèi)不平衡問(wèn)題得到了廣泛的研究;大部分的工作是使用F-measure、Precision、Recall 及AUC等指標(biāo)來(lái)評(píng)估模型的性能.當(dāng)然,軟件缺陷預(yù)測(cè)模型還存在著大量值得進(jìn)一步研究的問(wèn)題.

    (1)基于演化的缺陷預(yù)測(cè)模型值得關(guān)注

    目前,大多數(shù)的軟件缺陷預(yù)測(cè)模型都是基于需求、設(shè)計(jì)等的文檔和代碼等相關(guān)的度量元,但是,軟件產(chǎn)品為了適應(yīng)需求的變化,不斷演化.在每次演化的過(guò)程中,一方面可能由于新增需求而新增加類(lèi)代碼,另一方面可能由于需求變化而變動(dòng)已有的類(lèi)代碼,這些變更都會(huì)相應(yīng)地引入新的缺陷.因此,需要根據(jù)軟件產(chǎn)品的演化軌跡,挖掘出一些與演化有關(guān)的度量元,完善演化度量元集,并應(yīng)用在缺陷預(yù)測(cè)模型中.

    一方面,可以分析不同粒度的演化度量元對(duì)演化缺陷預(yù)測(cè)模型的影響.粗粒度一般考慮的是事務(wù)或者文件級(jí)別的變更,通常針對(duì)多個(gè)語(yǔ)句進(jìn)行修改,所以,在該級(jí)別預(yù)測(cè)出引入的缺陷,無(wú)法準(zhǔn)確定位.細(xì)粒度一般是類(lèi)或者語(yǔ)句級(jí)別,能夠更精確地定位缺陷,縮小測(cè)試和審查范圍.

    另一方面,提取演化度量元時(shí)可以考慮開(kāi)發(fā)人員的經(jīng)驗(yàn).有研究者指出,開(kāi)發(fā)人員對(duì)軟件項(xiàng)目的熟悉程度關(guān)系到變更的質(zhì)量[135,136].因此,提取演化度量元時(shí)需要關(guān)注人的因素,需要分析開(kāi)發(fā)人員的經(jīng)驗(yàn)對(duì)演化缺陷預(yù)測(cè)模型的影響.

    (2)缺陷數(shù)預(yù)測(cè)或缺陷嚴(yán)重度預(yù)測(cè)模型值得關(guān)注

    大部分研究者對(duì)軟件缺陷傾向性預(yù)測(cè)進(jìn)行了大量研究,只有少數(shù)研究人員專(zhuān)注于缺陷數(shù)或者缺陷嚴(yán)重度度量.但是,從軟件開(kāi)發(fā)者的角度來(lái)看,他們更想知道哪個(gè)模塊有更多的軟件缺陷,而不是這個(gè)模塊有沒(méi)有缺陷.這樣,他們就可以盡早地快速識(shí)別大部分的缺陷.所以,需要構(gòu)建更多的缺陷數(shù)、缺陷嚴(yán)重度的預(yù)測(cè)模型,并對(duì)這些模型提供合理的評(píng)價(jià)指標(biāo).

    一方面,目前的研究大都集中在使用邏輯回歸的方法進(jìn)行預(yù)測(cè).深度學(xué)習(xí)方法具有擬合任何復(fù)雜函數(shù)的特點(diǎn),可以進(jìn)行非常復(fù)雜的非線(xiàn)性映射.因此,可以將多種深度學(xué)習(xí)方法進(jìn)一步引入到缺陷數(shù)或嚴(yán)重度的預(yù)測(cè)中,發(fā)現(xiàn)軟件內(nèi)部度量元與缺陷數(shù)或嚴(yán)重度的非線(xiàn)性映射,從而形成具有良好效果的預(yù)測(cè)模型.

    另一方面,目前的缺陷預(yù)測(cè)模型的評(píng)價(jià)指標(biāo)多集中在缺陷傾向性模型的評(píng)價(jià)上,缺陷數(shù)和缺陷嚴(yán)重度的評(píng)價(jià)指標(biāo)較少,而且目前的評(píng)價(jià)指標(biāo)大多是從缺陷的個(gè)數(shù)加以考慮,因此,設(shè)計(jì)出更合理的綜合評(píng)價(jià)指標(biāo)更有意義.

    (3)異構(gòu)缺陷預(yù)測(cè)模型值得關(guān)注

    傳統(tǒng)的缺陷預(yù)測(cè)模型需要源項(xiàng)目和目標(biāo)項(xiàng)目具體同分布,即只能進(jìn)行同項(xiàng)目之間的預(yù)測(cè).但在公司的早期,沒(méi)有這么多的歷史數(shù)據(jù),所以需要使用不同項(xiàng)目或者不同公司的歷史數(shù)據(jù)來(lái)構(gòu)建異構(gòu)缺陷預(yù)測(cè)模型.

    一方面,需要進(jìn)一步引入異構(gòu)遷移學(xué)習(xí)領(lǐng)域內(nèi)的最新研究成果,轉(zhuǎn)換特征集,縮小兩者之間的差異,構(gòu)建效果好的異構(gòu)缺陷預(yù)測(cè)模型.

    另一方面,研究不同的轉(zhuǎn)換方向?qū)Ξ悩?gòu)缺陷預(yù)測(cè)模型的影響.在進(jìn)行轉(zhuǎn)換時(shí)可以是源域向目標(biāo)域靠近,也可以是源域和目標(biāo)域轉(zhuǎn)變到共同的特征空間集,具體哪種方式可以得到更好的性能需要進(jìn)一步加以研究.

    (4)私有/商業(yè)項(xiàng)目的數(shù)據(jù)脫敏問(wèn)題

    目前,大部分的缺陷預(yù)測(cè)模型的研究是基于公共數(shù)據(jù)庫(kù)的,因?yàn)樗接?商業(yè)項(xiàng)目涉及到公司內(nèi)部隱私問(wèn)題,不能公開(kāi),但是公共數(shù)據(jù)庫(kù)和各個(gè)公司內(nèi)部的某些度量元可能會(huì)不同,所以,可以對(duì)某些私有/商業(yè)的項(xiàng)目進(jìn)行去隱私化處理,這樣既能進(jìn)行缺陷預(yù)測(cè),也能不泄露內(nèi)部機(jī)密.Peters 等人[126]在這方面已進(jìn)行了一些研究,提出了CLIFF+MORPH 的方法來(lái)去除隱私化.目前對(duì)該問(wèn)題的研究工作較少,若能對(duì)該問(wèn)題進(jìn)行深入研究,則可以給商業(yè)項(xiàng)目提供更好的缺陷預(yù)測(cè)模型.

    猜你喜歡
    軟件缺陷度量分類(lèi)器
    有趣的度量
    模糊度量空間的強(qiáng)嵌入
    基于源文件可疑度的靜態(tài)軟件缺陷檢測(cè)方法研究
    迷向表示分為6個(gè)不可約直和的旗流形上不變愛(ài)因斯坦度量
    基于NPE-SVM的軟件缺陷預(yù)測(cè)模型
    BP-GA光照分類(lèi)器在車(chē)道線(xiàn)識(shí)別中的應(yīng)用
    開(kāi)源程序的軟件缺陷分布特征的量化分析研究
    加權(quán)空-譜與最近鄰分類(lèi)器相結(jié)合的高光譜圖像分類(lèi)
    結(jié)合模糊(C+P)均值聚類(lèi)和SP-V-支持向量機(jī)的TSK分類(lèi)器
    地質(zhì)異常的奇異性度量與隱伏源致礦異常識(shí)別
    三级国产精品欧美在线观看| 日韩欧美 国产精品| 午夜福利高清视频| 99热网站在线观看| av国产精品久久久久影院| 在线 av 中文字幕| 国产黄片视频在线免费观看| 日本vs欧美在线观看视频 | 久久人人爽av亚洲精品天堂 | 午夜日本视频在线| 亚洲精品乱久久久久久| 性色avwww在线观看| 韩国高清视频一区二区三区| 黄色欧美视频在线观看| 熟女电影av网| www.色视频.com| 国产精品精品国产色婷婷| 18禁在线无遮挡免费观看视频| 99热6这里只有精品| 乱码一卡2卡4卡精品| 秋霞伦理黄片| 国产无遮挡羞羞视频在线观看| 日本色播在线视频| av黄色大香蕉| 国产久久久一区二区三区| 国产欧美日韩一区二区三区在线 | 日韩欧美精品免费久久| 中文欧美无线码| 久久精品久久久久久噜噜老黄| 女人久久www免费人成看片| 美女视频免费永久观看网站| 美女福利国产在线 | 精品久久久精品久久久| 亚洲精品视频女| 亚洲精品乱码久久久久久按摩| 国内少妇人妻偷人精品xxx网站| 久久99热这里只有精品18| 丰满迷人的少妇在线观看| 在现免费观看毛片| 亚洲国产毛片av蜜桃av| 高清黄色对白视频在线免费看 | 嫩草影院入口| videos熟女内射| 看十八女毛片水多多多| 日韩精品有码人妻一区| 啦啦啦视频在线资源免费观看| 啦啦啦啦在线视频资源| 国产欧美亚洲国产| 精品国产三级普通话版| 好男人视频免费观看在线| 特大巨黑吊av在线直播| 久久亚洲国产成人精品v| 一个人看的www免费观看视频| 少妇的逼水好多| 欧美+日韩+精品| 熟女电影av网| 欧美亚洲 丝袜 人妻 在线| 1000部很黄的大片| 成人毛片60女人毛片免费| 一本—道久久a久久精品蜜桃钙片| 成人无遮挡网站| 高清毛片免费看| 黄色一级大片看看| 国产伦精品一区二区三区视频9| 一区二区三区四区激情视频| av线在线观看网站| 久久久久久久久久人人人人人人| 18禁裸乳无遮挡动漫免费视频| 久久午夜福利片| 久久久久久久国产电影| 久久久久久久久久人人人人人人| 少妇人妻久久综合中文| 国产淫片久久久久久久久| 免费少妇av软件| 夜夜看夜夜爽夜夜摸| 高清日韩中文字幕在线| 日本一二三区视频观看| 国产成人精品一,二区| 全区人妻精品视频| 在线观看一区二区三区| 精品久久久精品久久久| 青春草视频在线免费观看| 国产av码专区亚洲av| 免费不卡的大黄色大毛片视频在线观看| 欧美成人a在线观看| 亚洲国产成人一精品久久久| 国产高清不卡午夜福利| 色吧在线观看| 国产人妻一区二区三区在| 精品视频人人做人人爽| 亚洲欧美日韩无卡精品| av在线播放精品| 晚上一个人看的免费电影| 国产探花极品一区二区| 日韩制服骚丝袜av| 中文乱码字字幕精品一区二区三区| 亚洲第一av免费看| 午夜日本视频在线| 校园人妻丝袜中文字幕| 亚洲精品国产av蜜桃| 黄色配什么色好看| 中国三级夫妇交换| 一本一本综合久久| 一级毛片aaaaaa免费看小| 亚洲精品aⅴ在线观看| 国产精品免费大片| 久久精品夜色国产| 久久久久国产网址| 各种免费的搞黄视频| 中文字幕精品免费在线观看视频 | 国产男女内射视频| 亚洲av综合色区一区| 欧美激情国产日韩精品一区| 婷婷色综合大香蕉| 日韩免费高清中文字幕av| videos熟女内射| 国产熟女欧美一区二区| 黑人猛操日本美女一级片| 秋霞在线观看毛片| 看十八女毛片水多多多| 免费久久久久久久精品成人欧美视频 | 一区二区三区乱码不卡18| 国产大屁股一区二区在线视频| 日本免费在线观看一区| 久久ye,这里只有精品| 国产亚洲一区二区精品| 熟女电影av网| 亚洲av电影在线观看一区二区三区| a级毛色黄片| 免费看光身美女| 99热国产这里只有精品6| 卡戴珊不雅视频在线播放| 高清在线视频一区二区三区| av网站免费在线观看视频| av一本久久久久| 成年免费大片在线观看| 免费av不卡在线播放| 七月丁香在线播放| a级毛色黄片| 成人高潮视频无遮挡免费网站| av在线观看视频网站免费| 日韩成人av中文字幕在线观看| 中文字幕免费在线视频6| 久久国产精品大桥未久av | 99久国产av精品国产电影| 成人午夜精彩视频在线观看| 日韩精品有码人妻一区| 最近手机中文字幕大全| 亚洲精品一二三| 精品人妻视频免费看| 亚洲aⅴ乱码一区二区在线播放| 国产深夜福利视频在线观看| 亚洲激情五月婷婷啪啪| 少妇猛男粗大的猛烈进出视频| 亚洲不卡免费看| 色网站视频免费| 大码成人一级视频| 国产精品国产三级国产专区5o| 久久精品国产亚洲av涩爱| 在线观看一区二区三区| 精品人妻熟女av久视频| 色综合色国产| 国产亚洲欧美精品永久| 久久精品久久久久久久性| 欧美激情极品国产一区二区三区 | 国产淫语在线视频| 哪个播放器可以免费观看大片| 欧美xxxx黑人xx丫x性爽| 亚洲三级黄色毛片| 国产极品天堂在线| 一区二区三区乱码不卡18| 日本欧美视频一区| 观看av在线不卡| 丰满少妇做爰视频| 高清视频免费观看一区二区| 免费不卡的大黄色大毛片视频在线观看| 免费黄色在线免费观看| 中文字幕人妻丝袜制服| 高潮久久久久久久久久久不卡| 精品人妻一区二区三区麻豆| 超色免费av| 中文字幕av电影在线播放| 波多野结衣av一区二区av| 欧美精品人与动牲交sv欧美| netflix在线观看网站| 男女无遮挡免费网站观看| 免费人妻精品一区二区三区视频| 夜夜骑夜夜射夜夜干| 赤兔流量卡办理| 少妇人妻 视频| www日本在线高清视频| 欧美老熟妇乱子伦牲交| 少妇的丰满在线观看| 亚洲精品成人av观看孕妇| 19禁男女啪啪无遮挡网站| 777米奇影视久久| 天堂俺去俺来也www色官网| 久久精品人人爽人人爽视色| 国产精品欧美亚洲77777| 精品国产超薄肉色丝袜足j| 大陆偷拍与自拍| 欧美国产精品一级二级三级| videos熟女内射| 最新的欧美精品一区二区| 亚洲中文日韩欧美视频| 国产一卡二卡三卡精品| 婷婷丁香在线五月| 妹子高潮喷水视频| 在线看a的网站| 久久国产精品人妻蜜桃| 精品一品国产午夜福利视频| 亚洲国产av新网站| 国产精品久久久久久精品古装| 天堂中文最新版在线下载| 色视频在线一区二区三区| 国产成人系列免费观看| 亚洲国产av新网站| 丝袜在线中文字幕| 久久天躁狠狠躁夜夜2o2o | 欧美精品一区二区大全| av一本久久久久| 999久久久国产精品视频| 国产精品久久久久久人妻精品电影 | 日韩大码丰满熟妇| 无限看片的www在线观看| 黄片小视频在线播放| 两人在一起打扑克的视频| 侵犯人妻中文字幕一二三四区| 亚洲中文av在线| 欧美黄色淫秽网站| 午夜视频精品福利| 婷婷色麻豆天堂久久| 99久久99久久久精品蜜桃| 91麻豆精品激情在线观看国产 | 国产国语露脸激情在线看| 一级毛片电影观看| 久久久久久久大尺度免费视频| 尾随美女入室| 一区在线观看完整版| 女性被躁到高潮视频| 精品人妻熟女毛片av久久网站| 国产黄频视频在线观看| 亚洲精品一卡2卡三卡4卡5卡 | 黄色毛片三级朝国网站| 日韩欧美一区视频在线观看| 亚洲国产av影院在线观看| 久久精品亚洲熟妇少妇任你| www.999成人在线观看| 黄色片一级片一级黄色片| 又紧又爽又黄一区二区| 一本一本久久a久久精品综合妖精| 可以免费在线观看a视频的电影网站| 亚洲欧美激情在线| 国产成人精品无人区| 美女福利国产在线| 巨乳人妻的诱惑在线观看| 99热国产这里只有精品6| 一级黄片播放器| 19禁男女啪啪无遮挡网站| 黄色片一级片一级黄色片| √禁漫天堂资源中文www| 丝袜美足系列| av在线老鸭窝| 国产成人一区二区三区免费视频网站 | 欧美精品啪啪一区二区三区 | 国产成人系列免费观看| 精品久久久久久电影网| 亚洲午夜精品一区,二区,三区| 亚洲第一青青草原| 国产高清videossex| 少妇粗大呻吟视频| 免费看十八禁软件| 一本久久精品| 九草在线视频观看| 精品一区二区三区av网在线观看 | 国产高清videossex| 亚洲成人免费av在线播放| 久久天躁狠狠躁夜夜2o2o | 99精国产麻豆久久婷婷| 亚洲精品国产色婷婷电影| 久久久国产欧美日韩av| 丝袜人妻中文字幕| 国产免费视频播放在线视频| 欧美老熟妇乱子伦牲交| 成年人黄色毛片网站| 午夜91福利影院| 亚洲人成网站在线观看播放| 色综合欧美亚洲国产小说| 国产无遮挡羞羞视频在线观看| 老鸭窝网址在线观看| 精品少妇久久久久久888优播| 丝袜喷水一区| 制服诱惑二区| 国产av国产精品国产| 亚洲精品一二三| 高清av免费在线| 91字幕亚洲| 久久99精品国语久久久| 欧美乱码精品一区二区三区| 欧美激情极品国产一区二区三区| 校园人妻丝袜中文字幕| 日韩精品免费视频一区二区三区| 18禁黄网站禁片午夜丰满| 免费看av在线观看网站| 久久99一区二区三区| 国产精品一区二区免费欧美 | 国产不卡av网站在线观看| 久久久久视频综合| 天堂俺去俺来也www色官网| 亚洲av欧美aⅴ国产| 多毛熟女@视频| 极品少妇高潮喷水抽搐| 国产黄频视频在线观看| 丰满饥渴人妻一区二区三| 99精国产麻豆久久婷婷| 欧美日韩国产mv在线观看视频| 欧美变态另类bdsm刘玥| 欧美中文综合在线视频| 男人舔女人的私密视频| 亚洲av国产av综合av卡| 男人爽女人下面视频在线观看| 亚洲久久久国产精品| www.精华液| 老熟女久久久| 美女主播在线视频| 久久人人爽人人片av| 欧美精品一区二区大全| 一本大道久久a久久精品| 欧美人与善性xxx| 久久午夜综合久久蜜桃| 午夜免费成人在线视频| 男的添女的下面高潮视频| 欧美少妇被猛烈插入视频| 亚洲专区国产一区二区| 人体艺术视频欧美日本| 婷婷丁香在线五月| avwww免费| 成人国语在线视频| 亚洲精品国产av蜜桃| 日本色播在线视频| 亚洲五月色婷婷综合| 国产精品 国内视频| 国产免费一区二区三区四区乱码| 热99久久久久精品小说推荐| 国产成人欧美在线观看 | 亚洲av日韩在线播放| 精品卡一卡二卡四卡免费| 国产又色又爽无遮挡免| 久久久久精品国产欧美久久久 | 人人妻人人澡人人爽人人夜夜| 国产片内射在线| 亚洲精品国产av蜜桃| 亚洲欧美精品自产自拍| 91精品国产国语对白视频| 美女中出高潮动态图| 亚洲成国产人片在线观看| 国产亚洲av片在线观看秒播厂| 在线观看免费日韩欧美大片| 国产亚洲一区二区精品| 男女边摸边吃奶| 欧美人与性动交α欧美软件| 女人久久www免费人成看片| 日日摸夜夜添夜夜爱| 考比视频在线观看| av天堂久久9| 免费少妇av软件| 亚洲国产欧美在线一区| 女人高潮潮喷娇喘18禁视频| 成年女人毛片免费观看观看9 | 精品人妻熟女毛片av久久网站| 777米奇影视久久| 午夜免费成人在线视频| 两性夫妻黄色片| 欧美日韩黄片免| 欧美精品一区二区大全| 秋霞在线观看毛片| 男的添女的下面高潮视频| 欧美日韩精品网址| 欧美激情高清一区二区三区| 欧美 亚洲 国产 日韩一| 国产熟女欧美一区二区| 好男人视频免费观看在线| 日韩熟女老妇一区二区性免费视频| 制服人妻中文乱码| 久久精品国产亚洲av涩爱| 国产视频首页在线观看| 亚洲久久久国产精品| 精品一区二区三区av网在线观看 | 大片免费播放器 马上看| 亚洲成色77777| 久久精品国产综合久久久| 国产亚洲av片在线观看秒播厂| 又大又黄又爽视频免费| av线在线观看网站| 女警被强在线播放| 老汉色∧v一级毛片| 午夜av观看不卡| 九色亚洲精品在线播放| 又大又爽又粗| 免费看av在线观看网站| 亚洲美女黄色视频免费看| 久久久久久免费高清国产稀缺| 久久久亚洲精品成人影院| 国产黄色视频一区二区在线观看| 欧美在线一区亚洲| 亚洲专区国产一区二区| 母亲3免费完整高清在线观看| 久久国产精品影院| 大型av网站在线播放| 国产精品一区二区精品视频观看| 国产成人精品久久久久久| 色婷婷久久久亚洲欧美| 51午夜福利影视在线观看| 在线 av 中文字幕| 亚洲av日韩在线播放| 国产精品99久久99久久久不卡| 男女边摸边吃奶| 亚洲欧美中文字幕日韩二区| 亚洲精品久久久久久婷婷小说| 亚洲av片天天在线观看| 亚洲,欧美,日韩| 免费av中文字幕在线| 日本欧美视频一区| 色综合欧美亚洲国产小说| 国产主播在线观看一区二区 | 天天躁夜夜躁狠狠躁躁| 人人妻人人澡人人看| 激情视频va一区二区三区| 亚洲一卡2卡3卡4卡5卡精品中文| 欧美+亚洲+日韩+国产| 一区在线观看完整版| 好男人电影高清在线观看| 日本av免费视频播放| 亚洲av日韩精品久久久久久密 | 在线观看免费视频网站a站| 99久久精品国产亚洲精品| 人人妻,人人澡人人爽秒播 | 久久久久国产精品人妻一区二区| 亚洲国产精品一区二区三区在线| 欧美成人午夜精品| 欧美亚洲 丝袜 人妻 在线| 久久国产精品影院| 亚洲精品日韩在线中文字幕| 国产免费视频播放在线视频| h视频一区二区三区| av又黄又爽大尺度在线免费看| 亚洲熟女毛片儿| 最新的欧美精品一区二区| 秋霞在线观看毛片| 最黄视频免费看| 婷婷色av中文字幕| av片东京热男人的天堂| 亚洲精品日韩在线中文字幕| 欧美 亚洲 国产 日韩一| www.av在线官网国产| 丝袜美足系列| 最近最新中文字幕大全免费视频 | 久久久亚洲精品成人影院| 在线 av 中文字幕| 久久天躁狠狠躁夜夜2o2o | 制服诱惑二区| 另类精品久久| 女警被强在线播放| 狠狠精品人妻久久久久久综合| 国产精品秋霞免费鲁丝片| 男人舔女人的私密视频| 日韩中文字幕视频在线看片| 免费少妇av软件| av天堂久久9| 18禁国产床啪视频网站| 黄色毛片三级朝国网站| 51午夜福利影视在线观看| 国产精品久久久久成人av| 日韩一本色道免费dvd| 亚洲精品中文字幕在线视频| 免费观看a级毛片全部| 亚洲av成人不卡在线观看播放网 | 国产精品免费大片| 精品少妇黑人巨大在线播放| 久久综合国产亚洲精品| 色网站视频免费| 曰老女人黄片| 久久天躁狠狠躁夜夜2o2o | 久久这里只有精品19| 国产在线观看jvid| 国产一区二区在线观看av| av天堂在线播放| 日本猛色少妇xxxxx猛交久久| 男女无遮挡免费网站观看| 日本猛色少妇xxxxx猛交久久| 人妻 亚洲 视频| 国产男女内射视频| 91麻豆精品激情在线观看国产 | 亚洲欧美日韩高清在线视频 | 十八禁高潮呻吟视频| 免费久久久久久久精品成人欧美视频| 一区二区日韩欧美中文字幕| 亚洲精品av麻豆狂野| 国产精品二区激情视频| 一本大道久久a久久精品| 丝袜人妻中文字幕| 国产无遮挡羞羞视频在线观看| 99热网站在线观看| 美女中出高潮动态图| 国产高清videossex| 日韩熟女老妇一区二区性免费视频| 丝袜美足系列| 国产精品 国内视频| 一本大道久久a久久精品| 日韩人妻精品一区2区三区| 国产成人欧美| 18禁裸乳无遮挡动漫免费视频| 91麻豆精品激情在线观看国产 | 欧美大码av| 90打野战视频偷拍视频| av电影中文网址| 色精品久久人妻99蜜桃| 黑人巨大精品欧美一区二区蜜桃| 亚洲国产av新网站| 热99久久久久精品小说推荐| 激情五月婷婷亚洲| 亚洲人成77777在线视频| 欧美日韩av久久| 最新的欧美精品一区二区| 乱人伦中国视频| 日韩大片免费观看网站| 两个人免费观看高清视频| 国产1区2区3区精品| 精品国产一区二区三区久久久樱花| 少妇 在线观看| 两性夫妻黄色片| 一个人免费看片子| av网站在线播放免费| 国产一区二区三区综合在线观看| 制服人妻中文乱码| 国产欧美亚洲国产| 国产精品久久久久久精品电影小说| 亚洲av欧美aⅴ国产| 999久久久国产精品视频| 日本猛色少妇xxxxx猛交久久| 91麻豆精品激情在线观看国产 | 欧美精品啪啪一区二区三区 | 欧美激情高清一区二区三区| 日韩中文字幕欧美一区二区 | 国产深夜福利视频在线观看| 99热网站在线观看| 亚洲国产精品999| 黄色毛片三级朝国网站| 日韩人妻精品一区2区三区| 国产精品久久久久久精品电影小说| 婷婷色综合大香蕉| 欧美黑人精品巨大| 人人妻人人添人人爽欧美一区卜| 中文字幕人妻丝袜制服| 国产成人欧美| 99久久精品国产亚洲精品| 亚洲第一青青草原| 老司机深夜福利视频在线观看 | 国产黄频视频在线观看| 精品亚洲成a人片在线观看| 搡老乐熟女国产| 精品少妇黑人巨大在线播放| 2021少妇久久久久久久久久久| 精品福利永久在线观看| 国产深夜福利视频在线观看| 国产片内射在线| 国产欧美亚洲国产| 一级a爱视频在线免费观看| 日本一区二区免费在线视频| 天天影视国产精品| 久久青草综合色| 国产av精品麻豆| 亚洲熟女毛片儿| 首页视频小说图片口味搜索 | 精品一区二区三区av网在线观看 | 久久人人爽人人片av| 制服诱惑二区| 成年动漫av网址| 国产精品一区二区免费欧美 | 麻豆国产av国片精品| 精品国产一区二区三区四区第35| 男女高潮啪啪啪动态图| 黑丝袜美女国产一区| 一区二区三区激情视频| 观看av在线不卡| 成人午夜精彩视频在线观看| 9色porny在线观看| 天堂中文最新版在线下载| 亚洲国产成人一精品久久久| 亚洲成国产人片在线观看| 在线天堂中文资源库| 一级a爱视频在线免费观看| 麻豆国产av国片精品| av在线老鸭窝| 欧美精品av麻豆av| 精品人妻熟女毛片av久久网站| 曰老女人黄片| 少妇人妻久久综合中文| 久热这里只有精品99| 精品卡一卡二卡四卡免费| 亚洲美女黄色视频免费看| 亚洲少妇的诱惑av| 亚洲精品久久午夜乱码| 久久久久久久久久久久大奶| 欧美成人精品欧美一级黄| 欧美中文综合在线视频| 丝袜美腿诱惑在线| 日韩 亚洲 欧美在线| 成人国语在线视频| 大香蕉久久网| av不卡在线播放| 午夜老司机福利片| 免费黄频网站在线观看国产| 高清不卡的av网站| 香蕉丝袜av|