国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向方面的UML建模方法及應用

2010-09-11 09:54:28
紅河學院學報 2010年4期
關鍵詞:類圖關注點代碼

余 強

(安徽水利水電職業(yè)技術學院,安徽合肥231603)

面向方面的UML建模方法及應用

余 強

(安徽水利水電職業(yè)技術學院,安徽合肥231603)

面向方面編程(Aspect-Oriented Programming,AOP)提供了一種描述和實現(xiàn)橫切關注點的機制。分析面向方面軟件設計原則與方法步驟后,利用統(tǒng)一建模語言(UML)對系統(tǒng)建模橫切的關注點實現(xiàn)了分離和織入。最后通過一個實例來驗證了這種方法能增強軟件的模塊性與重用性。

面向方面編程;面向方面建模;UML;網(wǎng)上書店

面向方面編程(AOP)[1]是1997年由施樂公司帕洛阿爾托研究中心開發(fā)的一種新的編程范型,它提供了一種明確捕獲和模塊化橫切關注點的機制,有效解決了由于橫切屬性引起的代碼分散和代碼混亂等問題。AOP大都用在程序級和執(zhí)行級實現(xiàn)橫切關注點的模塊化,AOP技術提供了一種在編程階段實現(xiàn)關注點分離的有效有段。

AOP是一種新的編程范型,尚未提供正式的建模技術和建模工具,研究人員僅僅在建模語言、建模工具、建模方法以及建模思想等方面對其進行了研究。而統(tǒng)一建模語言(UML)可以描述軟件開發(fā)中從需求分析直到實現(xiàn)和測試的全過程。AOP思想引入到軟件開發(fā)的需求分析階段實現(xiàn)模塊化橫切關注點的分離,并用UML的實現(xiàn)面向方面的系統(tǒng)類圖和狀態(tài)圖,并對方面進行織入,完成系統(tǒng)建模的整個過程。

1 面向方面編程技術

1.1 面向方面編程的定義

面向方面編程(AOP),是一種基于關注分離的新技術,是建立在已有的如面向對象編程(OOP)和面向過程的程序設計方法之上的,AOP是對OOP的繼承和發(fā)展,AOP增加了一些概念和結構用來模塊化橫切關注點,并能夠自動將橫切關注點植入到面向對象的軟件系統(tǒng)中[2]。

在AOP中增加方面(Aspect)來封裝橫切關注點,目的就是清晰地分離關注點,解決代碼混亂和分散的問題。面向方面的軟件開發(fā)采用先進的技術來分離關注點,并強調分離和組合關注點。其目標是通過使系統(tǒng)的功能需求、非功能需求、平臺特性等諸多不同的關注點相互獨立,實現(xiàn)更好的模塊化,構建易于理解、易于擴展、高復用性、高質量的軟件系統(tǒng)。

1.2 面向方面編程中核心概念

面向方面編程的核心概念有:

1.方面(Aspect):所謂的Aspect,從抽象意義上講,是對系統(tǒng)組件的性能和語法產(chǎn)生一定的影響的一些屬性[3];從設計上講,是橫切系統(tǒng)的一些軟件系統(tǒng)關注點;從實現(xiàn)上講,Aspect是一種程序結構單元,它支持將橫切系統(tǒng)的關注點封裝到單獨的模塊單位中[4],典型的Aspect應用情況如系統(tǒng)異常和出錯處理、同步和并發(fā)控制、內(nèi)存訪問模式以及特定于應用的程序關注點等。

2.連接點(joinpoint):是代碼中激活advice被執(zhí)行的觸發(fā)點,是在程序執(zhí)行過程中明確定義的某個執(zhí)行點,在這些點中執(zhí)行Aspect的代碼。

3.切點(pointcut):是捕捉連接點的結構,用來指明所需連接的程序結構,是advice的激發(fā)條件,同時還為連接點上執(zhí)行的通知提供上下文環(huán)境。

4.通知(advice):定義了方面的實現(xiàn),比如日志寫入的實際代碼,或者是安全檢查的實際代碼。也就是說,通知是指在定義好的切入點處,所要執(zhí)行的程序代碼。通知包含自身的一組規(guī)則,這組規(guī)則規(guī)定了何時調用通知,這是與被觸發(fā)的連接點相關的。通知分為“before”、“after”等[5]。

5.織入(wave):以自動化的方式把方面代碼組織到業(yè)務核心代碼的相關類中,形成最后完整的程序的過程稱為織入。

2 面向方面軟件設計

2.1 面向方面軟件設計原則

面向方面軟件設計遵循的原則有:

1.方面(Aspect)描述模塊應具有通用性;

2.方面(Aspect)描述模塊應與現(xiàn)行程序模塊具有兼容性;

