论文部分内容阅读
AOP技术发展至今已经有了不少年头了,但是在工业界的普及程度还远远达不到Struts,Hibernate和Spring等一些在近年来才出现的开发框架,究其原因其一是因为AOP的准入技术比较高,没有经过专门的培训,开发人员很难准确无误的掌握这一技术;其次,是因为现在比较成熟的AOP技术全部都是集中在软件的开发阶段,在这个阶段如果只有开发人员单独的引入一种全新的技术,项目的风险就比较高,而且代码与文档以及先前的设计就会不符合,由此,程序员就没有引入新技术的意识,而只是一味的根据文档或者是分析设计的模型来进行自己的开发工作。因此,本论文的目的就是在软件生命周期的分析和设计阶段就融入AOP的模型元素,即把AOP的元素融入到分析模型与设计模型之中去,而且还可以在以后的编码开发流程中十分自然的引入AOP技术。通过这种方式,只在编码阶段引入AOP技术而出现致命错误的概率就被大大地缩小了,开发人员也无须经过专门的培训就可以在工作中使用AOP技术。目前,比较国内外比较流行的AOP建模方法主要通过对广泛使用的UML进行扩展或者图形转换的方式,前者虽然比较直观,但是要求设计人员掌握AOP的相关技术才能使用这种方法建模;后者可以让设计人员淡化对AOP的技术概念,但是却容易造成图像纠缠(即相同的模型元素在整个模型中反复地出现,不便于检查模型的正确性。此外,上述两个AOP建模方法还有一个共同的缺点,那就是从AO模型导出AO代码相对困难,即使能够导出,也只能导出一种AOP实现的代码,想要具备导出多种AOP实现的代码的能力比较困难,这是由于这两种方法对于AO设计基本信息的表示或处理不当所造成的。因此,本论文首先对AspectJ,JAsCo,AspectWerkz这三种AOP实现技术进行了比较,归纳了它们之间的共同信息,之所以选择这三种实现技术,是因为AspectJ可以代表比较成熟的AOP技术,JAsCo可以代表基于组件的AOP技术,而AspectWerkz则可以代表基于POJO的AOP技术,它们涵括了大多种类的AOP实现方式,具有典型性,随后本文提出了连接器的概念,将连接器作为一种新的建模元素,用来连接软件模型的核心关注点部分和横切关注点部分,并将其添加到传统的面向对象软件模型中,并且将归纳的不同AOP实现技术中的共同信息存储到连接器中,AO实现代码框架的生成就可以围绕连接器来加以实现,以此形成一种新的面向方面建模方法以弥补上述两种建模方法的不足。至于多种AOP实现技术中的异同点,则可以作为建模方法在导出AO实现代码框架时的特殊情况加以处理。这种建模方法在实现以上两种方法的优点的同时,避免了这两种方法带来的种种弊端,同时对产生AO实现代码框架提供比较好的支持。通过淡化AOP相关概念,降低了AOP技术的准入门槛,通过从设计模型与分析模型中,生成AO实现代码框架,以指导开发人员顺利地完成编程工作,降低了引入AOP的技术风险。