999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于UML擴展的面向方面建模

2008-12-31 00:00:00葛君偉
計算機應用研究 2008年10期

收稿日期:2008-01-03;修回日期:2008-03-10

基金項目:重慶市自然科學基金資助項目(2005BB2059)

作者簡介:葛君偉(1961-),男,教授,碩導,博士,主要研究方向為軟件工程;何勇(1980-),男,碩士研究生,主要研究方向為面向方面軟件開發(hugh612@sina.com)*

(重慶郵電大學GIS研究所,重慶400065)

摘 要:面向方面編程(AOP)把橫切關注點從系統中分離,解決了面向對象編程(OOP)中代碼糾纏、散射的問題。但在面向方面建模中,橫切方面沒有得到很好的支持。首先,在統一建模語言(UML)元模型的基礎上利用類圖建立了整體框架模型,設計了核心類、方面、橫切元素及其之間的關系;其次,利用UML擴展機制為切點、通知、方面等主要元素建立了新的模型,設計了它們與方面之間新的關聯關系并為其定義了語義。通過UML擴展,使得UML能夠直接表達面向方面概念,支持面向方面建模設計,實現了面向方面模型的可視化和可辨別性;整體框架模型使得面向方面整體結構清晰,各個核心元素之間關系明確,為面向方面建模提供了一個整體設計平臺,提高了面向方面軟件設計的模塊化,增強了代碼的重用性和系統的可維護性。

關鍵詞:面向方面; 統一建模語言; 元模型; 面向方面建模; Profile

中圖分類號:TP311

文獻標志碼:A

文章編號:1001-3695(2008)10-3012-03

Modeling of aspect-oriented based on extending UML

GE Jun-wei,HE Yong

(GIS Research Center,Chongqing University of Posts Telecommunications, Chongqing 400065, China)

Abstract:The aspect-oriented programming(AOP) separated crosscutting from system,solved tangling and scattering of code in object-oriented programming(OOP). But in aspect-oriented modeling, the crosscutting could not be supported. The paper made use of class diagram to set up a whole backbone model based on the unified modeling language (UML) mete-model, designed the relationship of core class, aspect and other crosscutting elements; then made use of profile of UML to set up a new model for pointcuts, advice, aspect, and designed the new relationships of them with aspect, and defined the new semantic. Through the profile of UML, UML can express the concept and model of aspect-oriented, realize the model visibility and distinguishability; the whole backbone model makes the whole structure of aspect-oriented become legible, relationship of core ele-ments become definite, and supplies a whole design platform of aspect-oriented, improves the modularization of software design, code reusable and maintainable.

Key words:aspect-oriented; UML; meta-model; aspect-oriented modeling; Profile

0 引言

面向方面軟件開發(AOSD)是在面向對象思想上提出的,它是一種基于關注點分離的新技術。根據系統的需要和關注點的不同特征分為兩種:第一種是核心關注點(core concern),即軟件所要實現的主要功能和目標;第二種是橫切關注點(crosscutting concern),即交錯混亂分散在系統各個模塊中的與核心關注點有橫切作用的關注點。而面向方面的核心思想就是將核心關注點與橫切關注點有效結合,實現最終系統。

AOSD與其他程序設計思想一樣,也需要對系統進行建模設計。目前,基于UML擴展機制的面向方面建模已經成為研究的熱點,許多新的觀點和方法不斷提出。有些是對切點或連接點進行建模;有些是對特定語言(如AspectJ等)進行建模;有些是對面向方面的結構和行為進行建模;有些是對織入機制的研究等。本文在文獻[1]的模型的基礎上作了進一步的改進,設計了一種新的整體框架模型,并利用UML的擴展機制為面向方面元素建立了新的模型和關聯關系,定義了新的語義。

1 面向方面簡介

面向方面是為了解決在面向對象過程中,由于代碼混亂分散在各個不同的模塊中而導致系統維護和擴展等方面所帶來的一系列問題。其核心思想是將那些每個模塊都要用到的關注點作為橫切關注點單獨抽取出來,然后再和實現系統功能的核心關注點通過織入(weaving)機制,將它們組合在一起來共同實現系統的總體功能。