3.方面(Aspect)描述模塊應具有可擴展性。

2.2 面向方面編程開發(fā)步驟

AOP采用一種松散耦合的方式來實現(xiàn)獨立的關注點,然后再組合這些實現(xiàn),建立最終的系統(tǒng)。采用AOP所建立的系統(tǒng)是由松散耦合的、模塊化實現(xiàn)的橫切關注點來搭建的,基于AOP的軟件開發(fā)方式包括3個清晰的步驟[6],如圖1所示:

圖1 面向方面開發(fā)步驟

1.Aspect分解:分解需求提取出一般關注點和橫切關注點,即將一個系統(tǒng)的核心模塊關注點和橫切關注點分離開來。

2.關注點實現(xiàn):對于核心關注點,采用面向對象技術來實現(xiàn);而對于橫切關注點,將采用AOP技術。

3.Aspect重新組合:Aspect織入器通過創(chuàng)建的Aspect來指定重組的規(guī)則,該規(guī)則規(guī)定了實現(xiàn)的Aspect如何與OOP實現(xiàn)基礎。

2.3 面向方面的UML建模方法

面向方面建模的目的是用圖形方式顯示出包括方面的整體結構,并且具有詳細的語義定義說明。面向方面建模方法分兩個階段完成,首先需將方面抽取出來進行單獨的分析與設計,然后按照織入規(guī)則將方面織入到原型中并與其它模塊組件緊密結合[7]。

對于關注點的分離,在UML中,可將方面定義為一個方面類,用{Aspect}表示。{Aspect}中由方面名與操作組成,其中操作必須包含切入操作:{pointcut} pointcut(),{advice}advice(),也可包含其他功能操作,如讀、寫等。方面類是擴充的方面UML中的類,是UML的事物構造模塊中結構事物的一個基本元素,建模時方面類的使用方法與基本類相似。

織入階段的主要任務是分析關注點與方面的特性,識別出合適的切入點,然后在根據(jù)織入規(guī)則通知機制將方面切入到原模型中。在用例圖中,方面可以作為用例圖中的一個擴展用例加入織入其中,擴展點不是被真正插入到基礎用例的事件流中,而是被添加到事件流頂部的外罩。擴展的方面用例也可以有前置條件和后置條件。必須滿足前置條件,否則不執(zhí)行橫切操作,后置條件在方面執(zhí)行后約束系統(tǒng)的狀態(tài)。切入點相當于方面中的聯(lián)結點。

方面的織入是UML的事物構造中行為構造的一個基本元素,表示在特定上下文中方面類與基本類或方面類之間,為達到某一目的而進行的一系列消息交換而組成的動作。這些動作是動態(tài)進行的,表示模型隨時間環(huán)境等條件的改變不斷變化,從而實現(xiàn)了動態(tài)建模,提高了系統(tǒng)在設計階段的仿真能力并為軟件實現(xiàn)階段提供了可靠的支撐依據(jù)。

3 面向方面的UML建模實例分析

該實例是一個網(wǎng)上書店系統(tǒng),利用UML進行建模。由于書店店主要了解本書店書籍的銷售情況以及退書原因,以便書店主對銷售書籍品種的及時改進和調整。

網(wǎng)上書店系統(tǒng)中涉及有客戶類、訂單類、書店類、書籍類、倉庫類等??蛻粢私庥唵螤顟B(tài),從而了解購買活動所處的狀態(tài);書商根據(jù)客戶訂單情況,進行訂單的確認,然后根據(jù)用戶付款信息通知倉庫備貨送貨;倉庫根據(jù)訂單執(zhí)行狀態(tài),決定是送貨還是積極備貨。在訂單查詢系統(tǒng)中,客戶類、訂單類、書店類、書籍類、倉庫類中都包含跟蹤trace()操作,追蹤訂單的運行狀態(tài)。

圖2 網(wǎng)上書店面向對象的類圖

面向對象的類圖2中,在客戶類、訂單類、書店類和倉庫類中均要進行描述,出現(xiàn)大量的重復代碼,效率下降,影響程序的效率。如果要對trace()進行修改,工作量也是極大的。在這種情況下必須利用AOP技術中的方面構建來描述,對橫切關注點進行分離,經(jīng)分離后的跟蹤放到trace()操作中,并單獨寫為如下代碼形式:Public aspect trace{

……

before():execution(**.*(..))

{Trace.write();}

after():execution(**.*(..))}

Trace.free();

……

} 然后在訂單適當?shù)臅r候切入到系統(tǒng)中,這樣可以大大減少修改的工作量、另外也減少了代碼重復行、達到高復用的代碼,也便于對代碼運行效率的提高。

圖3 網(wǎng)上書店面向方面的類圖

