胡 柳,鄧 杰,趙正偉,李 瑞
(1. 湖南信息職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)工程學(xué)院,湖南 長(zhǎng)沙 410200; 2.廣西民族大學(xué) 信息科學(xué)與工程學(xué)院,廣西 南寧 530006;3. 河北省眼科醫(yī)院 信息科,河北 邢臺(tái) 054000)
隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,軟件復(fù)雜程度不斷提高,軟件規(guī)模由單一的本地軟件逐漸演化成為網(wǎng)絡(luò)化軟件,軟件缺陷影響著人們生活的方方面面。良好的軟件缺陷控制和預(yù)測(cè)機(jī)制可以幫助企業(yè)開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品,防止軟件因系統(tǒng)缺陷而導(dǎo)致的嚴(yán)重后果,降低軟件維護(hù)成本,并提高客戶(hù)滿意度。因此,軟件開(kāi)發(fā)過(guò)程和軟件質(zhì)量越來(lái)越受到重視,如何預(yù)測(cè)網(wǎng)絡(luò)化軟件系統(tǒng)缺陷成為當(dāng)前研究的熱點(diǎn)領(lǐng)域。
目前,國(guó)內(nèi)外軟件缺陷研究領(lǐng)域相關(guān)學(xué)者進(jìn)行了深入的研究并取得了一系列的成果。主流的方法有基于統(tǒng)計(jì)分析學(xué)方法、基于神經(jīng)網(wǎng)絡(luò)的軟件缺陷預(yù)測(cè)模型等。傅藝綺等人[1]提出了一種基于組合機(jī)器學(xué)習(xí)算法的軟件缺陷預(yù)測(cè)模型,利用機(jī)器學(xué)習(xí)算法在不同評(píng)價(jià)指標(biāo)上的不同優(yōu)勢(shì),結(jié)合stacking集成學(xué)習(xí)方法提出將不同預(yù)測(cè)算法的預(yù)測(cè)結(jié)果作為軟件度量并進(jìn)行再次預(yù)測(cè)。熊婧等人[2]將Adaboost算法原理通過(guò)訓(xùn)練多個(gè)弱分類(lèi)器構(gòu)成一個(gè)更強(qiáng)的級(jí)聯(lián)分類(lèi)器,通過(guò)采用美國(guó)國(guó)家航空航天局(NASA)的軟件缺陷數(shù)據(jù)庫(kù)進(jìn)行仿真實(shí)驗(yàn),有效地提高了軟件缺陷預(yù)測(cè)模型的預(yù)測(cè)性能。程銘等人[3]提出一種加權(quán)貝葉斯遷移學(xué)習(xí)算法,通過(guò)收集訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)的特征信息并計(jì)算特征差異,將不同項(xiàng)目數(shù)據(jù)之間差異轉(zhuǎn)化為訓(xùn)練數(shù)據(jù)權(quán)重,并建立預(yù)測(cè)模型,在8個(gè)開(kāi)源項(xiàng)目數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)。張德平等人[4]借鑒Granger檢驗(yàn)思想,利用GMDH網(wǎng)絡(luò)選擇與軟件失效具有因果關(guān)系的度量指標(biāo),建立軟件缺陷預(yù)測(cè)模型,并通過(guò)兩組真實(shí)軟件失效數(shù)據(jù)集,將所提出的方法與其他方法進(jìn)行比較分析。馬振宇等人[5]在BP算法建立模型的基礎(chǔ)上,使用SC-PSO算法優(yōu)化BP的參數(shù)值,通過(guò)十折交叉的方法對(duì)結(jié)果展開(kāi)分析,結(jié)果表明該方法對(duì)軟件缺陷預(yù)測(cè)有更大的幫助。
在軟件缺陷預(yù)測(cè)研究中,針對(duì)軟件缺陷數(shù)據(jù)具有代價(jià)敏感性且軟件度量取值為連續(xù)值的特點(diǎn),李偉湋等人[6]提出基于領(lǐng)域三支決策粗糙集模型的軟件缺陷預(yù)測(cè)方法。針對(duì)軟件代碼背后隱藏的不同技術(shù)方面和主題問(wèn)題導(dǎo)致的軟件缺陷,張澤濤等人[7]提出一種基于主題模型的軟件缺陷預(yù)測(cè)技術(shù)。針對(duì)軟件可靠性預(yù)測(cè)模型在現(xiàn)實(shí)環(huán)境中的應(yīng)用問(wèn)題,李東林等人[8]對(duì)軟件可靠性數(shù)據(jù)預(yù)處理進(jìn)行了研究,蔣永輝等人[9]提出了軟件過(guò)程的軟件可靠性預(yù)測(cè)運(yùn)作模型。
針對(duì)網(wǎng)絡(luò)化軟件缺陷預(yù)測(cè)中缺陷之間的顯性關(guān)聯(lián)關(guān)系和隱性關(guān)聯(lián)關(guān)系,本文提出一種基于關(guān)聯(lián)規(guī)則的網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)方法。關(guān)聯(lián)規(guī)則算法廣泛應(yīng)用于商業(yè)、網(wǎng)絡(luò)安全及移動(dòng)通信領(lǐng)域,通過(guò)對(duì)數(shù)據(jù)的關(guān)聯(lián)性進(jìn)行分析和挖掘,開(kāi)展決策過(guò)程。本文將結(jié)合NASA的軟件缺陷數(shù)據(jù)庫(kù)進(jìn)行仿真實(shí)驗(yàn)。
網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)中,由于數(shù)據(jù)分布、數(shù)據(jù)特征和軟件質(zhì)量等問(wèn)題導(dǎo)致預(yù)測(cè)算法或模型難以在現(xiàn)實(shí)軟件中進(jìn)行有效的預(yù)測(cè),而網(wǎng)絡(luò)軟件測(cè)試過(guò)程的數(shù)據(jù)包括有效數(shù)據(jù)樣本和失效數(shù)據(jù)樣本,在網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)中如何有效利用失效數(shù)據(jù)進(jìn)行預(yù)測(cè)才是重點(diǎn)。
目前,軟件缺陷預(yù)測(cè)用到的主要方法和技術(shù)有神經(jīng)網(wǎng)絡(luò)算法、貝葉斯網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)法、支持向量機(jī)、主題模型及遷移學(xué)習(xí)等。研究者利用這些方法進(jìn)行了軟件缺陷預(yù)測(cè)模型的設(shè)計(jì),并取得了較好的效果。但這些傳統(tǒng)的算法模型并未全面考慮影響軟件質(zhì)量和可靠性的各項(xiàng)不確定性因素,未能很好地描述軟件內(nèi)部的缺陷。為了尋求最佳的預(yù)測(cè)效果,在有效數(shù)據(jù)和失效數(shù)據(jù)的獲取過(guò)程中應(yīng)從軟件靜態(tài)和動(dòng)態(tài)兩方面同時(shí)獲取,使得其樣本數(shù)據(jù)總量能最大限度地支持精細(xì)化預(yù)測(cè),降低預(yù)測(cè)偏差。因此,本文在基于關(guān)聯(lián)規(guī)則的基礎(chǔ)上,采用關(guān)聯(lián)規(guī)則算法對(duì)網(wǎng)絡(luò)化軟件缺陷預(yù)測(cè)方法進(jìn)行分析與建模,以尋求獲取較好的缺陷預(yù)測(cè)結(jié)果。
網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)模型的架構(gòu)分為缺陷數(shù)據(jù)采集、缺陷數(shù)據(jù)預(yù)處理、引入預(yù)測(cè)算法、預(yù)測(cè)模型構(gòu)建或訓(xùn)練、預(yù)測(cè)模型測(cè)試與驗(yàn)證五個(gè)部分,其模型框架如圖1所示。
圖1 網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)架構(gòu)
通過(guò)對(duì)目標(biāo)軟件的源代碼或缺陷軟件數(shù)據(jù)庫(kù)中的樣本進(jìn)行采集,采用歸一化、消零、權(quán)重處理、去重等數(shù)據(jù)預(yù)處理操作,引入關(guān)聯(lián)規(guī)則算法對(duì)樣本數(shù)據(jù)進(jìn)行有效性計(jì)算,并生成預(yù)測(cè)模型,在算法中不斷嘗試參數(shù)值以獲取最優(yōu)的結(jié)果,最后對(duì)軟件模塊進(jìn)行缺陷預(yù)測(cè)。
關(guān)聯(lián)分類(lèi)法(CBA)結(jié)合了分類(lèi)規(guī)則和關(guān)聯(lián)規(guī)則的挖掘,支持將非監(jiān)督學(xué)習(xí)方法用于監(jiān)督分類(lèi),其任務(wù)是挖掘出用于區(qū)分實(shí)例類(lèi)的關(guān)聯(lián)規(guī)則,即分類(lèi)的關(guān)聯(lián)規(guī)則(CARs)。CARs能夠反映出數(shù)據(jù)的描述性關(guān)聯(lián)特性和可用于分類(lèi)的特征。如關(guān)聯(lián)規(guī)則X=>Y,其中X為前置事件,表示數(shù)據(jù)描述性關(guān)聯(lián)規(guī)則,Y為后置事件,表示分類(lèi)特征。如“respect>0.5127 or avg>0.2563=>result=1”中,前置事件為“respect>0.5127 or avg>0.2563”,后置事件為“result=1”。
CBA的基本過(guò)程為:
(1)數(shù)據(jù)的離散化處理。
(2)獲取關(guān)聯(lián)分類(lèi)規(guī)則CARs。
(3)采用分類(lèi)器構(gòu)建算法構(gòu)造分類(lèi)器。
(4)利用構(gòu)造的分類(lèi)器開(kāi)展實(shí)驗(yàn)研究。
關(guān)聯(lián)規(guī)則的生成算法可融入Apriori算法或FP-Tree算法,生成一系列由置信度c和支持度s的規(guī)則集合,前置的相關(guān)定理如下:
定理1 設(shè)X,Y是數(shù)據(jù)集中的項(xiàng)目集,如果X∈Y,則s(X)≥s(Y),且Y為大項(xiàng)目集時(shí),X也為大項(xiàng)目集。其中s表示支持度。
定理2 強(qiáng)規(guī)則X=>Y對(duì)應(yīng)的項(xiàng)目集(X∪Y)也一定是大項(xiàng)目集。
定理3 若R為大項(xiàng)目集,ē和e為其子集,ē∈e∈Y,則c(ē=>(L—ē))≤c(e=>(L—e))。其中c表示置信度。
關(guān)聯(lián)規(guī)則的生成算法如下:
While所有k個(gè)項(xiàng)目的大項(xiàng)目集Lk(k≥2)
Hi={lastrs(Lk)}
Call fn{Lk,Hi}
I++
Wend
Procedure fn(Lk:k個(gè)項(xiàng)目的大項(xiàng)目集,Hm:m個(gè)項(xiàng)目的結(jié)論集)
Whilehm+1∈Hm+1
C=s(lk)/s(lk-hm+1)
Ifc≥mincthen
Print rule(lk-hm+1)=>hm+1,置信度=c,支持度=s(lk)
Else
Delhm+1
End if
Wend
通過(guò)遍歷大項(xiàng)目集中的數(shù)據(jù)記錄,對(duì)每一個(gè)記錄進(jìn)行關(guān)聯(lián)規(guī)則的計(jì)算,最終形成結(jié)論集rule,以用于后期的分類(lèi)關(guān)聯(lián)規(guī)則生成。
對(duì)于2.2節(jié)所得到的結(jié)論集,需要選擇最小誤差規(guī)則來(lái)構(gòu)建分類(lèi)器,如果某兩條記錄值的置信度c和支持度s符合下述條件:{c(a)>c(b)}或c(a)=c(b) ands(a)>s(b)或c(a)=c(b) ands(a)=s(b) andt(a)>t(b)},其中t(a)為記錄產(chǎn)生的時(shí)間,則稱(chēng)a的優(yōu)先級(jí)大于b。分類(lèi)器的構(gòu)建采用優(yōu)先級(jí)較高的覆蓋原有的數(shù)據(jù)集。
分類(lèi)器構(gòu)建算法步驟:
(1)將規(guī)則集中的規(guī)則按優(yōu)先級(jí)排序,sort(Lk)。
(2)選擇滿足條件的規(guī)則集構(gòu)建分類(lèi)器,crea(Li∈Lk),其中Li滿足優(yōu)先級(jí)較高的條件。
(3)移除噪聲記錄clear(Li),參數(shù)Li指對(duì)提高分類(lèi)精度無(wú)作用的記錄。
為了驗(yàn)證基于關(guān)聯(lián)規(guī)則及其算法在網(wǎng)絡(luò)化軟件缺陷預(yù)測(cè)中的應(yīng)用有效性,缺陷數(shù)據(jù)集選用NASA的軟件質(zhì)量度量數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)的數(shù)據(jù)集通過(guò)采集實(shí)際軟件項(xiàng)目中的代碼和運(yùn)行質(zhì)量過(guò)程而得到,每一條樣本記錄對(duì)應(yīng)于軟件功能模塊的內(nèi)部指標(biāo)屬性值。目前,多數(shù)軟件缺陷預(yù)測(cè)模型使用該數(shù)據(jù)庫(kù),且對(duì)記錄集進(jìn)行了人工層面的篩選,以獲取最優(yōu)的預(yù)測(cè)效果。
實(shí)驗(yàn)環(huán)境為雙核2.8 GHz CPU,內(nèi)存4 GB,操作系統(tǒng)為Windows 7,平臺(tái)軟件為Eclipse 3.4、MATLAB 7.0。
通過(guò)對(duì)NASA的軟件質(zhì)量度量數(shù)據(jù)庫(kù)記錄進(jìn)行有效性選擇后,樣本數(shù)據(jù)如表1所示。
表1 樣本數(shù)據(jù)集
對(duì)于分類(lèi)模型,本文采用傳統(tǒng)的分類(lèi)器性能評(píng)價(jià)指標(biāo):精確度、召回率和平均F值。指標(biāo)設(shè)計(jì)為基于二分類(lèi)數(shù)據(jù)集的混合矩陣,如表2所示。
表2 指標(biāo)混合矩陣
精確度表示預(yù)測(cè)正確的樣本量與總樣本的百分比,召回率表示預(yù)測(cè)正樣本量與實(shí)際正樣本量的百分比。
精確度:p=TP/(TP+FP)×100%
(1)
召回率:r=TP/(TP+FN)×100%
(2)
平均F值:F=(2×p×r)/(p+r)
(3)
本文采用隨機(jī)選擇方法采集NASA軟件缺陷質(zhì)量數(shù)據(jù)庫(kù)中樣本記錄,共選取14 258個(gè)樣本數(shù)據(jù)進(jìn)行關(guān)聯(lián)規(guī)則生成及分類(lèi)規(guī)則生成、11 987個(gè)樣本數(shù)據(jù)進(jìn)行實(shí)驗(yàn)分類(lèi),以驗(yàn)證本文在網(wǎng)絡(luò)化軟件缺陷預(yù)測(cè)中的有效性,并與現(xiàn)有的BP神經(jīng)網(wǎng)絡(luò)法進(jìn)行對(duì)比。關(guān)聯(lián)規(guī)則算法直接利用Apriori算法進(jìn)行數(shù)據(jù)挖掘及分類(lèi),依據(jù)支持度得出所有頻繁項(xiàng)集,然后根據(jù)置信度產(chǎn)生關(guān)聯(lián)規(guī)則,選擇最小誤差規(guī)則構(gòu)建關(guān)聯(lián)規(guī)則分類(lèi)器,并對(duì)11 987個(gè)樣本數(shù)據(jù)進(jìn)行實(shí)驗(yàn)分類(lèi)。
實(shí)驗(yàn)步驟如下:
(1)為了獲取樣本記錄數(shù)據(jù),采用隨機(jī)方法對(duì)樣本庫(kù)中的記錄進(jìn)行提取。
(3)利用Apriori算法獲取關(guān)聯(lián)分類(lèi)規(guī)則CARs。
(4)采用分類(lèi)器構(gòu)建算法構(gòu)造分類(lèi)器。
(5)實(shí)驗(yàn)分類(lèi)。
為了獲取構(gòu)造分類(lèi)器和實(shí)際分類(lèi)時(shí)所消耗的時(shí)間,在程序設(shè)計(jì)中引入毫秒級(jí)時(shí)間記錄量,采用關(guān)聯(lián)規(guī)則方法對(duì)軟件質(zhì)量缺陷進(jìn)行分類(lèi)的結(jié)果如表3所示。
表3 基于關(guān)聯(lián)規(guī)則的網(wǎng)絡(luò)軟件缺陷分析結(jié)果
從缺陷結(jié)果分析中可以發(fā)現(xiàn),基于關(guān)聯(lián)規(guī)則的網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)方法在精確度和召回率上比傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)法略高,值得注意的是對(duì)于JM1、KC1、PC1等缺陷模塊在精確度上比傳統(tǒng)方法低,對(duì)于不同的樣本選擇和分類(lèi)算法,在建立過(guò)程和統(tǒng)計(jì)上都存在一定的差異。
本文提出了一種基于關(guān)聯(lián)規(guī)則的網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)方法,同時(shí)結(jié)合傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)方法對(duì)NASA軟件缺陷數(shù)據(jù)庫(kù)樣本進(jìn)行預(yù)測(cè)。從實(shí)驗(yàn)結(jié)果分析可以看出,在通用的缺陷預(yù)測(cè)條件下,關(guān)聯(lián)規(guī)則法能有效提升預(yù)測(cè)的精確度,同時(shí)在召回率上也有一定的優(yōu)勢(shì)。本文創(chuàng)新地將關(guān)聯(lián)規(guī)則方法應(yīng)用于網(wǎng)絡(luò)化軟件缺陷預(yù)測(cè)中。由于樣本數(shù)據(jù)選取的多樣性,對(duì)軟件缺陷的預(yù)測(cè)還需要有更多的分析模型進(jìn)行全面的評(píng)估,以提高軟件的質(zhì)量。
參考文獻(xiàn)
[1] 傅藝綺,董威,尹良澤,等.基于組合機(jī)器學(xué)習(xí)算法的軟件缺陷預(yù)測(cè)模型[J].計(jì)算機(jī)研究與發(fā)展,2017,53(3):633-641.
[2] 熊婧,高巖,王雅瑜. 基于adaboost算法的軟件缺陷預(yù)測(cè)模型[J].計(jì)算機(jī)科學(xué),2016,43(7):186-190.
[3] 程銘,母國(guó)慶,袁夢(mèng)霆. 基于遷移學(xué)習(xí)的軟件缺陷預(yù)測(cè)[J].電子學(xué)報(bào),2016,44(1):115-122.
[4] 張德平,劉國(guó)強(qiáng),張柯. 基于GMDH因果關(guān)系的軟件缺陷預(yù)測(cè)模型[J].計(jì)算機(jī)科學(xué),2016,43(7):171-176.
[5] 馬振宇,張威,畢學(xué)軍,等. 基于優(yōu)化PSO-BP算法的軟件缺陷預(yù)測(cè)模型[J].計(jì)算機(jī)工程與設(shè)計(jì),2016,37(2):413-417.
[6] 李偉湋,郭鴻昌.基于鄰域三支決策粗糙集模型的軟件缺陷預(yù)測(cè)方法[J].數(shù)據(jù)采集與處理,2017,32(1):166-174.
[7] 張澤濤,葉立軍,程偉,等.一種基于主題模型的軟件缺陷預(yù)測(cè)技術(shù)研究[J]計(jì)算機(jī)工程與科學(xué),2016,38(5):932-937.
[8] 李東林,徐燕凌,蔣心怡.軟件可靠性數(shù)據(jù)預(yù)處理研究[J].電子技術(shù)應(yīng)用,2010,36(8):153-156.
[9] 蔣永輝,吳洪麗,王政霞.基于軟件過(guò)程的軟件可靠性預(yù)測(cè)運(yùn)作模型[J].微型機(jī)與應(yīng)用,2010,29(6):3-6.