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

基于模板的橫切關(guān)注點(diǎn)重構(gòu)框架的研究

2008-12-31 00:00:00張婷燕
電腦知識與技術(shù) 2008年27期

摘要:編程語言中關(guān)注點(diǎn)的分離一直是被關(guān)注的焦點(diǎn),在這一研究領(lǐng)域已經(jīng)提出一些新的模塊化技術(shù),AOP即是其中之一.本文首先介紹了基于角色的橫切關(guān)注點(diǎn)重構(gòu)方法,然后在此基礎(chǔ)上提出了一種基于模板的橫切關(guān)注點(diǎn)重構(gòu)框架.

關(guān)鍵詞:橫切關(guān)注點(diǎn);面向方面重構(gòu);重構(gòu)框架

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)27-2107-02

The Research of An Aspect——Oriented Refactoring Framework Based on Template

ZHANG Ting-yan, PENG Jian

(Dalian Jiaotong University, College of Software, Dalian LiaoNing 116028, China)

Abstract:The separation of concerns in programming language has been focused on for a long time. In this research field, several new modularity technologies have been proposed, AOP is one of them.. In this article,we describe a role—based refactoring approach for the re —structuring the implementation of crosscutting concerns using aspect—oriented programming, then, we provide a template—based aspect—oriented refactoring framework.

Key words:crosscutting concerns;aspect-oriented refactoring;refactoring framework

1 引言

當(dāng)前OOP(面向?qū)ο缶幊蹋┍粡V泛應(yīng)用于軟件開發(fā)中,OOP能夠?qū)F(xiàn)實(shí)世界中的實(shí)體及其行為抽象為對象,通過類的封裝性、繼承性、多態(tài)性很好地解決了許多問題.但是“代碼混亂”與“代碼糾纏”問題仍然存在于OOP中,例如日志記錄功能,訪問權(quán)限控制功能,異常處理功能等,此類功能被稱為“橫切關(guān)注點(diǎn)”.橫切導(dǎo)致互相關(guān)聯(lián)的代碼經(jīng)常是多余的,而且很難被改變。自90年代開始,對橫切關(guān)注點(diǎn)的分離得到了很大關(guān)注。在六七年中,國外的研究組織進(jìn)行了很多研究,提出了許多解決方法。

1997年,Kiczales等人提出了面向方面編程(Aspect—Oriented Programming,AOP) [1]。在AOP中,最關(guān)鍵的是如何捕捉橫切關(guān)注點(diǎn)并將其以模塊化的方式提取出來,這需要跨越整個(gè)系統(tǒng)進(jìn)行考慮.因此,方面是用來描述跨越整個(gè)系統(tǒng)的一個(gè)屬性的一段代碼。AOP的目的是支持程序員把系統(tǒng)的組件和方面更好地分離,從而使系統(tǒng)更加模塊化.

重構(gòu)是在不改變代碼所實(shí)現(xiàn)功能的前提下,使代碼更加結(jié)構(gòu)化[2]。隨著AOP的廣泛使用,隨著對系統(tǒng)中橫切關(guān)注點(diǎn)的進(jìn)一步挖掘,如何將系統(tǒng)重構(gòu)為用AOP實(shí)現(xiàn)(即面向方面重構(gòu)[3])的這種需求會(huì)越來越廣泛,迫切需要提出一種基于模板的橫切關(guān)注點(diǎn)重構(gòu)框架。

2 基于角色的橫切關(guān)注點(diǎn)重構(gòu)

橫切關(guān)注點(diǎn)重構(gòu)。早期的研究主要集中在特定橫切關(guān)注點(diǎn)的重構(gòu)過程的研究,具體的實(shí)現(xiàn)通常需要手工進(jìn)行。最近,Hannemann和Kiczales等人在論文[4]中提出了一種基于角色的抽象化描述方式,因此也為橫切關(guān)注點(diǎn)的自動(dòng)重構(gòu)提供了一種可能。在論文[5]中Hannemann和Kiczales使用Java和AspectJ分別實(shí)現(xiàn)了GoF的23個(gè)設(shè)計(jì)模式,研究表明其中的17個(gè)模式的AspectJ實(shí)現(xiàn)顯著地提高了模塊性。

3 基于模板的橫切關(guān)注點(diǎn)重構(gòu)框架

雖然Hannemann等人提出了基于角色的橫切關(guān)注點(diǎn)重構(gòu),但這只是對橫切關(guān)注點(diǎn)重構(gòu)抽象的描述,為了將橫切關(guān)注點(diǎn)重構(gòu)進(jìn)一步具體化,我們提出了一種基于模板的橫切關(guān)注點(diǎn)重構(gòu)。

3.1 框架的基礎(chǔ)

