林 紅 楊瀚程
(電子科技大學 成都 611731)
軟件可靠性分析是保證軟件可靠性的重要步驟,是軟件可靠性工程一個重要的階段。其中,軟件故障樹分析[1]方法有著巨大的工程適用性和強大的生命力。故障樹可看做系統中故障的傳播關系,通過圖形表示和數學描述,通過演繹方式找出導致系統故障原因,求出系統薄弱環節,指導可靠性指標分配和可靠性設計。故障樹不僅能定性分析軟件系統可靠性,還能定量分析軟件系統可靠性。故障樹的分析方法主要有上行法和下行法。但對于大型復雜的故障樹采用上行和下行的方法顯得太過繁瑣。
Petri 網是C.A.Petri 于1962 年在他的博士論文中首次提出的[2]。Petri 網能夠刻畫系統的結構,且描述系統的動態行為,有直觀的圖形表示,同時能夠引入多種數學方法進行分析。經過幾十年的發展,Petri 網理論已經非常成熟,并且在計算機科學技術、自動化科學技術、機械設計與制造以及其他科學領域得到廣泛的應用。Petri 網具有豐富的圖形化和數學化分析方法,主要有可達標識圖與可覆蓋樹,關聯矩陣與狀態方程,Petri 網語言和Petri 網進程,這些方法都建立在堅實的數學基礎上,各有其使用方式。本文提出了通過Petri 網關聯矩陣法求解軟件系統故障樹最小割集的算法,并通過我院研制的ADS-B 系統中最重要的工作信息解碼分析進行了驗證。
故障樹以圖的形式表示事件之間的邏輯關系,它由規定的事件,邏輯門和其他符號描述系統中事件的因果關系[3]。邏輯門的輸入為因,輸出為果。位于故障樹最底層事件為底事件,位于故障樹頂端事件為頂事件,中間事件是除頂事件和底事件以外的事件。使用邏輯門,如與門、或門、表決門,非門等描述事件的因果關系。故障樹首先確定一個軟件中的故障,然后在一定環境和條件下分析軟件,找出不希望發生事件發生的確切方式,即原因。尋找導致系統故障的全部故障模式是故障樹分析的主要任務。故障模式即系統的薄弱環節,也即系統的割集,加強薄弱環節的設計可以提高軟件可靠性。如果割集中任一底事件不發生則頂事件不發生,這樣的割集稱為最小割集。求解最小割集對降低復雜系統潛在事故的風險具有重大的意義。
與一般系統模型類似,Petri 網有兩類元素構成:表狀態的元素和表變遷的元素。Petri 網采用S-元代表狀態元素,T-元代表變遷元素[5]。S-元和T-元同等對待,是分體的,兩者相互依賴。T-元引起S-元資源的流動,流關系用于聯系這兩者之間的關系,用F 表示。Petri 網的系統行為表現為資源的流動。在圖形表示中,用小圓圈表示一個S-元,用小矩形表示一個T-元,用有向邊表示S-元和T-元的關系。Petri 網具有可達性、有界性、安全性,可覆蓋性、可逆性以及守恒性等特性。這些優良的數學特性可以較好的描述復雜系統中常見的同步、并發、分布、沖突、資源共享等現象,同時有著豐富的分析方法。其中,關關聯矩陣分析法適合用于大規模的復雜性較高的Petri 網模型。關聯矩陣法充分利用線性代數方式解決網的分析,并易于使用計算機仿真分析。
對于軟件的故障樹模型,很容易轉化為Petri網[4]。故障樹的與門采用一個變遷代替,或門采用相應的多個變遷表示。對應關系如圖1 所示。然后使用Petri 網分析方法分析Petri 的狀態,由相應關系求解故障樹的參數,例如最小割集[5]。故障樹中通常出現重復事件,可使用Petri 網建模方式合并相同事件,縮小模型規模。
算法具體步驟如下:
A.畫出軟件系統各事件間的邏輯關系,構成故障樹。分析軟件系統中最重要的故障,作為頂事件,逐層細化分析造成頂事件的原因。

