模型驅(qū)動的服務(wù)構(gòu)件開發(fā)工具_(dá)第1頁
模型驅(qū)動的服務(wù)構(gòu)件開發(fā)工具_(dá)第2頁
模型驅(qū)動的服務(wù)構(gòu)件開發(fā)工具_(dá)第3頁
模型驅(qū)動的服務(wù)構(gòu)件開發(fā)工具_(dá)第4頁
模型驅(qū)動的服務(wù)構(gòu)件開發(fā)工具_(dá)第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、計 算 機(jī) 工 程 第 35 卷 第21期Vol.35 No.21 Computer Engineering · · 軟件技術(shù)與數(shù)據(jù)庫文章編號:10003428(2009)21004203文獻(xiàn)標(biāo)識碼:A2009年11月November 2009中圖分類號:TP311.52模型驅(qū)動的服務(wù)構(gòu)件開發(fā)工具錢建平1,沈備軍1,陳德來2,3(1. 上海交通大學(xué)軟件學(xué)院,上海 200240;2. 中國電信股份有限公司上海分公司,上海 200030;3. 上海市網(wǎng)絡(luò)化制造與企業(yè)信息化重點(diǎn)實(shí)驗(yàn)室,上海 200030)摘 要:研究并開發(fā)一種模型驅(qū)動的服務(wù)構(gòu)件開發(fā)工具,提出相應(yīng)的服務(wù)構(gòu)件開發(fā)流程

2、。該工具基于服務(wù)構(gòu)件架構(gòu)定義構(gòu)件模型,驗(yàn)證模型的正確性,采用模型驅(qū)動開發(fā)技術(shù)自動生成代碼框架,支持構(gòu)件開發(fā)的3個關(guān)鍵步驟,即構(gòu)件制作、構(gòu)件組裝和構(gòu)件管理。應(yīng)用結(jié)果證明,該工具能提高軟件開發(fā)效率。關(guān)鍵詞:模型驅(qū)動架構(gòu);服務(wù)構(gòu)件架構(gòu);基于構(gòu)件的軟件開發(fā)Development Tool for Service Component of Model DriveQIAN Jian-ping1, SHEN Bei-jun1, CHEN De-lai2,3(1. School of Software, Shanghai Jiaotong University, Shanghai 200240; 2. Sha

3、nghai Branch, China Telecom Corporation Limited, Shanghai 200030;3. Shanghai Key Lab of Advanced Manufacturing Environment, Shanghai 200030)【Abstract】This paper studies and develops a development tool for service component of model drive, and presents the relevent development flow of these service c

4、omponents. Based on Service Component Architecture(SCA), this tool defines the component model, validates the correctness of the model, and generates the code skeleton by using model drive development technology. The tool supports the three key procedures of component developmentcomponents making, c

5、omponents composition and components management. Practice results show that this tool can increase the software development efficiency.【Key words】Model Drive Architecture(MDA); Service Component Architecture(SCA); Component-Based Software Development(CBSD)1 概述隨著計算機(jī)技術(shù)的飛速發(fā)展,軟件開發(fā)人員面臨著越來越多的挑戰(zhàn),需要解決如何提高開發(fā)