在AOSD中,主要有以下幾個核心概念:

a)連接點 (join point)。AOSD中最基本的元素,表示程序控制流中的某些點,如最常見的函數調用、異常處理等。

b)切點 (pointcut)。連接點的集合,通過切點指示器明確定義需要收集的連接點和有關的參數值,它是聯系方面與核心類的橋梁。

c)通知 (advice)。類似函數的一種結構,定義了被切點收集的連接點處執行的代碼,即橫切關注點的功能定義。

d)方面 (aspect)。橫切關注點的實現單元,類似于面向對象中的類,是對以上幾種元素的封裝,可用于重用和繼承。

e)引入(introduction)。提供修改基類的特性,可以插入類成員(字段、方法、接口和構造器等)和關系(范化、實現等)到基類[2]。

文獻[2]給出了advice、join point、pointcut關系,如圖1所示。AOSD采用一種松散耦合的方式來實現獨立的關注點,然后再將這些已經實現好的模塊重新組合起來,實現最終的系統。其實現過程如圖2所示。

從圖2中可以看到AOSD的開發過程主要分為以下三個步驟[3]:

a)方面分解。分解用戶需求,提取出一般關注點和橫切關注點,即將一個系統的核心關注點和橫切關注點分離開來。

b)關注點實現。對于一般關注點,采用面向對象技術來實現;而對于橫切關注點,采用面向方面技術來實現。

c)方面重新組合。方面編排器通過創建的方面來指定重組規則,該規則規定AOSD實現的方面如何與面向對象實現的基礎代碼結合來構建最終系統,這個重組過程被稱為織入。

2 UML擴展機制

21 UML簡介

UML是一個通用的可視化建模語言,用于對軟件進行描述、可視化處理、構造和建立軟件系統制品的文檔。它記錄了對必須構造的系統的決定和理解,適用于各種軟件開發方法、軟件生命周期的各個階段、各種應用領域以及各種開發工具。UML包括概念的語義、表示法和說明,提供了靜態、動態、系統環境及組織結構的模型,是一種總結了以往建模技術的經驗并吸收當今優秀成果的標準建模方法。

22 基于UML進行面向方面建模主要出于以下幾點考慮

a)UML是一種工業標準的建模語言,被軟件工程領域應用于對軟件系統的制品進行確定、可視化、構造和建立文檔;

b)UML是一種普遍適用的建模語言,可應用于廣泛的領域,包括了一組豐富的建模技術用于系統的分析和設計;

c) UML是一種可擴展的建模語言,方便應用于具體領域的建模,它包含有一組內建的擴展機制來針對特定的領域和過程或定制UML。

23 UML元模型體系結構

UML由圖和元模型組成。元模型定義UML對象模型的語義,圖表達對象的結構和行為。UML元模型的概念框架體系結構如圖3所示。

1)用戶對象層(user object layer) 該層是對實際運行中的對象的抽象,由用戶希望能夠描述的信息組成,這些信息典型的就是指數據。

2)用戶模型層(user model layer) 該層是對UML建模者開發的UML模型的抽象,它包括問題的模型、解決方案以及系統行為等。

3)元模型層(meta model layer) 該層是對UML中元模型定義所在的層。這一層的概念被建模者所使用。同時,它包括了從面向對象到面向組件等軟件編程方法學相關的概念,這也是構建UML的基礎。一般在這一層擴展UML來定義某些領域的UML建模框架。

4)元元模型層(meta-meta model layer) 該層處在最底層,并且它也是其自身的一個實體,包含了UML所依賴的大多數最基本的元素,該層同時定義了用于元模型的語言。

24 UML擴展機制

2.4.1UML擴展方法

