徐天宇,曹 瑋,蘇藝博,王艷嬌
(中國(guó)船舶集團(tuán)有限公司第八研究院,南京 211153)
雷達(dá)軟件的特點(diǎn)是任務(wù)場(chǎng)景復(fù)雜、功能集成度高、數(shù)據(jù)交互頻繁,對(duì)接口的要求是吞吐量、速率和實(shí)時(shí)性等,對(duì)人機(jī)交互界面的要求是友好性和易用性等。目前在裝備中已大量使用C/C++和FPGA語(yǔ)言代碼,且代碼量規(guī)模較大,導(dǎo)致雷達(dá)軟件缺陷組合復(fù)雜,如何有效提高雷達(dá)軟件缺陷預(yù)測(cè)和識(shí)別,有助于提高對(duì)軟件缺陷分布規(guī)律和現(xiàn)象的認(rèn)知,成為影響雷達(dá)軟件測(cè)試設(shè)計(jì)工作質(zhì)量和效率的關(guān)鍵。
與一般軟件不同,雷達(dá)軟件缺陷具有比較復(fù)雜的領(lǐng)域特征,難以使用當(dāng)前可用的文本分類技術(shù)或通用主題獲取模型,例如通用的隱含狄利克雷分布(Latent Dirichlet Allocation,LDA)主題模型,對(duì)雷達(dá)軟件缺陷數(shù)據(jù)執(zhí)行精確的文本分類或主題獲取[1]。同時(shí),雷達(dá)用戶對(duì)系統(tǒng)的整體功能、性能等質(zhì)量因素要求較高,而配置項(xiàng)和系統(tǒng)級(jí)軟件測(cè)試更關(guān)注軟件需求和系統(tǒng)需求是否符合要求,以及軟件任務(wù)的可靠性和用戶體驗(yàn)的潛在需求,并且需要大量人力資源及其他資源用于配置項(xiàng)級(jí)和系統(tǒng)級(jí)的軟件合格性測(cè)試。上述多個(gè)原因直接影響雷達(dá)缺陷數(shù)據(jù)分類的準(zhǔn)確性和召回率。
為了提升雷達(dá)軟件測(cè)試效率,減少測(cè)試工作量,本文研究并改進(jìn)現(xiàn)有軟件缺陷分類算法,提出的算法適用于配置項(xiàng)級(jí)測(cè)試和系統(tǒng)級(jí)測(cè)試的雷達(dá)軟件缺陷分類。
支持向量機(jī)(Support Vector Machine,SVM)按監(jiān)督學(xué)習(xí)方式對(duì)數(shù)據(jù)進(jìn)行二元分類,可表示為在特征空間內(nèi)使分類間隔最大的線性分類器,其學(xué)習(xí)目標(biāo)是使分類間隔最大化,可以化為求解凸二次規(guī)劃的問(wèn)題。當(dāng)訓(xùn)練數(shù)據(jù)線性可分時(shí),利用間隔最大化求最優(yōu)分類超平面,以便所有數(shù)據(jù)樣本在平面內(nèi)可以被正確劃分開(kāi)[2]。圖1為數(shù)據(jù)線性可分情況下SVM分類示意。
圖1 SVM分類示意圖
LDA主題模型是一種文檔主題生成模型,包含文本、主題和關(guān)鍵詞3個(gè)層次,也可稱為三層貝葉斯模型。通過(guò)LDA建模,可以將文本映射到主題空間上,從而對(duì)其進(jìn)行主題分類和判斷相似度等操作[3]。LDA主題模型文本分類原理如圖2所示。
圖2 基于LDA主題模型的分類示意圖
首先分析雷達(dá)領(lǐng)域相關(guān)標(biāo)準(zhǔn)、系統(tǒng)需求、軟件需求、軟件設(shè)計(jì)、測(cè)試用例、測(cè)試記錄、測(cè)試問(wèn)題報(bào)告單等語(yǔ)料集,并根據(jù)雷達(dá)領(lǐng)域系統(tǒng)和軟件開(kāi)發(fā)專家的經(jīng)驗(yàn)確定每個(gè)術(shù)語(yǔ)的同義詞,從多個(gè)角度建立“雷達(dá)領(lǐng)域術(shù)語(yǔ)詞典”:
(1)雷達(dá)領(lǐng)域?qū)I(yè)術(shù)語(yǔ)集合:與雷達(dá)系統(tǒng)、配置項(xiàng)、軟件等相關(guān)的專業(yè)術(shù)語(yǔ);
(2)雷達(dá)領(lǐng)域停用詞集合:在公共停用詞列表的基礎(chǔ)上,去掉在雷達(dá)測(cè)試領(lǐng)域中與主題無(wú)關(guān)的詞,如調(diào)試助手、軟件、人員、數(shù)據(jù)等;
(3)雷達(dá)領(lǐng)域同義詞集合:雷達(dá)專業(yè)術(shù)語(yǔ)的同義詞集合,如“靜默區(qū)”的同義詞為“沉默區(qū)”等;
(4)典型雷達(dá)軟件異常缺陷集合:例如目標(biāo)丟失、航跡點(diǎn)溢出、目標(biāo)批號(hào)不同步等;
(5)雷達(dá)軟件需求特征集合:例如扇區(qū)劃分、航跡、回波接收任務(wù)、主被動(dòng)切換等。
基于雷達(dá)領(lǐng)域術(shù)語(yǔ)詞典和逆向最大匹配算法的軟件缺陷文本分詞方法如圖3所示。
圖3 軟件缺陷文本分詞方法流程圖
借助LDA模型對(duì)語(yǔ)料庫(kù)(即軟件缺陷數(shù)據(jù)庫(kù))D中的任意文檔(即軟件缺陷數(shù)據(jù))d建模,生成主題概率分布:
(1)
得到聯(lián)合概率公式:
針對(duì)式(1)和式(2)中的變量說(shuō)明如下:假設(shè)雷達(dá)缺陷數(shù)據(jù)庫(kù)有D個(gè)缺陷數(shù)據(jù)集合,總字?jǐn)?shù)為Nd、wd,n,n表示d數(shù)據(jù)中的第n個(gè)字。缺陷數(shù)據(jù)由k個(gè)主題組成,則每個(gè)主題下的主題詞概率分布фk服從以β為參數(shù)的狄利克雷分布;θd是文檔主題分布,每個(gè)缺陷數(shù)據(jù)對(duì)應(yīng)不同的主題分布,服從狄利克雷分布,以α為參數(shù);Zd,n表示缺陷數(shù)據(jù)d中主題和關(guān)鍵詞之間的指定分布,服從多項(xiàng)式分布,以θz為參數(shù)。
根據(jù)式(1)、式(2)以及相應(yīng)變量,基于LDA模型的雷達(dá)軟件缺陷的獲取過(guò)程描述如下[4]:
(1)對(duì)于每個(gè)缺陷數(shù)據(jù)d∈D,根據(jù)θd~Dir(α)(即θd服從狄利克雷分布,以α為參數(shù)),得到多項(xiàng)式分布參數(shù)θd;
(2)對(duì)于每個(gè)主題z∈k,根據(jù)θd~Dir(α),得到多項(xiàng)式分布參數(shù)θd;
(3)對(duì)于缺陷數(shù)據(jù)d中的第i個(gè)字Wd,i:
·根據(jù)多項(xiàng)式分布Zd,i~Mult(θd),得到缺陷主題Zd,i;
·根據(jù)多項(xiàng)式分布Wd,i~Mult(θz),得到缺陷關(guān)鍵詞Wd,i。
傳統(tǒng)的LDA模型沒(méi)有考慮領(lǐng)域上下文中的關(guān)鍵詞權(quán)重信息,且主題分配偏向高頻關(guān)鍵詞所屬的主題。在許多情況下,具有強(qiáng)大領(lǐng)域背景的重要術(shù)語(yǔ),如雷達(dá)軟件需求,可能不會(huì)經(jīng)常出現(xiàn),因此很難成為主題關(guān)鍵字的輸出。通過(guò)構(gòu)建基于融合雷達(dá)軟件需求特征的改進(jìn)LDA主題模型,本文提升了描述雷達(dá)軟件需求關(guān)鍵詞的權(quán)重和文本長(zhǎng)度,具體實(shí)現(xiàn)如下:
步驟1:提升關(guān)鍵詞的詞頻權(quán)重
針對(duì)原始缺陷數(shù)據(jù)集D={d1,d2,…,dn}中的分詞結(jié)果,查找描述雷達(dá)軟件。
需求的關(guān)鍵詞V={v1,v2,…,vs}(V∈D),例如功能需求、性能參數(shù)、接口名稱、接口類型、工作狀態(tài)等,同時(shí)提升這些關(guān)鍵詞的詞頻權(quán)重。
步驟2:擴(kuò)充軟件缺陷數(shù)據(jù)集
針對(duì)雷達(dá)軟件需求關(guān)鍵詞V,為其中的每個(gè)關(guān)鍵詞vi,i=1~s匹配相關(guān)的需求信息,例如針對(duì)某需求vi,可將其功能需求、性能參數(shù)、接口名稱、接口類型、工作狀態(tài)等文本信息自動(dòng)添加到原始缺陷數(shù)據(jù)集中,形成擴(kuò)充數(shù)據(jù)集V′={v1,v2,…,vs,vs+1,vs+2,…,VS},最終擴(kuò)充軟件缺陷數(shù)據(jù)集D′=D∪V′ (軟件缺陷數(shù)據(jù)集的長(zhǎng)度為S+n)。
步驟3:循環(huán)迭代計(jì)算主題分布和主題關(guān)鍵詞分布
對(duì)經(jīng)過(guò)擴(kuò)充的雷達(dá)軟件缺陷數(shù)據(jù)集D′,構(gòu)造概率向量模型:
(θ1×(φ11,…,φ1,S+n),…,θz×(φz1,…,φz,S+n),
θn×(φS1,…,φS,S+n))
(3)
因此,構(gòu)造的概率向量模型為n×S維。這種擴(kuò)充后的軟件缺陷數(shù)據(jù)集合既保留了LDA主題模型降維降噪的效果,也融合了雷達(dá)軟件需求特征,具有更好的語(yǔ)義可解釋性[5]。
為了獲取上述模型中的關(guān)鍵詞概率分布,須估算隱含參數(shù)θ與φ。本文借助Gibbs抽樣方法,結(jié)合擴(kuò)充后的軟件缺陷數(shù)據(jù)集合,獲得θ與φ的估計(jì)值。θ與φ的估算過(guò)程可以看作軟件缺陷數(shù)據(jù)文本生成的逆過(guò)程,即在給定軟件缺陷數(shù)據(jù)集的情況下,通過(guò)參數(shù)估計(jì)得到隱含參數(shù)的估計(jì)值。
Gibbs抽樣在于確定每個(gè)關(guān)鍵詞的主題,隱含主題參數(shù)可以通過(guò)統(tǒng)計(jì)主題頻數(shù)來(lái)獲得。假定在排除當(dāng)前關(guān)鍵詞主題分配的情況下,根據(jù)其他詞的主題分配估計(jì)當(dāng)前詞分配各個(gè)主題的概率[6],公式如下:
(4)
假定每個(gè)關(guān)鍵詞的主題被確定,則可以按照下式估算θ與φ:
(5)
(6)
式中,θm,k為缺陷數(shù)據(jù)m中主題k的概率;φk,t為主題k中關(guān)鍵詞t的概率。
循環(huán)迭代計(jì)算軟件缺陷數(shù)據(jù)m的主題分布θ以及主題關(guān)鍵詞分布φ。
利用雷達(dá)領(lǐng)域術(shù)語(yǔ)詞典的軟件缺陷文本分詞算法,并借助雷達(dá)領(lǐng)域術(shù)語(yǔ)詞典,提取文本中的單詞。對(duì)雷達(dá)軟件缺陷數(shù)據(jù)集D中的每項(xiàng)軟件缺陷數(shù)據(jù)di,i=1~N進(jìn)行預(yù)處理,獲得N個(gè)軟件缺陷數(shù)據(jù)的文本分詞向量集合Ds=ds1,ds2,…,dsN;然后根據(jù)2.3節(jié)確定隱含主題的個(gè)數(shù)k(k值可以預(yù)先設(shè)置,k值越大,實(shí)驗(yàn)產(chǎn)生的結(jié)果信息越多,主題就越發(fā)散;k值越小,主題越收斂),方法如圖4所示。
圖4 確定k值方法流程
結(jié)合雷達(dá)軟件測(cè)試領(lǐng)域應(yīng)用場(chǎng)景,根據(jù)雷達(dá)軟件項(xiàng)目中功能數(shù)量、性能數(shù)量、接口數(shù)量等需求信息和測(cè)試類型個(gè)數(shù)等,初步確定預(yù)期隱含主題個(gè)數(shù)k,通過(guò)多次實(shí)驗(yàn)調(diào)參,并根據(jù)專家經(jīng)驗(yàn)采用最優(yōu)密度模型等方法,設(shè)置較為合理的k值。由于各型號(hào)雷達(dá)軟件具有相似性,可根據(jù)各型號(hào)雷達(dá)軟件提前確定k值。
將軟件缺陷數(shù)據(jù)的文本分詞向量集合Ds=ds1,ds2,…,dsN以及預(yù)期的隱含主題個(gè)數(shù)k,代入融合雷達(dá)軟件需求特征的改進(jìn)LDA主題模型中進(jìn)行模擬訓(xùn)練[7],得到主題模型個(gè)數(shù)k,記為DM=dM1,dM2,…,dMK。每個(gè)主題模型DMj,j=1~k都由s個(gè)關(guān)鍵詞組成,即關(guān)鍵詞向量集合為DMj={dmj1,…,dmjk},dmjk∈Ds。
在所生成的雷達(dá)軟件缺陷數(shù)據(jù)的k個(gè)主題模型基礎(chǔ)上,借助Gibbs抽樣方法,采用JS散度,計(jì)算每項(xiàng)軟件缺陷數(shù)據(jù)文本分詞向量dsi,與每個(gè)主題模型DMj之間的主題相似度因子。Gibbs抽樣方法可以估算軟件缺陷數(shù)據(jù)集D中任意缺陷數(shù)據(jù)dsi的主題概率分布向量,采用JS散度和KL散度計(jì)算軟件缺陷數(shù)據(jù)的主題相似度[8]。因此,得到面向雷達(dá)軟件缺陷數(shù)據(jù)與主題模型的相似度因子LS的計(jì)算式為
(7)
式中,DKL為KL散度,且
(8)
針對(duì)每項(xiàng)缺陷數(shù)據(jù)dsi,分別計(jì)算其與每個(gè)主題模型DMj的相似度因子LS,若LS的取值超出閾值,則可判定該項(xiàng)缺陷數(shù)據(jù)dsi大概率屬于該主題模型DMj,即缺陷數(shù)據(jù)dsi的從屬主題模型。重復(fù)上述相似度因子計(jì)算和分析過(guò)程,對(duì)每項(xiàng)缺陷數(shù)據(jù)dsi都能找到相應(yīng)的從屬主題模型DMj,也可以稱為缺陷數(shù)據(jù)dsi從屬與主題模型DMj。
最后,若m,m≤k個(gè)主題模型下有屬于自己的缺陷數(shù)據(jù)集,雷達(dá)軟件缺陷數(shù)據(jù)分類完成,即將雷達(dá)軟件缺陷數(shù)據(jù)D分為m類,對(duì)應(yīng)m個(gè)主題模型。整個(gè)流程如圖5所示。
圖5 基于主題相似因子的軟件缺陷分類算法流程
本實(shí)驗(yàn)選用某型雷達(dá)顯控軟件的90項(xiàng)測(cè)試問(wèn)題報(bào)告單,預(yù)先按照各類測(cè)試問(wèn)題報(bào)告單所屬功能,人工將其分為9類,形成軟件缺陷標(biāo)準(zhǔn)分類集合,如圖6所示。
圖6 軟件缺陷標(biāo)準(zhǔn)分類集合流程圖
對(duì)比選用的缺陷數(shù)據(jù)分類算法包括:傳統(tǒng)LDA主題模型(記為L(zhǎng)DA)、本文提出的融合雷達(dá)軟件需求特征的改進(jìn)LDA主題模型(記為I-LDA)以及主流的支持向量機(jī)的文本分類算法(記為SVM)。
以下3個(gè)主要指標(biāo)用于評(píng)價(jià)雷達(dá)軟件缺陷數(shù)據(jù)分類算法的性能:
(1)分類精確率P=(算法準(zhǔn)確實(shí)現(xiàn)的軟件缺陷分類數(shù))/(算法實(shí)現(xiàn)的所有軟件缺陷分類數(shù))*100%;
(2)分類召回率R=(算法準(zhǔn)確實(shí)現(xiàn)的軟件缺陷分類數(shù))/(缺陷數(shù)據(jù)庫(kù)中實(shí)際的軟件缺陷分類數(shù))*100%;
(3)綜合指標(biāo)F1=2PR/(P+R)。
當(dāng)實(shí)際評(píng)估一個(gè)分類算法的性能時(shí),應(yīng)同時(shí)考慮P和R,但同時(shí)要比較兩個(gè)數(shù)值,很難做到一目了然。作為P和R的調(diào)和平均,綜合指標(biāo)F1值可以對(duì)二者進(jìn)行綜合評(píng)價(jià),最終利用F1值并結(jié)合P值和R值對(duì)分類結(jié)果進(jìn)行效果評(píng)估[9]。
采用Python語(yǔ)言在Win7操作系統(tǒng)下實(shí)現(xiàn)改進(jìn)LDA主題模型。針對(duì)LDA主題模型的主要參數(shù)設(shè)置如下:采用Gibbs抽樣方法進(jìn)行參數(shù)估計(jì),雷達(dá)軟件缺陷數(shù)據(jù)的訓(xùn)練集和測(cè)試集比例設(shè)置為5:1,文檔主題概率分布參數(shù)α為0.1,主題關(guān)鍵詞概率分布參數(shù)β設(shè)置為0.01,每個(gè)主題下的關(guān)鍵詞個(gè)數(shù)設(shè)置為10。
(1)步驟1:設(shè)置改進(jìn)LDA主題模型的預(yù)期主題個(gè)數(shù)K
在測(cè)試問(wèn)題標(biāo)準(zhǔn)分類集合中,已人工將其分為9類,所以設(shè)置LDA和I-LDA兩個(gè)主題模型的預(yù)期主題個(gè)數(shù)K為9。
(2)步驟2:雷達(dá)軟件缺陷數(shù)據(jù)文本分詞
借助本文提出的“基于雷達(dá)領(lǐng)域術(shù)語(yǔ)詞典的缺陷文本分詞”算法,對(duì)90項(xiàng)測(cè)試問(wèn)題報(bào)告單的缺陷數(shù)據(jù)進(jìn)行分詞。
(3)步驟3:基于3種模型算法訓(xùn)練的分類過(guò)程
將LDA、I-LDA和SVM等3種模型分類算法,對(duì)90項(xiàng)測(cè)試問(wèn)題報(bào)告單的缺陷數(shù)據(jù)分詞集合進(jìn)行模擬訓(xùn)練,形成各自對(duì)應(yīng)的分類結(jié)果。以I-LDA模型算法為例,其軟件缺陷數(shù)據(jù)的分類結(jié)果如下:
在90項(xiàng)缺陷數(shù)據(jù)中有6項(xiàng)數(shù)據(jù)(如表1所示,原始數(shù)據(jù)文本較長(zhǎng),做了一定簡(jiǎn)化)與“初始化”功能相關(guān)。I-LDA模型將這6項(xiàng)數(shù)據(jù)歸為同一個(gè)主題模型S。
表1 雷達(dá)軟件初始化功能的6項(xiàng)缺陷文本
主題模型S:(0.046*“接收”+0.035*“上電初始化”+0.035*“站點(diǎn)”+0.029*“配置文件”+0.028*“標(biāo)識(shí)”+0.025*“雷達(dá)站A”+0.025*“雷達(dá)站B”+0.024*“目標(biāo)”+0.024*“讀取”+0.022*“過(guò)程”)。
在主題模型S包含的關(guān)鍵詞集合中,與初始化功能的描述比較接近,例如“上電初始化”、“接收”、“配置文件”等,因此將這6項(xiàng)初始化缺陷數(shù)據(jù)歸為主題模型S符合預(yù)期。在標(biāo)準(zhǔn)分類集中,也是將這6項(xiàng)缺陷數(shù)據(jù)歸為同一類,屬于“初始化”功能。
(4)步驟4:實(shí)驗(yàn)結(jié)果分類比對(duì)和分析
根據(jù)3種模型分類算法對(duì)90項(xiàng)軟件缺陷數(shù)據(jù)進(jìn)行分類實(shí)驗(yàn),并計(jì)算3種指標(biāo)P、R和F1,結(jié)果如表2所示。
表2 貝葉斯網(wǎng)絡(luò)原因變量集合C示例
可以看出,I-LDA算法的分類效果比其他兩種算法有明顯提升,即I-LDA性能最優(yōu)。在步驟(3)中,I-LDA分類結(jié)果表明其與標(biāo)準(zhǔn)分類集一致。相反,LDA算法的分類結(jié)果將第4個(gè)數(shù)據(jù)項(xiàng)分類到其他模型中,而不是有效的分類結(jié)果中,這是因?yàn)榈?個(gè)數(shù)據(jù)項(xiàng)中沒(méi)有出現(xiàn)“開(kāi)機(jī),初始化”字樣,而“默認(rèn)工作模式”的接口數(shù)據(jù)屬于“開(kāi)機(jī)初始化”功能;而在I-LDA算法中,“工作模式”和“開(kāi)機(jī)初始化”自動(dòng)關(guān)聯(lián)在一起,通過(guò)修改相似度因子LS的閾值,增加了“工作模式”在分類中的權(quán)重,從而獲得準(zhǔn)確的分類結(jié)果。
本文提出一種改進(jìn)LDA主題模型的雷達(dá)軟件缺陷分類算法:基于雷達(dá)領(lǐng)域術(shù)語(yǔ)詞典,準(zhǔn)確實(shí)現(xiàn)軟件缺陷文本分詞;依據(jù)雷達(dá)軟件需求特征信息,構(gòu)建改進(jìn)的LDA主題模型;在融合雷達(dá)需求特征的主題后,如功能需求、性能參數(shù)、接口名稱、接口類型、工作狀態(tài)等,提高獲取主題的精度;基于獲得的主題模型實(shí)現(xiàn)了改進(jìn)LDA主題模型的雷達(dá)軟件缺陷數(shù)據(jù)分類;針對(duì)某型雷達(dá)顯控軟件進(jìn)行算法實(shí)驗(yàn),本文算法在綜合指標(biāo)F1上相比于通用LDA主題模型分類算法提高了24%,證明了其準(zhǔn)確度和有效性。通過(guò)將軟件缺陷問(wèn)題報(bào)告從傳統(tǒng)的高維單詞空間映射到低維主題空間,根據(jù)文本相似度進(jìn)行數(shù)據(jù)分類,從而降低了待處理空間的維度,并提高了算法執(zhí)行效率和準(zhǔn)確性,減輕了人工分類缺陷數(shù)據(jù)的工作量和重復(fù)性,進(jìn)而提升了雷達(dá)軟件測(cè)試設(shè)計(jì)工作的質(zhì)量和效率。