摘 要:在計算機應(yīng)用領(lǐng)域持續(xù)擴大的背景下,對程序開發(fā)技術(shù)的要求不斷增高。傳統(tǒng)的OOP技術(shù)難以處理大量的橫切關(guān)注點,使計算機的授權(quán)、異常捕捉以及日志等功能得不到更新,導(dǎo)致計算機出現(xiàn)代碼復(fù)雜、難維護以及可復(fù)用性低等問題。AOP是一項新的編程技術(shù),并能解決OOP所存在的問題?;谶@一點,本文對AOP技術(shù)進行分析,從AOP編制語言以及主要元素入手,探討AOP的主要開發(fā)方法,再結(jié)合OOP的相關(guān)特點,進一步闡述AOP的三種實現(xiàn)技術(shù),并將三種實現(xiàn)技術(shù)進行對比,給出最佳的AOP實現(xiàn)形式,旨在為AOP開發(fā)人員提供參考。
關(guān)鍵詞:OOP技術(shù) AOP技術(shù) 橫切關(guān)注點
在OOP的運用中,軟件開發(fā)通常要將系統(tǒng)依照功能進行分解,再將具備這些功能的小單元進行開發(fā)。同時,對外提供相應(yīng)的接口,將小單元進行組合,以此形成完整的系統(tǒng)功能。但由于系統(tǒng)中存在大量橫切關(guān)注點,而OOP技術(shù)難以將橫切關(guān)注點儲存在單個模塊內(nèi),導(dǎo)致橫切關(guān)注點分散在系統(tǒng)中,并與功能代碼相混合,從而減弱了系統(tǒng)模塊的可維護性、可追蹤性以及可利用性。AOP是在OOP基礎(chǔ)上改造而來,并能保留OOP原有的優(yōu)勢。就AOP來講,通過分離原有的方面模塊,再將方面模塊轉(zhuǎn)入到核心類處,以此達到系統(tǒng)演化的目的。[1]
一、AOP的基本概述、編制語言以及主要元素
1.基本概述
AOP實質(zhì)上是一種面向方面的程序設(shè)計方式,不僅能分離關(guān)注點,還能處理橫斷現(xiàn)象。
2.主要元素
通常來講,AOP的主要元素有五種:一是方面,二是連接點,三是切入點,四是通知,五是關(guān)注點。
3.編制語言
AOP語言通常有三種形式:一是聯(lián)結(jié)點,二是聯(lián)結(jié)點標(biāo)識,三是行為。就聯(lián)結(jié)點來講,這是一種定義較為明確的點,能提供程序描述的基本框架,也是不同代碼之間相互交互的點。就聯(lián)結(jié)點標(biāo)識來講,這種標(biāo)識可提供具體結(jié)構(gòu)來操縱程序的任何部分。就行為來講,這是一種針對聯(lián)結(jié)點所選擇的行為。
二、AOP的主要開發(fā)方法
在開發(fā)AOP的過程中,主要選用松散耦合的結(jié)構(gòu)來提供獨立關(guān)注點,并將這些獨立關(guān)注點進行組合,以此構(gòu)成最終的AOP系統(tǒng)。通常來講,可將AOP的開發(fā)過程分為三環(huán)節(jié),依次為方面分解、實現(xiàn)關(guān)注點以及重新組合。[2]
1.方面分解
在方面分解過程中,將AOP需求分解為兩類關(guān)注點,分別是一般關(guān)注點以及橫切關(guān)注點。
2.實現(xiàn)關(guān)注點
在實現(xiàn)關(guān)注點的過程中,如果要實現(xiàn)一般關(guān)注點,可借助OOP技術(shù)就能完成;如果要實現(xiàn)橫切關(guān)注點,就需借助AOP技術(shù)來完成。
3.重新組合
在重新組合的過程中,方面集合器需重新構(gòu)建模塊單元,以此制定重組規(guī)則。
4.AOP以及OOP對比
就AOP技術(shù)以及OOP技術(shù)的差異性來講,最顯著的差異就是橫切關(guān)注點的實現(xiàn)形式。就AOP而言,在實現(xiàn)AOP過程中可保留編程范型的全部優(yōu)點。就以O(shè)OP為例,如果在開發(fā)AOP的過程中,選擇OOP作為AOP的基礎(chǔ)范型,就能將OOP的優(yōu)勢全部保留,包括一般關(guān)注點的實現(xiàn)優(yōu)勢。同時,在AOP系統(tǒng)的代碼重用性比OOP的代碼重用性更強。此外,AOP所含的方面模塊無法識別橫切關(guān)注點,AOP系統(tǒng)更容易拓展新功能,并且AOP系統(tǒng)擴展難度小于OOP系統(tǒng)。
三、AOP的主要實現(xiàn)技術(shù)
通常來講,AOP的實現(xiàn)過程有兩個步驟:一是組裝關(guān)注點,二是將組裝結(jié)果進行轉(zhuǎn)化。就組裝關(guān)注點來講,這部分較為簡單。就轉(zhuǎn)化組裝結(jié)果來講,這是AOP實現(xiàn)的重要內(nèi)容。將組裝結(jié)果進行轉(zhuǎn)化,使原有的源碼轉(zhuǎn)化成新的源碼,再將生成的源碼通過編譯器進行編譯,以此生成可執(zhí)行代碼。例如,現(xiàn)將不同方面進行轉(zhuǎn)化,生成新的源代碼,再借助編譯器將新生成的源代碼進行轉(zhuǎn)化,以此形成字節(jié)碼。
1.實現(xiàn)技術(shù)
從目前來看,AOP的實現(xiàn)技術(shù)主要有三種:一是基于開發(fā)模式的實現(xiàn)技術(shù),包括行為模式。二是基于開發(fā)語言的實現(xiàn)技術(shù),包括。三是基于修改代碼的實現(xiàn)技術(shù),包括。
2.技術(shù)對比
就基于開發(fā)模式的實現(xiàn)技術(shù)來講,這種技術(shù)是參照面向?qū)ο笏哂械恼Z言特性,從技術(shù)開發(fā)的角度入手,并借助面向?qū)ο蟪S玫姆治鐾緩竭M行分析,再開發(fā)可行的設(shè)計模式使現(xiàn)有程序具備面向方面的基本特性,以此達到實現(xiàn)AOP的目的。在這類技術(shù)的運用中,需在研究AOP過程中掌握AOP的具體含義。
就基于開發(fā)語言的實現(xiàn)技術(shù)來講,這種技術(shù)要求使用者重新掌握一門語言,如語言。盡管語言能夠適用于Java,但由于語言的語言規(guī)則與主流語言的語言規(guī)則相差較大,難以成為AOP的通用語言。因此,這類技術(shù)容易受到語言的限制,目前還無法成為主流的實現(xiàn)技術(shù)。[3]
就基于修改代碼的實現(xiàn)技術(shù)來講,這種技術(shù)只需借助AOP常用的開發(fā)框架,并在分析階段合理選擇的思想方法來確定設(shè)計系統(tǒng)。如此一來,這就能夠解決前兩種方式所存在的弊端。此外,這種方式所借助的AOP框架具有開放源碼的特性,便于開發(fā)者從源碼中獲取AOP框架常用的運行機制。
總而言之,第三種技術(shù)是實現(xiàn)AOP的最佳方式,便于開發(fā)人員從需求分析階段以及重新組合階段深入了解AOP。此外,第三種技術(shù)可借助Java常用的語言來構(gòu)建AOP框架,有助于使用人員進行
研究。
結(jié)語:
本文對AOP技術(shù)進行簡單闡述,并從開發(fā)方法以及實現(xiàn)技術(shù)兩方面入手。從開發(fā)過程來講,AOP的開發(fā)過程依次為方面分解、實現(xiàn)關(guān)注點以及重新組合;從實現(xiàn)技術(shù)來講,AOP主要依靠基于開發(fā)模式的實現(xiàn)技術(shù)、基于開發(fā)語言的實現(xiàn)技術(shù)、基于修改代碼的實現(xiàn)技術(shù)??傊?,AOP仍存在研究的基礎(chǔ)階段,并有著較多的潛在優(yōu)勢,包括面向過程技術(shù)優(yōu)勢以及面向?qū)ο蠹夹g(shù)優(yōu)勢。從目前AOP發(fā)展來看,AOP在軟件領(lǐng)域中有了一定突破,在操作系統(tǒng)以及網(wǎng)絡(luò)管理中廣泛應(yīng)用。但AOP開發(fā)人員仍需加強對AOP的研發(fā),以此增強AOP技術(shù)的穩(wěn)定性。[4]
參考文獻:
[1]鄧惠敏.基于CPS的實時系統(tǒng)的面向方面的MDA方法[D].廣東工業(yè)大學(xué),2011.
[2]孫曉星.面向方面的軟件容錯模型設(shè)計與分析技術(shù)[D].華東理工大學(xué),2012.
[3]張璇.面向方面可信軟件過程建模方法研究[D].云南大學(xué),2014.
[4]黃興硯.基于MDA的面向方面建模工具的研究[D].重慶大學(xué),2014.
[5]李冰.基于面向方面的軟件產(chǎn)品線產(chǎn)品配置生成方法研究及支持工具實現(xiàn)[D].吉林大學(xué),2013.
作者簡介:
田興強,畢業(yè)學(xué)校:貴州大學(xué),專業(yè):計算機軟件工程,工作單位:貴州農(nóng)業(yè)職業(yè)學(xué)院,研究方向:軟件工程