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

一種面向方面的模型轉換語言AOMTL

2010-01-01 00:00:00方義秋葛君偉
計算機應用研究 2010年6期

摘 要:針對面向方面的PIM到面向方面的PSM的轉換,提出了一種面向方面的模型轉換語言AOMTL。首先建立方面模型的轉換框架;然后根據此框架建立AOMTL的元模型,設計AOMTL的具體語法;最后使用AOMTL完成方面模型轉換。該方法為形式化及自動化方面模型轉換的描述與實現提供了一種有效的解決辦法。

關鍵詞:面向方面軟件開發; 模型驅動架構; 平臺無關模型; 平臺相關模型; 模型轉換

中圖分類號:TP311.5文獻標志碼:A

文章編號:1001-3695(2010)06-2150-03

doi:10.3969/j.issn.1001-3695.2010.06.044

Aspectoriented model transformation language AOMTL

FANG Yiqiua, HE Leia, GE Junweib

(a. College of Computer, b. College of Software, Chongqing University of Posts Telecommunications, Chongqing 400065, China)

Abstract:Through the transformation of aspectoriented PIM to PSM, this paper presentd a model for aspectoriented transformation language AOMTL. Firstly, built the transformation framework of aspect model, based on which built AOMTL metamodel and designed AOMTL concrete syntax. Finally, fulfilled the transformation of aspect model by using of AOMTL. This method provided an effective solution for the description and implementation of aspect model transformation with formalization and automation.

Key words:aspectoriented software development; model driven architecture; platform independent model; platform specific model; model transformation

隨著軟件開發過程的復雜化,軟件開發的方法越來越受到重視,近年來提出了將AOSD和MDA的融合及相互支持作為研究課題[1]。而方面模型轉換是這個研究領域發展的核心環節,直接影響到軟件開發的結果。方面PIM到方面PSM的轉換方法的研究,其有效性和準確性能夠提高軟件的開發效率。目前,PIM到PSM的模型轉換方法雖然都有自己的特點,但是這些模型轉換方法普遍都存在較復雜、不直觀、轉換效率不高的問題,而且缺乏形式化的定義,也很少在實踐中得到檢驗。

ATL(atlas transformation language)是一種混合語言,語法簡單易懂,操作方便,對于編程人員來說很容易理解和應用[2],而OCL是一種聲明式語言[3],具有定義簡潔、抽象層次高等特點。以ATL與OCL結合為基礎,本文提出了一種模型轉換語言AOMTL來進行方面模型轉換。該方法結合了ATL和OCL的特點和長處,用OCL對方面模型進行約束和補充定義,用 ATL來實現方面模型的轉換,既能彌補ATL不能體現系統動態特性和保證數據一致性的不足,又能彌補OCL轉換效率低下的不足,因此是實現方面PIM到方面PSM轉換的一種有效方法。

1 面向方面模型轉換框架

1.1 基于MDA模型轉換過程

一個模型生成另一個模型,必須把源模型中的每個元素同目標模型中的一個或多個元素建立聯系。這樣做的最直接方式是把源模型元素的元類與目標模型元素的元類建立聯系。因為模型元素與元類之間有實例—類型關系,元類在元模型中的每個實例都必須遵從對元類設置的規則。轉換過程如圖1所示。根據圖1可以得知模型轉換是用轉換定義來描述的,轉換定義包含一組轉換規則,這些規則由轉換工具來執行;轉換規則應當具有可調性、可追溯性和增量一致性[4]。

1.2 面向方面的模型轉換框架

根據模型轉換過程,結合AOSD的思想,可以得出面向方面的模型轉換是將面向方面PIM元模型中所定義的元類轉換到面向方面PSM元模型中定義的元類上,可以通過定義面向方面的模型轉換語言來形式化定義轉換。一個語言的元模型,也被稱為該語言的抽象語法,描述了所有能夠在該語言中使用到的概念及其之間的聯系。由此建立方面模型轉換框架如圖2所示。

2 方面模型轉換語言AOMTL

2.1 AOMTL分析

