專利名稱:一種層次式時間自動機平展化算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于軟件測試和驗證領(lǐng)域,特別涉及一種針對層次式時間自動機模型的平展算法,即將層次式時間自動機劃歸為傳統(tǒng)的時間自動機模型,主要用于解決現(xiàn)有軟件模型檢測工具不能直接檢驗層次式自動機模型正確性問題。
背景技術(shù):
模型檢測技術(shù)是形式化驗證軟件正確性的重要方法之一,該方法的主要輸入部分包括軟件系統(tǒng)模型和規(guī)約,通過工具軟件對系統(tǒng)的狀態(tài)進行窮盡搜索,從而可以驗證所設(shè)計的系統(tǒng)模型是否滿足規(guī)約要求,當(dāng)發(fā)現(xiàn)系統(tǒng)存在不滿足規(guī)約的狀態(tài)時,能夠給出從初始狀態(tài)到達該非法狀態(tài)的路徑,從而便于分析。由于模型檢測工具具備自動化程度高、覆蓋面廣的特點,能夠檢測出傳統(tǒng)的軟件測試方法難以發(fā)現(xiàn)的錯誤,因此該技術(shù)廣泛應(yīng)用于對于軟件可靠性要求較高的領(lǐng)域,例如航空、航天等。 系統(tǒng)模型和規(guī)約是進行模型檢測的要素,形式化的系統(tǒng)模型通常是有窮狀態(tài)遷移系統(tǒng),這在實踐中往往被轉(zhuǎn)換成不同的有窮狀態(tài)自動機,這樣,現(xiàn)實中的問題被轉(zhuǎn)換成了自動機所描述的語言之間的包含問題,而這個問題在計算機科學(xué)中已經(jīng)被證明是可判定的,因此自動機是支持模型檢測的重要的工具。層次式時間自動機是在經(jīng)典的時間自動機基礎(chǔ)之上,為描述現(xiàn)實世界中客觀對象的狀態(tài)包含關(guān)系所擴充的一種自動機模型,其擴展之處在于增添了一個時鐘,且該時鐘只能被重置為0,在基于模型檢測的反應(yīng)式軟件系統(tǒng)的形式化驗證過程中有著重要的應(yīng)用,也是諸多建模工具例如實時UML、狀態(tài)圖的理論基礎(chǔ)。層次式時間自動機可直接對復(fù)雜狀態(tài)(如包含多個區(qū)域的復(fù)合狀態(tài))進行建模,應(yīng)用精化函數(shù)描述狀態(tài)間的層次關(guān)系。該自動機模型在建模直觀性,表達能力等方面有著明顯的優(yōu)勢。
發(fā)明內(nèi)容
本發(fā)明的目的,在于提供一種層次式時間自動機平展化算法,其可使得平展后的結(jié)果能夠作為模型檢測工具的輸入,從而進行自動化的驗證。為了后續(xù)描述的方便,同時為了區(qū)別傳統(tǒng)時間自動機與層次式時間自動機模型,我們稱前一種模型為順序時間自動機。首先對順序時間自動機和層次式時間自動機分別進行定義,順序時間自動機是一個八元組〈S,S0, O,C,Inv, U , E , T>,其中,S是狀態(tài)集合,s是S中的元素,Stl是起始狀態(tài),O是狀態(tài)的類型函數(shù),該函數(shù)定義域是狀態(tài),值域是狀態(tài)的類型,其狀態(tài)類型包括原子類型、復(fù)合類型、歷史類型以及初入類型;C是該自動機時鐘集合,Inv指該自動機的不變量集合,u是狀態(tài)的歷史標(biāo)記函數(shù),E是狀態(tài)遷移觸發(fā)動作集合,T是狀態(tài)轉(zhuǎn)移集合,是SX E XCCX2eXS的子集,其中CC是該自動機的時鐘約束,t是T中的元素。根據(jù)順序時間自動機模型,我們可以定義層次式時間自動機M如下〈F,E,P >,其中,F(xiàn)是順序時間自動機模型集合,但要求任兩個順序時間自動機的狀態(tài)集合是不相交的,E是觸發(fā)事件集合,P是精化函數(shù),將一個狀態(tài)映射為順序時間自動機集合,由上可知,該函數(shù)針對復(fù)合狀態(tài)有定義,針對原子狀態(tài),該函數(shù)返回空集,層次式時間自動機中的層次主要由該精化函數(shù)進行描述;此外我們還需要定義源限制函數(shù)sr和目標(biāo)限制函數(shù)tr,這兩類函數(shù)的定義域都是轉(zhuǎn)移,其中源限制函數(shù)主要用于得到轉(zhuǎn)移的源狀態(tài)集合,而目標(biāo)限制函數(shù)主要用于得到轉(zhuǎn)移的目標(biāo)狀態(tài)集合。為了達成上述目的,本發(fā)明的解決方案是一種層次式時間自動機平展化算法,包括如下步驟(I)針對層次式時間自動機中的每一個非根順序時間自動機,相應(yīng)地添加inactive 狀態(tài);(2)針對每個非根節(jié)點順序時間自動機,添加一個特殊狀態(tài),并從源于復(fù)合狀態(tài)的轉(zhuǎn)移的相應(yīng)的源限制函數(shù)值中的每個狀態(tài)添加相應(yīng)的轉(zhuǎn)移到該特殊狀態(tài),并將該轉(zhuǎn)移對應(yīng)的事件擴充為廣播通道類型,并將上面到達新狀態(tài)的轉(zhuǎn)移事件擴充為該廣播通道類型的 接受類型;(3)從步驟(2)每個順序時間自動機中新添加的特殊狀態(tài)出發(fā)引出新的轉(zhuǎn)移,到達步驟(I)中所添加的對應(yīng)的順序時間自動機中的inactive狀態(tài)。上述步驟(I)與步驟(2)之間,還包括如下步驟(a)遍歷層次式時間自動機中的每一個復(fù)合狀態(tài),判斷其是否包含歷史信息,如果不包含,轉(zhuǎn)步驟(bl),如果包含,則轉(zhuǎn)步驟(Cl);(bl)針對每一個進入無歷史信息的復(fù)合狀態(tài)的轉(zhuǎn)移,從inactive狀態(tài)添加這些復(fù)合狀態(tài)內(nèi)部相應(yīng)的默認初入狀態(tài),觸發(fā)事件同于t的觸發(fā)事件;如果復(fù)合狀態(tài)本身是初始狀態(tài),那么該狀態(tài)中的默認初入狀態(tài)被標(biāo)記為初入狀態(tài),否則將步驟(I)添加的inactive狀態(tài)標(biāo)記為初入狀態(tài);(b2)為同步各個順序自動機之間的并行執(zhí)行,將進入復(fù)合狀態(tài)的每一個轉(zhuǎn)移事件擴充為廣播通道的發(fā)出類型,而在其相應(yīng)的子狀態(tài)順序時間自動機中,把從inactive狀態(tài)到默認初入狀態(tài)的事件擴充標(biāo)記為該廣播通道類型的接受類型;轉(zhuǎn)步驟(2);(Cl)如果復(fù)合狀態(tài)中有歷史信息,針對其中的每一個子狀態(tài)添加一個布爾變量,并將其中初入狀態(tài)的變量初始化為真值,其余的賦予假值,當(dāng)內(nèi)部發(fā)生狀態(tài)轉(zhuǎn)移的時候,相應(yīng)的布爾變量值會被重置,使得最近一次被訪問的狀態(tài)對應(yīng)的變量為真值;(c2)針對復(fù)合狀態(tài)的每一個子順序自動機,添加一個選擇狀態(tài),從該選擇狀態(tài)出發(fā)引出到達該子順序自動機中的每一個狀態(tài)的轉(zhuǎn)移,轉(zhuǎn)移的衛(wèi)式條件為該狀態(tài)對應(yīng)的布爾變量值為真;如果復(fù)合狀態(tài)的歷史類型為淺歷史類型,那么步驟(Cl)、(c2)的操作止于復(fù)合狀態(tài)的直接子順序自動機層,如果復(fù)合狀態(tài)的歷史類型為深歷史類型,那么步驟(Cl)、(c2)的操作遞歸至最低一層。由于現(xiàn)有的工具無法直接對層次式時間自動機進行驗證,采用上述方案后,本發(fā)明可以使得對這種轉(zhuǎn)換后的等價順序時間自動機集合進行模型檢測工作,從而可以自動地發(fā)現(xiàn)模型設(shè)計過程中存在的邏輯問題。
圖I是本發(fā)明的流程圖;圖2是本發(fā)明具體實施例中層次式時間自動機的圖形化表示圖3是圖2平展后的順序時間自動機集合圖形化表示圖。
具體實施例方式以下將結(jié)合附圖,對本發(fā)明的技術(shù)方案進行詳細說明。
配合圖I所示,本發(fā)明提供一種層次式時間自動機平展化算法,包括如下步驟( I)針對層次式時間自動機M中的每一個順序時間自動機F,將之視作一個獨立的時間自動機,針對每一個不是根自動機(root automaton)的F,相應(yīng)地添加一個狀態(tài),將之標(biāo)記為inactive ;(2)遍歷層次式時間自動機M中的每一個復(fù)合狀態(tài)S,判斷其是否包含歷史信息,如果不包含,轉(zhuǎn)步驟(3),如果包含,則轉(zhuǎn)步驟(5);(3)針對每一個進入無歷史信息的復(fù)合狀態(tài)s的轉(zhuǎn)移t,從inactive狀態(tài)添加這些復(fù)合狀態(tài)內(nèi)部相應(yīng)的默認初入狀態(tài),觸發(fā)事件同于轉(zhuǎn)移t對應(yīng)的觸發(fā)事件;如果復(fù)合狀態(tài)s本身是初始狀態(tài),那么該狀態(tài)中的默認初入狀態(tài)被標(biāo)記為初入狀態(tài),否則將步驟(I)添加的inactive狀態(tài)標(biāo)記為初入狀態(tài);(4)為同步各個順序自動機之間的并行執(zhí)行,將進入復(fù)合狀態(tài)s的每一個轉(zhuǎn)移事件擴充為廣播通道(broadcast channel)的發(fā)出類型(用!標(biāo)記),而在其相應(yīng)的子狀態(tài)順序時間自動機中,把從inactive狀態(tài)到默認初入狀態(tài)的事件擴充標(biāo)記為該廣播通道類型的接受類型(用?標(biāo)記);轉(zhuǎn)步驟(7);(5)如果復(fù)合狀態(tài)s中有歷史信息,針對其中的每一個子狀態(tài)添加一個布爾變量,并將其中初入狀態(tài)的變量初始化為真值,其余的賦予假值,當(dāng)內(nèi)部發(fā)生狀態(tài)轉(zhuǎn)移的時候,相應(yīng)的布爾變量值會被重置,使得最近一次被訪問的狀態(tài)對應(yīng)的變量為真值;(6)針對s的每一個子順序自動機,添加一個選擇狀態(tài),從該選擇狀態(tài)出發(fā)引出到達該子順序自動機中的每一個狀態(tài)的轉(zhuǎn)移,轉(zhuǎn)移的衛(wèi)式(guards)條件為該狀態(tài)對應(yīng)的布爾變量值為真;如果復(fù)合狀態(tài)s的歷史類型為淺歷史類型,那么步驟(5)、(6)的操作止于s的直接子順序自動機層,如果s的歷史類型為深歷史類型,那么將原s更新為s的子復(fù)合狀態(tài),步驟(5)、(6)的操作遞歸至最低一層;(7)針對每個非根節(jié)點順序時間自動機,添加一個特殊狀態(tài),并從源于復(fù)合狀態(tài)的轉(zhuǎn)移的相應(yīng)的源限制函數(shù)值中的每個狀態(tài)添加相應(yīng)的轉(zhuǎn)移到該特殊狀態(tài),并將該轉(zhuǎn)移對應(yīng)的事件擴充為廣播通道類型(broadcast channel),并將上面到達新狀態(tài)的轉(zhuǎn)移事件擴充為該廣播通道類型的接受類型;(8)從步驟(7)每個順序時間自動機中新添加的特殊狀態(tài)出發(fā)引出新的轉(zhuǎn)移,到達步驟(I)中所添加的對應(yīng)的順序時間自動機中的inactive狀態(tài)。下面結(jié)合經(jīng)典時間自動機仿真驗證工具UPPAAL,來詳細介紹該發(fā)明的工作方式,該算法輸入為層次式時間自動機,輸出為等價的可并行執(zhí)行的順序時間自動機集合。輸入層次式時間自動機如圖2所示,由F1-F6順序時間自動機組成,其中Fl為根自動機,S12為復(fù)合狀態(tài),P (S12)為{F2,F(xiàn)3,F(xiàn)4},其中F3中的S31為復(fù)合歷史狀態(tài),S卩y (S31)為de印(深歷史狀態(tài)),而P (S31)為{F5,F(xiàn)6},時鐘變量為t,位于狀態(tài)中的表達式為時鐘約束,位于轉(zhuǎn)移位置的賦值語句為時鐘重置動作。根據(jù)步驟(1),將F1-F6轉(zhuǎn)化為六個獨立的時間自動機,由于Fl是根自動機,在F2-F6每個自動機中相應(yīng)地添加一個狀態(tài),將之標(biāo)記為inactive ;根據(jù)步驟(3),針對每一個進入非歷史復(fù)合狀態(tài)S12的轉(zhuǎn)移事件t,在該例中為el,從其子自動機中的inactive狀態(tài)添加到這些復(fù)合狀態(tài)內(nèi)部相應(yīng)的默認初入狀態(tài)(F2-F4),觸發(fā)事件同于t的觸發(fā)事件。由于復(fù)合狀態(tài)S12本身不是初始狀態(tài),在上步驟添加的inactive狀態(tài)標(biāo)記為初入狀態(tài);根據(jù)步驟(4),需要同步各類自動機之間的并行執(zhí)行,因此將進入S12的轉(zhuǎn)移事件擴充為廣播通道發(fā)出類型(由!標(biāo)識),在各子自動機中從inactive狀態(tài)出發(fā)的轉(zhuǎn)移擴充為該廣播通道的接受類型(由?標(biāo)識);
遍歷該層次式時間自動機,查找其他復(fù)合狀態(tài),重復(fù)步驟(I)- (4),在本例中,已沒有非復(fù)合歷史狀態(tài)。由于S31為歷史狀態(tài),根據(jù)步驟(5),針對其子自動機F5、F6,其中的每一個子狀態(tài)(S51,S52,S61,S62)添加一個布爾變量,用來記錄歷史信息。初入狀態(tài)的變量初始化為真值,其余的變量賦予假值,內(nèi)部的轉(zhuǎn)移事件需要附加一個布爾變量重置動作,使得最近一次被訪問的狀態(tài)對應(yīng)的變量為真值。根據(jù)步驟(6),針對S31的每一個子順序自動機F5、F6,添加一個選擇狀態(tài),從該選擇狀態(tài)出發(fā)引出到達該子順序自動機中的每一個狀態(tài)(S51,S52,S61,S62)的轉(zhuǎn)移,轉(zhuǎn)移的衛(wèi)式(guards)條件為該狀態(tài)對應(yīng)的布爾變量值為真。由于S31的歷史類型為深歷史類型,4(a), 4(b)步驟的操作遞歸至S31的最低一層,由于S31只有一層,所以該步于此終止。根據(jù)步驟(7),針對每個非根節(jié)點順序時間自動機F2-F6,添加一個特殊狀態(tài),并從源于復(fù)合狀態(tài)的轉(zhuǎn)移的相應(yīng)的源限制函數(shù)值中的每個狀態(tài)添加相應(yīng)的轉(zhuǎn)移到該特殊狀態(tài),并將該轉(zhuǎn)移對應(yīng)的事件擴充為廣播通道的發(fā)出類型(用!標(biāo)記),并將子自動機中添加相應(yīng)到達新狀態(tài)的轉(zhuǎn)移事件擴充為該廣播通道的接受類型(用?標(biāo)記),由于該狀態(tài)只是起到一個全局會合的作用,我們應(yīng)用UPPAAL中的瞬時狀態(tài)類型對之進行標(biāo)記,表示到達該狀態(tài)后馬上轉(zhuǎn)移到它的下面的狀態(tài),時鐘不在此計時。根據(jù)步驟(8),從步驟(7)中每個順序時間自動機中新添加的瞬時狀態(tài)出發(fā)引出新的轉(zhuǎn)移,到達步驟(I)中所添加的對應(yīng)的順序時間自動機中的inactive狀態(tài)。圖3即為該實例對應(yīng)的平展化算法之后的順序自動機集合。下附本發(fā)明實施例所采用的算法。算法I.產(chǎn)生順序時間自動機基本元素(對應(yīng)前述步驟(I) - (4 輸入M :層次時間自動機模型輸出T :順序時間自動機集合開始
權(quán)利要求
1.一種層次式時間自動機平展化算法,其特征在于包括如下步驟 (1)針對層次式時間自動機中的每一個非根順序時間自動機,相應(yīng)地添加inactive狀態(tài); (2)針對每個非根節(jié)點順序時間自動機,添加一個特殊狀態(tài),并從源于復(fù)合狀態(tài)的轉(zhuǎn)移的相應(yīng)的源限制函數(shù)值中的每個狀態(tài)添加相應(yīng)的轉(zhuǎn)移到該特殊狀態(tài),并將該轉(zhuǎn)移對應(yīng)的事件擴充為廣播通道類型,并將上面到達新狀態(tài)的轉(zhuǎn)移事件擴充為該廣播通道類型的接受類型; (3)從步驟(2)每個順序時間自動機中新添加的特殊狀態(tài)出發(fā)引出新的轉(zhuǎn)移,到達步驟(I)中所添加的對應(yīng)的順序時間自動機中的inactive狀態(tài)。
2.如權(quán)利要求I所述的一種層次式時間自動機平展化算法,其特征在于所述步驟(I)與步驟(2)之間,還包括如下步驟 (a)遍歷層次式時間自動機中的每一個復(fù)合狀態(tài),判斷其是否包含歷史信息,如果不包含,轉(zhuǎn)步驟(bl),如果包含,則轉(zhuǎn)步驟(Cl); (bl)針對每一個進入無歷史信息的復(fù)合狀態(tài)的轉(zhuǎn)移,從inactive狀態(tài)添加這些復(fù)合狀態(tài)內(nèi)部相應(yīng)的默認初入狀態(tài),觸發(fā)事件同于t的觸發(fā)事件;如果復(fù)合狀態(tài)本身是初始狀態(tài),那么該狀態(tài)中的默認初入狀態(tài)被標(biāo)記為初入狀態(tài),否則將步驟(I)添加的inactive狀態(tài)標(biāo)記為初入狀態(tài); (b2)為同步各個順序自動機之間的并行執(zhí)行,將進入復(fù)合狀態(tài)的每一個轉(zhuǎn)移事件擴充為廣播通道的發(fā)出類型,而在其相應(yīng)的子狀態(tài)順序時間自動機中,把從inactive狀態(tài)到默認初入狀態(tài)的事件擴充標(biāo)記為該廣播通道類型的接受類型;轉(zhuǎn)步驟(2); (Cl)如果復(fù)合狀態(tài)中有歷史信息,針對其中的每一個子狀態(tài)添加一個布爾變量,并將其中初入狀態(tài)的變量初始化為真值,其余的賦予假值,當(dāng)內(nèi)部發(fā)生狀態(tài)轉(zhuǎn)移的時候,相應(yīng)的布爾變量值會被重置,使得最近一次被訪問的狀態(tài)對應(yīng)的變量為真值; (c2)針對復(fù)合狀態(tài)的每一個子順序自動機,添加一個選擇狀態(tài),從該選擇狀態(tài)出發(fā)引出到達該子順序自動機中的每一個狀態(tài)的轉(zhuǎn)移,轉(zhuǎn)移的衛(wèi)式條件為該狀態(tài)對應(yīng)的布爾變量值為真;如果復(fù)合狀態(tài)的歷史類型為淺歷史類型,那么步驟(Cl)、(c2)的操作止于復(fù)合狀態(tài)的直接子順序自動機層,如果復(fù)合狀態(tài)的歷史類型為深歷史類型,那么步驟(cl)、(c2)的操作遞歸至最低一層。
全文摘要
本發(fā)明公開一種層次式時間自動機平展化算法,步驟是(1)針對層次式時間自動機中的每一個非根順序時間自動機,相應(yīng)地添加inactive狀態(tài);(2)針對每個非根節(jié)點順序時間自動機,添加一個特殊狀態(tài),并從源于復(fù)合狀態(tài)的轉(zhuǎn)移的相應(yīng)的源限制函數(shù)值中的每個狀態(tài)添加相應(yīng)的轉(zhuǎn)移到該特殊狀態(tài),并將該轉(zhuǎn)移對應(yīng)的事件擴充為廣播通道類型,并將上面到達新狀態(tài)的轉(zhuǎn)移事件擴充為該廣播通道類型的接受類型;(3)從步驟(2)每個順序時間自動機中新添加的特殊狀態(tài)出發(fā)引出新的轉(zhuǎn)移,到達步驟(1)中所添加的對應(yīng)的順序時間自動機中的inactive狀態(tài)。此種算法可使得平展后的結(jié)果能夠作為模型檢測工具的輸入,從而進行自動化的驗證。
文檔編號G06F11/36GK102799521SQ20121021846
公開日2012年11月28日 申請日期2012年6月28日 優(yōu)先權(quán)日2012年6月28日
發(fā)明者周宇, 胡軍, 黃志球 申請人:南京航空航天大學(xué)