李鵬宇, 江云松, 高 猛, 滕俊元
北京軒宇信息技術(shù)有限公司, 北京 100090
隨著航天軟件的數(shù)量、復(fù)雜性和規(guī)模急劇增加,軟件系統(tǒng)變得日趨龐大和難以駕馭,軟件的體系結(jié)構(gòu)也從過(guò)去的單任務(wù)順序運(yùn)行逐漸演變?yōu)槎嗳蝿?wù)并發(fā)運(yùn)行,軟件的開發(fā)和集成變得越來(lái)越復(fù)雜,航天任務(wù)對(duì)軟件的功能要求越來(lái)越強(qiáng)大,可信性要求越來(lái)越高.航天軟件缺陷的主要特點(diǎn)是強(qiáng)實(shí)時(shí)中斷問(wèn)題多、故障處理策略和狀態(tài)轉(zhuǎn)換時(shí)序約束強(qiáng)、太空輻射可能改變軟件運(yùn)行狀態(tài)等.軟件測(cè)試作為保證軟件產(chǎn)品質(zhì)量,提升軟件可信性的重要措施,目前在第三方確認(rèn)測(cè)試中,主要通過(guò)代碼審查和動(dòng)態(tài)測(cè)試發(fā)現(xiàn)軟件函數(shù)模塊中的缺陷,然而這種靜態(tài)和動(dòng)態(tài)的測(cè)試方法對(duì)人的能力、經(jīng)驗(yàn)依賴較大,需要投入大量代碼審查時(shí)間和動(dòng)態(tài)測(cè)試覆蓋率分析,很難滿足航天軟件研制和測(cè)評(píng)進(jìn)度緊、質(zhì)量高的要求.
近年來(lái),軟件缺陷預(yù)測(cè)[1-3]成為智能軟件工程領(lǐng)域研究的熱點(diǎn),軟件缺陷預(yù)測(cè)主要是根據(jù)歷史數(shù)據(jù)來(lái)預(yù)測(cè)軟件中潛在的缺陷,國(guó)內(nèi)外學(xué)者針對(duì)軟件缺陷預(yù)測(cè)模型和方法進(jìn)行了大量的學(xué)術(shù)研究,取得了很好的成效.WAHONOZAI[4]從研究趨勢(shì)、數(shù)據(jù)集、方法和框架3個(gè)維度,闡述了2000~2013年的軟件缺陷預(yù)測(cè)研究成果.HASSAN等[5]總結(jié)了2009~2018年的軟件缺陷預(yù)測(cè)研究成果,包括6個(gè)類別(Bayesian算法、Decision Tree算法、Clustering算法、Artificial Neural Networks算法、Deep Learning算法、Ensemble Learning算法)30種軟件缺陷預(yù)測(cè)模型.CHRIS等[6]提出AutoWEKA分類算法的組合選擇和超參數(shù)優(yōu)化,通過(guò)3種集合方法,14種元方法,30個(gè)基本分類器,以及各種超參數(shù)設(shè)置,實(shí)現(xiàn)了構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)、調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)、調(diào)整超參數(shù)、模型評(píng)估等過(guò)程全部自動(dòng)化完成.
通過(guò)軟件缺陷預(yù)測(cè)能夠在測(cè)試策劃階段提供函數(shù)模塊缺陷傾向性排序的評(píng)判依據(jù),有助于代碼審查合理分配資源,提高測(cè)試工作效率,提升軟件測(cè)試質(zhì)量.但是軟件缺陷預(yù)測(cè)技術(shù)在軟件工程實(shí)踐領(lǐng)域卻沒(méi)有得到很好的應(yīng)用,究其原因:軟件缺陷預(yù)測(cè)效果除了與缺陷數(shù)據(jù)集分布規(guī)律有關(guān)外,還主要受限于軟件缺陷預(yù)測(cè)模型,不穩(wěn)定和召回率低效的軟件缺陷預(yù)測(cè)模型難以在行業(yè)領(lǐng)域應(yīng)用.如何有效提高軟件缺陷預(yù)測(cè)模型各項(xiàng)性能評(píng)價(jià)指標(biāo),已成為軟件缺陷預(yù)測(cè)在航天行業(yè)應(yīng)用亟待解決的問(wèn)題.
在人工智能和大數(shù)據(jù)的背景下,知識(shí)圖譜[7]、自動(dòng)化的機(jī)器學(xué)習(xí)[8]和深度學(xué)習(xí)技術(shù)日益受到學(xué)術(shù)界和工業(yè)界的重視.人工智能的核心是算法的設(shè)計(jì),自動(dòng)化的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)降低了人工智能應(yīng)用的門檻,有助于完成人工智能項(xiàng)目的開發(fā)和部署.憑借這種低門檻、自動(dòng)化的特性,自動(dòng)化機(jī)器學(xué)習(xí)有望在未來(lái)幾年中徹底顛覆傳統(tǒng)的測(cè)試方式,讓人工智能真正普及起來(lái).
本文提出了基于知識(shí)圖譜輔助自動(dòng)化機(jī)器學(xué)習(xí)的軟件缺陷預(yù)測(cè)模型方法,首先在第1、2節(jié)闡述構(gòu)建軟件缺陷預(yù)測(cè)模型領(lǐng)域的知識(shí)圖譜,描述軟件缺陷預(yù)測(cè)模型方法AutoKGGAS和工作原理.其次在第3節(jié)通過(guò)實(shí)證研究,驗(yàn)證AutoKGGAS軟件缺陷預(yù)測(cè)模型與傳統(tǒng)經(jīng)典缺陷預(yù)測(cè)模型的性能對(duì)比測(cè)試、以及AutoKGGAS和AutoWeka性能對(duì)比測(cè)試.最后第4節(jié)給出結(jié)論.
構(gòu)建領(lǐng)域知識(shí)圖譜包括:知識(shí)獲取、知識(shí)抽取、知識(shí)融合、知識(shí)存儲(chǔ)、知識(shí)計(jì)算和推理.軟件缺陷預(yù)測(cè)模型領(lǐng)域知識(shí)圖譜構(gòu)建流程如圖1所示.
構(gòu)建軟件缺陷預(yù)測(cè)領(lǐng)域知識(shí)圖譜的數(shù)據(jù)模式,對(duì)整個(gè)知識(shí)圖譜的結(jié)構(gòu)進(jìn)行定義,采用自頂向下的方法和自底向上的方法相結(jié)合構(gòu)建軟件缺陷預(yù)測(cè)模型領(lǐng)域知識(shí)圖譜.軟件缺陷預(yù)測(cè)模型分類包括貝葉斯分類器、神經(jīng)網(wǎng)絡(luò)分類器、功能分類器、元分類器、惰性分類器、規(guī)則分類器、時(shí)間序列分類器、樹結(jié)構(gòu)分類器、其他分類器等,每種軟件缺陷預(yù)測(cè)模型提供標(biāo)準(zhǔn)化輸入?yún)?shù),訓(xùn)練和測(cè)試各種分布規(guī)律的數(shù)據(jù)集,多維度評(píng)價(jià)指標(biāo)構(gòu)建軟件缺陷預(yù)測(cè)模型知識(shí)圖譜.
圖1 知識(shí)圖譜構(gòu)建流程Fig.1 Knowledge graph construction process
知識(shí)獲取的數(shù)據(jù)包括:軟件缺陷預(yù)測(cè)模型性能測(cè)試的結(jié)構(gòu)化數(shù)據(jù),軟件缺陷預(yù)測(cè)模型擴(kuò)展列表半結(jié)構(gòu)化數(shù)據(jù),以及軟件工程期刊、論文中各種軟件缺陷預(yù)測(cè)模型純文本非結(jié)構(gòu)化數(shù)據(jù).其中,通過(guò)編寫自動(dòng)化腳本,獲取軟件缺陷預(yù)測(cè)模型性能測(cè)試的結(jié)構(gòu)化數(shù)據(jù)的流程如圖2所示.
圖2 結(jié)構(gòu)化數(shù)據(jù)知識(shí)獲取的流程Fig.2 Structured data knowledge acquisition process
知識(shí)圖譜中的知識(shí)融合包括模式層的融合與數(shù)據(jù)層的融合.知識(shí)抽取為RDF(resource description framework)[9]三元組的形式,RDF的數(shù)據(jù)結(jié)構(gòu)主要包括兩種形式:節(jié)點(diǎn)和邊.其中節(jié)點(diǎn)代表實(shí)體、屬性,邊代表實(shí)體間或?qū)嶓w與屬性間的關(guān)系.將上述構(gòu)造的RDF數(shù)據(jù)導(dǎo)入圖數(shù)據(jù)庫(kù)(graph database)存儲(chǔ).圖數(shù)據(jù)庫(kù)支持的圖結(jié)構(gòu)、實(shí)體和關(guān)系表示、查詢機(jī)制.知識(shí)圖譜的計(jì)算包括圖挖掘計(jì)算和基于規(guī)則的推理.從Percision、Recall、PRC(precision recall characteristic)、ROC(receiver operating characteristic)、F-Measure、MCC(matthews correlation coefficient)6個(gè)評(píng)價(jià)指標(biāo)維度聚類,知識(shí)圖譜推薦每個(gè)評(píng)價(jià)指標(biāo)前20名軟件缺陷預(yù)測(cè)模型數(shù)據(jù),作為AutoKGGAS自動(dòng)化搜索的熱啟動(dòng)條件.
對(duì)于Stacking堆疊結(jié)構(gòu)的集成學(xué)習(xí),集成選擇配置包括基層分類器和元層分類器的選擇配置.Stacking堆疊結(jié)構(gòu)面臨的難點(diǎn)如下:
(1)泛化精度高的 Stacking 配置往往是領(lǐng)域相關(guān)的,即對(duì)于不同類不平衡或類重疊的數(shù)據(jù)集,最佳的 Stacking 配置是不同的,因此同一個(gè)配置運(yùn)用在不同數(shù)據(jù)集上,得到的 Stacking 分類器的準(zhǔn)確率就可能不同.
(2)Stacking 配置的泛化能力是由基分類器和元分類器的組合決定的,這些采用固定配置的方法都偏重于元分類器的選擇,而忽略了基分類器如何選擇的問(wèn)題.
DEAP(distributed evolutionary algorithms in python)[10]是一個(gè)新穎的遺傳算法進(jìn)化計(jì)算框架,用于快速原型設(shè)計(jì)和測(cè)試.旨在使算法清楚和數(shù)據(jù)結(jié)構(gòu)透明,可以在并行機(jī)制之間完美協(xié)調(diào).
AutoKGGAS軟件缺陷預(yù)測(cè)模型方法的基本思想如圖3和圖4.
(1)獲取114個(gè)軟件缺陷預(yù)測(cè)模型(軟件缺陷預(yù)測(cè)模型來(lái)源于Weka 3.9.3)性能測(cè)試.
(2)借助于知識(shí)圖譜推薦的各評(píng)價(jià)指標(biāo)排名,作為軟件缺陷預(yù)測(cè)模型自動(dòng)化搜索的熱啟動(dòng)輸入條件.
(3)使用DEAP遺傳算法框架構(gòu)建自動(dòng)化搜索優(yōu)化.
(4)在meta-Stacking(元分類器堆疊)基礎(chǔ)上逐層遞歸,查找可被meta-Stacking替換的模型結(jié)點(diǎn).
(5)根據(jù)不同的評(píng)價(jià)指標(biāo),優(yōu)化不同最佳的Stacking堆疊模型結(jié)構(gòu).
AutoKGGAS軟件缺陷預(yù)測(cè)方法流程如圖4所示.
圖3 AutoKGGAS基分類器選擇配置Fig.3 AutoKGGAS base classifier selection configuration
圖4 AutoKGGAS軟件缺陷預(yù)測(cè)方法流程Fig.4 AutoKGGAS software defect prediction method flow
在樣本數(shù)量和缺陷率各種不同的數(shù)據(jù)集條件下,運(yùn)用本文提出的基于知識(shí)圖譜輔助自動(dòng)化機(jī)器學(xué)習(xí)的軟件缺陷預(yù)測(cè)模型和傳統(tǒng)經(jīng)典軟件缺陷預(yù)測(cè)模型進(jìn)行對(duì)比實(shí)驗(yàn)測(cè)試,實(shí)驗(yàn)環(huán)境:Windows 7 Service Pack1、Intel(R) Core(TM) i5-3320M CPU @2.60 GHz RAM 8 GB,Open JDK1.8.0,Weka 3.9.3.
自動(dòng)化機(jī)器學(xué)習(xí)軟件缺陷預(yù)測(cè)原型配置包括預(yù)測(cè)類型的選擇、數(shù)據(jù)集的選擇、知識(shí)圖譜推薦缺陷預(yù)測(cè)模型數(shù)量、遺傳算法配置(隨機(jī)種子、遺傳代數(shù)、種群規(guī)模、變異率)、模型深度、評(píng)價(jià)指標(biāo)等,配置界面如圖5所示.
圖5 軟件缺陷預(yù)測(cè)原型配置界面Fig.5 Software defect prediction prototype configuration interface
NASA的13個(gè)數(shù)據(jù)集[11-12]全部是美國(guó)航空航天局的實(shí)際工程項(xiàng)目,包括了衛(wèi)星飛行控制軟件、模擬器軟件和地面站測(cè)試軟件等.數(shù)據(jù)集覆蓋C、C++、Perl、Java共4種編程語(yǔ)言.NASA數(shù)據(jù)集中,函數(shù)模塊缺陷率百分比分布為0.41%~48.80%,數(shù)據(jù)集中的分類標(biāo)簽是函數(shù)模塊是否有缺陷,函數(shù)模塊的屬性包括代碼行數(shù)、McCabe度量值、Halstead度量值等.NASA數(shù)據(jù)集具體描述如下表1所示:
評(píng)價(jià)實(shí)驗(yàn)對(duì)象6個(gè)性能指標(biāo)[13-14]包括Percision、Recall、F-Measure、MCC、ROC、PRC.
表1 NASA數(shù)據(jù)集軟件缺陷相關(guān)情況Tab.1 Software defects related to NASA data set
在命令行模式下,通過(guò)自動(dòng)化腳本測(cè)試,每次測(cè)試數(shù)據(jù)集拆分為66%作為訓(xùn)練集,34%作為測(cè)試集.每個(gè)軟件缺陷預(yù)測(cè)模型運(yùn)行10次,取平均值作為模型評(píng)價(jià)指標(biāo).
3.3.1 知識(shí)圖譜的缺陷預(yù)測(cè)模型數(shù)據(jù)獲取實(shí)驗(yàn)設(shè)計(jì)
按照軟件缺陷預(yù)測(cè)模型類別劃分,114個(gè)軟件缺陷預(yù)測(cè)模型(取默認(rèn)參數(shù))實(shí)驗(yàn)提供知識(shí)圖譜數(shù)據(jù)可視化分布圖,按照數(shù)據(jù)集劃分,在NASA的提供的開源13個(gè)數(shù)據(jù)集,從Percision、Recall、F-Measure、MCC、ROC、PRC 6個(gè)評(píng)價(jià)指標(biāo)維度聚類推薦軟件缺陷預(yù)測(cè)模型知識(shí)圖譜數(shù)據(jù).
3.3.2 基于AutoKGGAS自動(dòng)化機(jī)器學(xué)習(xí)實(shí)驗(yàn)設(shè)計(jì)
從13個(gè)數(shù)據(jù)集中選擇4個(gè)有代表性的數(shù)據(jù)集CM1、KC4、PC1、PC4,按照知識(shí)圖譜推薦的評(píng)價(jià)指標(biāo)F-Measure、MCC、ROC、PRC前20名軟件缺陷預(yù)測(cè)模型作為基類分類器和元類分類器,實(shí)驗(yàn)設(shè)計(jì)如下:
(1)AutoKGGAS與經(jīng)典軟件缺陷預(yù)測(cè)模型對(duì)比測(cè)試
實(shí)驗(yàn)1:在PC1數(shù)據(jù)集ROC評(píng)價(jià)指標(biāo)的情況下,對(duì)比AutoKGGAS自動(dòng)化機(jī)器學(xué)習(xí)模型與知識(shí)圖譜推薦的前20名經(jīng)典軟件缺陷預(yù)測(cè)模型測(cè)試.
實(shí)驗(yàn)2:在KC4數(shù)據(jù)集F-Measure評(píng)價(jià)指標(biāo)的情況下,對(duì)比AutoKGGAS自動(dòng)化機(jī)器學(xué)習(xí)模型與知識(shí)圖譜推薦的前20名經(jīng)典軟件缺陷預(yù)測(cè)模型測(cè)試.
實(shí)驗(yàn)3:在PC4數(shù)據(jù)集MCC評(píng)價(jià)指標(biāo)的情況下,對(duì)比AutoKGGAS自動(dòng)化機(jī)器學(xué)習(xí)模型與知識(shí)圖譜推薦的前20名經(jīng)典軟件缺陷預(yù)測(cè)模型測(cè)試.
(2)AutoKGGAS與AutoWeka自動(dòng)化模型對(duì)比測(cè)試
實(shí)驗(yàn)4:在NASA數(shù)據(jù)集JM1、KC1、KC3、KC4、MC1、MC2、MW1、PC1、PC3、PC4、PC5條件下,從評(píng)價(jià)指標(biāo)Precision、Recall、F-Measure、MCC、ROC、PRC六個(gè)維度,對(duì)比AutoKGGAS與AutoWeka缺陷預(yù)測(cè)模型測(cè)試驗(yàn)證.
3.4.1 知識(shí)圖譜的缺陷預(yù)測(cè)模型數(shù)據(jù)實(shí)驗(yàn)結(jié)果分析
按照數(shù)據(jù)集劃分,在NASA的提供的開源13個(gè)數(shù)據(jù)集,從Percision、Recall、F-Measure、MCC、ROC、PRC 6個(gè)評(píng)價(jià)指標(biāo)維度的知識(shí)圖譜推薦數(shù)據(jù)可視化如圖6所示.
圖6 知識(shí)圖譜推薦數(shù)據(jù)可視化Fig.6 Knowledge graph recommendation data visualization
3.4.2 AutoKGGAS自動(dòng)化機(jī)器學(xué)習(xí)實(shí)驗(yàn)結(jié)果分析
(1)AutoKGGAS與經(jīng)典缺陷預(yù)測(cè)模型測(cè)試結(jié)果分析
實(shí)驗(yàn)1:在PC1數(shù)據(jù)集的情況下, AutoKGGAS模型ROC評(píng)價(jià)指標(biāo)為0.887表現(xiàn)最優(yōu),ROC對(duì)比指標(biāo)如圖7.
實(shí)驗(yàn)2:在KC4數(shù)據(jù)集的情況下, AutoKGGAS模型F-Measure評(píng)價(jià)指標(biāo)為0.832表現(xiàn)最優(yōu),對(duì)比指標(biāo)如圖8.
實(shí)驗(yàn)3:在PC4數(shù)據(jù)集的情況下, AutoKGGAS模型MCC評(píng)價(jià)指標(biāo)為0.570表現(xiàn)最優(yōu),MCC對(duì)比指標(biāo)如圖9.
圖7 PC1數(shù)據(jù)集ROC評(píng)價(jià)Fig.7 PC1 data set ROC evaluation
圖8 KC4數(shù)據(jù)集F-Measure評(píng)價(jià)Fig.8 KC4 data set F-Measure evaluation
圖9 PC4數(shù)據(jù)集MCC評(píng)價(jià)Fig.9 PC4 data set MCC evaluation
(2)AutoKGGAS與AutoWeka自動(dòng)化模型實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)4:采用AutoWeka自動(dòng)化軟件缺陷預(yù)測(cè)模型默認(rèn)的相關(guān)參數(shù),在NASA數(shù)據(jù)集JM1、KC1、KC3、KC4、MC1、MC2、MW1、PC1、PC3、PC4、PC5條件下,從評(píng)價(jià)指標(biāo)Precision、Recall、F-Measure、MCC、ROC、PRC 6個(gè)維度對(duì)比, AutoKGGAS性能指標(biāo)超越與AutoWeka缺陷預(yù)測(cè)模型.其中AutoKGGAS與AutoWeka性能Precision評(píng)價(jià)指標(biāo)如圖10.
圖10 AutoKGGAS與AutoWeka性能PercisionFig.10 AutoKGGAS and AutoWeka performance Percision
根據(jù)上述實(shí)驗(yàn)可以得出以下結(jié)論:
(1)探索構(gòu)建軟件缺陷預(yù)測(cè)模型領(lǐng)域的知識(shí)圖譜,獲取1339條軟件缺陷預(yù)測(cè)模型數(shù)據(jù)樣本,知識(shí)圖譜推薦各評(píng)價(jià)指標(biāo)排序,傳統(tǒng)經(jīng)典軟件缺陷預(yù)測(cè)模型作為AutoKGGAS的基類分類器和元類分類器自動(dòng)化搜索的熱啟動(dòng)輸入條件,取得了較好的效果.
(2)AutoKGGAS自動(dòng)化軟件缺陷預(yù)測(cè)模型在不同數(shù)據(jù)集(PC1、KC4、PC4)不同評(píng)價(jià)指標(biāo)(F-Measure、MCC、ROC)方面,性能優(yōu)于知識(shí)圖譜推薦的傳統(tǒng)經(jīng)典軟件缺陷預(yù)測(cè)模型.
(3)AutoKGGAS自動(dòng)化軟件缺陷預(yù)測(cè)模型在NASA數(shù)據(jù)集(JM1、KC1、KC3、KC4、MC1、MC2、MW1、PC1、PC3、PC4、PC5)和6個(gè)維度評(píng)價(jià)指標(biāo)(Precision、Recall、F-Measure、MCC、ROC、PRC)方面,性能優(yōu)于AutoWeka自動(dòng)化軟件缺陷預(yù)測(cè)模型.
本文以軟件缺陷預(yù)測(cè)模型為研究背景,探究了知識(shí)圖譜的構(gòu)建和應(yīng)用、Stacking集成學(xué)習(xí),并提出了基于知識(shí)圖譜輔助自動(dòng)化機(jī)器學(xué)習(xí)的軟件缺陷預(yù)測(cè)模型AutoKGGAS方法.該方法實(shí)證研究采用NASA開源數(shù)據(jù)集實(shí)驗(yàn)對(duì)象和6種性能評(píng)價(jià)指標(biāo),實(shí)驗(yàn)結(jié)果表明, AutoKGGAS自動(dòng)化軟件缺陷預(yù)測(cè)模型在不同數(shù)據(jù)集不同評(píng)價(jià)指標(biāo)方面,性能優(yōu)于知識(shí)圖譜推薦的傳統(tǒng)經(jīng)典軟件缺陷預(yù)測(cè)模型.在與AutoWeka自動(dòng)化軟件缺陷預(yù)測(cè)模型對(duì)比測(cè)試中,全面超越取得了較好的效果.自動(dòng)化軟件缺陷預(yù)測(cè)模型為航天軟件缺陷預(yù)測(cè)輔助代碼審查測(cè)試提供了原型,在工程實(shí)踐應(yīng)用方面具有重要的意義.
展望未來(lái),在其他航天領(lǐng)域數(shù)據(jù)集對(duì)比驗(yàn)證,基于自動(dòng)化深度學(xué)習(xí)的軟件缺陷預(yù)測(cè)和基于可解釋深度學(xué)習(xí)的軟件缺陷預(yù)測(cè)是未來(lái)發(fā)展趨勢(shì).