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

?

基于Atlas語言實(shí)現(xiàn)模型轉(zhuǎn)換技術(shù)的研究

2010-05-13 09:17川,王普,李亞芬
現(xiàn)代電子技術(shù) 2009年20期

冉 川,王 普,李亞芬

摘 要:OMG提出一種軟件開發(fā)新方法:模型驅(qū)動(dòng)架構(gòu)MDA。這里在MDA基本思想的基礎(chǔ)上,側(cè)重模型轉(zhuǎn)換技術(shù),分析Atlas轉(zhuǎn)換方法的特征和優(yōu)缺點(diǎn),并進(jìn)行改進(jìn)設(shè)計(jì),增加模型驗(yàn)證環(huán)節(jié)。最后,通過一個(gè)例子說明如何應(yīng)用提出的改進(jìn)方法,在一定程度上證明它的可行性。

關(guān)鍵詞:MDA;Atlas;模型轉(zhuǎn)換;Web應(yīng)用開發(fā)

中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1004-373X(2009)20-126-05

Research of Model Transformation Method Based on Atlas

RAN Chuan,WANG Pu,LI Yafen

(College of Electronic Information & Control Engineering,Beijing University of Technology,Beijing,100124,China)

Abstract:OMG has proposed a kind of new method of software development named Model Driven Architecture (MDA).Based on concepts about model transformation technology,merits and drawbacks of features of the Atlas are analysed,and improving design by adding models validation step.How to use the proposed method through an example,its feasibility and utility in a certain extent are proved.

Keywords:MDA;Atlas;model transformation;Web application development

0 引 言

MDA(Model Driven Architecture)是OMG(Object Management Group)于2001年發(fā)布的軟件開發(fā)過程中的模型組織管理框架。在MDA中,定義了PIM(平臺(tái)無關(guān)模型)和PSM(平臺(tái)相關(guān)模型)及其轉(zhuǎn)換規(guī)范[1]。其中,模型轉(zhuǎn)換定義了不同模型元素的對(duì)應(yīng)關(guān)系,是實(shí)現(xiàn)MDA的關(guān)鍵環(huán)節(jié)。

模型是系統(tǒng)的抽象,它比實(shí)現(xiàn)系統(tǒng)更容易獲取、理解和計(jì)算[2]。人們?cè)噲D準(zhǔn)確地建立模型之間、模型與系統(tǒng)之間的關(guān)系,使模型在系統(tǒng)開發(fā)過程中起到實(shí)質(zhì)性的作用。

1 模型轉(zhuǎn)換流程

在MDA中主要包含三種模型轉(zhuǎn)換,即PIM到PIM的轉(zhuǎn)換,PIM到PSM的轉(zhuǎn)換,PSM到代碼的轉(zhuǎn)換。

如以開發(fā)Web信息發(fā)布系統(tǒng)為例,在MDA框架下模型轉(zhuǎn)換系統(tǒng)首先將按照用戶輸入的需求建立一個(gè)系統(tǒng)級(jí)的PIM模型,系統(tǒng)級(jí)模型包括Web系統(tǒng)的相關(guān)信息(如包含信息發(fā)布、用戶管理等模塊),之后是一系列細(xì)化PIM模型的工作,將系統(tǒng)級(jí)的PIM模型分化成若干個(gè)模塊級(jí)的PIM模型,再轉(zhuǎn)化為操作級(jí)的PIM模型。最終可以將細(xì)化后的模型分為兩類:一類是表示系統(tǒng)靜態(tài)結(jié)構(gòu)的模型,這類模型可以表示為UML的類圖,反應(yīng)Web系統(tǒng)的靜態(tài)特征;一類是描述系統(tǒng)業(yè)務(wù)操作等動(dòng)態(tài)結(jié)構(gòu)的模型,這一類模型可以表示為UML的用例圖,反映Web系統(tǒng)的動(dòng)態(tài)特征。