6、效率、降低維護(hù)費(fèi)用的問題。因此,基于構(gòu)件的軟件開發(fā)(Component-Based Software Development, CBSD)方法被提出并成為研究熱點(diǎn),它是軟件開發(fā)的發(fā)展方向。對象管理組織于2001年提出模型驅(qū)動架構(gòu)(Model Drive Architecture, MDA)1,其核心思想如下:先抽象出與實(shí)現(xiàn)技術(shù)無關(guān)、完整描述業(yè)務(wù)功能的核心平臺無關(guān)模型(Platform Independent Model, PIM),然后針對不同實(shí)現(xiàn)技術(shù)制定多個轉(zhuǎn)換規(guī)則,通過此類轉(zhuǎn)換規(guī)則和輔助工具將PIM轉(zhuǎn)換成與具體實(shí)現(xiàn)技術(shù)相關(guān)的平臺相關(guān)模型(Platform Specific Model, P

7、SM),最后將經(jīng)過充實(shí)的PSM轉(zhuǎn)換成代碼。MDA的目的是分離業(yè)務(wù)建模與底層平臺技術(shù),以保護(hù)建模成果不受技術(shù)變遷的影響。目前,支持構(gòu)件開發(fā)的工具很多,但多數(shù)沒有融入MDA思想,如普元的EOS Studio、復(fù)旦大學(xué)軟件工程實(shí)驗(yàn)室的JBCA-Tool2。有些工具只支持構(gòu)件開發(fā)中的構(gòu)件組裝部分,對于構(gòu)件制作、構(gòu)件管理沒有很好的支持,如文獻(xiàn)3提出的構(gòu)件開發(fā)MDA工具。很多構(gòu)件開發(fā)工具擁有自己的構(gòu)件模型,支持異構(gòu)構(gòu)件的組裝,但其制作的構(gòu)件很難與其他標(biāo)準(zhǔn)構(gòu)件協(xié)作,如JBCA-Tool。本文實(shí)現(xiàn)一個完整的構(gòu)件開發(fā)工具,并在該工具中融入MDA思想,使其能根據(jù)構(gòu)件模型自動生成代碼框架。為了生成具有良好互操作性的

8、構(gòu)件,本文使用構(gòu)件模型國際標(biāo) 準(zhǔn)服務(wù)構(gòu)件架構(gòu)(Service Component Architecture, SCA)。 422 構(gòu)件模型及其驗(yàn)證2.1 基于SCA架構(gòu)的構(gòu)件模型SCA是一種面向服務(wù)構(gòu)件的框架4,是SOA概念和傳統(tǒng)CBSD方法相結(jié)合的產(chǎn)物。SCA規(guī)約的目標(biāo)是提供一種在分布式異構(gòu)環(huán)境中組合多種實(shí)現(xiàn)技術(shù)不同構(gòu)件的方法。服務(wù)構(gòu)件是SCA的基本組成元素和基本構(gòu)建單位,用于實(shí)現(xiàn)業(yè)務(wù)邏輯,可以視為構(gòu)建應(yīng)用的積木。用戶能方便地把傳統(tǒng)POJO、無狀態(tài)會話BEAN等包裝成SCA中的服務(wù)構(gòu)件。本文構(gòu)件模型完全基于SCA的服務(wù)構(gòu)件模型。該模型包括Service(服務(wù))、Reference(引用)和P

9、roperty(屬性)3個部分。服務(wù)構(gòu)件提供給別人的服務(wù)調(diào)用入口稱為服務(wù)。服務(wù)構(gòu)件本身可能需要調(diào)用別的服務(wù),此類調(diào)用出口稱為引用。服務(wù)和引用的調(diào)用規(guī)范都是WSDL或Java接口。屬性定義構(gòu)件所需的配置項(xiàng),此類配置項(xiàng)的值可以在配置文件中指定。本文定義了符合SCA規(guī)范的原子構(gòu)件和復(fù)合構(gòu)件。原子構(gòu)件由一系列服務(wù)、引用和屬性組成,它不會引用其他構(gòu)件。復(fù)合構(gòu)件由一系列原子構(gòu)件、服務(wù)、引用和屬性構(gòu)成,并在這些原子構(gòu)件之間進(jìn)行一些連接。如下代碼給出了構(gòu)件描述文件的一個例子,composite標(biāo)記間的代碼表示復(fù)合構(gòu)件,component標(biāo)記間的代碼表述原子構(gòu)件。<composite ><co

10、mponent name="ComponentA">基金項(xiàng)目:國家“863”計劃基金資助項(xiàng)目(2007AA01Z139) 作者簡介:錢建平(1983),男,碩士研究生,主研方向:模型驅(qū)動開發(fā),構(gòu)件組裝;沈備軍,副教授、博士;陳德來,研究員、博士 收稿日期:2009-05-11 E-mail:qjianping02<implementation.java class="cn.sjtu.ATMServiceImpl"/> <service name="ATMService"> <interface.ja

11、va interface="cn.sjtu.ATMService"/> </service> <reference name="SecurityService"> <interface.java interface="cn.sjtu.SecurityService"/> </reference> <property type="java.lang.String" name="sn">true</property> &l

