崔素麗,董 東,仇 賓,孫曼曼*
(1.河北師范大學附屬民族學院,河北 石家莊 0500001;2.河北師范大學,河北 石家莊 0500002)
軟件的使用方便了人們的日常生活,由軟件質量缺陷等產生的損失也為人們的生活帶來了諸多問題[1]。尤其是網絡化軟件的產生,其具有復雜的特性,提高軟件的可靠性和安全性是該領域面臨的重要挑戰[2-4]。因此通過對網絡化軟件運行交互行為進行有效地檢測,掌握交互行為產生的規律、了解運行機理,是解決網絡化軟件可靠與安全的關鍵,其中,對網絡軟件交互行為特征進行研究更是具有重要意義。
當前,大量研究是從網絡軟件的可靠性出發,對網絡交互過程的行為進行檢測。文獻[5]基于軟件特點,提出與工程實踐相符合失效模式的可靠評估模型,對構件的運行過程、交互過程以及故障傳播過程進行了詳細的分析,通過定義各種類型構件的可靠參數與實例相結合,仿真結果表明該方法準確性較高,但故障傳播過程的可靠性有待提高。文獻[6]通過對網絡軟件的定性描述,以eCos系統作為載體進行分析,從軟件系統規模、組成單元的交互關系等不同方面對網絡模型進行特性分析,結果表明該軟件在不同粒度上均具有相似的結構特性,并且通過對軟件的本質特征和節點特性等方面的分析,該軟件檢測方法具有可配置等優勢。文獻[7]對軟件的用戶體驗進行分析,同時考慮到多線程程序開發技術在計算機硬件資源方面的應用以及軟件性能異常等方面的調試難度,結合現有的交互性能進行擴展,以Google Chrome等流行軟件作為對象,對設計的交互性能異常系統進行分析。
基于以上研究,本文將復雜網絡的有向邊連接強度通過邊權矩陣進行量化,計算出節點間不同異構路徑的鏈接強度,對軟件交互進行進行描述,并構建行為模型,對軟件異常傳播進行詳細地分析。
有向網絡和無向網絡的本質區別是網絡節點是否有方向,包含3種類型連邊,如圖1所示。正向邊由網絡起始節點a指向終止節點b,表示網絡節點的主動行為;反向邊由網絡終止節點c指向起始節點a,表示網絡節點的被動行為;互惠邊是網絡起始節點a與終止節點d間的互相指向,表示兩節點間緊密關聯。

圖1 三種有向連邊
為了對3種類型連邊進行量化,需要定義不同權重值,假設有向網絡為A(B,C),鄰接矩陣為D,那么鄰接邊權矩陣E可表示為

(1)


圖2 有向路徑示意圖
依據有向路徑的起始節點可將網絡的路徑分為正向路徑、逆向路徑、混合路徑和聯通強路徑4種類型。在網絡中不同路徑具有不同的作用,假定通過路徑中各個連邊的強度積表示路徑的總強度,那么n階路徑的連接強度可表示為

(2)


(3)
假定網絡中的兩個節點i和j間存在多條路徑,沒有直接連接,各個路徑對連邊eij的權重不同,為了對不同路徑進行區分,通過衰減參數對路徑連接強度的相似性指標進行計算,用公式可表示為

(4)
其中,J=D+αDT,當時α=0時,不需要對網絡中的反向邊進行考慮,只計算正向邊的路徑數量即可。當n→∞時,αmax便是矩陣J的最大特征值,相似性指標進一步可表示為

(5)
其中,I表示單位矩陣。通過相似性指標中的自適應參數α可以調節網絡中有向路徑節點對連接強度的主要作用程度。通過以上設計方法對網絡中不同路徑連接強度的量化,不僅能對網絡中各條路徑進行差異的區分,還可以預測出節點對連邊所指的方向。
隨著軟件復雜度的不斷增加,如何對網絡交互行為進行有效地分析是軟件領域的重要課題。行為描述是對軟件行為進行分析的前提,是把握網絡軟件運行交互行為特征的首要條件。一般情況,在軟件運行時,通過設定的監控點對軟件運行狀態進行檢測,并把獲得的監控結果與設定的狀態、行為比較,分析軟件當前的健康狀況,對軟件故障進行精準的定位。隨著交互信息量的增加,若只基于內容的描述方法對軟件行為進行描述,其實時性與檢測效率很難得到保證。為提高軟件交互行為描述的效率,采用行為追蹤方法對網絡軟件交互行為進行描述。
狀態轉移模型是從歷史日志文檔中提取出來的,主要由離線處理和在線處理兩部分。通過對日志文檔的分析,采用聚類方法創建候選狀態,根據日志文檔中特殊的關鍵詞將信息設置到狀態轉移模型中,并將日志文檔劃分為多個子樣本空間,這樣可大大簡化日志文檔的聚類。通常用海明距離比較子樣本空間的日志記錄,海明距離公式可表示為