下一步要進(jìn)行PIM到PSM模型的轉(zhuǎn)換工作,模型轉(zhuǎn)換系統(tǒng)按照對(duì)應(yīng)的轉(zhuǎn)換規(guī)則,分別將PIM靜態(tài)結(jié)構(gòu)模型轉(zhuǎn)換為PSM靜態(tài)結(jié)構(gòu)模型,將PIM動(dòng)態(tài)結(jié)構(gòu)模型轉(zhuǎn)換為PSM動(dòng)態(tài)結(jié)構(gòu)模型。PSM靜態(tài)結(jié)構(gòu)模型為生成Web系統(tǒng)中數(shù)據(jù)訪問層和持久層以及數(shù)據(jù)庫提供關(guān)鍵字段和屬性值,PSM動(dòng)態(tài)結(jié)構(gòu)模型為生成Web系統(tǒng)中業(yè)務(wù)邏輯層提供關(guān)鍵字段和屬性值,Web系統(tǒng)中的視圖層的關(guān)鍵字段和屬性值將由這兩類模型共同提供。

在模型轉(zhuǎn)換中,最后將對(duì)應(yīng)特定平臺(tái)的PSM模型輸入代碼生成器,通過部署和發(fā)布,用戶將得到所需要的Web系統(tǒng)。在這三種模型轉(zhuǎn)換中,PIM到PIM轉(zhuǎn)換目的是是細(xì)化用戶需求,將一個(gè)大模型分解成若干的小模型;PSM到代碼的轉(zhuǎn)換,主要由代碼生成器完成。這兩種模型間變換比較具體,因此比較容易實(shí)現(xiàn),在此將重點(diǎn)集中在PIM到PSM的轉(zhuǎn)換。

2 基于Atlas模型轉(zhuǎn)換設(shè)計(jì)

當(dāng)前MDA還屬于一種早期的有待發(fā)展技術(shù),其模型轉(zhuǎn)換方法也有很多,例如:手動(dòng)轉(zhuǎn)換方法(程序員使用可以訪問和操作模型的API對(duì)源模型進(jìn)行轉(zhuǎn)換,從而得到目標(biāo)模型的方法)、基于規(guī)則的模型轉(zhuǎn)換[3]、基于模板的代碼生成技術(shù)(如AndroMDA等方法)、基于關(guān)系代數(shù)的模型轉(zhuǎn)換[4](將“模型轉(zhuǎn)換”表達(dá)為一個(gè)二元關(guān)系或者一組二元關(guān)系)、基于元模型間映射的模型轉(zhuǎn)換[2]、基于模式的模型轉(zhuǎn)換[5,6](使用設(shè)計(jì)模式定義轉(zhuǎn)換規(guī)則,從而得到更加符合設(shè)計(jì)的目標(biāo)模型)等。這里所使用的是基于Atlas模型轉(zhuǎn)換框架的一種改進(jìn)方法,對(duì)其進(jìn)行分析并展開實(shí)現(xiàn)研究。

2.1 Atlas模型轉(zhuǎn)換框架與語言

Atlas是屬于開源的項(xiàng)目,單向的混合型(描述性和命令行并存)模型轉(zhuǎn)換語言,使用OCL來描述約束,描述規(guī)則的能力較好,易于應(yīng)用。

Atlas轉(zhuǎn)換框架較為主流[7],如圖1所示。其中源模型符合元模型a,目標(biāo)模型符合元模型b。元模型a和元模型b都符合惟一的元元模型。模型轉(zhuǎn)換實(shí)例,它也是一種模型,它符合模型轉(zhuǎn)換的元模型。模型轉(zhuǎn)換的元模型也符合惟一的元元模型。

圖1 Atlas轉(zhuǎn)換框架

一個(gè)完整的Atlas模型轉(zhuǎn)換程序,需要四個(gè)文件:元模型a、元模型b、源模型、模型轉(zhuǎn)換實(shí)例。通過轉(zhuǎn)換生成的目標(biāo)是目標(biāo)模型。

2.2 Atlas模型轉(zhuǎn)換的優(yōu)劣與補(bǔ)充

除了功能相對(duì)較強(qiáng)和用戶較廣之外,Atlas語言的語法相對(duì)簡(jiǎn)單容易理解,使用較方便,對(duì)于編程人員來說容易應(yīng)用。此外,Atlas使用者不需要很強(qiáng)的數(shù)學(xué)功底,編程人員上手應(yīng)用相對(duì)較容易。

