• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向J2EE主流框架的MDA模型轉(zhuǎn)換研究

      2012-08-15 02:01:46謝培基余金山
      關(guān)鍵詞:精化層次結(jié)構(gòu)框架

      謝培基,余金山

      (華僑大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,福建 泉州 362021)

      計(jì)算機(jī)業(yè)界一直在探索一種新方法,既能夠提高軟件的開發(fā)效率,又能使所開發(fā)出來的軟件能夠有更高的質(zhì)量和更長(zhǎng)的生命周期。面向?qū)ο笏枷搿⒎植际接?jì)算開發(fā)、基于組件開發(fā)等新方法都為這一探索起到了應(yīng)有的作用。而模型驅(qū)動(dòng)架構(gòu)(MDA)同樣也為軟件開發(fā)的進(jìn)步發(fā)揮了重要作用。

      MDA (Model Driven Architecture)[1]是 OMG 組織在2001年正式提出的一種模型組織管理框架,它定義了平臺(tái)無關(guān)模型(PIM)和平臺(tái)相關(guān)模型(PSM),同時(shí)把PIM到PSM之間的自動(dòng)映射定義為模型轉(zhuǎn)換。MDA提供了一系列指導(dǎo)軟件開發(fā)的方法,這種開發(fā)方法將傳統(tǒng)的重編程過程提高到了重系統(tǒng)模型設(shè)計(jì)的層次,使得開發(fā)人員能更好地設(shè)計(jì)系統(tǒng),有效地提高了軟件的開發(fā)效率,同時(shí)降低了編程開發(fā)費(fèi)用、解決了系統(tǒng)需求不斷變化帶來的維護(hù)性困難問題。

      1 MDA模型轉(zhuǎn)換方法

      在基于MDA的軟件開發(fā)過程中[2],主要的兩個(gè)步驟是PIM到PSM的模型轉(zhuǎn)換和PSM到代碼的轉(zhuǎn)換。因?yàn)镻SM與其對(duì)應(yīng)的系統(tǒng)實(shí)現(xiàn)平臺(tái)技術(shù)緊密相關(guān),因此這一轉(zhuǎn)換相對(duì)較為直接,且有眾多MDA工具的支持。而將PIM轉(zhuǎn)換到PSM是一個(gè)較為復(fù)雜的過程[3],也是當(dāng)前研究MDA的一個(gè)重點(diǎn)。本文歸納出了幾種模型轉(zhuǎn)換方法。

      (1)手動(dòng)轉(zhuǎn)換方法:即系統(tǒng)開發(fā)人員使用已經(jīng)定義好的模型操作的API,將源模型轉(zhuǎn)換到目標(biāo)模型的方法。例如JMI,在J2EE中提供了一套完整的JMI的類庫(kù),系統(tǒng)開發(fā)人員可以通過編程實(shí)現(xiàn)相應(yīng)的模型轉(zhuǎn)換。這種轉(zhuǎn)換并沒有使模型轉(zhuǎn)換自動(dòng)化,所以很難在實(shí)際應(yīng)用中得到推廣。

      (2)基于 XMI的模型轉(zhuǎn)換方法[4]:實(shí)際上也是一種文本轉(zhuǎn)換方法,該轉(zhuǎn)換方法將源模型用XMI文本的形式表示,也相當(dāng)于用XMI來存儲(chǔ)源模型,然后將XMI里的元素一個(gè)個(gè)按步驟轉(zhuǎn)換到目標(biāo)模型。這種轉(zhuǎn)換方法的優(yōu)點(diǎn)是相對(duì)簡(jiǎn)單,缺點(diǎn)是轉(zhuǎn)換速度慢、步驟較多且繁雜、不夠直觀、容易導(dǎo)致模型前后的不一致。

      (3)基于模式的模型轉(zhuǎn)換方法[5]:該方法建立在其他模型轉(zhuǎn)換方法的基礎(chǔ)上,引入模式的概念,將一些可用的模型轉(zhuǎn)換方案包裝成模式,然后以模式的形式放到存儲(chǔ)庫(kù)里以實(shí)現(xiàn)模型轉(zhuǎn)換方案的添加刪除和復(fù)用。這種模型轉(zhuǎn)換方法通常會(huì)改變?cè)茨P偷慕Y(jié)構(gòu)信息,使其更加符合設(shè)計(jì)理念,而沒有改變模型的抽象級(jí)別和增加它的語(yǔ)義。

      (4)結(jié)構(gòu)驅(qū)動(dòng)轉(zhuǎn)換方法:該方法主要分為兩個(gè)不同的步驟[6]:①為目標(biāo)模型建立多層次的體系結(jié)構(gòu);②設(shè)置目標(biāo)模型中的索引和屬性。這種轉(zhuǎn)換方法設(shè)計(jì)了一個(gè)總的規(guī)則調(diào)度框架和轉(zhuǎn)換機(jī)制,用戶需要做的就是提供轉(zhuǎn)換規(guī)則,然后實(shí)現(xiàn)模型的轉(zhuǎn)換。著名的模型驅(qū)動(dòng)開發(fā)工具OptimalJ中的模型轉(zhuǎn)換框架就是使用結(jié)構(gòu)驅(qū)動(dòng)的方法。

      面向 J2EE主 流 框 架 Struts、Spring和 Hibernate等MDA模型轉(zhuǎn)換,當(dāng)前還沒有標(biāo)準(zhǔn)化的模型轉(zhuǎn)換方法,以上的幾種模型轉(zhuǎn)換方法也未能提供有效的支持,其中方法(1)和方法(2)過于簡(jiǎn)單、手動(dòng)化;方法(3)建立在其他模型轉(zhuǎn)換方法上,未能提供完整的解決方案;方法(4)有現(xiàn)成的工具,但偏向于模型到代碼的轉(zhuǎn)換。

      針對(duì) Struts、Spring和 Hibernate的整合框架 (SSH整合框架)的技術(shù)特性,本文提出了基于元模型和UML Profile相結(jié)合的模型轉(zhuǎn)換方法。其思想是先抽象出平臺(tái)無關(guān)模型PIM和平臺(tái)相關(guān)模型PSM的元模型,然后制定元模型間的轉(zhuǎn)換規(guī)則,間接實(shí)現(xiàn)PIM到PSM的模型轉(zhuǎn)換。而在建立PIM和PSM的元模型時(shí),UML并不能完整地描述出針對(duì)特定平臺(tái)或技術(shù)的模型信息,但UML自身具備的擴(kuò)展機(jī)制UML Profile,為構(gòu)建MDA的各種特殊模型提供了有力的支持,因此本文借助UML Profile來建立PIM和PSM的元模型。其轉(zhuǎn)換過程如圖1所示。

      圖1 基于元模型的模型轉(zhuǎn)換

      2 面向J2EE主流框架的模型轉(zhuǎn)換

      根據(jù)上文提出的模型轉(zhuǎn)換方法,首先建立PIM和PSM的元模型,然后分析元模型間的映射關(guān)系,建立具體的轉(zhuǎn)換規(guī)則,間接實(shí)現(xiàn)PIM到PSM的模型轉(zhuǎn)換。

      2.1 建立PIM元模型

      建立PIM元模型應(yīng)充分考慮PSM所屬平臺(tái)的特性,確定使用何種建模技術(shù)來建立PIM以及建立一個(gè)能與PSM元模型相呼應(yīng)的PIM元模型,以便制定模型轉(zhuǎn)換規(guī)則。當(dāng)前基于動(dòng)態(tài)行為建模的模型很少應(yīng)用到MDA中,且這方面的模型轉(zhuǎn)換技術(shù)還不夠成熟,因此,本文采用靜態(tài)結(jié)構(gòu)的類圖對(duì)SSH框架建模,對(duì)于Struts框架的建模,本文忽略其視圖層,對(duì)控制器層和模型層采用類圖表示。

      在使用靜態(tài)的類圖結(jié)構(gòu)來描述PIM時(shí),往往是用描述業(yè)務(wù)的領(lǐng)域?qū)ο竽P蛠肀硎綪IM,但是一個(gè)系統(tǒng)的領(lǐng)域?qū)ο竽P筒蛔阋酝暾枋鱿到y(tǒng)的總體架構(gòu),因此需要進(jìn)一步對(duì)PIM模型進(jìn)行精化,使其既能描述領(lǐng)域?qū)ο箝g的關(guān)系又能描述系統(tǒng)的總體架構(gòu)。

      SSH整合框架是一種多層架構(gòu)模式,可分為表示層、控制器層、業(yè)務(wù)邏輯層、實(shí)體層、數(shù)據(jù)持久層、數(shù)據(jù)庫(kù)層,這種N層架構(gòu)模式實(shí)際上是對(duì)經(jīng)典的Web應(yīng)用軟件體系結(jié)構(gòu)的擴(kuò)展,也可以說是一個(gè)適合于SSH整合框架的Web應(yīng)用層次結(jié)構(gòu)。同時(shí)這種分層結(jié)構(gòu)又是一種廣泛應(yīng)用的軟件體系結(jié)構(gòu),不涉及到特定的技術(shù)或與平臺(tái)相關(guān)。因此,本文構(gòu)建出一個(gè)與平臺(tái)無關(guān)又能適合于SSH整合框架的Web應(yīng)用層次結(jié)構(gòu),以此來彌補(bǔ)領(lǐng)域?qū)ο竽P偷牟蛔悖宫F(xiàn)系統(tǒng)的總體架構(gòu),這也是對(duì)PIM的精化。

      本文把這種Web應(yīng)用層次結(jié)構(gòu)的模型作為PIM元模型。利用UML Profile來建立Web應(yīng)用層次結(jié)構(gòu)模型如圖2所示。

      圖2 Web應(yīng)用層次結(jié)構(gòu)

      圖2中,Controller是控制器,負(fù)責(zé)將視圖層發(fā)過來的用戶請(qǐng)求委派給相應(yīng)的Action;Action調(diào)用需要的Service類來實(shí)現(xiàn)業(yè)務(wù)邏輯功能;DAO則提供數(shù)據(jù)訪問功能;Entity 是實(shí)體類,與 Action、ServiceImpl、DAOImpl是依賴關(guān)系,這三個(gè)類可以聲明實(shí)體類的對(duì)象,或接收實(shí)體類對(duì)象參數(shù),因此它們之間是使用依賴的關(guān)系。

      在進(jìn)行PIM到PSM的模型轉(zhuǎn)換時(shí),考慮到PIM的平臺(tái)獨(dú)立性,假如不對(duì)PIM的元模型進(jìn)行擴(kuò)展,則有可能造成PIM與PSM元模型元素間的映射關(guān)系復(fù)雜化等情況,在模型轉(zhuǎn)換過程中也將使得轉(zhuǎn)換不夠明朗,最終影響模型轉(zhuǎn)換的效果。因此,本文采用了UML Profile對(duì)Web應(yīng)用層次進(jìn)行了相應(yīng)的擴(kuò)展。表1列出了層次結(jié)構(gòu)中的構(gòu)造型,表2列出了構(gòu)造型的屬性值。

      表1 構(gòu)造型

      表2 構(gòu)造型的屬性值

      2.2 建立PSM元模型

      對(duì)抽象SSH整合框架的元模型,本文先抽象出各個(gè)框架的元模型,然后對(duì)這些元模型進(jìn)行整合以得到SSH整合框架的準(zhǔn)元模型。下面對(duì)Spring、Hibernate兩個(gè)框架的元模型抽取做具體的研究,而對(duì)Struts框架,前面已經(jīng)忽略掉了對(duì)視圖層的處理,在此也不對(duì)Struts的核心MVC進(jìn)行元模型抽取,而是簡(jiǎn)單地使用Web應(yīng)用層次結(jié)構(gòu)來表達(dá)控制器與業(yè)務(wù)邏輯的關(guān)系。

      2.2.1抽象Spring框架的元模型

      Spring框架的兩大核心是:面向切面編程(AOP)和控制反轉(zhuǎn)(IoC)。其核心在Web應(yīng)用開發(fā)中起著舉足輕重的作用。

      (1)抽象 Spring IoC的元模型

      在IoC中,Spring容器把所有需要管理的類聲明成bean,一個(gè) bean包括 id、class和 properties等。抽象出的Spring IoC的元模型如圖3所示。

      圖3 IoC元模型

      (2)抽象Spring AOP的元模型

      AOP的提出是軟件開發(fā)史的一次重大創(chuàng)新,它用面向切面編程的思想有效地解決了橫切關(guān)注點(diǎn)問題。AOP的原理如圖4所示。圖中AOP在類A、類B等的方法上加入一個(gè)切面,并把一個(gè)可以聲明成bean的切面類織入到切面中,當(dāng)程序執(zhí)行到切面的時(shí)候先執(zhí)行Aspect對(duì)象再往下執(zhí)行。切面類可以為記錄日志、錯(cuò)誤處理、數(shù)據(jù)驗(yàn)證等提供服務(wù)。

      圖4 AOP原理

      根據(jù)圖4的AOP原理,對(duì)照應(yīng)用開發(fā),抽象出AOP的元模型如圖5所示。

      圖5 AOP元模型

      2.2.2 抽象Hibernate框架的元模型

      Hibernate框架在業(yè)務(wù)邏輯層中又分出了數(shù)據(jù)持久層,數(shù)據(jù)持久層除了實(shí)現(xiàn)對(duì)象關(guān)系的映射,還封裝了底層數(shù)據(jù)庫(kù)操作類,為程序開發(fā)帶來了很好的靈活性,也避免了數(shù)據(jù)庫(kù)表的直接暴露。在抽象Hibernate框架的元模型時(shí),為每一個(gè)實(shí)體類Entity創(chuàng)建一個(gè)對(duì)應(yīng)的數(shù)據(jù)訪問接口EntityDAO,這樣既使得持久層的結(jié)構(gòu)清晰,又能與業(yè)務(wù)邏輯層的服務(wù)接口很好地銜接。對(duì)Hibernate框架抽象出的元模型如圖6所示。

      圖6 Hibernate框架元模型

      2.2.3 SSH整合框架的PSM元模型

      在抽象出各個(gè)框架元模型的基礎(chǔ)上,對(duì)這三個(gè)框架的元模型進(jìn)行整合得到如圖7所示的SSH整合框架的PSM元模型。

      圖7 SSH整合框架的PSM元模型

      該SSH整合框架元模型不但串聯(lián)了各個(gè)框架的元模型,同時(shí)也融合了Web應(yīng)用的層次結(jié)構(gòu),為PIM到PSM的模型轉(zhuǎn)換提供了極大的便利。在對(duì)Spring框架元模型整合中,控制器類、業(yè)務(wù)邏輯類、數(shù)據(jù)訪問類、面向切面編程類都繼承bean類,亦即這些類都可以聲明成bean被IoC容器來管理。對(duì)Hibernate框架元模型的整合,主要是對(duì)業(yè)務(wù)邏輯層和數(shù)據(jù)持久層的整合。

      SSH整合框架元模型同樣采用了UML的擴(kuò)展機(jī)制UML Profile進(jìn)行了相應(yīng)的擴(kuò)展。表3列出了該元模型的構(gòu)造型。

      表3 PSM元模型的構(gòu)造型

      2.3 PIM到PSM的模型轉(zhuǎn)換

      根據(jù)本文提出的模型轉(zhuǎn)換方法,模型轉(zhuǎn)換過程從一個(gè)初始的領(lǐng)域?qū)ο竽P烷_始,根據(jù)定義的精化規(guī)則對(duì)其求精形成準(zhǔn)PIM模型,然后根據(jù)模型轉(zhuǎn)換規(guī)則,轉(zhuǎn)換成相應(yīng)的PSM模型。

      2.3.1 PIM的精化

      要實(shí)現(xiàn)PIM到PSM的轉(zhuǎn)換,首先需要建立適應(yīng)Web應(yīng)用層次結(jié)構(gòu)的PIM模型,而在實(shí)際應(yīng)用中,一開始往往建立的是領(lǐng)域?qū)ο竽P?,不能很好地滿足Web應(yīng)用層次結(jié)構(gòu)。因此可以參考系統(tǒng)的其他UML圖(如用例圖對(duì)這一初始PIM進(jìn)行精化形成準(zhǔn)PIM),使其能遵循PIM元模型的規(guī)范。本文對(duì)PIM的精化定義了如下的精化規(guī)則:

      (1)為每個(gè)領(lǐng)域?qū)ο笊梢粋€(gè)同名的實(shí)體類,領(lǐng)域?qū)ο蟮膶傩詫?duì)應(yīng)實(shí)體類的屬性,關(guān)鍵字對(duì)應(yīng)實(shí)體類的ID,領(lǐng)域?qū)ο箝g的關(guān)聯(lián)關(guān)系對(duì)應(yīng)實(shí)體類的關(guān)聯(lián)。

      (2)為每個(gè)實(shí)體類生成一個(gè)對(duì)應(yīng)的數(shù)據(jù)訪問接口EntityDAO和實(shí)現(xiàn)類EntityDAOImpl,并添加需要的方法,EntityDAOImpl能調(diào)用對(duì)應(yīng)的實(shí)體類。

      (3)在業(yè)務(wù)邏輯層中,為每個(gè)實(shí)體類根據(jù)需要建立相應(yīng)的EntityService接口和其實(shí)現(xiàn)類EntityServiceImpl或其他的服務(wù)類,添加需要的屬性和方法,EntityServiceImpl類可以訪問實(shí)體類Entity和數(shù)據(jù)訪問類EntityDAO。

      (4)結(jié)合其他 UML圖生成控制器類 Controller和Action,Action可以調(diào)用需要的服務(wù)類。

      2.3.2 PIM到PSM的模型轉(zhuǎn)換規(guī)則

      PIM到PSM的模型轉(zhuǎn)換是MDA應(yīng)用開發(fā)的核心,模型轉(zhuǎn)換規(guī)則則是PIM到PSM的轉(zhuǎn)換的核心,可以說模型轉(zhuǎn)換規(guī)則是MDA應(yīng)用開發(fā)核心的核心,足以見得模型轉(zhuǎn)換規(guī)則的重要性。下面定義了具體的模型轉(zhuǎn)換的轉(zhuǎn)換規(guī)則:

      (1)<<Entity>>轉(zhuǎn)換到 PSM

      生成與<<Entity>>相同的實(shí)體類,將領(lǐng)域?qū)ο箝g的關(guān)聯(lián)<<EntityRelation>>映射成實(shí)體類的關(guān)聯(lián)映射<<MappingRelation>>,將領(lǐng)域?qū)ο蟮闹麈I<<primaryKey>>映射到<<Entity_ID>>。主要轉(zhuǎn)換規(guī)則如下:

      (2)<<DAOImpl>>、<<ServiceImpl>>、<<Action>>、<<Aspect>>轉(zhuǎn)換到 PSM

      將 PIM 中的 每 個(gè)<<DAOImpl>>、<<ServiceImpl>>、<<Action>>、<<Aspect>>轉(zhuǎn)換成對(duì)應(yīng)的<<bean>>, 主要轉(zhuǎn)換規(guī)則如下:

      (3)<<Action_Service>>、<<ServiceImpl_DAO>>轉(zhuǎn) 換到PSM

      將每個(gè)<<Action_Service>>、<<ServiceImpl_DAO>>關(guān)聯(lián)映射成PSM中的<<Property_DI>>,根據(jù)關(guān)聯(lián)的命名來定義規(guī)則,如<<ServiceImpl_DAO>>關(guān)聯(lián),是將 DAO bean注入到ServiceImpl bean中,則主要轉(zhuǎn)換規(guī)則如下:

      (4)對(duì)<<Action>>、<<ServiceImpl>>、<<DAOImpl>>實(shí)現(xiàn)到 PSM(AOP)中的轉(zhuǎn)換

      根據(jù)<<Action>>、<<ServiceImpl>>、<<DAOImpl>>構(gòu)造屬性<<aopType>>的值,選擇對(duì)應(yīng)的PSM中的Aspect類。 屬 性<<advice>>、<<pointCut>>對(duì) 應(yīng) PSM 中 的<<Advice>>、<<PointCut>>, 本文選?。迹糞erviceImpl>>實(shí)現(xiàn)到PSM(AOP)中的轉(zhuǎn)換,其他的兩個(gè)轉(zhuǎn)換規(guī)則類似。主要轉(zhuǎn)換規(guī)則如下:

      本文分析了幾種主流的模型轉(zhuǎn)換方法,但這些方法并未對(duì)J2EE主流框架提供有效的支持,而本文提出的基于元模型和UML Profile相結(jié)合的模型轉(zhuǎn)換方法,通過建立PIM元模型和PSM元模型,以及制定元模型間的轉(zhuǎn)換規(guī)則,間接實(shí)現(xiàn)了PIM到PSM的模型轉(zhuǎn)換。

      [1]MILLER J,MUKER JI.MDA guideversion1.0[M].Object Management Group, 2003:3-7.

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

      [3]OLDEVIK J, SOLBERG A.Framework for model transformation and code generation. In: Enterprise Distributed Object Computing Conference[C].EDOC′02.Proceedings.Sixth International, 2002:181-189.

      [4]張德芬,李師賢,古思山.MDA中的模型轉(zhuǎn)換技術(shù)綜述[J].計(jì)算機(jī)科學(xué),2006,33(10):228-230.

      [5]張?zhí)?,張巖.基于MDA的設(shè)計(jì)模式建模與模型轉(zhuǎn)換[J].軟件學(xué)報(bào),2008,19(9):2203-2217.

      [6]王永濤,劉勇.基于 MDA的模型轉(zhuǎn)換研究[J].計(jì)算機(jī)工程,2011,37(16):84-87.

      猜你喜歡
      精化層次結(jié)構(gòu)框架
      框架
      基于級(jí)聯(lián)網(wǎng)絡(luò)和語(yǔ)義層次結(jié)構(gòu)的圖像自動(dòng)標(biāo)注方法
      廣義框架的不相交性
      n-精化與n-互模擬之間相關(guān)問題的研究
      論立法修辭功能的層次結(jié)構(gòu)
      法律方法(2017年2期)2017-04-18 09:00:37
      WTO框架下
      法大研究生(2017年1期)2017-04-10 08:55:06
      n-精化關(guān)系及其相關(guān)研究
      電子世界(2017年2期)2017-02-17 00:54:00
      建構(gòu)利益相關(guān)者管理的三層次結(jié)構(gòu)分析
      一種基于OpenStack的云應(yīng)用開發(fā)框架
      Petri網(wǎng)結(jié)點(diǎn)精化及其應(yīng)用
      苍溪县| 凤山市| 石屏县| 南和县| 瑞安市| 突泉县| 浏阳市| 小金县| 留坝县| 大同县| 新郑市| 贵州省| 兴仁县| 冕宁县| 巴青县| 高雄县| 叶城县| 洛川县| 梁河县| 白玉县| 丰都县| 镇平县| 东至县| 无锡市| 大城县| 若羌县| 元谋县| 疏附县| 樟树市| 汾阳市| 新营市| 怀远县| 江城| 尼木县| 济宁市| 阿拉善盟| 凉山| 长垣县| 沿河| 土默特右旗| 得荣县|