(6)
其中,m表示相同單詞個數;Wsame_i表示相同單詞;scha_1和scha_2表示相同單詞構成的字符串。如果子樣本空間日志記錄xm和ym之間的海明距離小于相似度閾值,那么可以把xm和ym聚類成候選狀態Scan_m;如果子樣本空間日志記錄xm和ym之間的海明距離大于相似度閾值,那么可以把xm和ym設置成新的狀態Scan_m,(k+1)。軟件狀態從日志文檔中獲得后,通過狀態轉移模型模擬網絡軟件的工作過程,且所有狀態均產生唯一的跟蹤軌跡。
若軟件具體工作轉換時間ttra和日志文檔已知,可將定量跟蹤問題轉換為軟件具體工作正確匹配軌跡的概率問題,對于Ms+1個狀態,跟蹤排列矢量集合可表示為

(7)
其中,Varr_k表示排列矢量;TRA表示軟件具體工作的跟蹤;Vsta_k表示跟蹤時間戳的矢量。在轉換時間下,將軟件具體工作跟蹤簡化為最大權重二分圖,對于時間戳矢量(Vsta_0,Vsta_1),最大相似規則可簡化為

(8)


(9)
其中,W(i,j)表示二分圖每條邊的權值。
基于上述分析,從日志文檔中提取出軟件具體工作轉移模型,用來描述應用軟件的流轉過程,從而實現對交互過程的行為追蹤。對于丟失標記的行為跟蹤,采用狀態劃分算法將狀態轉移模型劃分成多個二分圖系統,計算出各個子系統的網絡最大流,將匹配的連線連接起來得出跟蹤序列,完成對軟件行為的標識工作。
將二分圖的匹配問題轉化為網絡最大流處理問題,需要在二分圖中分別增加源點ps和匯點pt,然后將源點和匯點通過有向弧與各個節點進行連接,并將全部弧的容量定義為1。當網絡流量最大時,若點(xj,yj)的流量為1,則說明xj和yj最為匹配。
假設二分圖子系統中行為軌跡的結束與發生時間分別為tstop和tstart,對應的節點分別為nstop和nstart,對應的節點狀態集合分別為Nstop={nstop_i|i=1,m}和Nstart={nstart_i|i=1,m},m表示狀態集合中行為跟蹤軌跡的數量。對于任意軟件具體工作而言,若時間在轉移的限定時間內,離開狀態與到達狀態先后出現,說明這兩個狀態所產生的軌跡與軟件的某一具體工作是匹配的,通過有向弧將兩個節點連接,可以得出連接弧的集合,表示為:

(10)
綜上所述,根據狀態之間的轉移時間,按照指數分布與正態分布進行計算,可以得出描述網絡跟蹤軌跡匹配的網絡流程圖。
根據軟件異常行為在不同情況的交互形式,構建描述異常行為交互過程的模型。復雜的系統不能對其內部的運行過程進行深入研究,只能對行為模型進行抽取描述,在網絡軟件交互行為模型的基礎上,構建網絡軟件系統錯誤模型,將軟件的執行過程視為組件的消息傳輸、組件關聯等函數的調用,且均通過有向邊表示。在模型的建立過程中對影響軟件異常行為的3種參數進行分析,包含組件的內部錯誤率、連接率和交互頻率。
組件內部錯誤率表示為了實現組件功能,節點中所隱含的錯誤概率。由于組件內部錯誤不一定導致其它軟件產生錯誤,因此在模型中引入錯誤傳播概率。依據錯誤概率與傳播概率的相互獨立性,當某個組件i的錯誤傳播概率小于1時,說明系統可靠性較強。組件內部錯誤概率是一個靜態估計值,公式為