12、t;/component> <component name="ComponentB"> <implementation.java class="cn.sjtu.SecurityServiceImpl"/> <service name="SecurityService"> <interface.java interface="cn.sjtu.SecurityService"/> </service> <reference name="F

13、oo"/> </component> <component name="ComponentC"> <implementation.java class="cn.sjtu.Foo"/> </component> <wire source="ComponentA/SecurityService" target="Com ponentB/SecurityService"/> <wire source="ComponentB/Foo

14、" target="ComponentC"/> </composite> 構(gòu)件模型的驗(yàn)證 構(gòu)件模型驗(yàn)證的目的在于保證原子構(gòu)件與復(fù)合構(gòu)件模型 的有效性和完備性。只有通過驗(yàn)證的構(gòu)件才能生成有效和完 備的代碼框架。模型驗(yàn)證內(nèi)容包括: (1)單個構(gòu)件的驗(yàn)證。主要是原子構(gòu)件的驗(yàn)證,先驗(yàn)證描 述 文 件 是 否 為 合 法 的 XML 文 件 , 然 后 通 過 相 應(yīng) 的 XML Schema 驗(yàn)證描述文件是否符合 Schema 定義要求的完備的 XML 文件,再驗(yàn)證定義的有實(shí)體的元素是否真實(shí)存在,例如 引用的 Java 類或 Spring bean 是否

15、存在。 (2)構(gòu)件間關(guān)系的驗(yàn)證。主要是復(fù)合構(gòu)件的驗(yàn)證,它需要 判斷被組裝的原子構(gòu)件是否存在,2 個被組裝的原子構(gòu)件之 間的接口是否匹配。 本文使用開源工具 XMLBean 驗(yàn)證 XML 文件的合法性。 通過該工具提供的接口可以驗(yàn)證構(gòu)件是否符合相應(yīng)的 XML Schema。構(gòu)件間關(guān)系的驗(yàn)證依賴本文定義的構(gòu)件資源模型。 2.2 3 在 SCA 構(gòu)件模型基礎(chǔ)上, 本文實(shí)現(xiàn)了模型驅(qū)動的構(gòu)件開 發(fā)工具ComponentStudio。開發(fā)者使用該工具能可視化定 義和組裝構(gòu)件,并自動生成代碼框架。 架構(gòu)設(shè)計 模型視圖控制器(Model View Controller, MVC)模式被普 遍應(yīng)用于可視化開發(fā)工

16、具。在此模式中,一個模型能對應(yīng)多 個視圖,加入的控制層能很好地耦合模型和視圖。本文使用 的 開 發(fā) 工 具 應(yīng) 具 備 上 述 特 征 , 因 此 , 選 擇 MVC 作 為 ComponentStudio 的核心架構(gòu)模式,如圖 1 所示,其中,3 個 大矩形框表示 MVC 的 3 個模塊。對圖 1 中的各構(gòu)件具體描 述如下: (1)構(gòu)件資源模型。該模型是 MVC 架構(gòu)的關(guān)鍵部分,應(yīng) 涵蓋構(gòu)件開發(fā)過程中一切所需元素。基于 Eclipse 的 Java 項(xiàng) 目模型,本文提出構(gòu)件資源模型。該模型相對于 SCA 構(gòu)件模 型是廣義的,SCA 構(gòu)件模型只關(guān)注單個構(gòu)件,包括一些接口 和屬性,而構(gòu)件資源模型

17、即關(guān)注單個構(gòu)件,也關(guān)注構(gòu)件間的 3.1 構(gòu)件開發(fā)工具的設(shè)計與實(shí)現(xiàn) 關(guān)系。 一個 Eclipse 的工作空間對應(yīng)一個唯一的構(gòu)件資源模型, 該模型包含零個或多個構(gòu)件工程。構(gòu)件工程基于 Eclipse 的 Java 工程概念,是可以獨(dú)立編譯、運(yùn)行和部署的實(shí)體。一個 構(gòu)件工程包括一個復(fù)合構(gòu)件和一個或多個原子構(gòu)件。 構(gòu)件資源模型的存儲形式是文件,其中包括構(gòu)件描述文 件(關(guān)于單一構(gòu)件)和構(gòu)件工程信息(存儲于 Eclipse 工程元數(shù) 據(jù)中)。 (2)控制器。負(fù)責(zé)觀察 Eclipse 資源的變化,如文件變化。 因?yàn)闃?gòu)件模型存儲于文件中, 所以文件變化對應(yīng)于模型變化, 只要安裝一個過濾器,篩選出感興趣的文件變