使用自然語言書寫變換規則,對人類讀者而言比較好理解,但對自動系統而言卻并非如此。因此,需要一個可以插入轉換工具的轉換定義,這個轉換定義能夠自動執行變換。模型轉換的形式化定義[5]:假定一個模型m是一個系統的形式化描述,用s表示系統,用f表示描述系統的形式化語言,那么這個系統s的模型就為m(s),就可以用m(s)/f來表示領域模型,而模型之間映射的通用表達式就是:m1(s)/f1,m2(s)/f2。f1和f2是元—元模型的實例,模型轉換可用表達式m(f)/MOF表達式來處理。所以為了實現AOPIM到AOPSM的模型轉換,定義一種新的模型轉換語言AOMTL來形式化方面模型的轉換。

AOMTL采用基于ATL與OCL結合的方式描述變換規則,實現模型轉換。在ATL中的轉換規則可以使用完全聲明的、混合的,或者是完全可執行的,但ATL功能單一,不能對模型進行精確的轉換,也沒有數據類型的驗證功能,不能保證模型轉換前后數據的一致性[2]。而OCL有前驗、后驗表達式和不變式的概念,這些則可以描述系統的動態特性,它還能對模型進行補充定義,保證模型在轉換前后數據的一致性,因此用OCL一定程度上可以消除模型的二義性問題[6]。根據以上分析,分別吸收ATL和OCL各自的優點,建立模型轉換語言AOMTL。

2.2 AOMTL的元模型

在統一的MOF元模型構架下,根據上節所述建立的方面模型轉換框架,定義了AOMTL的元模型,使得AOMTL能夠得以實現。因為方面模型轉換是定義在方面元模型級(M2)上的,它可以被應用在任何由此元模型定義的方面模型(M1)上。又因為方面元模型是由MOF所定,方面模型轉換所涉及的參數,也就是方面元模型中的元素,都是由MOF元—元模型所定義好的,適用于方面元模型的模型轉換語言AOMTL也就能夠得以實現。圖3為AOMTL的元模型。

2.3 面向方面模型轉換語言AOMTL的設計

2.3.1 AOMTL的數據類型

AOMTL是基于MOF的,其類型的實例結構的根元素是抽象的oclany類型,所有其他的各種類型數據都是從它直接或間接繼承的。主要包括六種數據類型,即原始數據類型、集合數據類型、元組數據類型、映射類型、枚舉類型和模塊元素類型。

2.3.2 AOMTL模塊

一個AOMTL模塊符合模型到模型的轉換,這種AOMTL單元能夠讓開發人員制訂從AOPIM產生AOPSM的方法。一個AOMTL模塊中的源模型AOPIM和目標模型AOPSM必須被各自的元模型“typed”。另外,一個AOMTL模型接收一個固定數量的模型作為輸入,并產生固定數量的輸出。AOMTL不能處理未知數量的模型。

AOMTL模型的結構:

{Header section;[Import section];Helper;Rulesets;}

Header section定義了轉換模型的名字以及相應源模型和目標模型變量的名字。在它內部能對模塊的可執行模型進行編碼。這部分語法定義如下:

Module name

Create AOPSM [from|refines] AOPIM

Improt section 是個可選項,用于要引入AOMTL庫的聲明,使用如下:

Uses library_name;

Helper是AOMTL的方法,可以定義AOMTL代碼,這些代碼能夠被別的AOMTL轉換所調用。一個AOMTL Helper用下面的元素定義:一個名字、一個環境類型、一個返回值類型、一個AOMTL表達式和一些參數集合選項。例如在模型轉換中操作名字轉換方法的定義:

Helper context String def:getGetterOperationName:String=…;

Rulesets是由多個規則集(Ruleset)組成。Ruleset反映了一個模型通過一組變換規則映射到另一個模型的變換過程,它是組成一個變換所用到的一系列規則的集合,包括多條變換規則(Rule)。Rule描述了從源模型的一個或多個元素到目標模型的一個或多個元素的映射關系。一個規則節點包含名稱、源條件、目標條件、動作,以及參數聲明等幾個主要部分。Rulename屬性是變模規則的名稱。源條件用于描述規則的匹配條件,它是一個集合,可以容納多個條件項的定義。這些不同的定義包括類型條件、值條件、一致性條件等;其內容可由擴展的OCL書寫。目標條件與源條件結構類似,但意義不同,源條件是對源模型中已有的模型元素作出判斷,目標條件是被變換引擎用做生成模型元素以及建好這些模型元素的關系。動作指定從源到目標模型元素的變換過程中要采取的一系列行為,包括值拷貝、子規則調用。參數部分指定了規則中設定的可變部分。具體表示如下:

Rule rulename {

From source Totarget

//source condition;

//target condition;

Map();}

Ruleset sname {

rule rulename1;

rule rulename2;

…;}

Rulesets name {

ruleset sname1;

ruleset sname2;

…;}

2.3.3 AOMTL庫

AOMTL庫是由定義的一系列的AOMTL Helper,這些Helper能夠被不同的ATL單元所調用。與其他單元一樣,AOMTL庫也包括一個可選的引入部分,當AOMTL庫導入AOMTL單元中后,這些Helper是可用的。

3 AOMTL的實現

為了能夠使用AOMTL形式化定義方面PIM到方面PSM的轉換,需要方面PIM和方面PSM的元模型,在變換定義中需要引用這些元模型中的元素以便給出形式化定義。因此,需要建立方面PIM元模型和方面PSM元模型。通過對UML元模型[7]的擴展,建立了方面PIM的元模型。圖4描述了這個元模型,它主要擴展了Classifier、Feature 和Association元類,增加了Aspect、PointCut、Advice和Crosscut四個元類。

AspectJ是一種針對Java擴展的面向方面語言,本文就以AspectJ[8]為例,構建面向方面PSM的元模型。圖5顯示了該PSM元模型。

基于方面PIM和PSM的元模型,使用AOMTL描述變換規則,完成方面PIM到AspectJ PSM的轉換。圖6描述了方面PIM到方面PSM的轉換過程。

其主體部分的AOMTL描述如下:

Rule Aspect {//Aspect的轉換規則

From s: Src!AOPIM To t: Dst!AOPSM

Pre:

s.attribute>include (att) and att.visibility=#public

Maps to s (

name<-s.name;

attribute()<-s.attribute();

isPrivileged<-s.isPrivileged;

declearedImplements<-s.declearedImplements;

declearedParents<-s.declearedParents;

perType<-s.perType;

Introductions()<-s.Introductions();

PointCuts()<-s.PointCuts();

Advice()<-s.Advice();

Operations()<-s.Operations();

) }

對于方面PIM中的每個名為AspectName的方面,目標模型PSM中要有一個同名的方面對應。對于PIM中的AspectName方面的每一個屬性,目標模型PSM中要有一個與其同名的屬性,并且類型也一樣。對于PIM中的Method():Returntype,在PSM中有同樣的Method():Returntype與其對應。

Rule Crosscut{//Crosscut的轉換規則如下:

Froms: Src!AOPIM Tot: Drc!AOPSM

Pre:

CrosscutDeclare->include(declare) and Structural=ture and declare=declare parents

Maps to s(

Intertypedeclare<-s.declare;) }

Rule other Intertypedeclaration{…}

對于方面PIM中的橫切的聲明表達式CrosscutDeclare,在方面PSM中,要有一個選定橫切對象的聲明性結構與之對應。根據CrosscutDeclare值在方面PSM中有對應的橫切表達式和橫切聲明成分,對于PIM中的CrosscutDeclare的每一個結構性橫切成分,在PSM的橫切分欄中有相應的成分對應,如AspectJ的Intertypedeclaration;對于PIM中CrosscutDeclare的行為性橫切,在目標模型中要有對應的包含平臺相關描述的橫切聲明成分Pointcut;對于PIM中動態橫切的操作部分CrosscutFeature,在目標模型方面PSM中要有一個使用相同類型修飾符的同名操作,并明確CrosscutDeclare的對應關系,使用平臺相關的操作。

Module Src2Dst;//方面模型的轉換

Create OUT: Dst from IN : Src;

Ruleset AOPIMtoAOPSM{

rule Aspect;

rule Crosscut;

rule other Intertypedeclaration;

…;}

4 結束語

MDA與AOSD的融合和相互支持代表著今后軟件開發的一個方向,其關鍵就在于方面模型的開發與轉換。方面模型轉換描述了方面PIM如何轉換到平臺相關的方面PSM。基于ATL和OCL設計的方面模型轉換語言AOMTL目的是形式化方面模型的轉換,使得方面模型轉換能夠用一致的方法來表達,并具有無二義性的特點。因此AOMTL對形式化及自動化方面模型轉換的描述與實現是可行的和有效的。

