999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OOAPN模型的代碼逆向生成*

2014-09-03 10:51:33李金友于江濤
通化師范學院學報 2014年1期
關鍵詞:模型

李金友,于江濤

(通化師范學院 計算機學院,吉林 通化 134002)

基于OOAPN模型的代碼逆向生成*

李金友,于江濤

(通化師范學院 計算機學院,吉林 通化 134002)

基于OOAPN模型的代碼逆向生成旨在為人們利用自定義的模式,匹配出符合要求的格式數據,再經過逆向代碼生成器的加工轉換,使其轉變成符合nameSpace數據結構類型的數據,再由CIL加工還原成OOAPN模型.

OOAPN模型;模型驅動; 模板引擎;逆向代碼生成

Petri網(PetriNet)是一種高效的建模和分析工具,近年來得到了快速的發展.但是Petri網是一種純理論工具,并不能適合所有領域的應用需求.很多學者針對不同領域的研究對象,提出了各種各樣改進的Petri網理論.如近年來得到普遍應用的隨機Petri網、著色Petri網、模糊Petri網、代數Petri網、面向對象Petri網和面向對象代數Petri網模型等.

面向對象代數Petri網模型OOAPN(ObjectOrientedPetriNet)模型支持面向對象的概念,支持面向對象軟件系統分析和建模,把代數理論、Petri理論以及面向對象方法和技術結合在一起,為形式化和智能化軟件工程環境的建立提供了一種有效方法,可以提高并發系統動態建模和復雜系統的高級建模的能力,實現系統的動態建模和不確定建模,完善現有建模方法的不足.

1 OOAPN模型建模工具系統分析

OOAPN模型建模工具旨在為人們提供一套科學的工程化的軟件開發工具系統,有效的管理分析、設計、編碼和測試的全過程,生成高效、正確的代碼.集成化思想與建模工具緊密地結合在一起,形成了具有強有力的逆向代碼自動生成的可編程和測試的集成化建模工具.OOAPN建模工具主要作用有:一個具有專用資源和早期查錯功能的交互式開發環境、對軟件的開發和維護過程中的許多環節實現了自動化、通過一個強有力的圖形接口,實現了直觀的程序設計.

基于OOAPN模型的建模工具,提出了模型驅動模板MDT(ModelDrivenTemplate)設計模式.模型驅動模板MDT(ModelDrivenTemplate)設計模式主要包含兩個要素:模型和模板.而這兩個要素都是抽象的,即在實際開發中,可根據需要采用不同的模型和模板.在建模系統中,模型采用的是OOAPN模型,模板采用的是CheetahTemplates模板引擎,在中心信息庫CIL(CenterInformationLibrary)中,用逆向代碼生成器,利用自定義的模式,匹配出符合要求的格式數據,再經過逆向代碼生成器的加工轉換,使其轉變成符合nameSpace數據結構類型的數據,再由CIL加工廠還原成OOAPN模型.系統運行界面如圖1所示.

圖1 是系統運行的界面

2 逆向代碼自動生成過程

逆向代碼的自動生成的主要構件是正則表達式,利用自定義的模式,匹配出符合要求的格式數據,再經過逆向代碼生成器的加工轉換,使其轉變成符合nameSpace數據結構類型的數據,再由CIL加工廠還原成OOAPN模型.其系統結構圖如圖2所示:

圖2 逆向代碼自動生成過程

3 逆向代碼自動生成實現

首先,構造自定義的正則模式,以便匹配出符合要求的代碼,進行下一步的轉換.如自定義的匹配函數(方法、事件)的正則模式:

#匹配表達式

patFunction=r"""

([^s]+s*|) # 函數返回值類型

([^s]+)# 函數名稱

s* # 空字符

( # 參數的左界

(s* # 空字符

([^s]+s*|)* # 參數類型

(([^s]+))* # 參數名稱

(,)* # 參數分隔符

)* # 多個參數

) # 參數的右界

s* # 空字符

; # 結束符

"""

其次,由逆向代碼生成器轉換成類型nameSpace數據結構類型的數據.如向一個已經匹配的接口添加函數(方法、事件):

FunctionText=MatchesText[BreakText[BreakTextLen-1]["InterfaceStartPos"]:]

rFunction=re.compile(patFunction,re.VERBOSE) #Compileit

FunctionIterator=rFunction.finditer(FunctionText) #Matches

formatchFunctioninFunctionIterator:

FunText=matchFunction.group(0) #函數體

FunType=matchFunction.group(1) #函數返回值類型

FunName=matchFunction.group(2) #函數名稱

FunArgs= [] #函數的參數列表

ArgsText=FunText[FunText.find("(")+1:FunText.find(")")]

ArgsList=ArgsText.split(",")

forArginArgsList:

ArgText=string.strip(Arg)

ArgList=ArgText.split(" ")

iflen(ArgList) == 2 :

FunArgs.append({'FunArgType':ArgList[0],'FunArgName':ArgList[1]})

InterfaceDict["Functions"].append(

{'FunType':FunType,'FunName':FunName,'FunArgs':FunArgs})

再次,由中心信息庫CIL(CenterInformationLibrary)對nameSpace加工轉換成OOAPN模型.如向已經在畫布存在的接口圖形的一個函數添加參數模型:

forArgIndexinrange(ArgCount) :

TEM_ARG_POS_X=TEM_FUN_POS_X-39

TEM_ARG_POS_Y=TEM_FUN_POS_Y

ifArgIndex== 0andArgCount== 2:

TEM_ARG_POS_X=TEM_FUN_POS_X-39

TEM_ARG_POS_Y=TEM_FUN_POS_Y-20