1) 框架中必須有一個(gè)對橫切關(guān)注點(diǎn)詳述的XML文檔.從系統(tǒng)中分離出Aspect并在該XML文檔中進(jìn)行聲明.根據(jù)XML文檔中的每個(gè)Aspect聲明,建立相應(yīng)的Aspect,實(shí)現(xiàn)相應(yīng)的功能,從而實(shí)現(xiàn)通過XML文檔把Aspect映象到基本類。

2) 框架中必須有一個(gè)對編織點(diǎn)(其功能是把方面中定義的代碼以一定方式植入組件代碼中)詳述的XML文檔。

3) 框架中必須有一個(gè)對功能模塊進(jìn)行管理的XML文檔,即系統(tǒng)級的配置文件。

(4) 框架中必須有一個(gè)XML解析器,負(fù)責(zé)解釋框架的配置文件。

3.2 框架中基于模板的面向方面重構(gòu)

3.2.1對橫切關(guān)注點(diǎn)詳述的XML模板

<?xmlversion=“1.0”?>

<aspects>

<aspectname=”accessControl”>

<rolename=”administrator”>

<methodname=”…”>

</method>

</role>

<rolename=”commonUser”>

<methodname=”…”>

</method>

</role>

</aspect>

<aspect>

……

</aspect>

</aspects>

代碼段1橫切關(guān)注點(diǎn)訪問權(quán)限控制功能的描述模板

從代碼段1可以看到,橫切關(guān)注點(diǎn)中的每個(gè)抽象角色由一個(gè)<aspect>節(jié)點(diǎn)描述,每個(gè)抽象角色按照其內(nèi)部參數(shù)的不同,實(shí)現(xiàn)不同的方法.使用這種XML格式文件可以使對橫切關(guān)注點(diǎn)的描述更加結(jié)構(gòu)化.代碼段1是對橫切關(guān)注點(diǎn)訪問權(quán)限控制功能的描述模板,同理,可以將日志記錄功能,異常處理功能等橫切關(guān)注點(diǎn)加入描述模板中.

3.2.2對編織點(diǎn)詳述的XML模板

<?xmlversion=“1.0”?>

<weavers>

<weavername=”accessControlWeaver”aspect=”accessControl”target=”Login”>

</weaver>

<weaver>

</weaver>

</weavers>

代碼段2實(shí)現(xiàn)橫切關(guān)注點(diǎn)訪問權(quán)限控制功能與登錄功能模塊編織的編織點(diǎn)的描述模板

從代碼段2可以看到,編織點(diǎn)中的每個(gè)抽象角色由一個(gè)<weaver>節(jié)點(diǎn)描述,每個(gè)<weaver>節(jié)點(diǎn)將不同的aspect與target編織在一起。使用這種XML格式文件可以使編織相對透明化.代碼段2是對實(shí)現(xiàn)橫切關(guān)注點(diǎn)訪問權(quán)限控制功能與登錄功能模塊編織的編織點(diǎn)的描述模板,同理,可以將實(shí)現(xiàn)日志記錄功能,異常處理功能等橫切關(guān)注點(diǎn)與系統(tǒng)功能模塊編織的編織點(diǎn)加入描述模板中。

3.2.3橫切關(guān)注點(diǎn)與編織點(diǎn)的映射

以上我們已經(jīng)構(gòu)建了橫切關(guān)注點(diǎn)與編織點(diǎn)的XML描述模板,下一步我們要將上述模板加入到框架的配置文件中完成橫切關(guān)注點(diǎn)與編織點(diǎn)的映射。

<?xmlversion=“1.0”?>

<modules>

<modulename=”Login”>

<methods>

<methodname=”…”>

</method>

</methods>

</module>

<module>

……

</modules>

<aspects>

<aspectname=”accessControl”>

<rolename=”administrator”>

<methodname=”…”>

</method>

</role>

<rolename=”commonUser”>

<methodname=”…”>

</method>

</role>

</aspect>

<aspect>

……

</aspect>

</aspects>

<weavers>

<weavername=”accessControlWeaver”aspect=”accessControl”target=”Login”>

</weaver>

<weaver>

</weaver>

</weavers>

代碼段3 框架的配置文件

代瑪段1和代碼段2再加上對系統(tǒng)功能模塊的描述構(gòu)成了上述的代碼段3,即框架的配置文件.應(yīng)用文中提出的框架時(shí),由框架中的XML解析器解釋框架的配置文件,將將橫切關(guān)注點(diǎn)的抽象角色與系統(tǒng)相應(yīng)模塊相對應(yīng),從而實(shí)現(xiàn)了橫切關(guān)注點(diǎn)重構(gòu)。這種框架配置文件便于開發(fā)者在開發(fā)過程中動(dòng)態(tài)地添加和刪除橫切關(guān)注點(diǎn),而且使編織更加透明化。

3.3 重構(gòu)框架中橫切關(guān)注點(diǎn)與編織點(diǎn)相互映射的實(shí)現(xiàn)

