崔素麗,董 東,仇 賓,孫曼曼*
(1.河北師范大學(xué)附屬民族學(xué)院,河北 石家莊 0500001;2.河北師范大學(xué),河北 石家莊 0500002)
軟件的使用方便了人們的日常生活,由軟件質(zhì)量缺陷等產(chǎn)生的損失也為人們的生活帶來了諸多問題[1]。尤其是網(wǎng)絡(luò)化軟件的產(chǎn)生,其具有復(fù)雜的特性,提高軟件的可靠性和安全性是該領(lǐng)域面臨的重要挑戰(zhàn)[2-4]。因此通過對網(wǎng)絡(luò)化軟件運行交互行為進(jìn)行有效地檢測,掌握交互行為產(chǎn)生的規(guī)律、了解運行機理,是解決網(wǎng)絡(luò)化軟件可靠與安全的關(guān)鍵,其中,對網(wǎng)絡(luò)軟件交互行為特征進(jìn)行研究更是具有重要意義。
當(dāng)前,大量研究是從網(wǎng)絡(luò)軟件的可靠性出發(fā),對網(wǎng)絡(luò)交互過程的行為進(jìn)行檢測。文獻(xiàn)[5]基于軟件特點,提出與工程實踐相符合失效模式的可靠評估模型,對構(gòu)件的運行過程、交互過程以及故障傳播過程進(jìn)行了詳細(xì)的分析,通過定義各種類型構(gòu)件的可靠參數(shù)與實例相結(jié)合,仿真結(jié)果表明該方法準(zhǔn)確性較高,但故障傳播過程的可靠性有待提高。文獻(xiàn)[6]通過對網(wǎng)絡(luò)軟件的定性描述,以eCos系統(tǒng)作為載體進(jìn)行分析,從軟件系統(tǒng)規(guī)模、組成單元的交互關(guān)系等不同方面對網(wǎng)絡(luò)模型進(jìn)行特性分析,結(jié)果表明該軟件在不同粒度上均具有相似的結(jié)構(gòu)特性,并且通過對軟件的本質(zhì)特征和節(jié)點特性等方面的分析,該軟件檢測方法具有可配置等優(yōu)勢。文獻(xiàn)[7]對軟件的用戶體驗進(jìn)行分析,同時考慮到多線程程序開發(fā)技術(shù)在計算機硬件資源方面的應(yīng)用以及軟件性能異常等方面的調(diào)試難度,結(jié)合現(xiàn)有的交互性能進(jìn)行擴展,以Google Chrome等流行軟件作為對象,對設(shè)計的交互性能異常系統(tǒng)進(jìn)行分析。
基于以上研究,本文將復(fù)雜網(wǎng)絡(luò)的有向邊連接強度通過邊權(quán)矩陣進(jìn)行量化,計算出節(jié)點間不同異構(gòu)路徑的鏈接強度,對軟件交互進(jìn)行進(jìn)行描述,并構(gòu)建行為模型,對軟件異常傳播進(jìn)行詳細(xì)地分析。
有向網(wǎng)絡(luò)和無向網(wǎng)絡(luò)的本質(zhì)區(qū)別是網(wǎng)絡(luò)節(jié)點是否有方向,包含3種類型連邊,如圖1所示。正向邊由網(wǎng)絡(luò)起始節(jié)點a指向終止節(jié)點b,表示網(wǎng)絡(luò)節(jié)點的主動行為;反向邊由網(wǎng)絡(luò)終止節(jié)點c指向起始節(jié)點a,表示網(wǎng)絡(luò)節(jié)點的被動行為;互惠邊是網(wǎng)絡(luò)起始節(jié)點a與終止節(jié)點d間的互相指向,表示兩節(jié)點間緊密關(guān)聯(lián)。
圖1 三種有向連邊
為了對3種類型連邊進(jìn)行量化,需要定義不同權(quán)重值,假設(shè)有向網(wǎng)絡(luò)為A(B,C),鄰接矩陣為D,那么鄰接邊權(quán)矩陣E可表示為
(1)
圖2 有向路徑示意圖
依據(jù)有向路徑的起始節(jié)點可將網(wǎng)絡(luò)的路徑分為正向路徑、逆向路徑、混合路徑和聯(lián)通強路徑4種類型。在網(wǎng)絡(luò)中不同路徑具有不同的作用,假定通過路徑中各個連邊的強度積表示路徑的總強度,那么n階路徑的連接強度可表示為
(2)
(3)
假定網(wǎng)絡(luò)中的兩個節(jié)點i和j間存在多條路徑,沒有直接連接,各個路徑對連邊eij的權(quán)重不同,為了對不同路徑進(jìn)行區(qū)分,通過衰減參數(shù)對路徑連接強度的相似性指標(biāo)進(jìn)行計算,用公式可表示為
(4)
其中,J=D+αDT,當(dāng)時α=0時,不需要對網(wǎng)絡(luò)中的反向邊進(jìn)行考慮,只計算正向邊的路徑數(shù)量即可。當(dāng)n→∞時,αmax便是矩陣J的最大特征值,相似性指標(biāo)進(jìn)一步可表示為
(5)
其中,I表示單位矩陣。通過相似性指標(biāo)中的自適應(yīng)參數(shù)α可以調(diào)節(jié)網(wǎng)絡(luò)中有向路徑節(jié)點對連接強度的主要作用程度。通過以上設(shè)計方法對網(wǎng)絡(luò)中不同路徑連接強度的量化,不僅能對網(wǎng)絡(luò)中各條路徑進(jìn)行差異的區(qū)分,還可以預(yù)測出節(jié)點對連邊所指的方向。
隨著軟件復(fù)雜度的不斷增加,如何對網(wǎng)絡(luò)交互行為進(jìn)行有效地分析是軟件領(lǐng)域的重要課題。行為描述是對軟件行為進(jìn)行分析的前提,是把握網(wǎng)絡(luò)軟件運行交互行為特征的首要條件。一般情況,在軟件運行時,通過設(shè)定的監(jiān)控點對軟件運行狀態(tài)進(jìn)行檢測,并把獲得的監(jiān)控結(jié)果與設(shè)定的狀態(tài)、行為比較,分析軟件當(dāng)前的健康狀況,對軟件故障進(jìn)行精準(zhǔn)的定位。隨著交互信息量的增加,若只基于內(nèi)容的描述方法對軟件行為進(jìn)行描述,其實時性與檢測效率很難得到保證。為提高軟件交互行為描述的效率,采用行為追蹤方法對網(wǎng)絡(luò)軟件交互行為進(jìn)行描述。
狀態(tài)轉(zhuǎn)移模型是從歷史日志文檔中提取出來的,主要由離線處理和在線處理兩部分。通過對日志文檔的分析,采用聚類方法創(chuàng)建候選狀態(tài),根據(jù)日志文檔中特殊的關(guān)鍵詞將信息設(shè)置到狀態(tài)轉(zhuǎn)移模型中,并將日志文檔劃分為多個子樣本空間,這樣可大大簡化日志文檔的聚類。通常用海明距離比較子樣本空間的日志記錄,海明距離公式可表示為
(6)
其中,m表示相同單詞個數(shù);Wsame_i表示相同單詞;scha_1和scha_2表示相同單詞構(gòu)成的字符串。如果子樣本空間日志記錄xm和ym之間的海明距離小于相似度閾值,那么可以把xm和ym聚類成候選狀態(tài)Scan_m;如果子樣本空間日志記錄xm和ym之間的海明距離大于相似度閾值,那么可以把xm和ym設(shè)置成新的狀態(tài)Scan_m,(k+1)。軟件狀態(tài)從日志文檔中獲得后,通過狀態(tài)轉(zhuǎn)移模型模擬網(wǎng)絡(luò)軟件的工作過程,且所有狀態(tài)均產(chǎn)生唯一的跟蹤軌跡。
若軟件具體工作轉(zhuǎn)換時間ttra和日志文檔已知,可將定量跟蹤問題轉(zhuǎn)換為軟件具體工作正確匹配軌跡的概率問題,對于Ms+1個狀態(tài),跟蹤排列矢量集合可表示為
(7)
其中,Varr_k表示排列矢量;TRA表示軟件具體工作的跟蹤;Vsta_k表示跟蹤時間戳的矢量。在轉(zhuǎn)換時間下,將軟件具體工作跟蹤簡化為最大權(quán)重二分圖,對于時間戳矢量(Vsta_0,Vsta_1),最大相似規(guī)則可簡化為
(8)
(9)
其中,W(i,j)表示二分圖每條邊的權(quán)值。
基于上述分析,從日志文檔中提取出軟件具體工作轉(zhuǎn)移模型,用來描述應(yīng)用軟件的流轉(zhuǎn)過程,從而實現(xiàn)對交互過程的行為追蹤。對于丟失標(biāo)記的行為跟蹤,采用狀態(tài)劃分算法將狀態(tài)轉(zhuǎn)移模型劃分成多個二分圖系統(tǒng),計算出各個子系統(tǒng)的網(wǎng)絡(luò)最大流,將匹配的連線連接起來得出跟蹤序列,完成對軟件行為的標(biāo)識工作。
將二分圖的匹配問題轉(zhuǎn)化為網(wǎng)絡(luò)最大流處理問題,需要在二分圖中分別增加源點ps和匯點pt,然后將源點和匯點通過有向弧與各個節(jié)點進(jìn)行連接,并將全部弧的容量定義為1。當(dāng)網(wǎng)絡(luò)流量最大時,若點(xj,yj)的流量為1,則說明xj和yj最為匹配。
假設(shè)二分圖子系統(tǒng)中行為軌跡的結(jié)束與發(fā)生時間分別為tstop和tstart,對應(yīng)的節(jié)點分別為nstop和nstart,對應(yīng)的節(jié)點狀態(tài)集合分別為Nstop={nstop_i|i=1,m}和Nstart={nstart_i|i=1,m},m表示狀態(tài)集合中行為跟蹤軌跡的數(shù)量。對于任意軟件具體工作而言,若時間在轉(zhuǎn)移的限定時間內(nèi),離開狀態(tài)與到達(dá)狀態(tài)先后出現(xiàn),說明這兩個狀態(tài)所產(chǎn)生的軌跡與軟件的某一具體工作是匹配的,通過有向弧將兩個節(jié)點連接,可以得出連接弧的集合,表示為:
(10)
綜上所述,根據(jù)狀態(tài)之間的轉(zhuǎn)移時間,按照指數(shù)分布與正態(tài)分布進(jìn)行計算,可以得出描述網(wǎng)絡(luò)跟蹤軌跡匹配的網(wǎng)絡(luò)流程圖。
根據(jù)軟件異常行為在不同情況的交互形式,構(gòu)建描述異常行為交互過程的模型。復(fù)雜的系統(tǒng)不能對其內(nèi)部的運行過程進(jìn)行深入研究,只能對行為模型進(jìn)行抽取描述,在網(wǎng)絡(luò)軟件交互行為模型的基礎(chǔ)上,構(gòu)建網(wǎng)絡(luò)軟件系統(tǒng)錯誤模型,將軟件的執(zhí)行過程視為組件的消息傳輸、組件關(guān)聯(lián)等函數(shù)的調(diào)用,且均通過有向邊表示。在模型的建立過程中對影響軟件異常行為的3種參數(shù)進(jìn)行分析,包含組件的內(nèi)部錯誤率、連接率和交互頻率。
組件內(nèi)部錯誤率表示為了實現(xiàn)組件功能,節(jié)點中所隱含的錯誤概率。由于組件內(nèi)部錯誤不一定導(dǎo)致其它軟件產(chǎn)生錯誤,因此在模型中引入錯誤傳播概率。依據(jù)錯誤概率與傳播概率的相互獨立性,當(dāng)某個組件i的錯誤傳播概率小于1時,說明系統(tǒng)可靠性較強。組件內(nèi)部錯誤概率是一個靜態(tài)估計值,公式為
(11)
其中,derr表示錯誤密度;ri表示組件的代碼行數(shù)。組件內(nèi)部錯誤傳播率與組件內(nèi)部類與類之間具有關(guān)聯(lián)性。通過不斷的研究發(fā)現(xiàn),CBO中包含隱藏錯誤類的所有類,對錯誤傳播率起到主要的影響;WMC中包含影響錯誤傳播率的內(nèi)聚性;RFC中包含影響外部調(diào)用函數(shù)的基數(shù)。因此提出類的錯誤傾向指數(shù)對組件的內(nèi)部錯誤傳播率進(jìn)行描述,公式為
(12)
(13)
其中,Ctot表示組件i包含的類總數(shù)量。
連接率是按照程序邏輯隨時間變化的動態(tài)變量。將軟件的工作過程視為可隨時間變化的網(wǎng)絡(luò),可通過函數(shù)調(diào)用關(guān)系反映出連接率。在網(wǎng)絡(luò)軟件中,一個錯誤節(jié)點可以影響多個正常節(jié)點,與此同時,一個正常的網(wǎng)絡(luò)節(jié)點也有可能受多個錯誤節(jié)點影響。假定有向圖為A(B,C(t)),連接率表示為
(14)
其中,|C(t)|表示時間t時軟件交互的有向圖中存在的邊數(shù)。|B|表示節(jié)點數(shù)目。若連接率越大,節(jié)點間連接的強度越高,說明軟件異常行為傳播的可能性較大。
交互頻率表示在某個時間段內(nèi)兩個節(jié)點被調(diào)用的次數(shù),當(dāng)交互次數(shù)達(dá)到最大值時,可能導(dǎo)致調(diào)用該節(jié)點時出現(xiàn)錯誤。網(wǎng)絡(luò)軟件的執(zhí)行頻繁程度與重要性也是通過交互頻率體現(xiàn)。交互過程有向圖A(B,C(t))節(jié)點間的連邊隨著時間發(fā)生變化,整個網(wǎng)絡(luò)的交互頻率表示為
(15)
其中,dpoi表示節(jié)點的度;pint_ij表示節(jié)點i和j的交互頻率。
為了驗證關(guān)于有向復(fù)雜網(wǎng)絡(luò)軟件異常交互行為檢測的有效性,使用JAVA語言開發(fā)的電子購物平臺,對異常行為傳播模型進(jìn)行驗證。用戶進(jìn)入購物平臺,與確認(rèn)組件和系統(tǒng)組件進(jìn)行交互,然后進(jìn)行選購、下單等操作,系統(tǒng)通過數(shù)據(jù)庫的數(shù)據(jù),對用戶的請求進(jìn)行管理。分別從錯誤傳播概率、交互率和連接率三方面進(jìn)行實驗驗證。
為了對組件內(nèi)部傳播概率進(jìn)行計算,首先需要對標(biāo)準(zhǔn)屬性值進(jìn)行統(tǒng)計,以GUI組件為例,根據(jù)組件內(nèi)錯誤傾向指數(shù),結(jié)合本文方法計算出對應(yīng)組件的內(nèi)部錯誤傳播概率,如表1所示。
表1 組件錯誤傳播概率
從表中可以看出,關(guān)鍵組件3、組件5和組件6的錯誤傳播概率較大,說明組件間關(guān)聯(lián)程度較強,其中某一個隱藏的錯誤關(guān)聯(lián)類極有可能受到影響,因此提高組件的可靠與安全性非常重要。
對某個時間段軟件工作過程進(jìn)行劃分,并視為每個被劃分時間段上軟件交互行為有向圖的疊加。由于組件4中包含4種狀態(tài),因此以組件4為例,當(dāng)時間T=400s時,組件間的調(diào)用關(guān)系交互行為A4(B,C(t)),其中B={B1,B2,B3,B4},有向圖為該段時間的執(zhí)行交互行為圖,如圖3所示。
圖3 組件4交互行為圖
通過本文方法計算出組件4節(jié)點間的交互頻率約為2.88,共收集7天組件4的執(zhí)行跟蹤日志27000條,經(jīng)過計算與統(tǒng)計得出,采用本文方法的交互頻率服從泊松分布,具有較好的效果。
采用極大似然估計方法對連接率進(jìn)行計算,在不同時間片段上軟件交互行為有向圖的連接率均滿足冪律分布,通過仿真得出連接率曲線圖,如圖4所示。
圖4 連接曲線
從圖中可以看出,由于軟件中存在異常行為,隨著時間的增加,連接率逐漸降低,之后的其余時間處于穩(wěn)定狀態(tài),表明正常的程序受到錯誤的干擾后,組件功能受到影響。通過測試說明采用本文方法可以對軟件異常行為進(jìn)行有效的檢測,可以及時采取控制措施,提高網(wǎng)絡(luò)系統(tǒng)的穩(wěn)定性。
為了對軟件異常交互行為進(jìn)行檢測研究,本文對復(fù)雜網(wǎng)絡(luò)軟件運行時的交互行為進(jìn)行描述,建立軟件行為和異常行為的模型,對模型進(jìn)行深入研究。通過JAVA語言編寫的線上電子購物平臺對影響軟件異常行為的錯誤傳播概率、交互概率和連接率三類參數(shù)進(jìn)行仿真測試。實驗結(jié)果表明,本文方法不僅能夠增強模型的準(zhǔn)確性和完整性,而且還能較好地計算出各種參數(shù)的變化規(guī)律,充分驗證了算法的可行性。