Atlas也存在一些不足。MDA技術(shù)初衷就是盡量使開發(fā)過程自動(dòng)化,減少開發(fā)人員工作量。目前Atlas在這方面還存在一些問題。由于功能單一,當(dāng)模型復(fù)雜時(shí)需編寫繁多轉(zhuǎn)換規(guī)則,模型轉(zhuǎn)換精確性還不高。由于轉(zhuǎn)換過程是單向的,所以沒有數(shù)據(jù)類型驗(yàn)證功能,模型轉(zhuǎn)后前后數(shù)據(jù)一致性不能保證。

為了增強(qiáng)處理復(fù)雜模型系統(tǒng)的能力,通過下面兩個(gè)辦法改進(jìn)現(xiàn)有轉(zhuǎn)換模塊。

首先,分析系統(tǒng)內(nèi)各種模型,提高系統(tǒng)中模型的轉(zhuǎn)換精度和完整性。針對(duì)系統(tǒng)靜態(tài)結(jié)構(gòu)模型,把有共同結(jié)構(gòu)屬性的模型進(jìn)行提煉,設(shè)計(jì)具有普遍性的“抽象父類模型”;針對(duì)系統(tǒng)動(dòng)態(tài)結(jié)構(gòu)模型,對(duì)這些操作進(jìn)行歸納和分類,總結(jié)出“抽象操作模型”,針對(duì)這些模型進(jìn)行更進(jìn)一步細(xì)化或者編寫轉(zhuǎn)換規(guī)則,最后把各種類的抽象模型整理集中在模型轉(zhuǎn)換庫,供轉(zhuǎn)換框架調(diào)用。

其次,為了提高模型建立和轉(zhuǎn)換的一致性,可以在模型轉(zhuǎn)換的前后建立模型轉(zhuǎn)換前置和后置檢驗(yàn)環(huán)節(jié)。在操作中,在確定轉(zhuǎn)換平臺(tái)后,可以針對(duì)源模型和目標(biāo)模型這兩個(gè)文件進(jìn)行操作。前置檢驗(yàn)主要檢查作為輸入的源模型中指定字段是否符合轉(zhuǎn)換規(guī)則的要求,在轉(zhuǎn)換前進(jìn)行檢查,避免造成轉(zhuǎn)換失敗或者轉(zhuǎn)換不完全;后置檢驗(yàn)主要檢查作為輸出的目標(biāo)模型中指定字段是否符合要求,與其他字段間是否滿足設(shè)計(jì)需要,并且對(duì)于異常情況予以更正并告知用戶。模型轉(zhuǎn)化模塊如圖2所示。

圖2 模型轉(zhuǎn)換模塊示意圖

3 模型驅(qū)動(dòng)開發(fā)Web應(yīng)用系統(tǒng)

下面將通過Web應(yīng)用實(shí)例具體的分析,說明在Atlas框架下進(jìn)行模型轉(zhuǎn)換所需的各種模型和轉(zhuǎn)換規(guī)則的分析和設(shè)計(jì)思路。

3.1 源模型設(shè)計(jì)

源模型來自于用戶需求,用戶可以通過具備可視化開放功能的交互頁面將需求提供給模型轉(zhuǎn)換框架。

在作者研究的模型轉(zhuǎn)換實(shí)例中,用戶的需求將以形式化的文檔,存儲(chǔ)為XML文件格式。如圖3所示,在文檔中包含若干業(yè)務(wù)對(duì)象的屬性特征和業(yè)務(wù)邏輯描述,在轉(zhuǎn)換框架中,源模型經(jīng)過轉(zhuǎn)換規(guī)則處理最終會(huì)生成目標(biāo)模型。

3.1.1 設(shè)計(jì)思路

通過人機(jī)交互頁面獲取用戶需求,可以看作是系統(tǒng)按源模型結(jié)構(gòu)對(duì)用戶需求逐步細(xì)化的過程。通過逐步的模型定義和建立,分層次地將需求的粒度從大變小,同時(shí)將它們作為輸入進(jìn)行模型轉(zhuǎn)換。

圖3 源模型生成流程圖

