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