參考文獻:

[1]STEIN D, HANENBERG S, UNLAND R. Expressing different conceptual models selections in aspectoriented design[C]//Proc of the 5th International of Join Point Conference on AspectOriented Software Development.2006:15-26.

[2]JOUAULT F, KURTEV I. Transforming models with ATL[C]//Proc of Model Trans in Practice Workshop at Models. Jamaica:SpringerVerlag,2005:220-240.

[3]Object Management Group. OCL 2.0 specification[DB/OL].(2006-05-01).http://www.omg.org/.

[4]王學斌,王懷民,吳泉源,等.一種模型轉換的編織框架[J].軟件學報,2006,17(6): 1423-1435.

[5]陳曉燕,趙建華,李宣東.一個MDA支撐工具的設計與實現[J].計算機工程與設計,2005,26(1):39-43.

[6]馬浩海,高光來.基于圖形語法的UML模型轉換方法[J].內蒙古大學學報:自然科學版,2005,36(5):560-564.

[7]Object Management Group. Unified modeling language specification, version2.1.2 [DB/OL].(2007-11-01).http://www.omg.org/.

[8]COLYER A. Eclipse AspectJ中文版:利用Eclipse和Aspect J進行面向方面程序設計[M].錢竹青,鄒正武,譯.北京:清華大學出版社,2006:109-288.

主站蜘蛛池模板: 亚洲女同一区二区| 亚洲Av综合日韩精品久久久| 日本亚洲最大的色成网站www| 成人在线亚洲| 韩国v欧美v亚洲v日本v| 亚洲第一黄色网| 精品伊人久久久香线蕉| 久久一级电影| 国模在线视频一区二区三区| 久久无码免费束人妻| 色偷偷一区二区三区| 狼友av永久网站免费观看| 麻豆精品在线| 国产网站黄| 欧美色视频在线| 精品一区二区三区四区五区| 日韩毛片免费观看| 最新国产高清在线| 亚洲婷婷六月| 免费无码网站| 日本黄色不卡视频| 亚洲无限乱码一二三四区| 91破解版在线亚洲| 亚洲日产2021三区在线| 99久久99这里只有免费的精品| 亚洲综合国产一区二区三区| 亚洲成AV人手机在线观看网站| 欧美另类图片视频无弹跳第一页| 高潮毛片免费观看| 国产对白刺激真实精品91| 国产亚洲精品无码专| 99国产精品一区二区| 久久人搡人人玩人妻精品| 99中文字幕亚洲一区二区| 九色在线观看视频| 色噜噜综合网| 日本亚洲国产一区二区三区| 国产夜色视频| 国产69囗曝护士吞精在线视频| 亚洲精品动漫| 亚洲国产成人无码AV在线影院L| 国产精品冒白浆免费视频| 亚洲一区波多野结衣二区三区| 国产精品大白天新婚身材| 国产青青草视频| 无码网站免费观看| 色亚洲成人| 一级毛片免费的| 国产第一页免费浮力影院| 在线观看无码av五月花| 91亚洲精品第一| 國產尤物AV尤物在線觀看| 国产流白浆视频| 72种姿势欧美久久久久大黄蕉| 免费无遮挡AV| 国产无码网站在线观看| 亚洲一区二区成人| 国产成人精品无码一区二| 久久超级碰| 黑色丝袜高跟国产在线91| 欧美a级在线| 色综合久久88| 亚洲欧洲国产成人综合不卡| 国产97色在线| 国产三区二区| 国产激情在线视频| 国产成人亚洲精品无码电影| 秋霞一区二区三区| 狠狠色婷婷丁香综合久久韩国| 国产永久在线观看| 在线观看视频一区二区| 亚洲丝袜中文字幕| 亚洲国产欧美国产综合久久| 亚洲欧美另类日本| 日韩毛片免费视频| 在线国产综合一区二区三区 | 成人午夜免费观看| 国产欧美日韩va| 91精品国产无线乱码在线| www.日韩三级| 日本黄网在线观看| 欧美日韩中文字幕二区三区|