(1) 包含模塊定義。這里指系統(tǒng)中明確的對(duì)象以及對(duì)其進(jìn)行的操作集合。捕獲用戶Web應(yīng)用需求,首先要明確在Web應(yīng)用中都包含哪些對(duì)象,因?yàn)榇撕蟮牟僮鞫紝⒑瓦@些對(duì)象有關(guān)。如果是信息發(fā)布系統(tǒng),它所包含的對(duì)象可能有欄目、文章、用戶、部門等;如果是票務(wù)系統(tǒng)則可能包含劇場(chǎng)座位、演出場(chǎng)次等。一些基本常用的對(duì)象可以儲(chǔ)存在Atlas庫文件中,供用戶選擇,用戶也可以在滿足模型規(guī)范的范圍內(nèi)自定義模型。

(2) 模塊功能定義。明確系統(tǒng)包含的對(duì)象之后,下一步就是明確與之相關(guān)的操作,使其構(gòu)成一個(gè)完整的功能模塊。在這一層,用戶需要對(duì)操作進(jìn)行定義,例如增加,刪除,修改,查詢,或者自定義操作名稱。這一層的信息包含了系統(tǒng)內(nèi)所有用戶可以點(diǎn)擊執(zhí)行的操作集合。

(3) 操作功能定義。在這一層中,將對(duì)之前定義操作進(jìn)行更詳細(xì)的描述。經(jīng)過分析,系統(tǒng)中的操作都是由數(shù)據(jù)庫操作添加(Create)、查詢(Query)、更新(Update)、刪除(Delete)這些命令組成的,不同順序的CRUD命令組合形成了不同的操作,因此這一層的工作是用形式化的格式將操作描述出來。當(dāng)然由于參數(shù)和處理對(duì)象不同,本層中會(huì)允許執(zhí)行內(nèi)容不同CRUD命令存在。

(4) 詳細(xì)操作定義。在這一層中將具體定義系統(tǒng)數(shù)據(jù)庫操作的參數(shù)和返回值。例如,若之前定義過兩個(gè)增加命令(add_one和add_all),在這一層里需要為這兩個(gè)具體的數(shù)據(jù)庫添加(Create)命令進(jìn)行定義,明確這兩個(gè)命令傳遞的參數(shù)和返回值,保證系統(tǒng)對(duì)數(shù)據(jù)庫操作準(zhǔn)確有效。

(5) 頁面內(nèi)容定義。為系統(tǒng)視圖層的頁面定義具體屬性,包括頁面處理的業(yè)務(wù)類型,包含的對(duì)象屬性,提供的操作接口,顯示的風(fēng)格樣式等信息。

3.1.2 源模型結(jié)構(gòu)

依照上述設(shè)計(jì)思路,首先設(shè)計(jì)源模型對(duì)應(yīng)的元模型a。在元模型a中,定義了源模型的組成結(jié)構(gòu),屬性和相互聯(lián)系。如以信息發(fā)布系統(tǒng)的欄目模塊為例,如圖4所示,可以看出源模型中定義了Column對(duì)象包含了一個(gè)type屬性和Static對(duì)象和Action對(duì)象,同時(shí)明確了它屬于Webpim對(duì)象。Static對(duì)象和Action對(duì)象分別對(duì)應(yīng)用戶需求的結(jié)構(gòu)組成和功能操作兩部分,具體需求在其中定義即可。

圖4 元模型a片段

圖5所示,是按元模型a定義規(guī)范得到的源模型。源模型儲(chǔ)存為XML文件。文件中包含了系統(tǒng)內(nèi)全部模塊信息,每個(gè)模塊信息又由表示對(duì)象的靜態(tài)結(jié)構(gòu)和表示操作的動(dòng)態(tài)結(jié)構(gòu)組成。這些信息由概括到具體,分層次將用戶需求表示出來。在模型轉(zhuǎn)換中編寫的轉(zhuǎn)換規(guī)則是以元模型a和元模型b的結(jié)構(gòu)進(jìn)行映射的,所以源模型必須依照元模型a的格式規(guī)范。否則在轉(zhuǎn)換中就會(huì)出現(xiàn)所定義的轉(zhuǎn)換條件和輸入值不符合,發(fā)生異常錯(cuò)誤的情況。

圖5 源模型文檔片段

3.2 目標(biāo)模型設(shè)計(jì)