在上面的橫切關(guān)注點(diǎn)與編織點(diǎn)詳述模板的基礎(chǔ)之上,借助于方面代碼映射器和編織器來完成橫切關(guān)注點(diǎn)的方面化以及將其織入功能模塊代碼中。具體實(shí)現(xiàn)如圖1所示。

4 小結(jié)

本文在基于角色的橫切關(guān)注點(diǎn)重構(gòu)的基礎(chǔ)上提出了一種基于模板的橫切關(guān)注點(diǎn)重構(gòu)框架.在對橫切關(guān)注點(diǎn)詳述的XML模板的基礎(chǔ)上加入了對編織點(diǎn)詳述的XML模板,為橫切關(guān)注點(diǎn)的重構(gòu)提供了一種可能.這僅僅是對橫切關(guān)注點(diǎn)重構(gòu)做的一部分研究,還需要在此基礎(chǔ)上更深層次的對橫切關(guān)注點(diǎn)重構(gòu)問題進(jìn)行挖掘.

參考文獻(xiàn):

[1] KICZALES G,LAMPING J,MENDHEKAR A,et a1.Aspect—Oriented Programming[C].In Proceedings of ECOOP,Springer—Verlag,F(xiàn)inland,1997.

[2] FOWLER,M.Refactoring—Improving the Design of Existing Code.Addison—Wesley,Boston,MA,2000.

[3] VAN DEURSEN A,MARIN,M,MOONEN L.Aspect Mining and Refactoring. First International Workshop on Refactoring:Achievements,Challenges,Effects(REFACE 93)[C].a(chǎn)t 10th Working Conference on Reverse Engineering(WCRE 03),Victoria,BC,Canada,2003.

[4] HANNEMANN J,MURPHY G.C,KICZALES G.Role—Based Refactoring of Crosscutting Concerns[C].In Proceedings of International Conference on Aspect—Oriented Software Development,2005.

[5] HANNEMANN J,KICZALES,G.Design Pattern Implementation in Java and AspectJ[C].In Proceedings of the 17th Annum ACM Conference on Object—Oriented Programming,Systems,Languages,and Applications (OOPSLA02).Seattle,WA,November 2002.

主站蜘蛛池模板: 婷婷六月在线| 欧美a级在线| 久久综合伊人77777| 国产乱人乱偷精品视频a人人澡| 久久精品国产精品一区二区| 91小视频在线| 全部免费毛片免费播放| 亚洲精品国产精品乱码不卞| 久久久亚洲国产美女国产盗摄| 韩国v欧美v亚洲v日本v| 久久夜色精品国产嚕嚕亚洲av| 国产免费人成视频网| av手机版在线播放| 国产色婷婷视频在线观看| 欧美一区二区三区欧美日韩亚洲| 精品一区二区三区四区五区| 国产在线八区| 国产中文在线亚洲精品官网| 六月婷婷精品视频在线观看| 暴力调教一区二区三区| 亚洲中文精品人人永久免费| 88av在线看| 国产成人喷潮在线观看| 色天堂无毒不卡| 国产精品黑色丝袜的老师| 日本午夜网站| 九九精品在线观看| 亚洲欧美不卡视频| 亚洲精品无码不卡在线播放| 国产日韩精品一区在线不卡| 欧美特级AAAAAA视频免费观看| 亚洲性一区| 在线观看精品自拍视频| a级毛片免费看| 永久天堂网Av| 欧美精品影院| 人妻丝袜无码视频| 高清免费毛片| 波多野结衣无码中文字幕在线观看一区二区 | 亚洲一区二区日韩欧美gif| 日本三级欧美三级| 亚洲精品福利网站| 免费三A级毛片视频| 国产免费久久精品44| 国产美女主播一级成人毛片| 一区二区三区四区日韩| 欧美黄网在线| 国产精品99r8在线观看| 99精品影院| 亚洲精品桃花岛av在线| 日韩欧美中文在线| 亚洲妓女综合网995久久| 99精品国产电影| 青草视频久久| 中文纯内无码H| 国产农村1级毛片| 伊大人香蕉久久网欧美| 这里只有精品在线播放| 国产成人av大片在线播放| 婷婷伊人久久| 先锋资源久久| a毛片在线| AV在线天堂进入| 黄色三级网站免费| 精品国产一区91在线| 久久婷婷综合色一区二区| 久久99精品久久久大学生| 无码中文AⅤ在线观看| 四虎亚洲精品| 538国产视频| 成人夜夜嗨| 国产精品青青| 国产一区二区视频在线| 国产本道久久一区二区三区| 免费无码网站| 成人午夜视频免费看欧美| 香港一级毛片免费看| 女人一级毛片| 亚洲精品不卡午夜精品| 中文字幕波多野不卡一区| 亚洲色图欧美视频| 色天堂无毒不卡|