aop方法在解释领域相关模型中的应用

aop方法在解释领域相关模型中的应用

ID:26251254

大小:508.50 KB

页数:9页

时间:2018-11-25

aop方法在解释领域相关模型中的应用_第1页
aop方法在解释领域相关模型中的应用_第2页
aop方法在解释领域相关模型中的应用_第3页
aop方法在解释领域相关模型中的应用_第4页
aop方法在解释领域相关模型中的应用_第5页
资源描述:

《aop方法在解释领域相关模型中的应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AOP方法在解释领域相关模型中的应用摘要:在实时系统设计中,经常会遇到一些分散在多个功能模块中的横切关注点,如日志记录、报警和同步等。面向方面的编程(AOP,Aspect-OrientedProgramming)方法将这些关注点分别封装到单独的“方面”,来解决这个问题。模型集成计算理论(MIC)应用AOP方法从多个方面来定义系统的元模型和模型。然而,由于通常的编程语言(如C++等)缺乏直接描述“方面”的能力,所以在从系统模型到代码的映射过程中也存在相似的问题。本文提出以面向方面的领域相关代码生成方法,来实现从AOP领域模型到AOP源代码之间的无缝映射。将系统中横切关注点都分别定义为“方面”后,

2、由AOP模型解释器遍历这些方面来产生AspectC++语言的AOP源代码。本文阐述了用该方法实现的整个开发过程,同时该过程跟OMG的模型驱动框架相吻合。本文的AOP模型解释器能够集成到通用建模工具(GME,GenericModelingEnvironment)中,从而使AOP方法在系统开发中的应用方便可行。文中还给出了多个实例来描述利用解释器如何封装这些横切关注点。关键词:领域相关模型、面向领域的模型解释、通用建模环境、模型集成运算、控制软件1.引言在任何一个复杂系统的实现中,必然会存在跨越多个模块的关注点,我们称之为横切关注点。如图1所示,日志记录、异常处理以及安全保证都跟多个类相关联。在面

3、向对象的编程中,模块性的天然单位是类,横切关注点是一种跨越多个类的关注点。如果按照传统面向对象的设计方法将横切关注点硬性地划分到某个类中必然会影响系统的模块性、可读性、测试性能、维护性和可重用性。针对该问题,AOP[1]引进了方面的概念,它将影响多个类的行为封装到一个可重用“方面”中,对横切关注点进行模块化。图1跨越多个类的横切关注点示意图1.1研究目的本文描述了在系统代码生成层次引入AOP来提高关注点分离的相关研究工作,并且给出了构建从领域模型解析产生AOP应用代码的解释器的方法。总的说来,本研究工作实现了以下两点目标:a)填补了从领域相关AOP建模到领域相关AOP系统间的缺失;(图2)AO

4、PDomainApplicationAOPDomainModelApplicationAOPCodeGenerator图2填补了从领域相关AOP建模到领域相关AOP系统间的缺失a)提高了实时系统的模块化程度在实时系统中,诸如线程调度、内存管理等功能均以横切关注点的形式存在,给实时系统的设计带来困难。AOP提供了一个可能的解决方案来解决这个问题。AOP的核心是分离横切关注点,并封装横切关注点为方面(aspect),然后通过方面编织器或方面编译器(aspectweaver),自动将分离的关注点植入原代码中。简单地说,AOP方法是通过定义“方面”来实现对系统原来实现代码的一种非侵入性改写,从而实现功

5、能的动态配置。1.2相关研究1.2.1MIC理论中面向方面的建模Gray等人应用AOP方法来建立领域相关模型。[2]他们应用AOP方法来处理在从元模型生成领域相关模型的过程中所遇到的横切约束问题。总结该方案的实现步骤如下:首先,将领域相关策略集成到元模型编织框架中,生成领域相关编织器,该编织器实际上是一个新的GME模型。所有被编织器编织的约束都包含在该模型中,并能够通过其他验证工具进行重新编辑。一旦生成了某一领域的编织器,就可以通过它按照规定的方面来编织该领域内的GME模型。在这个编织过程中,那些模型中跟横切关注点相关的就是AOP中的切入点。本文的工作跟Gray的工作区别在于Gray是在领域相

6、关模型的建模过程中应用AOP方法,而本文的工作是在将AOP方法应用于从领域模型解释生成应用程序源码的过程中,从而提高代码的模块化和更好地处理横切关注点的分离。1.2.2面向方面的语言——AspectC++AOP语言是一般编程语言的扩展,目前应用较好的有基于Java的AspectJ[3],以及基于C++的AspectC++[4]。AspectJ是对java语言的扩展在运行时同样需要java虚拟机的支持,对内存消耗较多,在PC机上运行AspectJ版本的“hello,world!”需要花费大约20MB的内存空间[5],这大大地限制了它在实时系统中的应用。Mahrenholz等人用AspectC++

7、语言实现了一个软件监视器[6],使用AspectC++将监视代码作为单独方面植入到软件系统的代码中。他们用具有面向方面支持的C++扩展语言直接实现系统,而本文是通过模型解释器来实现从应用程序模型到AspectC++代码的自动生成。以AndreasGal[7]等人在PUMA上实现的AspectC++编译器(PUMA是一个C++的源码转换系统)相当于一个C++语言的预处理器,它利用编译器的词法分析和语

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。