模型轉(zhuǎn)換框架中,目標(biāo)模型由源模型經(jīng)轉(zhuǎn)換規(guī)則處理后得到,將以形式化文檔作為代碼生成器的輸入,儲(chǔ)存為XML文件格式。

3.2.1 設(shè)計(jì)思路

不同于源模型,目標(biāo)模型在轉(zhuǎn)換規(guī)則處理后,其內(nèi)容將按用戶的需求或適合目標(biāo)系統(tǒng)描述的層次結(jié)構(gòu),描述出其中的關(guān)鍵元素信息。目標(biāo)模型具有如下特點(diǎn):

(1) 目標(biāo)模型與目標(biāo)系統(tǒng)對(duì)應(yīng)。目標(biāo)模型設(shè)計(jì)根據(jù)的是目標(biāo)系統(tǒng),將目標(biāo)系統(tǒng)中的關(guān)鍵信息元素整理集合成能表示目標(biāo)系統(tǒng)內(nèi)各層次結(jié)構(gòu)關(guān)系、業(yè)務(wù)邏輯關(guān)系,形成目標(biāo)系統(tǒng)的元模型b。經(jīng)過轉(zhuǎn)換規(guī)則定義元模型a與元模型b的映射關(guān)系[8],最后將由源模型生成目標(biāo)模型。

(2) 保證系統(tǒng)順利生成。為了保證不同技術(shù)背景用戶的輸入都能夠生成出Web應(yīng)用,并且保證生成的Web應(yīng)用能夠順利運(yùn)行。在目標(biāo)模型中添加默認(rèn)信息,這些默認(rèn)信息將通過轉(zhuǎn)換規(guī)則自動(dòng)添加到目標(biāo)模型中。

(3) 信息完整性。源模型中缺省的屬性和值將被默認(rèn)值取代或由系統(tǒng)自動(dòng)生成,以確保模型完整性。另外,重復(fù)的部分也將被合并,避免出現(xiàn)模型缺失和冗余。

(4) 根據(jù)需要,計(jì)算得到模型數(shù)據(jù)。目標(biāo)模型的一些屬性值在源模型建立時(shí)還未產(chǎn)生,需要對(duì)源模型進(jìn)行分析,通過計(jì)算和邏輯處理才能得到,這些屬性值將保存在模型結(jié)構(gòu)中指定對(duì)應(yīng)的位置。

(5) 平臺(tái)相關(guān)性。目標(biāo)模型是平臺(tái)相關(guān)的模型,將作為代碼生成器的輸入生成整個(gè)目標(biāo)系統(tǒng),因此在目標(biāo)模型中,各種類型的對(duì)象除了相應(yīng)的值以外還必須要有相應(yīng)的平臺(tái)類型與之對(duì)應(yīng)。

3.2.2 目標(biāo)模型結(jié)構(gòu)

從設(shè)計(jì)思路出發(fā),首先設(shè)計(jì)目標(biāo)模型對(duì)應(yīng)的元模型b。元模型b的設(shè)計(jì)要與目標(biāo)系統(tǒng)的關(guān)鍵元素相符合。例如,目標(biāo)系統(tǒng)采用MVC的架構(gòu)設(shè)計(jì),目標(biāo)模型可以分為視圖(View)、模型(Model)、控制(Control)三部分結(jié)構(gòu)來表示目標(biāo)系統(tǒng),這樣設(shè)計(jì)使目標(biāo)模型與目標(biāo)系統(tǒng)層次一致,可以更好地表示對(duì)應(yīng)關(guān)鍵信息,如圖6所示。

圖6 元模型b片段

以此類推,如果目標(biāo)系統(tǒng)采用SSH框架(Struts+Sping+Hibernate),目標(biāo)模型也可分別對(duì)應(yīng)這三個(gè)框架進(jìn)行描述,最后組合成目標(biāo)模型。

在確定元模型b之后,經(jīng)過轉(zhuǎn)換規(guī)則中定義的與元模型a的映射關(guān)系,就能從源模型得到目標(biāo)模型。如圖7所示,因?yàn)橛赊D(zhuǎn)換規(guī)則映射得來,生成的目標(biāo)模型的結(jié)構(gòu)組成嚴(yán)格符合元模型b的規(guī)范定義,包含目標(biāo)系統(tǒng)的結(jié)構(gòu)層次和關(guān)鍵信息。之后,目標(biāo)模型將作為代碼生成器的輸入,產(chǎn)生最后的目標(biāo)系統(tǒng)。