elifArgIndex== 1andArgCount== 2:

TEM_ARG_POS_X=TEM_FUN_POS_X-39

TEM_ARG_POS_Y=TEM_FUN_POS_Y+20

objPlaceShape=PlaceShape()

dc=wx.ClientDC(canvas)

objPlaceShapeNewSID=self.OnGetCunSID()

objPlaceShape.SID=objPlaceShapeNewSID

objPlaceShape.PlaceShapeFrame.SID="Frame"+str(objPlaceShapeNewSID)

objPlaceShape.Type="PlaceInInterfaceShape"

objPlaceShape.Move(dc,TEM_ARG_POS_X,TEM_ARG_POS_Y)

evthandler=MyEvtHandler(self,objPlaceShape)

evthandler.SetShape(objPlaceShape)

evthandler.SetPreviousHandler(objPlaceShape.GetEventHandler())

objPlaceShape.SetEventHandler(evthandler)

objPlaceShape.AttName=nameSpace["Interfaces"][InterfaceIndex]

["Functions"][FunIndex]["FunArgs"][ArgIndex]["FunArgName"]

objPlaceShape.AttType=nameSpace["Interfaces"][InterfaceIndex]

["Functions"][FunIndex]["FunArgs"][ArgIndex]["FunArgType"]

objInterfaceShape.AddChild(objPlaceShape)

diagram.ShowAll(1)

canvas.Redraw(dc)

canvas.Refresh()

最后,由中心信息庫CIL(CenterInformationLibrary)對nameSpace加工轉換成有效的OOAPN模型.

4 結語

集成化思想與建模工具緊密地結合在一起,形成了具有強有力的逆向代碼自動生成的可編程和測試的集成化建模工具,有效的管理分析、設計、編碼和測試的全過程,生成高效、正確的模型.

[1]潘洪軍.面向對象代數Petri網[J].吉林大學學報,2006(3).

[2]克萊普,等著.解析MDA[M]. 鮑志云,譯.人民郵電出版社,2004.

[3]袁崇義.Petri網原理與應用[M].北京:電子工業出版社,1998.

[4]賈立新,薛鈞義,茹峰.采用模糊Petri網的形式化推理算法及其應用[J].西安交通大學學報,2003(12).

[5]叢佩政,任愛華.基于面向對象Petri網的模型驅動開發方法的研究[J].微計算機信息,2006(28).

(責任編輯:王前)

Reverse Code Generation Based on OOAPN Model

LI Jin-you, YU Jiang-tao

(CollegeofComputerScience,TonghuaNormalUniversity,Tonghua,Jilin134002,China)

The reverse code generation based on the OOAPN model aims to use the custom pattern, matching the format data to meet the requirements, and through the processing conversion of reverse code generator to convert it into data in compliance with nameSpace data structure types, then by CIL processing revert to OOAPN model.

OOAPN model; model-driven; template engine; reverse code generation

2013-10-07

李金友(1972-),男,吉林通化人,碩士,副教授.

吉教科合字[2007]第216號.

TP

A

1008-7974(2014)01-0040-03

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 日本久久久久久免费网络| 国模私拍一区二区| 青青操视频免费观看| 91精品视频网站| 中文字幕亚洲乱码熟女1区2区| 欧美狠狠干| 在线免费不卡视频| 中文无码毛片又爽又刺激| 亚洲男人天堂久久| 国产欧美日韩91| 国产69囗曝护士吞精在线视频| 久草视频精品| 麻豆精品在线| 极品国产在线| 国产在线一区二区视频| 亚洲高清无码精品| 99精品国产高清一区二区| 中文字幕自拍偷拍| 国产第一页免费浮力影院| 亚洲91在线精品| 亚洲开心婷婷中文字幕| 国产人成乱码视频免费观看 | 亚洲综合久久一本伊一区| AV熟女乱| 国产精品亚洲片在线va| 国产99免费视频| 国产主播喷水| 伊人久久青草青青综合| 午夜影院a级片| 精品成人一区二区三区电影 | 亚洲床戏一区| 国产99视频精品免费观看9e| 国产一级在线观看www色| 国产三级毛片| 国产精品久久久久婷婷五月| 毛片国产精品完整版| 青青极品在线| 国产国产人免费视频成18| 欧美亚洲一区二区三区导航| 在线欧美日韩| 亚洲中文字幕久久无码精品A| 国产人人乐人人爱| 国产乱人激情H在线观看| 欧美日韩中文国产va另类| 亚洲无码精彩视频在线观看| 久久亚洲精少妇毛片午夜无码 | 国产在线观看高清不卡| 亚州AV秘 一区二区三区| 亚洲色精品国产一区二区三区| 日本免费一级视频| 国产成人精品在线1区| 久久永久免费人妻精品| 97视频精品全国免费观看| 波多野结衣一区二区三区AV| 国产一级在线观看www色| a级毛片免费网站| 日本精品影院| 亚洲第一成年人网站| 亚洲午夜福利在线| 久久精品视频一| 五月婷婷导航| 国产成人三级| 欧美在线伊人| 成人午夜视频免费看欧美| 国产亚洲视频中文字幕视频| 久综合日韩| 国产精品无码一区二区桃花视频| 欧美黄网站免费观看| 欧美激情伊人| 亚洲色图狠狠干| 欧美精品成人一区二区视频一| 日本高清在线看免费观看| 91美女视频在线观看| 婷婷午夜天| 国产成人做受免费视频| 欧美午夜在线播放| 九色综合视频网| 亚洲Av综合日韩精品久久久| 久久精品无码专区免费| 国产女人综合久久精品视| 国产第一福利影院| 九色在线观看视频|