浅议面向方面技术的开发方法和实现技术
2016-05-14田兴强
摘 要:在计算机应用领域持续扩大的背景下,对程序开发技术的要求不断增高。传统的OOP技术难以处理大量的横切关注点,使计算机的授权、异常捕捉以及日志等功能得不到更新,导致计算机出现代码复杂、难维护以及可复用性低等问题。AOP是一项新的编程技术,并能解决OOP所存在的问题。基于这一点,本文对AOP技术进行分析,从AOP编制语言以及主要元素入手,探讨AOP的主要开发方法,再结合OOP的相关特点,进一步阐述AOP的三种实现技术,并将三种实现技术进行对比,给出最佳的AOP实现形式,旨在为AOP开发人员提供参考。
关键词:OOP技术 AOP技术 横切关注点
在OOP的运用中,软件开发通常要将系统依照功能进行分解,再将具备这些功能的小单元进行开发。同时,对外提供相应的接口,将小单元进行组合,以此形成完整的系统功能。但由于系统中存在大量横切关注点,而OOP技术难以将横切关注点储存在单个模块内,导致横切关注点分散在系统中,并与功能代码相混合,从而减弱了系统模块的可维护性、可追踪性以及可利用性。AOP是在OOP基础上改造而来,并能保留OOP原有的优势。就AOP来讲,通过分离原有的方面模块,再将方面模块转入到核心类处,以此达到系统演化的目的。[1]
一、AOP的基本概述、编制语言以及主要元素
1.基本概述
AOP实质上是一种面向方面的程序设计方式,不仅能分离关注点,还能处理横断现象。
2.主要元素
通常来讲,AOP的主要元素有五种:一是方面,二是连接点,三是切入点,四是通知,五是关注点。
3.编制语言
AOP语言通常有三种形式:一是联结点,二是联结点标识,三是行为。就联结点来讲,这是一种定义较为明确的点,能提供程序描述的基本框架,也是不同代码之间相互交互的点。就联结点标识来讲,这种标识可提供具体结构来操纵程序的任何部分。就行为来讲,这是一种针对联结点所选择的行为。
二、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的实现过程有两个步骤:一是组装关注点,二是将组装结果进行转化。就组装关注点来讲,这部分较为简单。就转化组装结果来讲,这是AOP实现的重要内容。将组装结果进行转化,使原有的源码转化成新的源码,再将生成的源码通过编译器进行编译,以此生成可执行代码。例如,现将不同方面进行转化,生成新的源代码,再借助编译器将新生成的源代码进行转化,以此形成字节码。
1.实现技术
从目前来看,AOP的实现技术主要有三种:一是基于开发模式的实现技术,包括行为模式。二是基于开发语言的实现技术,包括。三是基于修改代码的实现技术,包括。
2.技术对比
就基于开发模式的实现技术来讲,这种技术是参照面向对象所具有的语言特性,从技术开发的角度入手,并借助面向对象常用的分析途径进行分析,再开发可行的设计模式使现有程序具备面向方面的基本特性,以此达到实现AOP的目的。在这类技术的运用中,需在研究AOP过程中掌握AOP的具体含义。
就基于开发语言的实现技术来讲,这种技术要求使用者重新掌握一门语言,如语言。尽管语言能够适用于Java,但由于语言的语言规则与主流语言的语言规则相差较大,难以成为AOP的通用语言。因此,这类技术容易受到语言的限制,目前还无法成为主流的实现技术。[3]
就基于修改代码的实现技术来讲,这种技术只需借助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.
作者简介:
田兴强,毕业学校:贵州大学,专业:计算机软件工程,工作单位:贵州农业职业学院,研究方向:软件工程