国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ATLAS轉(zhuǎn)換語言的模型轉(zhuǎn)換初探

2010-10-16 03:55:40李慧陳月娟張京軍
關(guān)鍵詞:調(diào)用定義規(guī)則

魏 菲,李慧,陳月娟,張京軍

(1.河北工程大學(xué) 信息與電氣工程學(xué)院,河北 邯鄲056038;2.邯鄲學(xué)院 計(jì)算機(jī)系,河北 邯鄲 056005)

1 模型驅(qū)動(dòng)架構(gòu)簡介

MDA是近年來軟件工程中研究和實(shí)踐的熱點(diǎn),模型在軟件開發(fā)過程中占有重要的地位。MDA開發(fā)過程的核心思想是:對系統(tǒng)進(jìn)行需求分析和設(shè)計(jì),建立反映系統(tǒng)核心業(yè)務(wù)思想的平臺(tái)無關(guān)模型PIM(Platform Independent Model),然后PIM經(jīng)過MDA工具的轉(zhuǎn)換生成基于特定平臺(tái)的平臺(tái)相關(guān)模型PSM(Platform Specialize Model),PSM再經(jīng)過MDA工具的轉(zhuǎn)換生成源代碼,最后進(jìn)入代碼測試和維護(hù),如圖1所示。

1.1 模型驅(qū)動(dòng)架構(gòu)的主要模型

1)平臺(tái)無關(guān)模型PIM:平臺(tái)無關(guān)模型PIM是反映系統(tǒng)的主要業(yè)務(wù)的模型,是對業(yè)務(wù)需求的一種純理論的反映,根據(jù)準(zhǔn)確的需求分析得到的結(jié)果來進(jìn)行建模的,這個(gè)模型設(shè)計(jì)好后,可以供其它系統(tǒng)重復(fù)使用。

2)平臺(tái)相關(guān)模型PSM:平臺(tái)相關(guān)模型PSM是將PIM通過模型規(guī)則轉(zhuǎn)換成與特定技術(shù)和平臺(tái)相關(guān)的模型,比如基于.NET平臺(tái)、Spring平臺(tái)等。PIM可以轉(zhuǎn)換成一個(gè)或多個(gè)PSM。

1.2 模型驅(qū)動(dòng)架構(gòu)的核心技術(shù)[2]

建模和模型映射技術(shù)是MDA的核心技術(shù),UML(Unified Modeling Language),MOF(Meta Object Facility)及 CWM(Common Warehouse Metamodel)是MDA主要使用的三項(xiàng)建模標(biāo)準(zhǔn),作為PIM及PSM的建?;A(chǔ)。

UML—統(tǒng)一建模語言:UML是一種元模型,UML模型的表達(dá)能力很強(qiáng),會(huì)避免建模過程中不必要的信息丟失。

MOF—元對象設(shè)施:MOF用來定義面向?qū)ο笤P偷幕驹?、語法和結(jié)構(gòu)[4]。它是一種面向?qū)ο蟮脑P?為規(guī)約面向?qū)ο笤P投x了一種公共的抽象語言。

班主任教育失誤后,要根據(jù)實(shí)際情況,有針對性地找學(xué)生談心,向?qū)W生解釋清楚嚴(yán)厲批評其是因?yàn)槔蠋熋鎸Φ牟皇且晃粚W(xué)生,而是全班幾十位學(xué)生,老師想通過這件事使全班學(xué)生都受到教育,也許批評重了一些,希望其能諒解。通過講道理,循循善誘,動(dòng)之以情、曉之以理,幫助學(xué)生消除心理障礙,提高思想認(rèn)識,理解班主任的工作,愉快地接受教育,盡可能減少或消除內(nèi)心的不滿。

CW M—公共倉庫元模型:CWM是一組元模型,目的是為了在數(shù)據(jù)倉庫工具、數(shù)據(jù)倉庫平臺(tái)和數(shù)據(jù)倉庫存儲(chǔ)之間建立一個(gè)商務(wù)智能元數(shù)據(jù)的交換機(jī)制[5]。它覆蓋了數(shù)據(jù)倉庫應(yīng)用的整個(gè)生命周期。

2 ATLAS轉(zhuǎn)換語言

ATL著重于模型與模型之間的轉(zhuǎn)換,其語法結(jié)構(gòu)是基于OCL 2.0定義的,適用于表達(dá)MDA框架中的模型轉(zhuǎn)換。ATL主要分為三種類型:ATL模塊,ATL查詢,ATL庫。

2.1 ATL模塊

ATL模塊符合模型到模型的轉(zhuǎn)換,通過這種ATL單元能夠制定從源模型元素產(chǎn)生目標(biāo)模型元素的方法。ATL模塊的源模型和目標(biāo)模型必須被各自的元模型“typed”。下面介紹下ATL模型的結(jié)構(gòu)。

1)Header section:頭部分定義了符合源模型和目標(biāo)模型轉(zhuǎn)換的模塊名字和變量名字,它也定義了模塊的執(zhí)行模型。有關(guān)頭部分的語法定義如下:

