王丹
摘要:針對代碼與模型之間的不一致性問題,本文提出了一種基于 UML模型和Java代碼之間的一致性檢測方法。首先,給出了怎樣檢測模型與代碼一致性的步驟,對模型檢測中所要用到的模型和代碼進(jìn)行預(yù)處理,其次設(shè)計(jì)出模型代碼一致性檢測的框架,在本文的后面重點(diǎn)研究靜態(tài)的模型與代碼一致性。對靜態(tài)檢測設(shè)計(jì)了算法,進(jìn)行了一致性驗(yàn)證研究。
關(guān)鍵詞:一致性檢測 靜態(tài)代碼 預(yù)處理
中圖分類號:TP39 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)05-0000-00
1 模型與代碼一致性檢測的基本流程
在這篇文章中,UML模型的一致性和Java代碼檢測是基于兩個假設(shè):(1)要保證每個模型的UML是對的,要保持一致性;(2)在UML模型與Java代碼的信息不一樣的時候,這個時候UML模型就會輸出相關(guān)的報告。
1.1 UML模型預(yù)處理
1.1.1 UML模型的形式化定義
UML模型具有半正式的相關(guān)特性,這個特性就沒辦法直接在UML模型中獲取相關(guān)的的信息。導(dǎo)致,UML模型的形式化定義就要用數(shù)學(xué)符號語言進(jìn)行定義。
(1)類元組(類,)是一種面向?qū)ο蟮念悎D表示,在這個類圖中,一個圖可以表示為一個元祖,而每個類圖又可以分為好多個類的元組構(gòu)成的集合。
(2)序列圖六組形式化定義一個,味精,是一個對象集合。的對象是序列圖M = { msg1 msg2,……是一家集新聞,MSGM }。消息味精定義如下:味精:= < msgName,能見度,{ <參數(shù)> },返回類型>
(3)發(fā)送和接收消息。味精新聞,發(fā)送事件<味精,s >、<味精,r >接收事件常說。
(4)消息集上的全序關(guān)系,說新聞的軸縱向時間序列圖先后。
(5)E M函數(shù)關(guān)系的味精,味精(E)∈E M說事件對應(yīng)的信息。6 obj E O函數(shù)關(guān)系,obj E(E)∈O表示事件對應(yīng)。像所有事件的集合的。
1.1.2 UML類圖信息解析
一個類圖包含的相關(guān)信息,對xml文件是需要說明他的類圖和類的名稱,類的屬性的,以及和其他有關(guān)的信息。類圖要對類之間的關(guān)系進(jìn)行分析,還要分析他們的轉(zhuǎn)換屬性。四種模式的關(guān)系。
1.2 代碼靜態(tài)信息預(yù)處理
靜態(tài)結(jié)構(gòu)的Java代碼他所包含的信息都是基本信息,比如:類的名稱、類的屬性、以及類的方法與其他有關(guān)的信息。Jave代碼靜態(tài)信息提取的主要思想是通過詞法分析和語法分析來獲取Java類的名稱、屬性序列和方法序列,并將這些信息存儲到上面定義的數(shù)據(jù)存儲結(jié)構(gòu)中
2 模型與代碼一致性檢測框架的設(shè)計(jì)
通過對UML模型與Java代碼的分析提出了UML模型與Java代碼一致性性檢測框架。該框架的輸入為Java代碼和UML模型信息,輸出為一致性檢測報告;框架中的主要過程有信息預(yù)處理、靜態(tài)一致性檢測、動態(tài)一致性檢測等功能[1]。
UML模型和Java代碼一致性測試框架的具體過程:首先,分別對Java代碼和UML模型信息預(yù)處理,預(yù)處理的Java代碼主要通過詞法分析和語法分析,預(yù)處理的UML模型是基于XMI文件解析的模型;然后,Java代碼預(yù)處理結(jié)果Java類和UML模型預(yù)處理UML靜態(tài)信息,例如UML模型和代碼一致性測試輸入,根據(jù)檢測的一致性算法一致性測試,如果不一致輸出測試報告,停止測試,否則繼續(xù);最后,Java代碼預(yù)處理結(jié)果Java調(diào)用圖CG和UML序列圖構(gòu)造順序調(diào)用圖SD - CG作為UML模型和動態(tài)一致性測試代碼輸入。
3 靜態(tài)模型與代碼的一致性檢測
3.1 靜態(tài)檢測一致性的設(shè)計(jì)
UML模型和Java代碼一致性測試的靜態(tài)信息,是一致性的基礎(chǔ)模型和系統(tǒng)測試。靜態(tài)信息包括類名、類屬性集和類的方法。UML類信息和Java類信息一致性檢測:首先,UML類的檢測數(shù)量和類在Java類的數(shù)量是一致的,不一致的信息返回如果不一致,一致性測試結(jié)束,否則繼續(xù);然后一個UML類和Java類根據(jù)類的名稱進(jìn)行排序,最后排序的列順序檢測測試UML類關(guān)系返回Java類信息是一致的和不一致的信息如果不一致,測試結(jié)束。
3.2 靜態(tài)檢測
模型和代碼之間的靜態(tài)信息檢測是UML模型的基礎(chǔ)和Java代碼之間的一致性測試,是動態(tài)交互信息檢測的前提。靜態(tài)信息的檢測包括檢測類的名稱、類的屬性集合,還有類的方法集合等,表1展示了二者之間的映射關(guān)系。
一致性測試的UML類圖信息預(yù)處理后預(yù)處理后的模型與Java代碼的Java類信息作為輸入,靜態(tài)測試,反過來,測試類,類的名稱、類的屬性、測試類的方法、參數(shù)列表的一致性的檢測方法,萬一有不一致的情況,那就直接輸出檢測的測試報告,立刻停止測試,默認(rèn)為為默認(rèn)值(defaultValue)沒有不一致的信息警告)那就不終止靜態(tài)信息的一致性檢測,最后就會輸出一致性檢測的測試結(jié)果,生成檢測報告[2]。
4 結(jié)語
在本文中UML模型和Java代碼完全的一致性檢測,研究了UML模型和Java代碼一致性測試的基本過程,給出UML模型分析算法和Java代碼關(guān)鍵信息提取算法,動態(tài)信息和靜態(tài)信息的一致性檢測算法。
參考文獻(xiàn)
[1]葛徐駿.基于時序邏輯的雙向一致性檢測[D].華東師范大學(xué),2015.
[2]葛亮.基于本體演化過程的一致性檢測方法研究[D].吉林大學(xué),2012.