目前UML擴展有兩種方法[4]: a)基于MOF(meta object facility)來進行擴展的方法,允許對一個元模型進行處理,包括增加和刪除元類等,使得UML在原有的建模能力基礎上增加了新的建模能力。但是這樣不僅會給標準化帶來困難,還會導致UML語言復雜性和表達復雜性的增加,而且在符號表達上也會出現與現有的標準不一致。b)不允許對一個已有的元模型進行修改,而是通過為模型元素添加一些構造型、標簽值和約束來擴展UML的建模能力。這種方法不會改變現有的語法和語義,也得到了相關標準工具的支持,且易于理解。所以一般采用這種方法進行面向方面建模。

2.4.2 UML擴展機制

在實際的應用中,UML提供了以下三種擴展機制[5]:

a)構造型(stereotype)。這種機制是基于一個已存在的模型元素定義一種新的模型元素。構造型一般用雙尖括號“<< >>”中的字符串標志。在定義一個構造型時需要給出:應該基于哪一個元素來定義用戶自定義構造型,需要為構造型增加或精練哪些新的語義。

b)標記值(tagged value)。它是對一個特性的顯式定義,是一種用于指定模型元素性質的機制。由一個標記字符串和一個值字符串組成,可以連接到任何元素上,可以給一個元素增加一些新的語義。

c)約束(constraint)。它是指作用于一個或多個元素之上的語義條件或限制,是用大括弧內的字符串表達式來表示的。在定義一個約束時,應該給出該用戶自定義約束將應用于哪一種元素以及對相關元素的語義影響力。

3基于UML擴展的面向方面建模

31 AOSD整體結構模型設計

在文獻[1]中,提出了一種AOSD整體結構模型。本文在該模型的基礎上構造出圖4所示的模型。這個模型主要由核心類元(coreClassifier)、核心類(coreClass)、方面、橫切特性(crosscuttingFeature)、橫切接口(crosscuttingInterface)和橫切關注(corsscuttingConcern)等模塊組成。

核心類:一個系統所要實現的主要功能模塊,通過織入機制與一個或多個橫切元素相結合之后,最終構成完整的系統。

方面:面向方面中的一個邏輯單元,實現了一些諸如連接點、切點、通知等橫切元素的封裝。通過橫切關系和核心類相結合實現系統功能。

橫切特性:是一個模型化元素,描述了一個或多個被結合的基本元素的特性。每個橫切特性都具有能夠定義擴展類型的屬性和定義橫切類型的屬性。

橫切接口:在方面的角度下,建模了一組主要表示橫切對象的表示方法。橫切接口從整體對象中分離出和方面相關的對象。只要來自于不同類的實例可以提供被方面的橫切接口擴展的操作,那么它們就能夠被相同的方面所擴展。

橫切關注:由各個關注方面、橫切接口及橫切特性組成。一個系統可以有多個橫切關注。橫切關注通過方面、橫切接口及橫切特性與核心類相關聯。一個橫切關注可以與系統中的多個類相關聯。

32 擴展UML對面向方面的支持

3. 2.1 包圖的擴展

包(package)是UML中的一種分組機制。它能夠將諸如用例或者是類等模型元件組織為組。在UML的擴展機制中,包的結構可以像它在UML中被定義的一樣去使用。包提供了層次的命名空間,在這個空間中可以定義組件。在擴展機制中,包的定義擴展了類元中的包的定義,以保證每一個元素都是惟一的。AOSD框架的包結構如圖5所示。

3. 2. 2 對方面的支持

在面向方面中,AOSD通常需要模塊化方面并且使用織入機制,將方面織入到核心功能模塊中。其中,核心類可以用標準的UML去建模;而方面及其之間的關聯、擴展機制將會擴展這些模型元素去支持這樣一種模塊化和組成機制。UML的擴展機制應該能夠表達方面、核心類、方面與核心類之間的關聯以及方面之間與核心類之間的關聯,并且能夠描述這些元素的結構和行為。根據方面的特性,本文基于UML中的class模型元素擴展<>構造型表示方面,以保證aspect具有與類實例相同的行為方式,如圖6所示。

在AOSD建模時,為了能將核心類與方面聯系起來,需要利用UML的擴展機制去構造關系元模型。但是,具體需要構造什么類型的關聯關系,主要還是依賴于方面在不同的系統中所實現的具體功能而定。比如:異步方面的功能主要是控制核心類,那么就可以基于UML中的association模型元素擴展<>構造型來表示它們之間的關系;而在某些系統中,方面的主要作用是用來橫切核心類的,所以又可以借助UML中的association模型元素擴展<>構造型來表示它們之間的關系,如圖7所示。