(11)
其中,derr表示錯誤密度;ri表示組件的代碼行數。組件內部錯誤傳播率與組件內部類與類之間具有關聯性。通過不斷的研究發現,CBO中包含隱藏錯誤類的所有類,對錯誤傳播率起到主要的影響;WMC中包含影響錯誤傳播率的內聚性;RFC中包含影響外部調用函數的基數。因此提出類的錯誤傾向指數對組件的內部錯誤傳播率進行描述,公式為

(12)


(13)
其中,Ctot表示組件i包含的類總數量。
連接率是按照程序邏輯隨時間變化的動態變量。將軟件的工作過程視為可隨時間變化的網絡,可通過函數調用關系反映出連接率。在網絡軟件中,一個錯誤節點可以影響多個正常節點,與此同時,一個正常的網絡節點也有可能受多個錯誤節點影響。假定有向圖為A(B,C(t)),連接率表示為

(14)
其中,|C(t)|表示時間t時軟件交互的有向圖中存在的邊數。|B|表示節點數目。若連接率越大,節點間連接的強度越高,說明軟件異常行為傳播的可能性較大。
交互頻率表示在某個時間段內兩個節點被調用的次數,當交互次數達到最大值時,可能導致調用該節點時出現錯誤。網絡軟件的執行頻繁程度與重要性也是通過交互頻率體現。交互過程有向圖A(B,C(t))節點間的連邊隨著時間發生變化,整個網絡的交互頻率表示為

(15)
其中,dpoi表示節點的度;pint_ij表示節點i和j的交互頻率。
為了驗證關于有向復雜網絡軟件異常交互行為檢測的有效性,使用JAVA語言開發的電子購物平臺,對異常行為傳播模型進行驗證。用戶進入購物平臺,與確認組件和系統組件進行交互,然后進行選購、下單等操作,系統通過數據庫的數據,對用戶的請求進行管理。分別從錯誤傳播概率、交互率和連接率三方面進行實驗驗證。
為了對組件內部傳播概率進行計算,首先需要對標準屬性值進行統計,以GUI組件為例,根據組件內錯誤傾向指數,結合本文方法計算出對應組件的內部錯誤傳播概率,如表1所示。

表1 組件錯誤傳播概率
從表中可以看出,關鍵組件3、組件5和組件6的錯誤傳播概率較大,說明組件間關聯程度較強,其中某一個隱藏的錯誤關聯類極有可能受到影響,因此提高組件的可靠與安全性非常重要。
對某個時間段軟件工作過程進行劃分,并視為每個被劃分時間段上軟件交互行為有向圖的疊加。由于組件4中包含4種狀態,因此以組件4為例,當時間T=400s時,組件間的調用關系交互行為A4(B,C(t)),其中B={B1,B2,B3,B4},有向圖為該段時間的執行交互行為圖,如圖3所示。

圖3 組件4交互行為圖
通過本文方法計算出組件4節點間的交互頻率約為2.88,共收集7天組件4的執行跟蹤日志27000條,經過計算與統計得出,采用本文方法的交互頻率服從泊松分布,具有較好的效果。
采用極大似然估計方法對連接率進行計算,在不同時間片段上軟件交互行為有向圖的連接率均滿足冪律分布,通過仿真得出連接率曲線圖,如圖4所示。

圖4 連接曲線
從圖中可以看出,由于軟件中存在異常行為,隨著時間的增加,連接率逐漸降低,之后的其余時間處于穩定狀態,表明正常的程序受到錯誤的干擾后,組件功能受到影響。通過測試說明采用本文方法可以對軟件異常行為進行有效的檢測,可以及時采取控制措施,提高網絡系統的穩定性。
為了對軟件異常交互行為進行檢測研究,本文對復雜網絡軟件運行時的交互行為進行描述,建立軟件行為和異常行為的模型,對模型進行深入研究。通過JAVA語言編寫的線上電子購物平臺對影響軟件異常行為的錯誤傳播概率、交互概率和連接率三類參數進行仿真測試。實驗結果表明,本文方法不僅能夠增強模型的準確性和完整性,而且還能較好地計算出各種參數的變化規律,充分驗證了算法的可行性。