圖1 故障樹表示與Petri 網表示對應關系
B.求出故障樹對應的Petri 網。對已形成的故障樹,與門采用一個變遷表示,或門采用多個變遷表示,事件用庫所表示,添加流關系,形成Petri 網。對故障樹的重復事件,Petri 網中使用一個庫所表示。
C.求解關聯矩陣。文獻[2]詳細描述了求解關聯矩陣的算法,這里不再贅述。
D.由關聯矩陣求解系統最小割集,步驟如下:
a.找出關聯矩陣中只有“1”和“0”,沒有“-1”的行,則此行代表的庫所只有輸入庫所,沒有輸出庫所,則此行為對應事件頂庫所。
b.按次序尋找頂庫所對應行的“1”,并按列尋找到“-1”,此“-1”代表此行對應事件為頂庫所一個輸入事件,若有多個“-1”,說明同一變遷有多個輸入庫所,為“與”關系。
c.由(b)中找到的“-1”按行尋找“1”,若存在“1”說明是中間庫所。繼續按(b)的步驟循環查找,直到所在行沒有“1”為止。所在行沒有“1”,代表該行對應庫所為底庫所。若此行有多個“1”,說明對應的庫所對應多個變遷,為“或”關系。
d.按步驟(b)、步驟(c)繼續查找,直到查找到最底層庫所。
e.按照上面的“與”“或”關系,將底庫所展開,得到所有割集。
f.采用幾何化簡方法化簡割集,得到最小割集。
我院研制的ADS-B 地面系統實現了ADS-B消息的接收與解碼,并將解碼后的消息送入主控。其中ADS-B 消息的解碼是本系統的核心單元。下面將使用這個任務驗證本文的算法,解碼采用協議為RTCA DO-260A。
該任務的主要功能為由特定的時間條件,或中斷條件接受FPGA 從外部接收的數據,對接收按飛行器分類處理,再對消息按消息類型分類,判斷是否是經緯度消息,速度消息等,按照一定的解碼協議解碼,解碼后由一定的條件發送出去。
由系統分析,故障樹形式[7]如圖2 所示。根據以上算法,求出對應的Petri 網如圖3 所示。求出關聯矩陣如公式(1)所示。


圖2 解碼ADS-B 消息故障樹表示

圖3 對應的Petri 網表示
以下由關聯矩陣求故障樹最小割集:
a.搜索只有“1”和“0”沒有“-1”的行,此例中為17 行,得

b.對行16,15,14 分別找為1 的列,重復上述步驟,得到

c.重復上述步驟,依次向下分解,得到

將所有底庫所求出后,將以上算式逐級帶入,并整理后得:

因此,求出故障樹的最小割集為{P13},{P12},{P10},{P9},{P6,P5},{P3},{P4},{P2,P1}。
通過以上實例可以看到,基于Petri 網關聯矩陣法能夠有效求解故障樹最小割集,算法清晰,易于計算機實現。同時適用于大型且結構比較復雜的系統。
故障樹轉換為Petri 網能夠有效的縮小軟件故障樹規模。故障樹與Petri 網的結合有效的利用了故障樹描述系統故障的能力以及Petri 網豐富的化簡和分析方法。文中使用Petri 網的關聯矩陣法求解故障樹的最小割集能夠較好應對大型復雜的系統,算法易實現。
[1]孫志安,裴曉黎,宋昕.軟件可靠性工程[M].北京:北京航空航天大學出版社,2009.
[2]吳哲輝.Petri 網導論[M].北京:機械工業出版社,2006.
[3]程鵬,雋吉昌,龔潔.基于故障樹的軟件分析技術(SFTA) 淺析[J].中國新技術新產品,2009,21:35.
[4]秦興秋,邢昌風.一種基于Petri 網模型求解故障樹最小割集的算法[J].計算機應用,2004,6,24:209-306.
[5]嚴傳龍.組合導航系統軟件可靠性分析與研究[D].哈爾濱:哈爾濱工程大學,2008.