一種基于狀態(tài)圖的代碼化驗(yàn)證方法
【專利摘要】本發(fā)明涉及一種基于狀態(tài)圖的代碼化驗(yàn)證方法,包括步驟:1)用ArgoUML狀態(tài)圖描述目標(biāo)軟件需求,進(jìn)行需求分析;2)將ArgoUML輸出的文件作為提取目標(biāo),抽取其狀態(tài)圖描述文件;3)解析狀態(tài)圖描述文件,獲取狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移信息以及狀態(tài)屬性;4)根據(jù)獲取的狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移信息以及狀態(tài)屬性將ArgoUML狀態(tài)圖轉(zhuǎn)化為目標(biāo)NuSMV代碼;5)自動(dòng)抽取檢驗(yàn)性質(zhì),以交互式方式供用戶二次編輯;6)調(diào)用NuSMV檢驗(yàn)器執(zhí)行檢驗(yàn),返回校驗(yàn)性質(zhì)是否被滿足,如不滿足,給出出錯(cuò)位置點(diǎn)并展示路徑序列。與現(xiàn)有技術(shù)相比,本發(fā)明可實(shí)現(xiàn)邊對軟件需求建模邊實(shí)現(xiàn)自動(dòng)化驗(yàn)證,同時(shí)使得設(shè)計(jì)分析人員不用再關(guān)心如何編寫復(fù)雜的NuSMV程序,這些轉(zhuǎn)化將自動(dòng)實(shí)現(xiàn)。
【專利說明】
-種基于狀態(tài)圖的代碼化驗(yàn)證方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及軟件檢測領(lǐng)域,尤其是設(shè)及一種基于狀態(tài)圖的代碼化驗(yàn)證方法。
【背景技術(shù)】
[0002] 計(jì)算機(jī)軟件已成為信息基礎(chǔ)設(shè)施滲透到國民經(jīng)濟(jì)、國防建設(shè)和個(gè)人生活的各個(gè)領(lǐng) 域,例如電信系統(tǒng)、工業(yè)控制、核電站、航空航天系統(tǒng)、網(wǎng)上銀行、電子商務(wù)等。然而,由于目 前軟件開發(fā)技術(shù)的不足,軟件的質(zhì)量不能令人滿意,軟件失效和安全攻擊時(shí)有發(fā)生,給人們 的工作生活帶來不利的影響,甚至?xí)<叭松?、?cái)產(chǎn)和環(huán)境的安全,造成災(zāi)難性后果。
[0003] 軟件開發(fā)領(lǐng)域急需驗(yàn)證技術(shù)的支持。問題域的需求分析往往由需求分析人員借助 于UML各個(gè)模型圖來完成,但是卻很少有分析設(shè)計(jì)人員懂得編寫復(fù)雜的驗(yàn)證程序。相對而 言,形式化驗(yàn)證人員則關(guān)屯、如何編寫適合于計(jì)算機(jī)計(jì)算的程序語言,很少有專業(yè)的需求分 析經(jīng)驗(yàn)。因此,有必要實(shí)現(xiàn)基于UML狀態(tài)實(shí)現(xiàn)向驗(yàn)證代碼自動(dòng)轉(zhuǎn)化的方法,使得需求分析設(shè) 計(jì)人員只關(guān)注于其業(yè)務(wù)邏輯的設(shè)計(jì),從而減輕學(xué)習(xí)如何編寫驗(yàn)證代碼的復(fù)雜性。
[0004] 然而UML是一種半形式化語言,而驗(yàn)證代碼則是嚴(yán)格的形式化語言。因此,根據(jù)驗(yàn) 證代碼的語法規(guī)則從UML中抽取并構(gòu)造驗(yàn)證代碼是本發(fā)明方法核屯、問題。
[0005] 1)如何從UML描述文件XMI中抽取節(jié)點(diǎn),遷移關(guān)系,W及節(jié)點(diǎn)的屬性等?
[0006] 2)如何基于抽取信息根據(jù)用戶選擇的不同轉(zhuǎn)化規(guī)則向目標(biāo)NuSMV代碼轉(zhuǎn)化?
[0007] 3)如何編寫目標(biāo)驗(yàn)證性質(zhì)?
[000引4)如何解析NuSMV執(zhí)行結(jié)果,尤其是反饋錯(cuò)誤信息?
【發(fā)明內(nèi)容】
[0009] 本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種基于狀態(tài)圖的 代碼化驗(yàn)證方法。
[0010] 本發(fā)明的目的可W通過W下技術(shù)方案來實(shí)現(xiàn):
[0011] -種基于狀態(tài)圖的代碼化驗(yàn)證方法,包括步驟:
[001 ^ 1)用ArgoUML狀態(tài)圖描述目標(biāo)軟件需求,進(jìn)行需求分析;
[0013] 2)將ArgoUML輸出的文件作為提取目標(biāo),抽取其狀態(tài)圖描述文件;
[0014] 3)解析狀態(tài)圖描述文件,獲取狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移信息W及狀態(tài)屬性;
[0015] 4)根據(jù)獲取的狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移信息W及狀態(tài)屬性將ArgoUML狀態(tài)圖轉(zhuǎn)化 為目標(biāo)NuSMV代碼;
[0016] 5)自動(dòng)抽取檢驗(yàn)性質(zhì),W交互式方式供用戶二次編輯;
[0017] 6)調(diào)用NuSMV檢驗(yàn)器執(zhí)行檢驗(yàn),返回校驗(yàn)性質(zhì)是否被滿足,如不滿足,給出出錯(cuò)位 置點(diǎn)并展示路徑序列。
[001引所述步驟1)具體包括步驟:
[0019] 11)在ArgoUML上新建狀態(tài)圖;
[0020] 12)根據(jù)目標(biāo)軟件需求新建節(jié)點(diǎn),連接節(jié)點(diǎn),并標(biāo)識(shí)節(jié)點(diǎn)狀態(tài)和遷移信息,W及節(jié) 點(diǎn)的狀態(tài)屬性;
[0021] 13)最后保存輸出ArgoUML狀態(tài)圖文件。
[0022] 所述步驟3)具體為:
[0023] 根據(jù)XML語法描述:
[0024] 從描述文件的UML = SimpleState和UML = Pseudostate標(biāo)簽獲取節(jié)點(diǎn)狀態(tài),
[00巧]從描述文件的UML = Transition標(biāo)簽獲取遷移信息,
[00%] 從描述文件的UML:化gged化Iue標(biāo)簽獲取狀態(tài)屬性。
[0027] 所述步驟5)具體包括步驟:
[0028] 51)基于狀態(tài)信息,得到基于狀態(tài)的可達(dá)性性質(zhì)描述,供用戶二次編輯;
[0029] 52)基于遷移關(guān)系,得到基于遷移的活性性質(zhì)描述,供用戶二次編輯;
[0030] 53)基于狀態(tài)屬性,得到基于屬性的安全性性質(zhì)描述,供用戶二次編輯。
[0031] 所述步驟6)具體包括步驟:
[0032] 61)根據(jù)NuSMV執(zhí)行結(jié)果分析性質(zhì)滿足性;
[0033] 62)將不滿性質(zhì)公式的返回信息進(jìn)解析,獲得路徑序列反饋給用戶。
[0034] 與現(xiàn)有技術(shù)相比,本發(fā)明具有W下優(yōu)點(diǎn):
[0035] 1)提供了從ArgoUML狀態(tài)圖向NuSMV代碼的轉(zhuǎn)化,從而可W采用AgroUML狀態(tài)圖描 述軟件需求,可實(shí)現(xiàn)邊對軟件需求建模邊實(shí)現(xiàn)自動(dòng)化驗(yàn)證,同時(shí)使得設(shè)計(jì)分析人員不用再 關(guān)屯、如何編寫復(fù)雜的NuSMV程序,運(yùn)些轉(zhuǎn)化將自動(dòng)實(shí)現(xiàn)。
[0036] 2)獲取狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移信息W及狀態(tài)屬性通過解析狀態(tài)圖描述文件來實(shí) 現(xiàn),因?yàn)槊枋鑫募捎昧薠ML語法,因此便于實(shí)現(xiàn),可W自動(dòng)化提取,提高了效率。
[0037] 3)提供了二次編輯功能,可W對自動(dòng)代碼轉(zhuǎn)化中發(fā)生的錯(cuò)誤進(jìn)行補(bǔ)救。
【附圖說明】
[0038] 圖1為本發(fā)明的需求設(shè)計(jì)模型與驗(yàn)證代碼之間關(guān)系說明圖;
[0039] 圖2為本發(fā)明方法設(shè)及的主要步驟流程示意圖;
[0040] 圖3為本發(fā)明的用于ArgoUML狀態(tài)圖向NuSMV代碼轉(zhuǎn)化的流程圖;
[0041] 圖4為本發(fā)明的信息存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)。
【具體實(shí)施方式】
[0042] 下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。本實(shí)施例W本發(fā)明技術(shù)方案 為前提進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于 下述的實(shí)施例。
[0043] 圖1為本發(fā)明的需求設(shè)計(jì)模型與驗(yàn)證代碼之間關(guān)系說明圖
[0044] 問題域的需求分析往往由需求分析人員借助于UML各個(gè)模型圖來完成,但是卻很 少有設(shè)計(jì)人員懂得編寫復(fù)雜的驗(yàn)證程序。相對而言,形式化驗(yàn)證人員則關(guān)屯、如何編寫適合 于計(jì)算機(jī)計(jì)算的程序語言,很少有專業(yè)的需求分析經(jīng)驗(yàn)。本發(fā)明為了簡化模型轉(zhuǎn)化到NuSMV 的檢驗(yàn)工作,給出了一種自動(dòng)將AgroUML狀態(tài)圖轉(zhuǎn)化為NuSMV程序的轉(zhuǎn)換方法,使得設(shè)計(jì)人 員隨時(shí)檢驗(yàn)?zāi)P褪欠駶M足規(guī)格說明。用戶采用AgroUML狀態(tài)圖分析需求,不用再關(guān)屯、如何編 寫復(fù)雜的NuSMV程序,運(yùn)些轉(zhuǎn)化將自動(dòng)實(shí)現(xiàn)。
[0045] 圖2為本發(fā)明方法設(shè)及的主要步驟流程示意圖
[0046] 首先,采用ArgoUML狀態(tài)圖描述目標(biāo)軟件需求,并將其輸出文件作為提取目標(biāo),抽 取其狀態(tài)圖描述文件。其次,解析狀態(tài)圖信息,獲取狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移W及狀態(tài)屬性 等信息,同時(shí)提供多種轉(zhuǎn)化規(guī)則供用戶選擇,將ArgoUML狀態(tài)圖轉(zhuǎn)化為目標(biāo)NuSMV代碼,并自 動(dòng)抽取檢驗(yàn)性質(zhì),W交互式方式供用戶二次編輯。最后,調(diào)用NuSMV檢驗(yàn)器執(zhí)行檢驗(yàn),返回校 驗(yàn)性質(zhì)是否被滿足,如不滿足,給出出錯(cuò)位置點(diǎn)并展示路徑序列。具體如下:
[0047] -種基于狀態(tài)圖的代碼化驗(yàn)證方法,包括步驟:
[004引1)用ArgoUML狀態(tài)圖描述目標(biāo)軟件需求,進(jìn)行需求分析,具體包括步驟:
[0049] 11)在ArgoUML上新建狀態(tài)圖;
[0050] 12)根據(jù)目標(biāo)軟件需求新建節(jié)點(diǎn),連接節(jié)點(diǎn),并標(biāo)識(shí)節(jié)點(diǎn)狀態(tài)和遷移信息,W及節(jié) 點(diǎn)的狀態(tài)屬性;
[0051 ] 13)最后保存輸出ArgoUML狀態(tài)圖文件。
[0052] 2)將ArgoUML輸出的文件作為提取目標(biāo),抽取其狀態(tài)圖描述文件;
[0053] 3)解析狀態(tài)圖描述文件,獲取狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移信息W及狀態(tài)屬性,具體 為:
[0化4] 根據(jù)XML語法描述:
[0055] 從描述文件的UML: SimpleState和UML = Pseudostate標(biāo)簽獲取節(jié)點(diǎn)狀態(tài),
[0化6] 從描述文件的UML = Transition標(biāo)簽獲取遷移信息,
[0化7] 從描述文件的UML:化gged化Iue標(biāo)簽獲取狀態(tài)屬性。
[0化引具體的,根據(jù)XML語法描述,重寫SAX類包的StartElementO和en祀Iement O函數(shù), 分別抽取如下信息: 「1
LUUW」 巧StartEiementUaa數(shù)你識(shí)備剖果個(gè)節(jié)點(diǎn)狀態(tài)你簽,化觀〈UML:SimpieState>那 么開始記錄信息;又如endElement()函數(shù)標(biāo)識(shí)結(jié)束某個(gè)節(jié)點(diǎn)狀態(tài)標(biāo)簽,比如</UML : SimpleState〉那么結(jié)束一個(gè)標(biāo)簽的記錄,并做相關(guān)處理。此時(shí),可得到節(jié)點(diǎn)狀態(tài)集合。同理, 在StartElementO函數(shù)根據(jù)<UML:化gged化lue〉解析狀態(tài)的屬性信息等。
[0061] 4)根據(jù)獲取的狀態(tài)圖的節(jié)點(diǎn)狀態(tài),遷移信息W及狀態(tài)屬性將ArgoUML狀態(tài)圖轉(zhuǎn)化 為目標(biāo)NuSMV代碼;
[0062] NuSMV語法是基于Kripke結(jié)構(gòu)形式化描述的,一個(gè)Kripke結(jié)構(gòu)是一個(gè)五元組M = (5,1〇1*,4口,^1'),其中:
[0063] -S是一個(gè)有限狀態(tài)集;
[0064] -i?城;E 5是初始狀態(tài)集;
[00化]-AP為原子命題集;
[0066] -L:S^2Ap為狀態(tài)標(biāo)記函數(shù),將每個(gè)狀態(tài)標(biāo)記為在該狀態(tài)下為真值的原子命題集 合;
[0067] -T: S X S是狀態(tài)遷移關(guān)系,對每個(gè)狀態(tài)S G S存在某個(gè)S ' G S滿足(S,S ')G T [006引基于Kripke結(jié)構(gòu)的NuSMV代碼生產(chǎn)規(guī)則:
[0069] UKripke結(jié)構(gòu)的所有狀態(tài)用一個(gè)枚舉類型的狀態(tài)變量state表示,枚舉類型的每 個(gè)值表示Kripke結(jié)構(gòu)狀態(tài)集S中的一個(gè)具體狀態(tài)。Init用于為狀態(tài)變量state賦初值。當(dāng) Init中只包含一個(gè)狀態(tài)時(shí),直接用該狀態(tài)對state賦初值。如果Init包含多個(gè)狀態(tài),則state 的初始值是不確定的,即S化te: =Init。
[0070] 2、V'peAP,聲明一個(gè)boolean型變量P。同時(shí),如果P屬于初始狀態(tài)的標(biāo)記,即 3s居init*p G L(S),則為P賦初值1,否則賦初值0。
[0071] 3、Kripke結(jié)構(gòu)中的遷移被轉(zhuǎn)換為NuSMV程序的一系列nextO賦值語句,前述轉(zhuǎn)換 后得到的每個(gè)變量對應(yīng)一個(gè)next語句。變量state的下一個(gè)取值由其當(dāng)前狀態(tài)能發(fā)生的狀 態(tài)遷移確定。設(shè)S為當(dāng)前狀態(tài),則next(state): = {s' I (s,s')GT}。如果S可能發(fā)生的遷移只 有一個(gè),則next (state)為該遷移的目標(biāo)狀態(tài)。
[0072] 5)自動(dòng)抽取檢驗(yàn)性質(zhì),W交互式方式供用戶二次編輯,具體包括步驟:
[0073] 51)基于狀態(tài)信息,得到基于狀態(tài)的可達(dá)性性質(zhì)描述,供用戶二次編輯;
[0074] 52)基于遷移關(guān)系,得到基于遷移的活性性質(zhì)描述,供用戶二次編輯;
[0075] 53)基于狀態(tài)屬性,得到基于屬性的安全性性質(zhì)描述,供用戶二次編輯。
[0076] 6)調(diào)用NuSMV檢驗(yàn)器執(zhí)行檢驗(yàn),返回校驗(yàn)性質(zhì)是否被滿足,如不滿足,給出出錯(cuò)位 置點(diǎn)W及展示路徑序列,具體包括步驟:
[0077] 61)根據(jù)NuSMV執(zhí)行結(jié)果分析性質(zhì)滿足性;
[0078] 62)將不滿性質(zhì)公式的返回信息進(jìn)解析,獲得路徑序列反饋給用戶。
[0079] 圖3為本發(fā)明的用于ArgoUML狀態(tài)圖向NuSMV代碼轉(zhuǎn)化的流程圖
[0080] 流程包括NuSMV集成模塊,Arg加 ML集成模塊,自動(dòng)化轉(zhuǎn)化UML到NuSMV程序模型,性 質(zhì)輔助描述模塊,W及反例解析模塊等。ArgoUML狀態(tài)圖通過XMI被解析為NuSMV程序代碼 后,可驗(yàn)證開發(fā)人員指定驗(yàn)證性質(zhì)公式。具體地說,第一,用戶直接在ArgoUML設(shè)計(jì)狀態(tài)圖。 第二,用戶選擇不同的狀態(tài)規(guī)則,可將狀態(tài)圖轉(zhuǎn)化為不同的NuSMV程序。第S,在性質(zhì)輔助描 述模塊上,基于抽取的節(jié)點(diǎn)狀態(tài),遷移等屬性給出性質(zhì)公式模版,W支持用戶組合時(shí)態(tài)邏輯 公式編寫目標(biāo)驗(yàn)證性質(zhì)公式。第四,通過NuSMV模型檢驗(yàn)器進(jìn)行驗(yàn)證,給出反例路徑用于標(biāo) 識(shí)出錯(cuò)位置點(diǎn)。
[0081] 圖4為本發(fā)明的信息存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)
[0082] 解析XML描述的狀態(tài)圖,得到的節(jié)點(diǎn)狀態(tài)、遷移W及屬性信息,采用化ShMap存儲(chǔ)運(yùn) 些數(shù)據(jù),目陽日3111日1)<5化;[雌,0^6。1:〉51日16210 = ]16¥化3111日9<5化;[雌,013^'6。1:〉〇,其中467 和value分別對應(yīng)string類和Object類描述。在狀態(tài)和屬性存儲(chǔ)結(jié)構(gòu)中,key存儲(chǔ)狀態(tài)名稱, value存儲(chǔ)Arraylist類的對象用于描述狀態(tài)屬性的情況。而在狀態(tài)遷移關(guān)系存儲(chǔ)結(jié)構(gòu)中, key存儲(chǔ)狀態(tài)名稱,value存儲(chǔ)Arraylist類的對象用于描述狀態(tài)的后續(xù)狀態(tài),用W構(gòu)造多遷 移關(guān)系。
【主權(quán)項(xiàng)】
1. 一種基于狀態(tài)圖的代碼化驗(yàn)證方法,其特征在于,包括步驟: 1) 用ArgoUML狀態(tài)圖描述目標(biāo)軟件需求,進(jìn)行需求分析; 2) 將ArgoUML輸出的文件作為提取目標(biāo),抽取其狀態(tài)圖描述文件; 3) 解析狀態(tài)圖描述文件,獲取狀態(tài)圖的節(jié)點(diǎn)狀態(tài),迀移信息以及狀態(tài)屬性; 4) 根據(jù)獲取的狀態(tài)圖的節(jié)點(diǎn)狀態(tài),迀移信息以及狀態(tài)屬性將ArgoUML狀態(tài)圖轉(zhuǎn)化為目 標(biāo)NuSMV代碼; 5) 自動(dòng)抽取檢驗(yàn)性質(zhì),以交互式方式供用戶二次編輯; 6) 調(diào)用NuSMV檢驗(yàn)器執(zhí)行檢驗(yàn),返回校驗(yàn)性質(zhì)是否被滿足,如不滿足,給出出錯(cuò)位置點(diǎn) 并展示路徑序列。2. 根據(jù)權(quán)利要求1所述的一種基于狀態(tài)圖的代碼化驗(yàn)證方法,其特征在于,所述步驟1) 具體包括步驟: 11) 在ArgoUML上新建狀態(tài)圖; 12) 根據(jù)目標(biāo)軟件需求新建節(jié)點(diǎn),連接節(jié)點(diǎn),并標(biāo)識(shí)節(jié)點(diǎn)狀態(tài)和迀移信息,以及節(jié)點(diǎn)的 狀態(tài)屬性; 13) 最后保存輸出ArgoUML狀態(tài)圖文件。3. 根據(jù)權(quán)利要求1所述的一種基于狀態(tài)圖的代碼化驗(yàn)證方法,其特征在于,所述步驟3) 具體為: 根據(jù)XML語法描述: 從描述文件的UML: SimpleState和UML: Pseudostate標(biāo)簽獲取節(jié)點(diǎn)狀態(tài), 從描述文件的UML: Transition標(biāo)簽獲取迀移信息, 從描述文件的UML: TaggedValue標(biāo)簽獲取狀態(tài)屬性。4. 根據(jù)權(quán)利要求1所述的一種基于狀態(tài)圖的代碼化驗(yàn)證方法,其特征在于,所述步驟5) 具體包括步驟: 51) 基于狀態(tài)信息,得到基于狀態(tài)的可達(dá)性性質(zhì)描述,供用戶二次編輯; 52) 基于迀移關(guān)系,得到基于迀移的活性性質(zhì)描述,供用戶二次編輯; 53) 基于狀態(tài)屬性,得到基于屬性的安全性性質(zhì)描述,供用戶二次編輯。5. 根據(jù)權(quán)利要求1所述的一種基于狀態(tài)圖的代碼化驗(yàn)證方法,其特征在于,所述步驟6) 具體包括步驟: 61) 根據(jù)NuSMV執(zhí)行結(jié)果分析性質(zhì)滿足性; 62) 將不滿性質(zhì)公式的返回信息進(jìn)解析,獲得路徑序列反饋給用戶。
【文檔編號(hào)】G06F9/45GK105955755SQ201610334262
【公開日】2016年9月21日
【申請日】2016年5月19日
【發(fā)明人】高洪皓, 繆淮扣, 許杰品, 曾紅衛(wèi), 開金宇
【申請人】上海大學(xué)