如果當兩個方面同時作用于同一個核心類時,此時還需要分析兩個方面之間的優先級關系。本文可以用UML提供的association元模型元素擴展<>構造型來表示兩個方面之間的優先級關系,箭頭由高優先級的方面指向低優先級的方面。

圖7表示了方面與核心類之間的一種關系以及當兩個方面同時作用于同一個核心類時兩個方面之間的優先級關系。

3. 2. 3 對通知的支持

通知表示了在連接點處將要執行的橫切機制,類似于面向對象中函數的形式存在。由于通知與UML中的模型元素operation十分相似,筆者用它來擴展構造型<>來表示通知。然而,advice和operation又有語義上的不同。其中一個最重要的不同就是在于通知沒有惟一的標志符,這將會導致操作上的混亂。所以,為了避免這個問題,在通知聲明時,要給它人為地加上一個標志符adv_id[i]以示區別。

通知模型由通知的聲明、參數、切入點名字三個部分組成。通知的聲明也就是標志符的說明;參數說明了通知的類型。通知的模型如圖8所示。

一個方面可以包含零個、一個或者是多個通知;而一個通知可以屬于一個或者多個方面。通知是方面的一個組成部分,所以筆者可以使用聚合關系去關聯它們。通知與方面之間的關系可以用UML中的元模型元素association來擴展構造型<>表示。通知與方面之間的關系如圖9所示。

3. 2. 4 對切點的支持

切點是連接點的集合,這些連接點通過邏輯運算符(、||、!等)組合起來形成切點。切點定義了通知代碼在何處與核心類方法進行關聯,用戶可以通過輸入切入點信息來決定方面中的哪個通知將被執行。在AOSD中,可以通過UML提供的operation擴展構造型<>來表示切點。切點的模型如圖10所示。

一個方面可能包含零個或多個切點,所以本文擴展構造型<>表示其之間的關系,如圖11所示。

4 結束語

面向方面技術是一種正在處于發展的、新興的軟件開發技術,通過核心關注點與橫切關注點的結合來實現最終系統。該技術在面向方面建模階段正處于研究、探討中,沒有統一的標準、方法和工具來進行建模設計。目前,雖然有一些研究者在用UML的擴展來進行面向方面建模的研究,

也設計了一些模型,但還都不是很完善、完整。本文結合了現有的研究方法和模型,進行了擴充和補充,提出了一種面向方面整體結構模型;同時為面向方面各個核心概念進行了新的模型建立,詳細地設計了方面與其他各個元素之間的關聯關系,并為其定義了新的語義。通過UML擴展,使得UML能夠直接表達面向方面概念和支持面向方面建模設計,實現了面向方面模型的可視化和可辨別性;同時,整體框架直觀地表示了面向方面的整體結構與各個橫切元素之間的關系,為面向方面軟件建模提供了一個整體設計平臺。現在AOSD的建模還處于研究發展階段,許多問題亟待解決和探討,比如:a)如何進一步與UML相結合設計出統一的面向方面模型;b)如何利用CASE工具對該方法進行驗證;c)總結現有的面向方面建模方法和現狀,強調面向方面建模的重要性等。隨著新語言的發展和語義、語法結構的不斷提出,本模型和方法還需要加以不斷擴充和改進。想要將面向方面技術做到更加成熟和完善,成為主流,還去做大量的研究工作。

參考文獻:

[1]CHAVEZ C,LAUCENA C. A metamodel for aspect-oriented modeling[C]//Proc of the 1st Conf on Aspect-Oriented Software Development.Netherlands: [s.n.],2002.

[2]劉瑞成,張立臣.基于UML的面向方面建模方法[J].計算機科學,2005,32(10):204-209.

[3]魏巍,徐全生.面向方面的軟件開發方式[J].沈陽工程學院學報:自然科學版,2005,1(1):76-78.