module module_name;

create output_models[from|refines] input_models。

2)Import section:輸入部分可以做選擇性的輸入,它可以聲明必須輸入到哪個(gè)ATL庫中。ATL庫聲明式的實(shí)現(xiàn)如下:

uses extensionless_library_file_name。

3)Helpers:ATL的helpers可以視為java里的方法。helpers盡可能定義分解的ATL代碼。一個(gè)ATL helpers用下面的元素定義:一個(gè)名字,一個(gè)文本類型,一個(gè)返回值類型,一個(gè)ATL helpers代碼的表達(dá)式和一個(gè)可選的參數(shù)設(shè)置。例如,下面是一個(gè)返回兩個(gè)整數(shù)最大值的helper定義:

helper context Integer def:max(x:Integer):Integer=...;

helpers也可以定義一個(gè)不接受任何參數(shù)的helper。下面是對一個(gè)乘以2的整數(shù)值的helper定義:

helper context Integer def:double():Integer=self*2;

將以上二種定義混合的語法結(jié)構(gòu)是:

helper def:max(x1:Integer,x2:Integer):Integer=...。

4)Rules:在ATL中存在二種不同類型的規(guī)則:匹配規(guī)則和調(diào)用規(guī)則,這二種規(guī)則符合通過ATL提供的二種不同的編程模型:宣稱性編程、命令式編程。

在ATL匹配規(guī)則中,ATL轉(zhuǎn)換的源模型元素不能被匹配,詳細(xì)設(shè)計(jì)源模型的匹配規(guī)則就是為了符合這種限制。另外,ATL匹配規(guī)則不能生成ATL原始類型的值。調(diào)用規(guī)則可以被看作helpers的一個(gè)特定類型:它們必須被明確地調(diào)用執(zhí)行,而且它們可以接受參數(shù)。然而,相對于helpers,隨著匹配規(guī)則,調(diào)用規(guī)則可以生成目標(biāo)模型元素。無論是從匹配規(guī)則或是其它的調(diào)用規(guī)則,一個(gè)調(diào)用規(guī)則必須在一個(gè)命令代碼部分中被調(diào)用。

2.2 ATL查詢

ATL查詢用于一個(gè)模型到原始類型值的轉(zhuǎn)換,它可以看作從一系列源模型計(jì)算原始值的操作。普遍使用的ATL查詢是從一系列源模型中產(chǎn)生一個(gè)文本輸出。不過,ATL查詢不限于字符串值的計(jì)算,而且也可以返回?cái)?shù)字值或是布爾值。下面分別介紹下ATL查詢的結(jié)構(gòu)和執(zhí)行語義。

ATL查詢結(jié)構(gòu):完成一個(gè)可選的輸入部分后,ATL查詢必須定義一個(gè)查詢實(shí)例。關(guān)鍵字查詢介紹了一個(gè)查詢實(shí)例,查詢實(shí)例指定了必須是由一個(gè)ATL表達(dá)式計(jì)算得到的結(jié)果。表達(dá)式如下:

query query_name=exp。

查詢執(zhí)行語義:作為ATL模塊,ATL查詢的執(zhí)行是在幾個(gè)連續(xù)的階段中實(shí)施的。第一階段是初始化階段,它對應(yīng)著ATL模塊的初始階段,并認(rèn)為是在ATL模塊文本中定義的初始化屬性。第二個(gè)階段是計(jì)算階段,通過執(zhí)行ATL查詢中查詢元素的宣稱代碼去計(jì)算查詢返回值。需注意的是,在查詢文件中定義的helpers可以在初始化和計(jì)算階段中被調(diào)用。

2.3 ATL庫

最后的ATL單元類型是ATL庫,開發(fā)一個(gè)ATL庫可以定義一系列的ATL helpers,這些helpers可以被不同的ATL單元(包括模塊、查詢、庫)調(diào)用。一個(gè)ATL庫可以包括一個(gè)可選的輸入部分,除此之外,ATL庫定義了一些ATL helpers,這些helpers在導(dǎo)入庫的ATL單元中可使用。相比模塊和查詢,一個(gè)ATL庫不能被單獨(dú)執(zhí)行。這說明,庫在執(zhí)行時(shí)與其它初始化步聚不相關(guān)。由于缺少初始化的步聚,屬性helpers不能在ATL庫中定義。

3 模型轉(zhuǎn)換

目前主流的Atlas轉(zhuǎn)換框架[5]由ATLAS研究組、LINA&INRIA和法國Nantes大學(xué)共同研究得出,如圖2所示??蚣苤械脑茨P头显P蚢,它只能讀不能修改;目標(biāo)模型符合元模型b,它只能寫。一個(gè)完整的Atlas模型轉(zhuǎn)換程序需要四個(gè)文件:元模型a、元模型b、源模型、模型轉(zhuǎn)換實(shí)例。源模型通過轉(zhuǎn)換生成的目標(biāo)是目標(biāo)模型。

