專利名稱:一種帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法。
背景技術(shù):
實時嵌入式系統(tǒng)在制造工業(yè)、通信、汽車、航空航天、消費類產(chǎn)品等領(lǐng)域得到了越來越廣泛的應(yīng)用。但是,實時嵌入式系統(tǒng)的開發(fā)通常十分復(fù)雜,所以在開發(fā)前期,要對整個系統(tǒng)建立相應(yīng)的模型進行抽象。這樣有助于實時系統(tǒng)軟件的開發(fā),能夠很好地控制系統(tǒng)的復(fù)雜性。在實時嵌入式系統(tǒng)開發(fā)過程中,經(jīng)常會用到UML狀態(tài)機圖(SMD),它是一種半形式化的模型,這樣在實時嵌入式系統(tǒng)開發(fā)的初期,設(shè)計者就不能很好的對設(shè)計模型進行分析和驗證。為了解決這個問題,我們需要將SMD轉(zhuǎn)化為形式化的自動機模型,并利用現(xiàn)有工具對轉(zhuǎn)化結(jié)果進行分析驗證。這樣在系統(tǒng)設(shè)計初期就可以發(fā)現(xiàn)系統(tǒng)的一些錯誤和不足,有利于系統(tǒng)更好更快地開發(fā)。自動機是一類形式化的建模語言,有很多現(xiàn)有的包括Uppaal在內(nèi)的模型檢驗工具進行支撐。利用支撐工具我們可以方便的對已有自動機模型進行模擬,分析及驗證工作。(Uppaal可以用來對被轉(zhuǎn)換時間自動機網(wǎng)絡(luò)模型的實時系統(tǒng)進行建模、校驗和驗證。它是由瑞典Uppsala大學(xué)的信息技術(shù)學(xué)院和丹麥Aalborg大學(xué)的計算科學(xué)學(xué)院聯(lián)合開發(fā)的)
發(fā)明內(nèi)容
本發(fā)明目的是,鑒于上述問題,本發(fā)明旨在提供一個帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,該方法可以結(jié)合模型驅(qū)動工程技術(shù),實現(xiàn)狀態(tài)機圖模型到自動機模型的轉(zhuǎn)換,從而使通過現(xiàn)有模型檢驗工具對設(shè)計模型進行模擬,分析與驗證變成可能。本發(fā)明是通過以下的技術(shù)方案實現(xiàn)的步驟10 :輸入一個UML狀態(tài)機圖;步驟11 :生成一個名字為go的自動機(自動機的名字可根據(jù)自己習(xí)慣定義),該自動機可以產(chǎn)生一個go信號量;步驟12 :對狀態(tài)機圖的每個狀態(tài)聲明一個整型全局變量;步驟13 :對狀態(tài)機圖的每個遷移聲明一個自動機;步驟14 :每個自動機添加兩個location (自動機中的節(jié)點)和三個transition(自動機中的遷移);步驟15 :根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition ;步驟16 :所有產(chǎn)生的自動機,構(gòu)成轉(zhuǎn)換結(jié)果。所述步驟10所構(gòu)造的模型符合下面的形式,該模型包括一個根節(jié)點Region(Region代表一個狀態(tài)圖的范圍),每個Region都要有個Name (狀態(tài)圖的名字)節(jié)點,在Region里可以有若干個State (狀態(tài)圖中的節(jié)點)和Transition (狀態(tài)圖中的遷移),同時還可以添加局部變量聲明(如時鐘變量和整型變量等),另外可以根據(jù)需要添加參數(shù)節(jié)點。該模型是可以根據(jù)附圖6所示元模型實現(xiàn),此元模型是根據(jù)模型驅(qū)動思想,然后結(jié)合狀態(tài)圖的結(jié)構(gòu)構(gòu)造的,構(gòu)造示例如附圖2所示。設(shè)計一個狀態(tài)機圖的過程包括步驟200 :用eclipse運行狀態(tài)機圖編輯器;步驟201 :右鍵單擊根節(jié)點,新建一個或多個Region ;步驟202 :右鍵單擊Region節(jié)點,創(chuàng)建系統(tǒng)中所需要的State節(jié)點,同時為每個State節(jié)點命名,如果State節(jié)點有時限變量,則跳轉(zhuǎn)到步驟203,否則跳轉(zhuǎn)到步驟204 ;步驟203 :右鍵單擊State節(jié)點,增加時限變量節(jié)點,并設(shè)置初始值;步驟204 :右鍵單擊Region節(jié)點,倉ll建系統(tǒng)中所需要的Transition節(jié)點,同時為每個Transition節(jié)點命名及指定源和目標(biāo)狀態(tài);步驟205 :右鍵單擊Region節(jié)點,增加局部變量聲明節(jié)點;步驟206 :右鍵單擊Region節(jié)點,增加參數(shù)節(jié)點;步驟207 :右鍵單擊Region節(jié)點,增加名字節(jié)點;步驟208 :右鍵單擊根節(jié)點,增加全局變量聲明節(jié)點;步驟209 :右鍵單擊根節(jié)點,增加系統(tǒng)模型聲明節(jié)點;步驟210 :結(jié)束本次狀態(tài)機圖設(shè)計。所述步驟12中,對狀態(tài)機圖的每個狀態(tài)聲明一個整型全局變量,執(zhí)行的過程包括步驟30 :遍歷整個輸入的UML狀態(tài)機圖,得到所有狀態(tài);步驟31 :對每個遍歷到的狀態(tài)記錄其屬性,包括是否為開始節(jié)點,普通節(jié)點,終止節(jié)點;步驟32 :對每個遍歷到的狀態(tài)記錄其約束;步驟33 :對每個遍歷到的狀態(tài)在自動機聲明中聲明一個整型變量用于表示其狀態(tài);所述步驟13和14中,對狀態(tài)機圖的每個遷移聲明一個自動機,并為每個自動機添加兩個location和三個transition,執(zhí)行的過程包括步驟40 :創(chuàng)建一個自動機;步驟41 :在自動機中添加兩個location名字分別為disabled和firing ;disabled代表當(dāng)前自動機處于未使能狀態(tài),firing代表當(dāng)前自動機處于使能激發(fā)狀態(tài)。步驟42 :在自動機中添加三個transition名字分別為Tl,T2和T3 ;此處命名僅為標(biāo)識作用。步驟43 :根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition ;步驟44 :若狀態(tài)機圖的遷移需要事件來觸發(fā),則創(chuàng)建一個僅含有一個location和一個指向自身的transition的自動機,且該自動機transition會發(fā)出該事件;所述步驟15中,根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition。操作流程可以參看附圖5。執(zhí)行的過程包括步驟50 :在UML狀態(tài)機圖中,若源狀態(tài)有約束,則將約束加到名字在firing的location 上;
步驟51 :在Tl上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為1,同時,遷移結(jié)束后令時鐘為O并開始計時;步驟52 :在T2上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為0,同時,添加同步信號go,用以容錯處理;步驟53 :在T3上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為1,同時,若源遷移上有衛(wèi)式,也要加到T3的衛(wèi)式上來;步驟54 :若源遷移上有事件,在T3上添加相同的事件信號,T3遷移結(jié)束后對源狀態(tài)對應(yīng)的變量置為O,目標(biāo)狀態(tài)對應(yīng)的變量置為I。本發(fā)明有益效果這是一種帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,該方法可以結(jié)合模型驅(qū)動工程技術(shù),實現(xiàn)狀態(tài)機圖模型到自動機模型的轉(zhuǎn)換,從而使通過現(xiàn)有模型檢驗工具對設(shè)計模型進行模擬,分析與驗證變成可能。同時,此方法也可以方便地應(yīng)用到其他領(lǐng)域應(yīng)用。
圖1為UML狀態(tài)圖轉(zhuǎn)化為自動機示意圖;圖2為UML狀態(tài)圖編輯器示意圖;圖3為對UML狀態(tài)圖狀態(tài)的處理示意圖;圖4為根據(jù)遷移產(chǎn)生自動機示意圖;圖5為完善產(chǎn)生的自動機示意圖;圖6為狀態(tài)圖元模型機示意圖。
具體實施例方式本發(fā)明方法工作流程如圖1-圖5所示。圖1所示為本方法實施的整體結(jié)構(gòu)和工作原理。本方法的目的是將帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機,該方法可以結(jié)合模型驅(qū)動工程技術(shù),實現(xiàn)狀態(tài)機圖模型到自動機模型的轉(zhuǎn)換,從而使通過現(xiàn)有模型檢驗工具對設(shè)計模型進行模擬,分析與驗證變成可能。同時,此方法也可以方便地應(yīng)用到其他領(lǐng)域應(yīng)用。步驟10 :輸入一個UML狀態(tài)機圖;步驟11 :生成一個名字為go的自動機(自動機的名字可根據(jù)自己習(xí)慣定義),該自動機可以產(chǎn)生一個go信號量;步驟12 :對狀態(tài)機圖的每個狀態(tài)聲明一個整型全局變量;步驟13 :對狀態(tài)機圖的每個遷移聲明一個自動機;步驟14 :每個自動機添加兩個location (自動機中的節(jié)點)和三個transition(自動機中的遷移);步驟15 :根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition ;步驟16 :所有產(chǎn)生的自動機,構(gòu)成轉(zhuǎn)換結(jié)果。所述步驟10所構(gòu)造的模型符合下面的形式,該模型包括一個根節(jié)點Region(Region代表一個狀態(tài)圖的范圍),每個Region都要有個Name (狀態(tài)圖的名字)節(jié)點,在Region里可以有若干個State (狀態(tài)圖中的節(jié)點)和Transition (狀態(tài)圖中的遷移),同時還可以添加局部變量聲明(如時鐘變量和整型變量等),另外可以根據(jù)需要添加參數(shù)節(jié)點。該模型是可以根據(jù)附圖6所示元模型實現(xiàn),此元模型是根據(jù)模型驅(qū)動思想,然后結(jié)合狀態(tài)圖的結(jié)構(gòu)構(gòu)造的,構(gòu)造示例如附圖2所示。設(shè)計一個狀態(tài)機圖的過程包括步驟200 :用eclipse運行狀態(tài)機圖編輯器;步驟201 :右鍵單擊根節(jié)點,新建一個或多個Region ;步驟202 :右鍵單擊Region節(jié)點,創(chuàng)建系統(tǒng)中所需要的State節(jié)點,同時為每個State節(jié)點命名,如果State節(jié)點有時限變量,則跳轉(zhuǎn)到步驟203,否則跳轉(zhuǎn)到步驟204 ;步驟203 :右鍵單擊State節(jié)點,增加時限變量節(jié)點,并設(shè)置初始值;步驟204 :右鍵單擊Region節(jié)點,倉ll建系統(tǒng)中所需要的Transition節(jié)點,同時為每個Transition節(jié)點命名及指定源和目標(biāo)狀態(tài);步驟205 :右鍵單擊Region節(jié)點,增加局部變量聲明節(jié)點;步驟206 :右鍵單擊Region節(jié)點,增加參數(shù)節(jié)點;步驟207 :右鍵單擊Region節(jié)點,增加名字節(jié)點;步驟208 :右鍵單擊根節(jié)點,增加全局變量聲明節(jié)點;步驟209 :右鍵單擊根節(jié)點,增加系統(tǒng)模型聲明節(jié)點;步驟210 :結(jié)束本次狀態(tài)機圖設(shè)計。所述步驟12中,對狀態(tài)機圖的每個狀態(tài)聲明一個整型全局變量,執(zhí)行的過程包括步驟30 :遍歷整個輸入的UML狀態(tài)機圖,得到所有狀態(tài);步驟31 :對每個遍歷到的狀態(tài)記錄其屬性,包括是否為開始節(jié)點,普通節(jié)點,終止節(jié)點;步驟32 :對每個遍歷到的狀態(tài)記錄其約束;步驟33 :對每個遍歷到的狀態(tài)在自動機聲明中聲明一個整型變量用于表示其狀態(tài)。所述步驟13和14中,對狀態(tài)機圖的每個遷移聲明一個自動機,并為每個自動機添加兩個location和三個transition,執(zhí)行的過程包括步驟40 :創(chuàng)建一個自動機;步驟41 :在自動機中添加兩個location名字分別為disabled和firing ;disabled代表當(dāng)前自動機處于未使能狀態(tài),firing代表當(dāng)前自動機處于使能激發(fā)狀態(tài)。步驟42 :在自動機中添加三個transition名字分別為Tl,T2和T3 ;此處命名僅為標(biāo)識作用。步驟43 :根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition ;步驟44 :若狀態(tài)機圖的遷移需要事件來觸發(fā),則創(chuàng)建一個僅含有一個location和一個指向自身的transition的自動機,且該自動機transition會發(fā)出該事件;所述步驟15中,根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition。操作流程可以參看附圖5。執(zhí)行的過程包括步驟50 :在UML狀態(tài)機圖中,若源狀態(tài)有約束,則將約束加到名字在firing的location 上;
步驟51 :在Tl (參看附圖5)上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為1,同時,遷移結(jié)束后令時鐘為O并開始計時;步驟52 :在T2 (參看附圖5)上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為0,同時,添加同步信號go,用以容錯處理;步驟53 :在T3 (參看附圖5)上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為1,同時,若源遷移上有衛(wèi)式,也要加到T3的衛(wèi)式上來;步驟54 :若源遷移上有事件,在T3上添加相同的事件信號,T3遷移結(jié)束后對源狀態(tài)對應(yīng)的變量置為O,目標(biāo)狀態(tài)對應(yīng)的變量置為I。
權(quán)利要求
1.一種帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,其特征是包括步驟如下 步驟10 :輸入一個UML狀態(tài)機圖; 步驟11 :生成一個名字為go的自動機,該自動機產(chǎn)生一個go信號量; 步驟12 :對狀態(tài)機圖的每個狀態(tài)聲明一個整型全局變量; 步驟13 :對狀態(tài)機圖的每個遷移聲明一個自動機; 步驟14 :每個自動機添加兩個location和三個transition ; 步驟15 :根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition ; 步驟16 :所有產(chǎn)生的自動機,構(gòu)成轉(zhuǎn)換結(jié)果; 步驟11中,自動機的名字可根據(jù)任意定義; 所述location為自動機中的節(jié)點,transition為自動機中的遷移。
2.根據(jù)權(quán)利要求1所述的帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,其特征是步驟10中, 所構(gòu)造的模型符合以下形式 該模型包括一個根節(jié)點Region,每個Region都要有個Name節(jié)點,在Region里可以有若干個State和Transition,同時還允許添加局部變量聲明,允許根據(jù)需要添加參數(shù)節(jié)點;所述Region代表一個狀態(tài)圖的范圍,Name為狀態(tài)圖的名字,State為狀態(tài)圖中的節(jié)點,Transition為狀態(tài)圖中的遷移; 設(shè)計一個狀態(tài)機圖的過程包括 步驟200 :用eclipse運行狀態(tài)機圖編輯器; 步驟201 :右鍵單擊根節(jié)點,新建一個或多個Region ; 步驟202 :右鍵單擊Region節(jié)點,倉Il建系統(tǒng)中所需要的State節(jié)點,同時為每個State節(jié)點命名,如果State節(jié)點有時限變量,則跳轉(zhuǎn)到步驟203,否則跳轉(zhuǎn)到步驟204 ; 步驟203 :右鍵單擊State節(jié)點,增加時限變量節(jié)點,并設(shè)置初始值; 步驟204 :右鍵單擊Region節(jié)點,倉Il建系統(tǒng)中所需要的Transition節(jié)點,同時為每個Transition節(jié)點命名及指定源和目標(biāo)狀態(tài); 步驟205 :右鍵單擊Region節(jié)點,增加局部變量聲明節(jié)點; 步驟206 :右鍵單擊Region節(jié)點,增加參數(shù)節(jié)點; 步驟207 :右鍵單擊Region節(jié)點,增加名字節(jié)點; 步驟208 :右鍵單擊根節(jié)點,增加全局變量聲明節(jié)點; 步驟209 :右鍵單擊根節(jié)點,增加系統(tǒng)模型聲明節(jié)點; 步驟210 :結(jié)束本次狀態(tài)機圖設(shè)計。
3.根據(jù)權(quán)利要求1所述的種帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,其特征是所述步驟12中,對狀態(tài)機圖的每個狀態(tài)聲明一個整型全局變量,執(zhí)行的過程包括 步驟30 :遍歷整個輸入的UML狀態(tài)機圖,得到所有狀態(tài); 步驟31 :對每個遍歷到的狀態(tài)記錄其屬性,包括是否為開始節(jié)點,普通節(jié)點,終止節(jié)占. 步驟32 :對每個遍歷到的狀態(tài)記錄其約束; 步驟33 :對每個遍歷到的狀態(tài)在自動機聲明中聲明一個整型變量用于表示其狀態(tài)。
4.根據(jù)權(quán)利要求1所述的帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,其特征是所述步驟13和14中,對狀態(tài)機圖的每個遷移聲明一個自動機,并為每個自動機添加兩個location和三個transition,執(zhí)行的過程包括 步驟40 :創(chuàng)建一個自動機; 步驟41 :在自動機中添加兩個location名字分別為disabled和firing !disabled代表當(dāng)前自動機處于未使能狀態(tài),firing代表當(dāng)前自動機處于使能激發(fā)狀態(tài); 步驟42 :在自動機中添加三個transition名字分別為Tl,T2和T3 ;此處命名僅為標(biāo)識作用; 步驟43 :根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition ; 步驟44 :若狀態(tài)機圖的遷移需要事件來觸發(fā),則創(chuàng)建一個僅含有一個location和一個指向自身的transition的自動機,且該自動機transition會發(fā)出該事件。
5.根據(jù)權(quán)利要求1所述的帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,其特征是所述步驟15中,根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition ;執(zhí)行的過程包括 步驟50 :在UML狀態(tài)機圖中,若源狀態(tài)有約束,則將約束加到名字在firing的location 上; 步驟51 :在Tl上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為1,同時,遷移結(jié)束后令時鐘為O并開始計時; 步驟52 :在T2上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為0,同時,添加同步信號go,用以容錯處理; 步驟53 :在T3上添加衛(wèi)式,判斷源狀態(tài)對應(yīng)變量是否為1,同時,若源遷移上有衛(wèi)式,也要加到T3的衛(wèi)式上來; 步驟54 :若源遷移上有事件,在T3上添加相同的事件信號,T3遷移結(jié)束后對源狀態(tài)對應(yīng)的變量置為O,目標(biāo)狀態(tài)對應(yīng)的變量置為I。
全文摘要
一種帶并發(fā)的狀態(tài)機圖轉(zhuǎn)換到自動機的方法,包括步驟如下步驟10輸入一個UML狀態(tài)機圖;步驟11生成一個名字為go的自動機(自動機的名字可根據(jù)自己習(xí)慣定義),該自動機可以產(chǎn)生一個go信號量;步驟12對狀態(tài)機圖的每個狀態(tài)聲明一個整型全局變量;步驟13對狀態(tài)機圖的每個遷移聲明一個自動機;步驟14每個自動機添加兩個location(自動機中的節(jié)點)和三個transition(自動機中的遷移);步驟15根據(jù)UML狀態(tài)圖的遷移,完善所添加的location和transition;步驟16所有產(chǎn)生的自動機,構(gòu)成轉(zhuǎn)換結(jié)果。該方法主要特點為可以將帶并發(fā)的UML狀態(tài)機圖轉(zhuǎn)化為自動機,方便各個領(lǐng)域應(yīng)用。
文檔編號G06F17/50GK103049603SQ20121053904
公開日2013年4月17日 申請日期2012年12月13日 優(yōu)先權(quán)日2012年12月13日
發(fā)明者張?zhí)? 黃小浦, 李宣東 申請人:南京大學(xué)