18、化即可。 控制器接收到資源更改消息后, 會包裝改變的詳細(xì)信息, 生成一個事件,而不是直接改變視圖。該事件稱為模型更改 事件。這樣做的好處是減少控制器與視圖之間的依賴,視圖 只要選擇監(jiān)聽自己關(guān)注的事件來改變自己的顯示。 (3)視圖。主要視圖包括 3 個: 1)原子構(gòu)件編輯器。用可視化方式編輯原子構(gòu)件,按原 子構(gòu)件的定義,該編輯器能編輯該定義中涉及的所有元素, 包括服務(wù)接口、引用接口和屬性。 2)復(fù)合構(gòu)件編輯器。在該編輯器中需要編輯復(fù)合構(gòu)件定 義中的所有元素。 復(fù)合構(gòu)件編輯器可以由 Eclipse 的開源框架 GMF(Graphical Modeling Framework)來實(shí)現(xiàn)。該架構(gòu)能有效

19、結(jié)合模型和視圖元素,且支持可拖拽的視圖元素,為實(shí)現(xiàn)可 拖拽的構(gòu)件組裝過程提供了便利。 3)導(dǎo)航視圖。 導(dǎo)航視圖基于 Eclipse 提供的 CNF(Common Navigator Framework)架構(gòu)。在該視圖中能以樹形方式展示資 源,且支持一些常用資源操作,如新增資源、刪除資源、定 位資源。在該視圖中可以顯示構(gòu)件的詳細(xì)信息,如服務(wù)接口、 引用接口和屬性。通過雙擊相應(yīng)圖標(biāo),能定位到具體資源, 例如雙擊服務(wù)接口能打開服務(wù)的實(shí)現(xiàn)代碼窗口。 上述視圖都會監(jiān)聽模型更改事件,從而在模型改變時相 應(yīng)改變自己的顯示。 (4)自動構(gòu)建器。它在該架構(gòu)中的地位類似于視圖,用于 監(jiān)聽模型更改事件,當(dāng)特定事件出

20、現(xiàn)后,自動驗(yàn)證模型的正 確性。但與視圖不同,它不會改變模型。模型自動驗(yàn)證功能 可以給開發(fā)者帶來極大便利,使錯誤盡早被發(fā)現(xiàn)。Eclipse 的 插件機(jī)制提供了構(gòu)建器的擴(kuò)展點(diǎn),能讓用戶快速構(gòu)造自己的 構(gòu)建器。在該構(gòu)建器中,筆者監(jiān)聽模型更改事件,并增量構(gòu) 建構(gòu)件工程。 圖1 構(gòu)件開發(fā)工具 MVC 架構(gòu) 代碼框架生成 代碼生成的關(guān)鍵是建立從構(gòu)件模型到代碼的轉(zhuǎn)換規(guī)則。 轉(zhuǎn)換規(guī)則指定了模型的特定元素到特定代碼片段的轉(zhuǎn)換。模 型的每個元素?fù)碛幸恍傩裕祟悓傩詴挥糜谵D(zhuǎn)換過程。 3.2 43 比如,implement.java標(biāo)記中的class屬性會被轉(zhuǎn)換成相應(yīng)的包名和類名;service, referen