轉(zhuǎn)換框架并沒有詳細(xì)的說明模型轉(zhuǎn)換方法,文獻(xiàn)[6] 中的例子也只是把簡單的類模型轉(zhuǎn)換為關(guān)系模型,并未給出轉(zhuǎn)換的詳細(xì)過程,類的元模型及關(guān)系元模型如圖3、圖4所示。目前在MDA的模型轉(zhuǎn)換這一階段,只是處于模型轉(zhuǎn)換的理論性研究,模型轉(zhuǎn)換技術(shù)尚未成熟。

本文針對文獻(xiàn)[6] 及目前國內(nèi)外的研究現(xiàn)狀對模型轉(zhuǎn)換進(jìn)行了改進(jìn),提出一個(gè)利用ATLAS轉(zhuǎn)換語言接收模型轉(zhuǎn)換信號進(jìn)行轉(zhuǎn)換的思想框架。

當(dāng)PIM模型向PSM模型轉(zhuǎn)換時(shí),PIM模型發(fā)出一個(gè)要求模型轉(zhuǎn)換的信號,ATL接收到新信號時(shí),就會(huì)判斷此信號是否為模型轉(zhuǎn)換的信號,如果是模型轉(zhuǎn)換信號,則接受信號,并利用ATL執(zhí)行此信號的任務(wù),進(jìn)行PIM模型到PSM模型轉(zhuǎn)換,當(dāng)完成任務(wù)后回到接收新信號的初始位置繼續(xù)等待新的信號。如果PIM模型發(fā)出的信號不是PIM要求模型轉(zhuǎn)換的信號,則進(jìn)行判斷該信號是否為可行的信號,如果是可行信號,則直接返回入口端等待新的模型轉(zhuǎn)換信號;如果不是可行信號,則向數(shù)據(jù)庫報(bào)告此信號為不可行信號,數(shù)據(jù)庫內(nèi)有不可行信號日志記錄,將不可行信號寫入日志是為方便再次接收到類似信號時(shí)可在入口端直接屏蔽以免浪費(fèi)循環(huán)時(shí)間,然后返回入口處等待接收新的信號任務(wù),按此順序循環(huán)下去,如圖5所示。此循環(huán)過程的思想也可以應(yīng)用在PIM到PIM的轉(zhuǎn)換、PSM到PSM的轉(zhuǎn)換及PSM到PIM的轉(zhuǎn)換中。

4 結(jié)語

理想的MDA模型轉(zhuǎn)換是利用模型轉(zhuǎn)換工具自動(dòng)將 PIM轉(zhuǎn)換成相應(yīng)的 PSM,但是目前支持MDA模型轉(zhuǎn)換的工具無法做到自動(dòng)轉(zhuǎn)換。本文利用ATLAS轉(zhuǎn)換語言,在PIM向PSM轉(zhuǎn)換時(shí)判斷接收的信號是否為轉(zhuǎn)換信號,以便做出能否進(jìn)行模型轉(zhuǎn)換的決定。研究提出了一個(gè)模型轉(zhuǎn)換的思想框架,為今后的模型開發(fā)提供借鑒與參考。

[1] OMG/OR MSC.Model driven architecture.[EB/OL] .[2001-07-0] .http://www.omg.org.

[2] 董建武.MDA:新一代軟件包互操作體系結(jié)構(gòu)[J] .計(jì)算機(jī)工程,2003,29(2):3-4..

[3] 趙珂,韓業(yè)紅.MDA模型轉(zhuǎn)換的研究[J] .中國科技信息,2009(4):138-139.

[4] JOUAULT F,KURTEV I.Transforming models with ATL[C] .Berlin:Proc.of the Salellite Events on the 8th Int'l conf.on Model Driven Engineering Languages and Systems,2006(3):128-138.

[5] FRANKEL S.Model Driven Architecture:Applying MDA to Enterprise Computing[M] .Indianapol:John Witey and Sons,2003.

[6] JOUAU F,ALLILAIRE F,BEZIVIN J,et al.ATL:Amodeltransformationtool[J] .Science of Computer Programming,2008(4):31-39.

猜你喜歡
調(diào)用定義規(guī)則
撐竿跳規(guī)則的制定
數(shù)獨(dú)的規(guī)則和演變
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
讓規(guī)則不規(guī)則
Coco薇(2017年11期)2018-01-03 20:59:57
TPP反腐敗規(guī)則對我國的啟示
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
修辭學(xué)的重大定義
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
姚安县| 三穗县| 合肥市| 衡阳县| 吉林省| 本溪| 怀化市| 收藏| 衡山县| 杂多县| 白山市| 永胜县| 舒兰市| 封丘县| 蒙阴县| 贺州市| 神木县| 调兵山市| 抚宁县| 龙井市| 淮南市| 徐汇区| 萝北县| 五原县| 准格尔旗| 东至县| 泰宁县| 陵水| 仁怀市| 葫芦岛市| 石河子市| 新建县| 阿拉善左旗| 新竹县| 隆安县| 旬阳县| 武宁县| 洛宁县| 日照市| 友谊县| 托克逊县|