[4]ERIKSSON H E, PENKER M, LYONS B,et al. UML2.0工具箱[M].余安萍,俞俊平,譯.北京:電子工業出版社, 2004:258-297.

[5]楊敬中,張廣泉.基于UML2.0的面向方面建模方法研究[J].江蘇大學學報,2007,27(1):21-26.

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

[7]吳剛.基于UML的面向方面建模研究與實現[D].西安:西北大學,2006.

[8]楊敬中,張廣泉.UML2.0類圖的一種形式化描述方法[J].計算機科學,2007,34(2):277-279,288.

[9]ALDAWUD O, ELARD T, BADER A. A UML profile for aspect oriented modeling[C]//Proc of OOPSLA 2001 Workshop on Aspect-Oriented Programming. 2001.

[10]HAN Y, KIESEL G, CREMERS A B.Towards visual AspectJ by a meta model and modeling notation[C]//Proc of Aspect-Oriented Modeling Workshop. 2005.

[11]FUENTES L, ANCHEZ P S. Elaborating UML 2.0 profiles for AO design[DB/OL].(2006).http://dawis2.icb.uni-due.de/events/AOM_AOSD2006/paper.shtlm.

[12]ZAKARIA A A,HOSNY H,ZEID A.A UML extension for modeling aspect-oriented systems[C]//Proc of Workshop on Aspect-Oriented Modeling with UML.

主站蜘蛛池模板: 天堂久久久久久中文字幕| 免费一级毛片在线播放傲雪网| 国产老女人精品免费视频| 国产91无码福利在线| 久久9966精品国产免费| 欧美精品在线免费| 人人爽人人爽人人片| 99在线国产| 99久久成人国产精品免费| 色综合中文| 国产欧美亚洲精品第3页在线| 国产成人综合久久精品尤物| 露脸真实国语乱在线观看| www.日韩三级| 青青热久麻豆精品视频在线观看| 国产在线高清一级毛片| 大学生久久香蕉国产线观看| 97国产精品视频自在拍| 91小视频在线观看免费版高清| 国产精品分类视频分类一区| 国产人碰人摸人爱免费视频| 亚洲欧美自拍一区| 日韩欧美国产三级| 亚洲中文字幕av无码区| 自拍亚洲欧美精品| 97久久免费视频| 乱码国产乱码精品精在线播放| 久久伊人操| 伊人蕉久影院| 亚洲Va中文字幕久久一区| 欧美日韩综合网| 午夜精品久久久久久久无码软件| 国产毛片网站| 在线观看国产精品一区| 国产一级在线观看www色| 91探花在线观看国产最新| 国产伦精品一区二区三区视频优播 | 亚洲一区色| 亚洲日本中文字幕乱码中文| 国产成人一二三| 国产精品色婷婷在线观看| www.99精品视频在线播放| 欧美成人在线免费| 日韩无码精品人妻| 国产凹凸视频在线观看| 一本视频精品中文字幕| 久久久久久久久久国产精品| 成人午夜福利视频| 亚洲精品成人片在线观看| 亚洲免费毛片| 亚洲美女高潮久久久久久久| 久久综合丝袜日本网| 午夜国产精品视频| 亚洲无码A视频在线| 在线精品视频成人网| a毛片免费观看| 日韩天堂在线观看| 成人久久精品一区二区三区| 伊人91在线| 四虎影视无码永久免费观看| 国产成人综合亚洲欧美在| 久久77777| 欧美全免费aaaaaa特黄在线| 波多野结衣久久高清免费| 亚洲av无码片一区二区三区| 萌白酱国产一区二区| 久久久四虎成人永久免费网站| 久久国产亚洲偷自| 亚洲二区视频| 国产va在线观看免费| 亚洲欧洲一区二区三区| 欧美国产综合视频| 国产自在线拍| 热99精品视频| 欧美精品v| 国产福利大秀91| 亚洲欧美激情小说另类| 日韩久久精品无码aV| 天堂成人在线| 99精品在线视频观看| 国产精品无码久久久久AV| 亚洲免费毛片|