雷鵬飛 劉建賓
(北京信息科技大學(xué)計(jì)算機(jī)學(xué)院,北京 100101)
?
面向SOA的程序模型變換系統(tǒng)架構(gòu)方法研究
雷鵬飛劉建賓
(北京信息科技大學(xué)計(jì)算機(jī)學(xué)院,北京100101)
針對(duì)傳統(tǒng)程序模型變換系統(tǒng)存在的復(fù)用性差、并發(fā)處理能力弱、不跨平臺(tái)等問(wèn)題,將SOA的架構(gòu)和MDA的思想應(yīng)用到程序模型變換,給出面向SOA的系統(tǒng)功能結(jié)構(gòu)、邏輯架構(gòu),以及基本和復(fù)合變換服務(wù)模塊的設(shè)計(jì),并對(duì)基于元模型的程序模型轉(zhuǎn)換框架和采用的ATL模型變換方法進(jìn)行了分析和論述。實(shí)現(xiàn)的系統(tǒng)應(yīng)用表明該架構(gòu)方法具有可擴(kuò)展性、跨平臺(tái)、支持并發(fā)處理等特點(diǎn)。
面向服務(wù)的體系架構(gòu); 程序模型變換; 模型驅(qū)動(dòng)架構(gòu); 元模型; 系統(tǒng)架構(gòu)方法
【DOI】 10.16670/j.cnki.cn11-5823/tu.2016.04.11
程序模型變換是模型驅(qū)動(dòng)開(kāi)發(fā)的關(guān)鍵技術(shù)。模型驅(qū)動(dòng)架構(gòu)MDA(Model Driven Architecture)[1]是以建模和模型變換為核心的新一代模型驅(qū)動(dòng)軟件開(kāi)發(fā)方法的規(guī)范,它通過(guò)將業(yè)務(wù)模型與實(shí)現(xiàn)技術(shù)相分離,以提高軟件的可重用性和可移植性,體現(xiàn)將業(yè)務(wù)分析與業(yè)務(wù)實(shí)現(xiàn)相分離的理念[2]。
在程序模型轉(zhuǎn)換應(yīng)用方面,目前存在多種不同的模型轉(zhuǎn)換工具和基于傳統(tǒng)應(yīng)用架構(gòu)下開(kāi)發(fā)的模型轉(zhuǎn)換系統(tǒng)[3]。然而這些傳統(tǒng)程序模型變換工具和變換系統(tǒng)普遍存在單機(jī)運(yùn)行效率低、難以復(fù)用,系統(tǒng)資源浪費(fèi)、不能跨平臺(tái)等問(wèn)題,不能有效地支持大規(guī)模的并發(fā)處理,對(duì)模型驅(qū)動(dòng)開(kāi)發(fā)的支持能力十分有限。
面向服務(wù)的體系架構(gòu)SOA(Service Oriented Architecture)的程序模型變換系統(tǒng)設(shè)計(jì)強(qiáng)調(diào)以變換服務(wù)為中心,通過(guò)將各種變換活動(dòng)轉(zhuǎn)化為具有統(tǒng)一接口標(biāo)準(zhǔn)的服務(wù),利用處理流程對(duì)相應(yīng)的程序模型變換服務(wù)進(jìn)行組合,來(lái)滿足變換功能的變化,同時(shí)使原來(lái)封閉系統(tǒng)變?yōu)殚_(kāi)放系統(tǒng),實(shí)現(xiàn)程序模型變換系統(tǒng)與外部環(huán)境之間的無(wú)縫鏈接。面向SOA的程序模型變換服務(wù)不是集中在一臺(tái)宿主機(jī)上,而是分布在不同的宿主機(jī)上,它們都是以接口的形式向外提供服務(wù),實(shí)現(xiàn)了應(yīng)用和處理的分離,在使用變換服務(wù)時(shí)無(wú)須關(guān)注服務(wù)提供的具體位置。在軟件復(fù)雜度和開(kāi)發(fā)需求量日益增長(zhǎng)的現(xiàn)實(shí)背景下,對(duì)大量復(fù)雜應(yīng)用進(jìn)行程序模型轉(zhuǎn)換時(shí),傳統(tǒng)單機(jī)程序模型變換系統(tǒng)難以滿足開(kāi)發(fā)維護(hù)需求。因此,構(gòu)建面向SOA變換服務(wù)的程序模型變換系統(tǒng)十分必要。因?yàn)橐环矫婵梢詣?dòng)態(tài)配置運(yùn)行所需的硬件資源,實(shí)現(xiàn)硬件資源的有效利用; 另一方面,還可以把變換任務(wù)分解到不同的計(jì)算結(jié)點(diǎn)上,實(shí)現(xiàn)分布式的并發(fā)處理[4]; 更重要是可以利用現(xiàn)有的遺產(chǎn)工具系統(tǒng)成果,避免資源浪費(fèi)。
1.1SOA
面向服務(wù)的體系結(jié)構(gòu),是以強(qiáng)調(diào)以服務(wù)為中心的組件模型,通過(guò)服務(wù)之間良好的接口和契約,將應(yīng)用程序的不同功能單元聯(lián)系起來(lái)。接口定義的方式是中立的,它獨(dú)立于實(shí)現(xiàn)的編程語(yǔ)言、操作系統(tǒng)和硬件平臺(tái),這使得應(yīng)用系統(tǒng)中的服務(wù)可以以一種統(tǒng)一的方式進(jìn)行交互[5]。
這種以中立的方式定義接口稱為服務(wù)之間的松耦合,由于這些中立定義的接口沒(méi)有綁定到特定的實(shí)現(xiàn)上,這使它適應(yīng)變換特別靈活,并且當(dāng)某個(gè)服務(wù)的實(shí)現(xiàn)和內(nèi)部結(jié)構(gòu)發(fā)生改變時(shí),不影響其他服務(wù)的。
1.2程序模型變換
程序模型變換的概念,結(jié)合文獻(xiàn)[6]給出如下定義:
(1)程序模型變換規(guī)則:對(duì)程序源模型和程序目標(biāo)模型的模型元素之間如何變換的一種描述。
(2)程序模型變換:作為輸入數(shù)據(jù)的程序源模型經(jīng)過(guò)轉(zhuǎn)換工具和一組程序模型轉(zhuǎn)換規(guī)則的作用產(chǎn)生目標(biāo)程序模型,該目標(biāo)程序模型作為輸出數(shù)據(jù)[7]。程序模型轉(zhuǎn)換規(guī)則描述了二者之間的變換映射,轉(zhuǎn)換規(guī)則必須結(jié)合轉(zhuǎn)換工具才可以產(chǎn)生變換的效果。
圖1 過(guò)程藍(lán)圖三層模型的轉(zhuǎn)換過(guò)程
過(guò)程藍(lán)圖[8]是一種可視化、分層描述程序行為過(guò)程的多階段一體化建模語(yǔ)言,具有抽象概念結(jié)構(gòu)圖(Abstract Concept Structure Diagram,ACSD)、抽象邏輯結(jié)構(gòu)圖(Abstract Logic Structure Diagram,ALSD)、抽象實(shí)現(xiàn)結(jié)構(gòu)圖(Abstract Implementation Structure Diagram,AISD)[9]三層抽象外部視圖,分別對(duì)應(yīng)程序在概念、邏輯和實(shí)現(xiàn)三個(gè)抽象層次上的模型表示。其中ACSD是與平臺(tái)無(wú)關(guān)的,ALSD和AISD是與平臺(tái)相關(guān)的。過(guò)程藍(lán)圖的三層抽象模型之間通過(guò)程序模型轉(zhuǎn)換規(guī)則和轉(zhuǎn)換工具的作用,可以正向和逆向轉(zhuǎn)換。由于過(guò)程藍(lán)圖具有階段制品一致性和開(kāi)發(fā)過(guò)程平滑過(guò)渡的優(yōu)點(diǎn),通過(guò)程序模型轉(zhuǎn)換,得到過(guò)程藍(lán)圖三種抽象層次的程序制品,有效實(shí)現(xiàn)程序的敏捷開(kāi)發(fā),以及程序的理解、重構(gòu)和維護(hù)[10]。圖1展示了本文采用的過(guò)程藍(lán)圖三層程序模型的轉(zhuǎn)換過(guò)程。
2.1功能結(jié)構(gòu)設(shè)計(jì)
以服務(wù)為中心程序模型變換系統(tǒng),需要根據(jù)功能將程序模型變換系統(tǒng)劃分成一組小粒度的基本變換服務(wù),程序模型變換服務(wù)之間互相協(xié)調(diào)、互相配合,依據(jù)變換的需要,將各種程序模型變換服務(wù)進(jìn)行組合,并通過(guò)松耦合的方式實(shí)現(xiàn)程序模型變換服務(wù)之間的互相調(diào)用和組合,從而得到互通互操作的一體化的程序模型變換系統(tǒng)。每一個(gè)程序模型變換服務(wù)都圍繞著具體的變換邏輯進(jìn)行構(gòu)建,并且能夠被獨(dú)立地部署到真實(shí)的運(yùn)行環(huán)境中。
程序模型變換系統(tǒng)的構(gòu)建是基于模型驅(qū)動(dòng)架構(gòu)和面向服務(wù)的體系架構(gòu)的迭代開(kāi)發(fā)過(guò)程,在該過(guò)程中以完成程序模型變換為中心,以各種程序模型變換流程為主線。圖2給出面向SOA的程序模型變換系統(tǒng)功能結(jié)構(gòu)模型。
把程序模型變換系統(tǒng)的構(gòu)建劃分幾個(gè)階段,可以使復(fù)雜程序模型變換系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)變得易于控制和管理。從面向服務(wù)的體系架構(gòu)的角度來(lái)看,程序模型變換系統(tǒng)的構(gòu)建主要有五個(gè)階段:程序模型變換系統(tǒng)的需求分析與建模、程序模型變換服務(wù)的設(shè)計(jì)、程序模型變換服務(wù)的部署與系統(tǒng)測(cè)試、程序模型變換服務(wù)的監(jiān)控與Qos(Quality of Service,服務(wù)質(zhì)量)測(cè)量和程序模型變換服務(wù)的進(jìn)化與替換,具體如圖2所示。在大數(shù)據(jù)時(shí)代,軟件的復(fù)雜度不斷提高,對(duì)程序模型變換的要求也越來(lái)越高,經(jīng)常會(huì)有相關(guān)的程序模型變換服務(wù)的加入、失效、退出,因此面向SOA程序模型變換系統(tǒng)的構(gòu)建過(guò)程是重復(fù)迭代的[11]。
需求分析與建模:這一階段完成程序模型變換系統(tǒng)和程序模型變換需求的收集和分析工作,設(shè)計(jì)和優(yōu)化基于程序模型變換服務(wù)及組合的程序模型變換流程。該步驟主要基于多元本體系統(tǒng)和元模型進(jìn)行建模,來(lái)增強(qiáng)程序模型的語(yǔ)義能力和可復(fù)用性,進(jìn)而完成領(lǐng)域建模工作。最終得到領(lǐng)域模型也稱CIM(Computation Independent Model,計(jì)算無(wú)關(guān)模型)。
變換服務(wù)的設(shè)計(jì):該階段主要包括兩個(gè)方面,基本程序模型變換服務(wù)和復(fù)合程序模型變化服務(wù)的設(shè)計(jì),基本的變換服務(wù)可以通過(guò)對(duì)遺留的程序模型變換系統(tǒng)切分和封裝的,對(duì)于新的程序模型變換需求,則需要進(jìn)行程序模型變換服務(wù)開(kāi)發(fā)。復(fù)合程序模型變換服務(wù)是基本變換服務(wù)經(jīng)過(guò)服務(wù)組合,而形成的一個(gè)能夠獨(dú)立運(yùn)行邏輯變換體。在程序模型變換服務(wù)組合階段,主要依據(jù)變換流程把基本的變換服務(wù)按照變換邏輯進(jìn)行編排,實(shí)現(xiàn)轉(zhuǎn)換過(guò)程的自動(dòng)化。我們通常把變換流程用PIM(Platform Independent Model,平臺(tái)無(wú)關(guān)模型)進(jìn)行形式化表示,再利用模型轉(zhuǎn)換引擎把PIM模型轉(zhuǎn)換為服務(wù)組合語(yǔ)言比如BPEL(Business Process Execution Language,業(yè)務(wù)流程執(zhí)行語(yǔ)言)。為了保證程序模型變換服務(wù)的質(zhì)量我們還需要對(duì)程序模型變換服務(wù)進(jìn)行選擇優(yōu)化和組合驗(yàn)證。文獻(xiàn)[12][13]在服務(wù)組合優(yōu)化方面分別提出了基于粒子圓周軌道和零慣性權(quán)重的 MDPSO 算法和多信息素動(dòng)態(tài)更新的蟻群算法 MPDACO,利用這些算法對(duì)程序模型變換服務(wù)進(jìn)行組合優(yōu)化,可提高程序模型變換的效果和服務(wù)質(zhì)量。
部署與系統(tǒng)測(cè)試:在程序模型變換服務(wù)設(shè)計(jì)完成后,可以將程序模型變換服務(wù)和支撐的程序變換流程部署到程序模型變換系統(tǒng)的生產(chǎn)環(huán)境中,同時(shí)將新設(shè)計(jì)或產(chǎn)生的程序模型變換服務(wù)配置到程序模型變換系統(tǒng)中,并對(duì)系統(tǒng)環(huán)境進(jìn)行測(cè)試和優(yōu)化。
監(jiān)測(cè)與Qos測(cè)量:該階段主要完成對(duì)各種程序模型變換服務(wù)資源的管理和監(jiān)控,并實(shí)時(shí)監(jiān)測(cè)程序模型變換服務(wù)的各種Qos參數(shù)。利用Qos測(cè)量結(jié)果為基于Qos的服務(wù)選擇優(yōu)化提供支撐。
進(jìn)化與替換:由于變換需求和生產(chǎn)環(huán)境并不是穩(wěn)定不變的,為了適應(yīng)變化,就需要對(duì)相應(yīng)的程序模型變換服務(wù)進(jìn)行升級(jí)和變更。總之,整個(gè)基于SOA的程序模型變換系統(tǒng)的構(gòu)建是一個(gè)迭代上升的過(guò)程。
圖2 面向SOA的程序模型變換系統(tǒng)的功能結(jié)構(gòu)模型
該面向SOA的設(shè)計(jì)方案是對(duì)現(xiàn)存程序模型變換應(yīng)用的修補(bǔ),對(duì)現(xiàn)有變換資源的整合,改變了傳統(tǒng)從零開(kāi)始的系統(tǒng)構(gòu)建模式。其實(shí)施是從小范圍開(kāi)始,逐漸地遷移現(xiàn)存的程序模型變換應(yīng)用到新的計(jì)算環(huán)境中。
2.2邏輯架構(gòu)設(shè)計(jì)
傳統(tǒng)程序模型變換系統(tǒng)的開(kāi)發(fā)往往以系統(tǒng)為中心,隨著系統(tǒng)的不斷擴(kuò)充,模塊之間不斷的整合,包括用戶訪問(wèn)層整合,數(shù)據(jù)整合和程序模型變換流程整合等,將導(dǎo)致系統(tǒng)的復(fù)用性越來(lái)越弱,并且擴(kuò)張性也將變得越來(lái)越差。面向SOA程序模型變換系統(tǒng)的構(gòu)建和傳統(tǒng)的方法不同,是以變換服務(wù)為中心,這種方式將會(huì)提高復(fù)用率,并且即使程序模型變換服務(wù)內(nèi)部的結(jié)構(gòu)和實(shí)現(xiàn)方式發(fā)生改變,也不影響服務(wù)提供。本文提出的面向服務(wù)的程序模型變換系統(tǒng)構(gòu)建架構(gòu)從服務(wù)提供者和服務(wù)消費(fèi)者角度,將程序模型變換系統(tǒng)功能方面有關(guān)的基礎(chǔ)技術(shù)、變換組件、變換流程、界面等進(jìn)行層次化。與此同時(shí),將從安全架構(gòu)、變換服務(wù)通信、變換服務(wù)集成、變換服務(wù)質(zhì)量管理等方面,提取了所有變換服務(wù)所共有的不同層次。根據(jù)SOA的通用層次框架并結(jié)合程序模型變換的具體特點(diǎn),可以得到圖3所示的面向SOA的程序模型變換系統(tǒng)的邏輯架構(gòu)。
A層:基礎(chǔ)技術(shù)支撐層。基礎(chǔ)技術(shù)支撐層包含了對(duì)模型驅(qū)動(dòng)架構(gòu)標(biāo)準(zhǔn)的具體實(shí)現(xiàn),尤其是其中的MOF(Meta Object Facility,元對(duì)象機(jī)制)標(biāo)準(zhǔn)和UML標(biāo)準(zhǔn),通過(guò)對(duì)這兩個(gè)標(biāo)準(zhǔn)的實(shí)現(xiàn)來(lái)獲得訪問(wèn)程序模型、建立程序模型和修改程序模型的能力。程序模型轉(zhuǎn)換需要獲取這種可以對(duì)程序模型進(jìn)行操作的能力。
B層:現(xiàn)有的程序模型變換系統(tǒng)資源層。本層包含現(xiàn)有的自定義構(gòu)建的程序模型變換程序,也叫遺留系統(tǒng)。通常這些遺留系統(tǒng)經(jīng)過(guò)切分,按照契約封裝成接口,通過(guò)提供這些接口,可以使遺留的程序模型變換應(yīng)用被發(fā)現(xiàn)或集成。在某種程度上說(shuō),面向SOA是一種重構(gòu)和集成策略,而不是對(duì)原有程序模型變換系統(tǒng)推倒重建。
圖3 面向SOA的程序模型變換系統(tǒng)的邏輯架構(gòu)
C層:程序模型變換組件層。本層主要是由那些負(fù)責(zé)實(shí)現(xiàn)程序模型變換功能的組件組成。通過(guò)將現(xiàn)有程序模型變換系統(tǒng)和應(yīng)用層中的應(yīng)用程序接口 API(Application Program Interface)進(jìn)行包裝組合,形成粗粒度的程序模型變換服務(wù),并且以接口的形式,為程序模型變換組件層或變換服務(wù)層使用。這些程序模型變換組件是一個(gè)邏輯變換體,具有相對(duì)獨(dú)立變換功能,其主要是利用不同的組件將底層的已有的程序模型變換系統(tǒng)或工具進(jìn)行封裝。該層是有效利用原有程序模型變換系統(tǒng)資源的關(guān)鍵層次。
D層:程序模型變換服務(wù)層。處在該層的程序模型變換服務(wù),可以被發(fā)現(xiàn)或者被直接的靜態(tài)綁定,然后被調(diào)用,或者被編排到復(fù)合程序模型變換服務(wù)中。該服務(wù)層同樣提供了獲取應(yīng)用范圍的組件、變換操作單元組件的機(jī)制,并且這些組件的服務(wù)接口以服務(wù)描述的形式進(jìn)行了具體化,因此在程序模型變換執(zhí)行的過(guò)程中,程序模型變換組件通過(guò)它們的接口來(lái)向外提供變換服務(wù)。
E層:變換合成層或編排層。在D層中公開(kāi)的程序模型變換服務(wù)的組合和編排在該層中被定義。該層主要通過(guò)變換流程把一些基本或復(fù)合的程序模型變換服務(wù)進(jìn)行組合,而形成一個(gè)功能更強(qiáng)的復(fù)合服務(wù),該層很好地體現(xiàn)了服務(wù)的復(fù)用性。面向SOA程序模型變換服務(wù)的建設(shè)打破傳統(tǒng)程序模型變換系統(tǒng)的邊界,通過(guò)變換服務(wù)編排、變換流程編排、規(guī)則調(diào)整來(lái)實(shí)現(xiàn)創(chuàng)新[14]。
F層:用戶表示層或訪問(wèn)層。該層是與服務(wù)消費(fèi)者直接交互的平臺(tái),目的是使服務(wù)消費(fèi)者更直觀地選用適合自己的程序模型變換服務(wù)。采用Remote Portlets Version2.0 的web服務(wù)標(biāo)準(zhǔn)等相關(guān)技術(shù)可實(shí)現(xiàn)在應(yīng)用程序接口或者表現(xiàn)層來(lái)提供web服務(wù)。
G層:變換服務(wù)總線層。這一層為T(mén)SB(Trandformation Service Bus,變換服務(wù)總線層),通過(guò)引入一些相應(yīng)的性能集合(協(xié)議中介、轉(zhuǎn)換機(jī)制、智能路由等)使程序模型變換服務(wù)可以集成[15]。web服務(wù)描述語(yǔ)言(Web service Description language,WSDL)用于定義并提供程序模型變換服務(wù)地址的綁定。TSB為變換服務(wù)集成提供了位置獨(dú)立的機(jī)制。
H層:基礎(chǔ)架構(gòu)服務(wù)層。這一層提供對(duì)服務(wù)通信、服務(wù)安全、系統(tǒng)性能和可用性等能力的管理和維護(hù)[16]。
I層:數(shù)據(jù)架構(gòu)和變換智能層。這一層提供了統(tǒng)一的數(shù)據(jù)操作和變換處理流程的智能化能力,是未來(lái)發(fā)展的擴(kuò)展層次。
3.1基本變換服務(wù)
本文對(duì)程序模型轉(zhuǎn)換服務(wù)模塊的設(shè)計(jì),是以程序模型轉(zhuǎn)換方法為中心,并通過(guò)程序模型庫(kù)實(shí)現(xiàn)程序模型復(fù)用。同時(shí)為了保證生成的程序模型在功能細(xì)節(jié)和結(jié)構(gòu)上的準(zhǔn)確性和一致性,在程序模型轉(zhuǎn)換的每個(gè)環(huán)節(jié)加入相關(guān)程序模型檢驗(yàn)技術(shù)。另外在程序模型轉(zhuǎn)換的過(guò)程中目標(biāo)轉(zhuǎn)換模板和特定的平臺(tái)信息作為重要的參考因素。程序模型變換服務(wù)模塊的設(shè)計(jì)如圖4所示。
程序源模型與程序目標(biāo)模型:程序源模型是對(duì)程序模型變換需求的一種形式化表示,是程序模型轉(zhuǎn)換模塊的輸入對(duì)象,這些程序模型在一方面包含系統(tǒng)開(kāi)發(fā)人員對(duì)目標(biāo)系統(tǒng)模型的編輯信息,另一方面也要符合程序模型轉(zhuǎn)換服務(wù)模塊的輸入規(guī)范。程序目標(biāo)模型包含目標(biāo)系統(tǒng)的層次設(shè)計(jì)中的重要信息,是程序模型轉(zhuǎn)換模塊的輸出模型。
圖4 程序模型變換服務(wù)模塊的設(shè)計(jì)
程序模型庫(kù):程序模型庫(kù)的主要作用就是為了程序模型的復(fù)用,由于在MDA思想指導(dǎo)下的軟件開(kāi)發(fā)過(guò)程中,將會(huì)產(chǎn)生各種程序模型,通過(guò)把每個(gè)項(xiàng)目開(kāi)發(fā)過(guò)程中形成的程序模型存入到程序模型庫(kù),以便日后對(duì)程序模型的復(fù)用。查詢程序模型、讀取和保存程序模型是對(duì)程序模型庫(kù)的主要操作。用戶通過(guò)查詢程序模型庫(kù),可以獲取程序模型的功能、結(jié)構(gòu)和涉及項(xiàng)目的詳細(xì)描述信息; 當(dāng)程序模型轉(zhuǎn)換的過(guò)程中需要用到以前程序模型,則直接讀取程序模型庫(kù)即可獲得需要的程序模型; 程序模型通常以圖和XML文件兩種方式進(jìn)行存儲(chǔ)。另外,程序模型保存時(shí),如果目標(biāo)程序模型存在,就對(duì)程序模型進(jìn)行替換和更新,如果不存在就建立一個(gè)新程序模型,存入到程序模型庫(kù)中。
程序模型驗(yàn)證:隨著用戶需求量的不斷增長(zhǎng)和目標(biāo)應(yīng)用的細(xì)節(jié)功能的增多,程序模型的數(shù)量會(huì)越來(lái)越多大,程序模型的層次關(guān)聯(lián)也會(huì)變得越來(lái)越復(fù)雜,為了保證程序模型的正確性、完備性、一致性[17]這就需要在程序模型轉(zhuǎn)換過(guò)程中增加程序模型驗(yàn)證環(huán)節(jié)。
目標(biāo)轉(zhuǎn)換模板和特定平臺(tái)信息:特定的平臺(tái)信息是目標(biāo)模型設(shè)計(jì)參考的依據(jù)[18],完備的系統(tǒng)是模型驅(qū)動(dòng)開(kāi)發(fā)的載體,在該系統(tǒng)基礎(chǔ)上進(jìn)行模型抽象,通過(guò)模型將系統(tǒng)的業(yè)務(wù)行為和結(jié)構(gòu)特征表示出來(lái)。另外,中間件作為系統(tǒng)開(kāi)發(fā)的一部分,也要考慮,不同應(yīng)用的部署數(shù)據(jù)參數(shù)可能不盡相同,數(shù)據(jù)庫(kù)也是如此。
程序模型轉(zhuǎn)化方法:在本文的第4部分得到介紹。
程序模型庫(kù)的主要作用就是為了實(shí)現(xiàn)程序模型的復(fù)用,傳統(tǒng)的程序模型庫(kù)集中在某個(gè)計(jì)算機(jī)上的方式往往不支持分系統(tǒng)設(shè)計(jì)模型的運(yùn)行。在面向服務(wù)的架構(gòu)下,程序模型可以通過(guò)程序模型服務(wù)器以服務(wù)的形式部署在任何滿足程序模型運(yùn)行環(huán)境的計(jì)算節(jié)點(diǎn)上,甚至可以運(yùn)行在程序模型設(shè)計(jì)人員的計(jì)算機(jī)上,并且還能對(duì)程序模型進(jìn)行及時(shí)的更新,通過(guò)向外提供標(biāo)準(zhǔn)的服務(wù)描述文檔來(lái)使程序模型得到復(fù)用。對(duì)文檔進(jìn)行管理的服務(wù)器,我們把它當(dāng)作服務(wù)代理。通過(guò)服務(wù)代理可以讓分布在任何位置的程序模型組成一個(gè)虛擬的程序模型倉(cāng)庫(kù),服務(wù)代理本身也可以作為一種服務(wù)由上層代理進(jìn)行管理,這樣就形成了一個(gè)分布式的虛擬程序模型倉(cāng)庫(kù),如圖5所示。
圖5 面向SOA的虛擬的程序模型倉(cāng)庫(kù)
3.2復(fù)合變換服務(wù)
復(fù)合服務(wù)是通過(guò)服務(wù)組合產(chǎn)生的邏輯體,該邏輯體本身也是一個(gè)服務(wù)。由于復(fù)合服務(wù)的功能由其他的服務(wù)“復(fù)合”而成,因此稱為復(fù)合服務(wù)[18]。復(fù)合服務(wù)對(duì)成員服務(wù)操作的調(diào)用是服務(wù)復(fù)用的一種體現(xiàn),因此服務(wù)組合促進(jìn)了服務(wù)的復(fù)用。
復(fù)合的程序模型變換服務(wù)是通過(guò)一定的變換規(guī)則或流程使基本程序模型變換服務(wù)經(jīng)過(guò)組合而形成的邏輯變換整體。
對(duì)復(fù)合服務(wù)的編排,借鑒和采用MDA的思想與開(kāi)發(fā)方式,在 PIM層建立 UML活動(dòng)圖描述的變換流程工作流,PSM(Platform Specific Model,平臺(tái)無(wú)關(guān)模型)層應(yīng)用 BPEL模型具體表示復(fù)合變換服務(wù)的實(shí)現(xiàn)方式,得到圖6所示的轉(zhuǎn)換過(guò)程及其模塊。利用文獻(xiàn)[20]提出UML活動(dòng)圖元模型元素到BPEL元模型元素的映射表,編寫(xiě)對(duì)應(yīng)的UML活動(dòng)圖到BPEL模型的轉(zhuǎn)換規(guī)則文件,利用BPEL來(lái)對(duì)程序模型變換的流程進(jìn)行定義,通過(guò)BPEL解釋執(zhí)行機(jī)制實(shí)現(xiàn)程序模型變換的流程處理自動(dòng)化。
圖6 UML活動(dòng)圖到BPEL的轉(zhuǎn)換流程圖
4.1基于元模型的程序模型轉(zhuǎn)換框架
MOF(Meta Object Facility,元對(duì)象機(jī)制)是對(duì)象管理組織OMG(Object Management Group)為幫助開(kāi)發(fā)者和用戶更好的使用元模型和元數(shù)據(jù)而制定的一種規(guī)范。元模型是對(duì)MOF的實(shí)例化。程序模型轉(zhuǎn)換功能是由一系列程序模型轉(zhuǎn)換規(guī)則的定義組合而成的。建立相應(yīng)元模型層元素之間的映射,以該映射作為轉(zhuǎn)換規(guī)則,來(lái)實(shí)現(xiàn)程序模型層的轉(zhuǎn)換,是基于元模型的程序模型轉(zhuǎn)換思想[3]。
程序模型之間的轉(zhuǎn)換需要程序模型變換功能的支持,程序模型變換功能的實(shí)現(xiàn)通過(guò)程序模型變換語(yǔ)言進(jìn)行描述,程序模型變換語(yǔ)言是對(duì)MOF的擴(kuò)展,轉(zhuǎn)換前后的分層程序模型描述了應(yīng)用系統(tǒng)。圖7給出基于元模型的程序模型轉(zhuǎn)換框架。
圖7 基于元模型的程序模型轉(zhuǎn)換框架
4.2ATL程序模型轉(zhuǎn)換方法
ATL(ATLAS Transformation Language,ATLAS 轉(zhuǎn)換語(yǔ)言),是ATLAS研究組開(kāi)發(fā)出來(lái)的一種符合OMG(Object Management Group,對(duì)象管理組織)的一個(gè)QVT(Query/View/Transformation)提案的模型轉(zhuǎn)換語(yǔ)言,ATL是基于EMF(Eclipse Model Frame,Eclipse模型框架)的,其元模型、模型都是用EMF來(lái)描述的。從本質(zhì)上來(lái)說(shuō),ATL屬于基于規(guī)則的程序模型轉(zhuǎn)換語(yǔ)言,其中使用了OCL(Object Constraint Language,對(duì)象約束語(yǔ)言)約束描述語(yǔ)言,并且基本上實(shí)現(xiàn)了OCL。由于ATL使用OCL來(lái)描述約束,使ATL具有較強(qiáng)的規(guī)則描述能力,并且有較寬的應(yīng)用范圍,對(duì)過(guò)程藍(lán)圖程序模型變換的定義同樣具有較好的適用性。
利用ATL實(shí)現(xiàn)程序源模型到程序目標(biāo)模型的轉(zhuǎn)換,需要提供以下4個(gè)模型:程序源模型的元模型MM1; 程序源模型M1; 程序目標(biāo)模型的元模型MM2; 以及轉(zhuǎn)換描述模型M1TM2.ATL。當(dāng)ATL轉(zhuǎn)換引擎被執(zhí)行,就可以獲得到一個(gè)程序目標(biāo)模型M2。圖8展示了基于ATL的程序模型轉(zhuǎn)換過(guò)程。其中程序模型M1、M2、M3可以分別對(duì)應(yīng)過(guò)程藍(lán)圖中的ACSD、ALSD、AISD,此時(shí)是把ACSD作為程序模型轉(zhuǎn)換過(guò)程的程序源模型,則ALSD和AISD作為目標(biāo)程序模型; 還可以逆向轉(zhuǎn)換讓程序模型M1對(duì)應(yīng)ALSD,然后ACSD作為目標(biāo)程序模型。程序元模型和程序模型轉(zhuǎn)換語(yǔ)言是對(duì)MOF的實(shí)例化和擴(kuò)展的結(jié)果,M1TM2.ATL 和M2TM3.ATL是使用ATL編寫(xiě)的轉(zhuǎn)換規(guī)則,程序模型M1在M1TM2.ATL的作用下可以轉(zhuǎn)換為程序模型M2,程序模型M2在M2TM3.ATL的作用下可以轉(zhuǎn)換為程序模型M3。
圖8 基于ATL的程序模型轉(zhuǎn)換過(guò)程
程序模型變換系統(tǒng)的架構(gòu)方法研究對(duì)程序模型變換系統(tǒng)的開(kāi)發(fā)具有至關(guān)重要的作用。針對(duì)傳統(tǒng)程序模型變換系統(tǒng)的問(wèn)題和不足,我們將SOA融入到程序模型變換系統(tǒng)的設(shè)計(jì)過(guò)程中,提出面向SOA的,以程序模型變換服務(wù)為中心的程序模型變換系統(tǒng)的架構(gòu)方法。
基于該架構(gòu)方法實(shí)現(xiàn)的程序模型變換系統(tǒng)已在JAVA和建筑行業(yè)的多門(mén)導(dǎo)學(xué)課程資源開(kāi)發(fā)中得到成功應(yīng)用,取得了良好效果。初步應(yīng)用實(shí)踐表明該架構(gòu)方法對(duì)解決傳統(tǒng)系統(tǒng)的復(fù)用性差、并發(fā)處理能力弱、不跨平臺(tái)等問(wèn)題是有效的。
[1]張?zhí)欤?張巖,于笑豐 等.基于MDA的設(shè)計(jì)模式建模與模型轉(zhuǎn)換[J].軟件學(xué)報(bào), 2008, 19(09): 2203-2217.
[2]蘇紅軍, 閆云山,尤振華.UML模型到N層Web模型的模型驅(qū)動(dòng)轉(zhuǎn)換[J].計(jì)算機(jī)應(yīng)用, 2014, 34(04): 1161-1164.
[3]戚鐵林, 李亞芬,王普.MDA模型轉(zhuǎn)換平臺(tái)中模型轉(zhuǎn)換方法的研究[J].計(jì)算機(jī)工程與設(shè)計(jì), 2011, 32(01): 202-205.
[4]Benelallam A,Tisi M,Cabot J.Distributed Model-to-Model Trans-formation with ATL on MapReduce[J].2015:37-48.
[5]董淑英, 林克成.MDA與云計(jì)算、SOA的比較研究[J].計(jì)算機(jī)科學(xué), 2012(S1): 207-209.
[6]Anneke G.Kleppe,Jos B.Warmer,Wim Bast.MDA Explain[M].Addison-Wesley Longman Publishing Co.,Inc.Boston,MA,USA, 2003.
[7]戴衡. 基于MDA的EJB模型轉(zhuǎn)換規(guī)則研究[D].廣西大學(xué), 2010.
[8]劉建賓. 過(guò)程藍(lán)圖設(shè)計(jì)方法學(xué)[M].科學(xué)出版社, 2005.
[9]劉建賓. 過(guò)程藍(lán)圖程序表示模型與視圖導(dǎo)出方法[J].計(jì)算機(jī)工程, 2009, 35(21): 13-16.
[10]胡偉奇, 劉建賓.基于 Java藍(lán)圖的過(guò)程模式形式化定義框架[J].計(jì)算機(jī)應(yīng)用與軟件, 2015, 32(5): 24-29.
[11]王曉, 聶凱.基于SOA和MDA的指揮信息系統(tǒng)構(gòu)建新方法[J].艦船電子工程, 2014(6): 56-59.
[12]溫濤, 盛國(guó)軍,郭權(quán) 等.基于改進(jìn)粒子群算法的Web服務(wù)組合[J].計(jì)算機(jī)學(xué)報(bào), 2013, 36(05): 1031-1046.
[13]夏亞梅, 程渤,陳俊亮 等.基于改進(jìn)蟻群算法的服務(wù)組合優(yōu)化[J].計(jì)算機(jī)學(xué)報(bào), 2012, 35(02): 270-281.
[14]黃嘉東, 徐兵元,葉向陽(yáng).企業(yè)級(jí)應(yīng)用系統(tǒng)SOA架構(gòu)建設(shè)研究與實(shí)踐[J].中國(guó)高新技術(shù)企業(yè), 2016(2): 159-161.
[15]荊澤泉, 石青,余文芳.基于ESB的企業(yè)應(yīng)用集成研究[J].數(shù)字技術(shù)與應(yīng)用, 2011(9): 120-121.
[16]明亮, 況曉輝,黃敏桓.基于SOA的可信智能空間系統(tǒng)軟件研究[J].計(jì)算機(jī)科學(xué), 2010, 37(1): 34-38.
[17]王建光. 基于模型驅(qū)動(dòng)架構(gòu)的軟件生成技術(shù)研究[D].太原理工大學(xué), 2007.
[18]冉川. 基于J2EE的模型驅(qū)動(dòng)開(kāi)發(fā)中模型轉(zhuǎn)換方法的研究與實(shí)現(xiàn)[D].北京工業(yè)大學(xué), 2009.
[19]萬(wàn)芳, 沈建京,韓丁 等.基于SOA的服務(wù)構(gòu)件組合技術(shù)研究[C].中國(guó)控制會(huì)議.2008.
[20]張春陽(yáng), 韓建松,張惠軍 等.基于MDA的SOA服務(wù)協(xié)作模型[J].河南科技大學(xué)學(xué)報(bào)(自然科學(xué)版), 2010, 31(04): 31-34.
A Study on Architecture Method of SOA-Oriented Program Model Transformation System
Lei Pengfei, Liu Jianbin
(SchoolofComputer,BeijingInformationScience&TechnologyUniversity,Beijing100101,China)
Focusing on the poor reusability, weak concurrent processing capability, no cross-platform and other problems of traditional program model transformation system, this article applies SOA architecture and MDA thought to the program model transformation, and gives out the system function structure and logical architecture based on SOA and the design of basic and complex transformation service modules. Additionally, it takes analysis and discussion for meta-model-based program model transformation framework and adopts ATL model transformation method. The achieved system application indicates that the architecture method is featured of scalability, cross-platform and supporting concurrent processing etc.
SOA; Programming Model Transformation; MDA; MetaModel; System Architecture Method
國(guó)家科技支撐計(jì)劃課題“建筑行業(yè)設(shè)計(jì)服務(wù)共性技術(shù)集成平臺(tái)研究與應(yīng)用”(編號(hào):2014BAH25F03)
TP302.2
A
1674-7461(2016)04-0062-07