亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MDA建模的AOP擴(kuò)展策略及其比較*

        2011-07-28 01:32:26余金山
        關(guān)鍵詞:連接點切入點語義

        余金山

        (華僑大學(xué) 計算機(jī)學(xué)院,福建 泉州362011)

        MDA是一種以模型為中心的軟件開發(fā)新方法[1,2]。但是,MDA仍然不能有效地處理橫切“關(guān)注點”問題。

        近來MDA和AOSD兩者的融合和相互支持已成為具有重要的理論意義和實用價值的研究課題[1]。其中的主要研究方向之一是:采用主流開發(fā)框架MDA,在MDA的建模過程中引入AOP的概念和思想,建立通用的具有面向方面特性的PIM。

        如何把面向方面的概念和思想引入到MDA中,可以采取多種不同的擴(kuò)展策略。

        1 MDA引入AOP的擴(kuò)展策略

        在MDA的建模過程中引入面向方面的思想和概念,其中最重要的是如何表示面向方面AOP的概念和思想以及表達(dá)方式。

        下面給出兩種有代表性的擴(kuò)展策略及其實現(xiàn)方法:基于MOF的擴(kuò)展和基于UML 2.0 Profile的擴(kuò)展,這是當(dāng)前的主流。

        1.1 基于MOF的擴(kuò)展策略

        在MDA中,MOF位于MOF四層模型的最高層。MOF體系是開放的,因而可以對它添加新的描述UML的元類型,以擴(kuò)展新的功能和應(yīng)用。圖1給出了這種擴(kuò)展的示意。

        但是,這種擴(kuò)展策略要做的工作較多也較為困難,必須對UML的核心語義十分熟悉。目前所做的研究還很少?;贛OF的AOP擴(kuò)展也稱為“重量級”的擴(kuò)展。參考文獻(xiàn)[2]比較全面地介紹了一種通用的支持AOP的MOF 2.0元模型。

        MOF擴(kuò)展策略以MDA作為不同的AOP擴(kuò)充方案之間的集成元素,自動或半自動地把在某開發(fā)階段建立的模型轉(zhuǎn)換成下一階段的模型,直到最終實現(xiàn)為止。首先建立AO術(shù)語的被廣泛接受的本體,基于這些本體的共同元素和它們之間的關(guān)系建立通用的支持AOP的MOF元模型。其擴(kuò)展方法和過程可描述如下:

        第一步是確定出各種不同的AOP擴(kuò)充方案所共享的概念,并根據(jù)概念的目的把它們分組成包,以提高可理解性。然后,建立包與包之間的關(guān)系。由此,可以建立三個主要的包:(1)Entities包,描述分解單元和它們之間的關(guān)系的實體;(2)JoinpointModel包,包含允許注入行為對應(yīng)用程序的執(zhí)行進(jìn)行干預(yù)的關(guān)注點的包;(3)CompositionRules包,它有兩個子包,SymmetricRules描述對稱規(guī)則,AsymmetricRules描述不對稱規(guī)則。這三個包可以從UML 2.0元模型的內(nèi)核和CommomBehaviors包的元素進(jìn)行特化。

        實體:UML2.0 BehaviouredClassifiers的特化。

        JoinpointModel:連接點是對應(yīng)用程序的運行進(jìn)行干預(yù)以執(zhí)行一個方面行為(AspectJ中的 advice)。所以,每個實體由一個可以隱式附上方面行為的Hook集組成。在 UML2.0中,這些Hooks是基本單元的 Behaviors。

        CompositionRules:SymmetricRules用以通過若干實體(也稱為子模塊)的組合產(chǎn)生一個更大的實體。AsymmetricRules用于說明任何在連接點(hooks)上應(yīng)用 aspects。

        這樣建立的通用元模型可以精細(xì)化為更加具體的模型,例如 CBSD(Component-Based Software Development)與AOSD的集成模型CAM、Theme/UML模型。CAM與Theme/UML模型之間還可以實現(xiàn)相互轉(zhuǎn)換。

        1.2 基于UML 2.0 Profile擴(kuò)展策略

        這種擴(kuò)展策略的基礎(chǔ)是:UML2.0 Profile提供了很好的擴(kuò)展機(jī)制。圖2是其示意圖。

        1.2.1 擴(kuò)展方法和擴(kuò)展機(jī)制

        UML2.0是建模語言的核心,其本身就是可擴(kuò)展的?;赨ML Profile的擴(kuò)展策略實際上是一種 基于UML 2.0的擴(kuò)展。基于UML 2.0的擴(kuò)展策略有兩種方法:

        (1)First-Class擴(kuò)展。它允許增加、修改具有相應(yīng)功能的元類就能使得UML 2.0具有描述AOP特性的建模能力。這種擴(kuò)展增加了UML 2.0語言的復(fù)雜性和應(yīng)用建模的困難性,還涉及到 MOF的修改,對已有的標(biāo)準(zhǔn)化造成了破壞,因而其缺點是明顯的。

        (2)Profiles方式。它是一種通過建立面向方面PIM的PIM-AOP Profile的方式。Profiles擴(kuò)展無需改動已有的元模型,也不改變現(xiàn)有的語法和語義,而是通過UML Profiles的構(gòu)造型、標(biāo)記值和約束等擴(kuò)展機(jī)制來擴(kuò)展UML 2.0的建模能力。這種方法易于理解,不破壞現(xiàn)有標(biāo)準(zhǔn),還可以充分利用現(xiàn)有的相關(guān)工具。

        因此,通常選擇后一種擴(kuò)展方法。它利用了UML 2.0 Profiles提供的三種擴(kuò)展機(jī)制:

        (1)構(gòu)造型

        該機(jī)制利用一個已存在的模型元素來定義一種新的模型元素。新模型元素是已有模型元素的子類,通過泛化繼承已有的元模型類,并添加額外的語義來實現(xiàn)擴(kuò)展。

        (2)標(biāo)記值

        標(biāo)記值用于指定模型元素的性質(zhì),由標(biāo)記字符串和值字符串組成,是對特性的顯式定義。任何模型元素都可以應(yīng)用標(biāo)記值來增加新的語義。標(biāo)記值也可用來提供附加信息以有效提高模型的質(zhì)量。

        (3)約束

        約束用于對模型元素提供語義條件或限制。它用大括弧內(nèi)的字符串表達(dá)式來表示。約束可應(yīng)用于一個或多個元素上,可以附加在依賴、注釋等元素上以表示約束和關(guān)系。因此可以用來對模型元素進(jìn)行語義上的限制。

        1.2.2 Profiles擴(kuò)展方式實例

        (1)方面aspcet的表示。方面是AOP最主要的概念,在建模過程中應(yīng)該把它作為一個獨立的、封閉的并且可以擁有自定義的結(jié)構(gòu)成員的實體來定義。Aspect可以通過UML Profiles的構(gòu)造型的擴(kuò)展來實現(xiàn)。如圖3所示。

        圖3 aspect的構(gòu)造型

        在定義Aspect構(gòu)造型時需要:(1)指出新定義的構(gòu)造型是基于哪個元素的;(2)改變或增加新的語義。

        標(biāo)記isPrivileged用于決定aspect是否能訪問被其橫切的類的私有屬性。

        在本期的隨刊文件中,我們給大家提供了兩個特殊的PSD文件,它們是為了方便大家簡單快速給風(fēng)光照進(jìn)行必要的處理而設(shè)計。一張適合用來處理橫幅照片,另一張適合用來處理豎幅照片。

        標(biāo)記aspectInstantiationType用來決定aspect實例化的方式。它可定義基于連接點中對象實例化的、基于連接點中的控制流的和在整個應(yīng)用程序中只創(chuàng)建一個aspect對象的等幾種方式。

        利用方面aspect既可以擴(kuò)展出新的方面aspect或者抽象方面abstractaspect,也可以通過實現(xiàn)接口方面Iaspect來構(gòu)造方面aspect。

        (2)切入點pointcut的表示。切入點、連接點的定義必須包含靜態(tài)語義和動態(tài)行為語義兩個方面。切入點、連接點的AOP動態(tài)行為語義是指干預(yù)應(yīng)用的運行以執(zhí)行方面aspect的行為。動態(tài)行為語義的描述和擴(kuò)展通常選用在AOP中具有代表性的AspectJ中的advice。

        切入點的表述可通過UML Profiles的構(gòu)造型的擴(kuò)展得到構(gòu)造型pointcut。并可(也必須)為 pointcut添加約束,使其只能用于構(gòu)造型aspect。

        (3)通知advice、連接點 joinpoint。與切入點相關(guān)的通知advice和連接點joinpoint仍然可以通過UML Profiles的構(gòu)造型的擴(kuò)展來實現(xiàn)。

        用于描述動態(tài)行為語義的AspectJ advice實際上就是UML 2.0的Behaviors。對構(gòu)造型advice可以且必須添加約束,使其只能用于構(gòu)造型pointcut。并且可以實現(xiàn)通知的五種執(zhí)行方式:

        ① before通知:在連接點joinpoint執(zhí)行之前執(zhí)行before advice。但不能阻止連接點前的執(zhí)行;

        ② after通知:在連接點joinpoint執(zhí)行之后執(zhí)行after advice;

        ③ around通知:包圍一個連接點的通知,例如方法調(diào)用。Aroud通知在方法調(diào)用前后完成自定義的行為,并負(fù)責(zé)選擇繼續(xù)執(zhí)行連接點或通過自己的返回值或拋出異常來中斷執(zhí)行。

        ④ AfterThrowingAdvice通知:在方法拋出異常時執(zhí)行的通知。

        ⑤ AfterReturningAdvice通知:在連接點正常完成后執(zhí)行的通知。

        連接點有兩種類型:類連接點和方法連接點。

        類連接點構(gòu)造型classjoinpoint的擴(kuò)展實現(xiàn)可以也需要添加約束,使其只能用于切入點pointcut。并且可以實現(xiàn)通配符的條件比較。同樣,方法連接點構(gòu)造型methodjoinpoint的擴(kuò)展實現(xiàn)也需要添加約束,使其只能用于切入點 pointcut。

        方法連接點methodjoinpoint是專門針對方法的。方法所具有的修飾符、返回值、方法名、參數(shù)、參數(shù)個數(shù)以及異常等的表述,都可以在此基礎(chǔ)上,將方法連接點methodjoinpoint分解為修飾符構(gòu)造型modifierJ、返回值構(gòu)造型returnJ、參數(shù)構(gòu)造型argsJ以及異常構(gòu)造型exceptionJ。 對 modifierJ、returnJ、argsJ也都可以添加約束,使得它們只能用在方法連接點構(gòu)造型methodjoinpoint和類連接點構(gòu)造型classjoinpoint中。

        此外,AOP中對連接點的動態(tài)捕獲 (控制流程中類方法執(zhí)行中涉及的連接點以及對類的字段進(jìn)行處理、類初始化、對象初始化等涉及的所有連接點)和靜態(tài)捕獲(捕獲在指定類或者方面中的程序體中的所有連接點以及滿足一定條件的連接點),以及用于表示橫切關(guān)注點引發(fā)的行為順序等機(jī)制,都可以通過UML 2.0 Profile的擴(kuò)展來獲得。

        2 擴(kuò)展策略的比較和相關(guān)研究

        相對來說,使用UML 2.0 Profile的最大好處是可以獲得大多數(shù)UML2.0工具的支持,建模人員可以容易地使用UML2.0 Profile擴(kuò)展機(jī)制在MDA中引入面向方面的建模[9,13]。從理論上來說,可以創(chuàng)建無限個特征文件Profile。因而,只要遵循UML 2.0規(guī)范,任何的建模人員都可以創(chuàng)建滿足自己需要的任何特征文件。通過Profile的擴(kuò)展機(jī)制建立UML2.0 PIM-AOP Profile模型規(guī)范的方式具有較強(qiáng)的通用性,例如當(dāng)AOP的語法增加或變動時,可以容易地在該PIM模型規(guī)范中實現(xiàn)。

        但是,在進(jìn)行軟件開發(fā)時使用UML2.0 Profile擴(kuò)展,必須首先利用面向方面技術(shù)將核心業(yè)務(wù)邏輯和橫切關(guān)注點分離,然后建立實現(xiàn)系統(tǒng)核心關(guān)注點的功能PIM和橫切關(guān)注點的方面PIM,接下來還要根據(jù)選定的具體技術(shù)平臺利用相關(guān)的平臺變換規(guī)則分別將功能PIM和方面PIM變換為功能PSM和方面PSM。最后還需利用特定方面平臺的編織技術(shù)將這兩部分編織在一起形成最終代碼[1]。

        與UML Profile的擴(kuò)展策略相比較,MOF擴(kuò)展可以充分利用和表達(dá)元模型的語義,其抽象級更高,因而靈活性也更高。但它工作困難、現(xiàn)有的支持工具較少。

        支持AOP的MOF元模型具有更強(qiáng)的表達(dá)能力,而且獨立于任何的標(biāo)記,同時還能為除MDA以外的其他建模標(biāo)準(zhǔn)(如XMI、QVT等)所使用。

        支持AOP的MOF元模型的優(yōu)點是:(1)有助于不同的AOP擴(kuò)充方案建立元模型;(2)通過一個簡單的元模型能夠方便地確定不同的AOP擴(kuò)充方案的異同;(3)能夠?qū)崿F(xiàn)模型之間的水平變換,即不同的AOP擴(kuò)充方案之間的轉(zhuǎn)換;(4)有利于轉(zhuǎn)換工具的開發(fā)。

        MOF擴(kuò)展可以遵循MDA方法,使用預(yù)定義的轉(zhuǎn)換,從元模型生成目標(biāo)模型所有可能的元素。另一方面,利用這種方法,可以生成多個目標(biāo)模型,獲取相同系統(tǒng)的不同實現(xiàn)方案。

        此外,基于各種特定的MOF元模型建立的任何模型,以及任何使用經(jīng)擴(kuò)展的通用的支持AOP的MOF元模型構(gòu)建的任何模型,都可以直接通過XMI標(biāo)準(zhǔn)序列化為 XML。

        一些試圖擴(kuò)展UML元模型以支持AOP的相關(guān)工作有:

        [3]根據(jù) AspectJ和AspectC++中元素的語義,通過繼承相應(yīng)UML中元素的方法擴(kuò)展了UML的元模型。類圖中的切入點可以從方面中分離出來,這樣可以清晰地表示在這個切入點處的多個橫切關(guān)系;順序圖中新添加的通知發(fā)出焦點可以方便地表達(dá)行為橫切。但所采用的方法是非形式化的,而且其實現(xiàn)和應(yīng)用都較麻煩和困難。

        參考文獻(xiàn)[4]基于AspectJ語法語義和XMI擴(kuò)展UML元模型,并實現(xiàn)了面向方面的重要概念。但該方法缺乏對基于面向方面的動態(tài)行為和特征的支持。

        這些基于UML元模型的擴(kuò)展都非常接近于諸如AspectJ的原始AOSD方法,且不支持更高級的功能,如對稱組合。

        其他的一些對基于UML Profile擴(kuò)展的研究工作有:參考文獻(xiàn)[5]給出了面向方面設(shè)計的通用UML Profile的構(gòu)造。提出了用UML中的collaboration template、Feature和Association模型元素的擴(kuò)展構(gòu)造型。但是工作并沒有最終完成,而且寄希望于通過不同的方案來完成。此外,它仍然不支持諸如對稱組合規(guī)則等高級概念,其實用性也有待于在不同的方案中進(jìn)行檢驗。參考文獻(xiàn)[6]提出了用于AspectJ的設(shè)計標(biāo)記。參考文獻(xiàn)[7]提出一個原始的 AspectJ profile,其中,advice和 pointcut是基于operation的構(gòu)造型,aspect與核心業(yè)務(wù)模塊之間的關(guān)系表達(dá)為依賴關(guān)系。參考文獻(xiàn)[6]、[7]給出的擴(kuò)展策略的共同缺點是過分依賴于特定的技術(shù)。

        還有一些略有不同的擴(kuò)展策略:(1)基于UML profile的擴(kuò)展,同時又可通過MOF擴(kuò)展引入新的元模型的方法;(2)在 UML模型中引入構(gòu)造型 aspect;(3)不需要擴(kuò)展UML,利用狀態(tài)圖和類圖為不同的關(guān)注點進(jìn)行建模。但這些方法均不完善且存在較多的缺點[8]。

        以模型為中心的軟件開發(fā)新方法MDA有其獨特的絕對優(yōu)勢,面向方面技術(shù)可以對MDA進(jìn)行補充,以解決MDA難以處理的橫切關(guān)注點的問題。將面向方面的MDA用于復(fù)雜軟件系統(tǒng)的開發(fā)可以大大提高軟件的可重用性和可維護(hù)性,降低開發(fā)成本。將這兩種重要的軟件開發(fā)方法結(jié)合起來有望成為未來軟件開發(fā)的發(fā)展趨勢。但是如何將兩者很好地結(jié)合起來還有許多問題需要進(jìn)一步深入研究和解決。

        參考文獻(xiàn)

        [1]劉敬勇,張立臣,陳成.基于面向方面 MDA的軟件開發(fā)方法[J].計算機(jī)工程與設(shè)計,2009,30(17):4077-4080.

        [2]FUENTES L,SANCHEZ P.A generic MOF metamodel for aspect-oriented modeling[C].Proceedings of the Fourth Workshop on Model-Based Development of Computer-Based Systems and Third International Workshop on Model-Based Methodologies for Pervasive and Embedded Software(MBD/MOMPES’06),Potsdam,IEEE Computer Society,2006:113-124.

        [3]郭東亮,張立臣.基于擴(kuò)展UML的面向方面的建模 [J].計算機(jī)工程,2006,32(19):100-102.

        [4]吳剛,郝克剛,葛瑋.基于 UML的面向方面建模研究[J].計算機(jī)應(yīng)用與軟件,2007,24(11):95-97.

        [5]ALDAWUD O,ELRAD T,BADER A.Uml profile for aspect oriented software development[C].In Proc.of 3rd Int.Workshop on AOM,AOSD 2003,Boston,USA,2003(3).

        [6]STEIN D,HANENBERG S,UNLAND R.A UML-based aspect-oriented design notation for AspectJ[C].In Proc.of AOSD’02,Enschede,The Netherlands,2002(4):106-112.

        [7]STEIN D,HANENBERG S,UNLAND R.Designing aspectoriented crosscutting in UML[C].In Proceedings of the AOM with UML workshop at AOSD 2002.

        [8]YAN H,KNIESEL G,CREMERS A.A metamodel and modeling notation for AspectJ[C].In Proceedings of the AOM workshop at AOSD 2004.

        猜你喜歡
        連接點切入點語義
        基于A3航攝儀的小基高比影像連接點精提取技術(shù)研究
        語言與語義
        基于彈性厚粘膠層的結(jié)構(gòu)性連接點響應(yīng)建模和預(yù)測
        汽車文摘(2016年6期)2016-12-07 00:23:38
        慢病防控是深化醫(yī)改的切入點
        “上”與“下”語義的不對稱性及其認(rèn)知闡釋
        找準(zhǔn)切入點 扎實推進(jìn)改革
        新聞記者踐行“走轉(zhuǎn)改”的三個切入點
        新聞傳播(2015年15期)2015-07-18 11:03:44
        基于相關(guān)性篩選原理的公共連接點諧波畸變量的分層量化
        電測與儀表(2015年3期)2015-04-09 11:37:22
        顏學(xué)海:把握投資創(chuàng)新與模式創(chuàng)新的連接點
        “見怪要怪”:輿論監(jiān)督報道的切入點
        新聞前哨(2015年2期)2015-03-11 19:29:24
        日韩av在线不卡一区二区 | 国产美女遭强高潮网站| 日韩国产有码在线观看视频| 免费蜜桃视频在线观看| 特黄 做受又硬又粗又大视频| 大肉大捧一进一出好爽视色大师| 精品人妻无码中文字幕在线| 亚洲一区二区在线视频,| 国产精品亚洲av无人区一区香蕉| 大桥未久亚洲无av码在线| 男人的天堂在线无码视频| 午夜在线观看一区二区三区四区| 桃红色精品国产亚洲av| 国产精品爽黄69天堂a| 亚洲αⅴ无码乱码在线观看性色 | 99久久精品一区二区三区蜜臀 | 国产午夜精品一区二区三区软件| 国产精品亚洲专区在线播放| 蜜桃码一区二区三区在线观看| 人人妻人人添人人爽欧美一区| 无码人妻丰满熟妇片毛片| 国产激情一区二区三区成人免费| 人妻少妇偷人精品一区二区三区 | 天堂中文а√在线| 美女大量吞精在线观看456| 久久精品国产亚洲AⅤ无码剧情| 精品综合久久88少妇激情| 天天躁夜夜躁狠狠躁2021| 老熟妇仑乱一区二区视頻| 亚洲素人av在线观看| 亚洲av福利天堂一区二区三| 久久综合九色综合网站| 99综合精品久久| 最新在线观看免费的a站国产| 国产熟女内射oooo| 久久av无码精品一区二区三区| 国产视频在线播放亚洲| 亚洲精品一区久久久久一品av | 少妇深夜吞精一区二区| 亚洲av永久无码精品漫画| 又大又粗弄得我出好多水|