• 沒有找到結果。

活可達圖模組分析處理作業

第三章 規範測試程式架構設計

3.4 活可達圖模組分析處理作業

活可達圖模組分析是爲了確保系統在進行狀態轉移時,不會落入鎖死區域,用以保證 每個狀態都能經過一連串的觸發後回到原始狀態[10, 35]。因此程式在讀入可達圖資料後,

須先將狀態分類,找出鎖死區域的狀態,並給予刪除之。因為下一階段運輸模式分析中,

需要分類出系統狀態的供應點與需求點。對鎖死狀態而言,具有進入鎖死狀態的邊界,卻 沒有由鎖死狀態出發的邊界,若執行運輸模式分析前未進行鎖死分析,則鎖死狀態也會被 歸類為供應點(bn > 0),然而鎖死狀態並無邊界能觸發到其他狀態,將導致程式無法得出歐 依勒路徑。

活可達圖模組分析處理作業如圖3.10 所示。首先由讀取檔案處理作業中輸入直接路徑 成本資訊,進行路徑成本計算處理作業,由於有些狀態間並無直接轉移點轉換,而是需要 經由多個轉移點轉換連結,狀態轉移路徑成本分析的演算法將於第 3.4.1 節詳細描述。由 路徑成本計算處理作業輸出所有狀態路徑成本資訊,進行鎖死狀態篩選處理作業,篩選出 路徑成本為無限大的路徑,標註為鎖死區域狀態,並於螢幕中顯示出來。

圖3.10 活可達圖模組分析處理作業子流程 IDEF0 表達圖

3.4.1 路徑成本計算處理作業

本研究進行狀態轉移路徑成本分析的演算法如下所示:

1. 狀態若能經過一個觸發至另一狀態,則將連接兩狀態的邊界路徑成本設為 1。

2. 兩狀態間若無法透過ㄧ個觸發轉移,則先將連接兩狀態路徑成本設為無限大。

3. 若狀態(i)至狀態(j)路徑成本為 1,找尋可由狀態(j)觸發到的新狀態,將狀態(i)至(j) 的路徑成本與狀態(j)至新狀態的路徑成本相加。若狀態(i)至新狀態的路徑成本低於舊的路 徑成本,則取代之。圖3.11 為程式設計路徑成本計算流程圖。

4. 重複步驟三,直到路徑成本不在變動為止。

5. 若兩狀態路徑成本依舊為無限大,則可判定這兩狀態的出發狀態為鎖死狀態。

29

圖3.11 路徑成本計算流程圖 路徑成本[i][j]小

於無限大

路 徑 成 本[j][k]

小於無限大

總和(sum)=[i][j]+ [j][k]

路 徑 成 本[i][k]

大於sum

總和(sum)=[i][j]+ [j][k]

否 是

j++

j 小於總狀態

i++

i 小於總狀態 k++

k 小於總狀態

是 否

是 否

否 執行次數++

執行次數小於 (總狀態數+20)/10 是

狀態路徑成本 否 起始

結束

30

鎖死狀態演算法進行方式如下所示。由圖 3.6(a)液體加熱系統斐氏圖模型的狀態轉移 可達圖如第3.3 節圖 3.8 所示,狀態以大寫 S 表示,由圖上可直接觀測出 S1 至 S2 有直接 觸發路徑,因此將S12 路徑成本設為 1,以此類推,S2S3、S3S4、S3S9、S4S5、S4S7、S9S7、

S9S10、S5S6、S7S6、S7S8、S10S8、S6S1、S8S1 路徑成本初始狀態皆設為 1,其餘的狀

31

執行步驟三,先找出路徑成本不為無限大S1S2 = 1,再找到 S2S3 = 1,可推出新的路 徑成本S1S3 = S1S2 + S2S1 = 2,小於原先路徑成本 S1S3 = 1,取代原本的路徑成本。往下 推演,S2S3 = 1,由 S3 可觸發的路徑為 S3S4 = 1,由此可推出新的路徑成本 S2S4 = S2S3 + S3S4 = 2,由 S2 至 S4 的新的路徑成本 2 低於原本預設路徑成本 500,因此 S2S4 路徑成本 由 2 取代之。同理可推得其他狀態轉移路徑成本,表 3.4 為第一次執行演算法步驟三所推 得的狀態轉移路徑成本。重複執行演算法步驟 4,直到所有的成本路徑表不在改變為止,

可得到所有狀態轉移路徑成本如表3.5 所顯示。

由表3.5 路徑成本表可得到所有狀態轉移須觸發的最短成本路徑,如 S1 需要經過最少 6 次觸發才能再次回到 S1,S1 需要經過 2 次觸發後才能到 S3 的狀態。沒有狀態路徑成本 為500 的路徑,代表此液體加熱系統無鎖死狀態,任何狀態都能經一定的轉移至別的狀態。

液體加熱系統可達圖由程式算出路徑成本如圖 3.12(a)所示,所有成本皆小於 500,沒 有成本無限大的路徑,因此液體加熱系統範例無鎖死狀態,更可由圖3.12(b)可看到程式顯 示,此範例共有10 個狀態,鎖死狀態為 0 個。

(a) 各路徑成本推導 (b) 鎖死狀態顯示 圖3.12 通用程式路徑成本分析

32

相關文件