圖7 目標(biāo)模型文檔片段

3.3 轉(zhuǎn)換規(guī)則設(shè)計(jì)

模型轉(zhuǎn)換就是讀取源模型,通過一組轉(zhuǎn)換規(guī)則,將源模型轉(zhuǎn)換為目標(biāo)模型并輸出的過程[9]。其中元模型a代表源模型,元模型b代表目標(biāo)模型,在設(shè)計(jì)轉(zhuǎn)換規(guī)則時(shí)首先需要保證能夠?qū)崿F(xiàn)目標(biāo)系統(tǒng);其次,要盡可能擴(kuò)展轉(zhuǎn)換規(guī)則內(nèi)容,能夠提高模型轉(zhuǎn)換的粒度要求,以滿足能夠?qū)Ρ硎鞠到y(tǒng)細(xì)節(jié)特性的功能進(jìn)行處理;最后,要保證源模型到目標(biāo)模型的信息不會(huì)丟失或在用戶不知情的情況下被覆蓋。

如圖8所示,源模型到目標(biāo)模型的轉(zhuǎn)換中,模型結(jié)構(gòu)和模型數(shù)據(jù)都會(huì)發(fā)生變化。模型轉(zhuǎn)換規(guī)則就是要為這些變化建立對(duì)應(yīng)的映射關(guān)系。

圖8 模型轉(zhuǎn)換規(guī)則說明

模型結(jié)構(gòu)方面,源模型側(cè)重表現(xiàn)用戶需求,目標(biāo)模型側(cè)重表現(xiàn)所生成系統(tǒng)結(jié)構(gòu)。建立模型的出發(fā)角度的不同,必然將造成模型結(jié)構(gòu)的差異。目標(biāo)模型中可以從源模型中繼承一部分結(jié)構(gòu),但必然會(huì)產(chǎn)生新的結(jié)構(gòu),這些結(jié)構(gòu)中的鍵值信息不能從源模型中直接獲取,但對(duì)于目標(biāo)模型作為代碼生成器輸入又是不能缺少的,因?yàn)椴荒鼙皇÷缘簟?/p>

模型數(shù)據(jù)信息方面,源模型的數(shù)據(jù)直接來自于用戶的需求,數(shù)據(jù)較繁雜,會(huì)出現(xiàn)信息冗余的情況,目標(biāo)模型的數(shù)據(jù)因?yàn)橐鳛榇a生成器的輸入,因此數(shù)據(jù)更精簡(jiǎn),且包含的信息量相對(duì)較多。所以在模型轉(zhuǎn)換規(guī)則中,就必須加入對(duì)模型數(shù)據(jù)進(jìn)行計(jì)算和邏輯處理的映射關(guān)系,配合存入對(duì)應(yīng)的目標(biāo)模型結(jié)構(gòu)中。

在實(shí)驗(yàn)中,模型轉(zhuǎn)換規(guī)則及語法主要運(yùn)用Atlas語言和OCL語言,完成復(fù)雜條件下模型轉(zhuǎn)換的規(guī)則設(shè)計(jì)。如圖9所示是部分轉(zhuǎn)換規(guī)則映射關(guān)系,定義了元模型a中表示靜態(tài)和動(dòng)態(tài)結(jié)構(gòu)的屬性、操作與元模型b中表示目標(biāo)系統(tǒng)特點(diǎn)的各層關(guān)鍵信息的聯(lián)系。

圖9 模型轉(zhuǎn)換規(guī)則映射關(guān)系(部分)

3.4 模型轉(zhuǎn)換補(bǔ)充設(shè)計(jì)

用戶需求數(shù)量的增長和細(xì)節(jié)功能的增多,模型轉(zhuǎn)換中對(duì)應(yīng)的模型數(shù)量也將隨之變大,層次關(guān)聯(lián)也將變得更復(fù)雜。為了完成復(fù)雜業(yè)務(wù)邏輯,一方面要允許包含層次更多、組合更靈活的源模型反映用戶需求;另一方面,要建立結(jié)構(gòu)更復(fù)雜、粒度更小、更精確的目標(biāo)模型來表示系統(tǒng)的復(fù)雜行和完整性。因此,模型轉(zhuǎn)換環(huán)節(jié)中,必須對(duì)模型自身進(jìn)行更高的限制和控制。