21、ce中的interface元素會被轉(zhuǎn)換成類中的域;property中的type和name元素,會被轉(zhuǎn)換成類中域的數(shù)據(jù)類型和名稱,工具會為這些域提供getter和setter方法。目前,該工具只支持從模型到Java代碼的轉(zhuǎn)換。 3.3 工具實(shí)現(xiàn)基于Eclipse平臺,本文實(shí)現(xiàn)構(gòu)件開發(fā)工具Component Studio,如圖2所示。當(dāng)工具啟動后,界面中間是一個圖形編輯器,該編輯器能可視化表述構(gòu)件和構(gòu)件組裝過程。構(gòu)件屬性能在屬性頁中配置。在構(gòu)件建模過程中,自動構(gòu)建器會自動驗(yàn)證構(gòu)件的合法性,錯誤信息會在問題視圖中顯示。當(dāng)建模完成且驗(yàn)證通過后,開發(fā)者能使用工具為構(gòu)件模型產(chǎn)生代碼框架。圖2 構(gòu)件開發(fā)工具

22、界面在該工具的幫助下,開發(fā)者只要關(guān)注構(gòu)件的建模和業(yè)務(wù)邏輯即可。該過程可以視為MDA中PSM到代碼的轉(zhuǎn)換,與傳統(tǒng)過程相比,它能顯著提高軟件開發(fā)效率。由于具有自動驗(yàn)證功能,因此它能減少錯誤發(fā)生概率。4 模型驅(qū)動的服務(wù)構(gòu)件開發(fā)流程在ComponentStudio工具中,構(gòu)件開發(fā)包括3個步驟:構(gòu)件制作,構(gòu)件組裝和構(gòu)件管理。4.1 構(gòu)件制作構(gòu)件制作在ComponentStudio工具中主要指定義和制作原子構(gòu)件。包括2個過程,即構(gòu)件描述文件的定義和代碼框架的生成。構(gòu)件描述文件定義主要在原子構(gòu)件編輯器中完成,本文通過可視化方式定義構(gòu)件。在定義過程中,自動驗(yàn)證功能會實(shí)時顯示錯誤信息并給出糾錯提示。驗(yàn)證通過后,

23、可以通過選擇自動生成代碼菜單,方便地生成代碼框架。4.2 構(gòu)件組裝構(gòu)件組裝主要在復(fù)合構(gòu)件編輯器中完成。已定義好的原子構(gòu)件可以通過拖拽的方式導(dǎo)入復(fù)合構(gòu)件編輯器中,若2個原子構(gòu)件的服務(wù)和引用接口相匹配,則可以在2個構(gòu)件間連線,以建立匹配關(guān)系。自動驗(yàn)證功能對于該過程仍然有效。對于不匹配的接口,本文定義了適配器。服務(wù)和引用接口的命名以及函數(shù)定義可能不同,此時,接口匹配需要進(jìn)行一些轉(zhuǎn)換,本文使用類似適配器模式的方法,提供一個新的適配器類來包裝原有服務(wù)接口,使接口能和適配器類匹配。通過定義連線的屬性,可以選擇是否需要適配器類。 44 4.3 構(gòu)件管理構(gòu)件管理一般是指通過構(gòu)件庫,實(shí)現(xiàn)構(gòu)件的錄入、查詢、下載等

24、功能。本文涉及的構(gòu)件管理更多關(guān)注在工程中如何管理構(gòu)件間的依賴關(guān)系以及構(gòu)件的導(dǎo)入導(dǎo)出。Maven可以很好地用于項(xiàng)目管理,本工具引入Maven來管理構(gòu)件。Maven通過pom文件管理項(xiàng)目,在新建一個構(gòu)件時,需要錄入該構(gòu)件相應(yīng)的pom信息。Maven具有資源庫概念,制作完成的構(gòu)件保存在資源庫中。每次要導(dǎo)入一個構(gòu)件,只需要引用該構(gòu)件的pom信息。Maven擁有強(qiáng)大的依賴管理功能,當(dāng)一個構(gòu)件需要依賴其他構(gòu)件時,只要在該構(gòu)件的pom文件的依賴項(xiàng)中,加入依賴構(gòu)件的信息,利用Maven的Eclipse插件,該依賴會自動加入到Eclipse的工程依賴中。通過Maven資源庫能很好地實(shí)現(xiàn)構(gòu)件共享。在一個公司(或更大范圍)內(nèi)可以有一個統(tǒng)一的資源庫,每個人開發(fā)的構(gòu)件都可以錄入到該資源庫中,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論