面向方面編程中不但要把方面從系統(tǒng)中分離出來,另外也必須使用新的方法將方面重新織入系統(tǒng)。圖3網(wǎng)上書店面向方面的類圖中,將追蹤分離出來構造了一個追蹤方面,建立了一比較完整的追蹤模型來建模系統(tǒng)中的追蹤事件,從而提高了改事件的可重用性。

圖4 面向方面的系統(tǒng)活動圖

接下來是如何是將方面織入系統(tǒng)中,實現(xiàn)完整性,在如圖4面向方面的系統(tǒng)活動圖中,按照aspect (trace)描述的機制,在創(chuàng)建訂單將訂單Aspect(trace)方面織入系統(tǒng)中。當系統(tǒng)創(chuàng)建訂單時,追蹤使用寫操作記錄下訂單的一些必要信息,系統(tǒng)進行訂單核對和商品檢查后,回復客戶(接受訂單或拒絕訂單),此時追蹤也必須記錄此信息,當回復完成后,追蹤執(zhí)行free()操作。

4 結論

本文介紹了面向方面編程的原理、方法和步驟的基礎上,利用UML技術實現(xiàn)方面建模。結合網(wǎng)上書店訂單查詢系統(tǒng)實例,在面向對象的類圖基礎上,引入方面trace,構建了面向方面的網(wǎng)上書店類圖,并用系統(tǒng)活動圖反映出方面的織入機制。AOP中增加方面(Aspect)來封裝橫切關注點,達到清晰地分離關注點,解決了代碼混亂和分散的問題,實現(xiàn)更好的模塊化,構建易于理解、易于擴展、高復用性、高質量的軟件系統(tǒng)。

參考文獻:

[1]Kiczales G,Lamping J,Mendhekar A Macda G,Lapes B, Longtier J M,Ir min J.Aspect-oriented romramming,Proceeding of ECOOP’97(springer verlag,1997).

[2]周屹,郁哲.一種基于AOP和UML的用例擴展關系建模方法[J].黑龍江工程學院學報,2009,23(1):51.

[3]The Aspect J team.Aspect-Oriented Programming with AspectJ.Available at:http://aspect.org.

[4]Joseph D.Gradecki,NicholasLesiecki.面向方面的Java編程指南[M].北京:清華大學出版社,2005.

[5]黃興華,胡飛.AOP技術在面向用戶的軟件組件測試中的應用[J].計算機應用與軟件,2009,26(8):126.

[6]馬欣,楊連賀.面向方面編程技術的研究[J].儀器儀表用戶,2009,16(2):72-73.

[7]李婷,劉建勛,尹雁青.面向方面建模方法的研究及其應用[J].計算機技術與發(fā)展,2009,19(1):113-115.

[責任編輯 姜仁達]

Face aspect UML modelling method and application

YU Q iang
(Anhui Technical College ofWater ResourcesAnd Hydroelecric Power,Hefei 231603,China)

AbstractAspect-oriented programming(AOP)Provides a description and i mplementation mechanis ms for crosscutting concerns.Analysis of aspect-oriented software design principles and methods of procedure,the use ofUnifiedModelingLanguage(UML)on modeling crosscutting concerns to achieve a separation and weaving.,Finally,an example to validate thismethod enhances software modularity and reuse.

aspect-oriented programming;aspect-oriented modeling;UML;Online Bookstore

book=8,ebook=165

TP31 文獻標碼:A

1008-9128(2010)04-0059-04

2010-05-13

余強(1973-),男,安徽岳西人,講師,碩士。研究方向:信息系統(tǒng)與電子商務。

猜你喜歡
類圖關注點代碼
冬奧關注點
新體育(2022年2期)2022-02-09 07:04:32
尋找關注點 提高復習效率——以初中教學中“0”為關注點為例
甘肅教育(2020年14期)2020-09-11 07:58:44
基于語義和結構的UML類圖的檢索
下半年尿素市場四大關注點
如何分析一組數(shù)據(jù)的集中和分散——數(shù)據(jù)分析的兩個關注點
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
UML類圖元模型基于描述邏輯的表示及驗證
乐陵市| 山东省| 柞水县| 延安市| 广安市| 新建县| 文山县| 仙桃市| 博爱县| 观塘区| 泰安市| 鄂州市| 中宁县| 绩溪县| 项城市| 岱山县| 明溪县| 石狮市| 樟树市| 兴城市| 绥化市| 东台市| 镶黄旗| 科技| 奎屯市| 称多县| 陕西省| 桐柏县| 旅游| 竹山县| 祁东县| 贵德县| 慈溪市| 胶州市| 会同县| 雷山县| 安龙县| 札达县| 天祝| 兴仁县| 宁陵县|