模型轉(zhuǎn)換可以分為規(guī)范、轉(zhuǎn)換、約束、調(diào)整這四個(gè)步驟[10],為了減輕轉(zhuǎn)換規(guī)則設(shè)計(jì)的負(fù)擔(dān),在轉(zhuǎn)換前后靈活增加先驗(yàn)后驗(yàn)程序來對(duì)模型中重要的部分或轉(zhuǎn)換規(guī)則中處理易于造成冗余的部分進(jìn)行檢驗(yàn)。如果在轉(zhuǎn)換前需要對(duì)各模型的名稱和包名進(jìn)行檢驗(yàn),確保轉(zhuǎn)換不會(huì)造成混淆,在轉(zhuǎn)換后需要對(duì)重要字段的類型進(jìn)行檢驗(yàn)不會(huì)出現(xiàn)數(shù)據(jù)類型不匹配等問題。

需要說明的是,這些模型檢驗(yàn)環(huán)節(jié)也可以在模型轉(zhuǎn)換規(guī)則中定義。為了使轉(zhuǎn)換層次更加明確、規(guī)則設(shè)計(jì)更清晰、便于維護(hù),所以采用獨(dú)立于轉(zhuǎn)換規(guī)則的先驗(yàn)和后驗(yàn)環(huán)節(jié)的設(shè)計(jì)。此外,為了保證模型轉(zhuǎn)換的平臺(tái)無關(guān)性,檢驗(yàn)環(huán)節(jié)可以通過Atlas語言和OCL語言定義實(shí)現(xiàn)。

4 結(jié) 語

在此首先對(duì)MDA技術(shù)的發(fā)展進(jìn)行介紹。隨后,介紹了MDA技術(shù)中一種模型轉(zhuǎn)換框架即Atlas框架,簡(jiǎn)要分析Atlas模型轉(zhuǎn)換語言的優(yōu)勢(shì)和不足。最后,以模型驅(qū)動(dòng)角度對(duì)一個(gè)Web應(yīng)用進(jìn)行分析,闡釋了模型轉(zhuǎn)換中源模型、目標(biāo)模型、轉(zhuǎn)換規(guī)則的設(shè)計(jì)思路,并完成了設(shè)計(jì)。下一步工作,將重點(diǎn)集中在模型精度和準(zhǔn)確度提升方面,使模型轉(zhuǎn)換滿足更細(xì)致具體的用戶需求。

參考文獻(xiàn)

[1]Miller J,Mukerji J.MDA Guide Version 1.0.1[ EB/ OL ].htt p://www.omg.org/docs/omg/03 - 06 - 01.pdf,2003 - 06 -12.

[2]David S Frankel.應(yīng)用MDA[M].鮑志云,譯.北京:人民郵電出版社,2003.

[3]張征,何克清,劉進(jìn).一種基于規(guī)則的模型轉(zhuǎn)換方法[J].計(jì)算機(jī)應(yīng)用研究,2005(10):16-19.

[4]Akehurst D H,Kent S.A Relational Approach to Defining Transformations in a Metamodel[A].The Unified Modeling Language 5th Int′l Conf.[C].2002.

[5]Sheena R Judson,Robert B France,Doris L Carver.Speci-fying Model Transformations at the Metamodel Level[J].Proc of the Workshop in Software Model Engineering,2003.

[6]方海棠,何克清,卓識(shí),等.一個(gè)基于模式和動(dòng)作語義的MDA實(shí)現(xiàn)方法[J].計(jì)算機(jī)工程,2004,30(4):67-69.

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

[8]Jean Bezivin,Hammoudi S,Lopes D,et al.Applying MDA Approach for Web Service Platform[A].IEEE International Enterprise Distributed Object Computing Conference[C].2004:58-70.

[9]Sendall S,Kozaczynski W.Model Transformation:The Heart and Soul of Model-Driven Software Development[J].IEEE Sofeware,2003,20(5):2-8.

[10]Stuard Kent.Model Driven Engineering[J].IFM,2002:286-298.