1 / 81
文档名称:

面向方面程序指向分析工具的设计与实现.pdf

格式:pdf   页数:81
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

面向方面程序指向分析工具的设计与实现.pdf

上传人:cherry 2014/2/25 文件大小:0 KB

下载得到文件列表

面向方面程序指向分析工具的设计与实现.pdf

文档介绍

文档介绍:上海交通大学
硕士学位论文
面向方面程序指向分析工具的设计与实现
姓名:孙强
申请学位级别:硕士
专业:计算机软件与理论
指导教师:赵建军
20090101
摘要
面向方面程序指向分析工具的设计与实现
摘要
面向方面的编程(Aspect-Oriented Program,AOP)是一种编程范式,
它允许对应用于某种宿主语言的关注点的分离,并且提供一种可以描述那
些横切其他组件的关注点的描述机制。这些横切关注点可以是异常处理、
同步、性能优化以及资源共享,而这些关注点很难在已有的程序设计技术
中表达清晰。面向方面的技术能够控制代码纠缠,使关注点的表示更加清
晰,从而使程序更易于开发、维护和进化。
AspecJ 是一种通用的面向方面编程语言,是一种基于Java 语言的面向
方面的无缝扩展。AspectJ 中增加了新的概念,诸如连接点(join point)、
通知(advice)、方面(aspect)等。AspectJ 程序通常可以分成两个部分:
基代码以及方面代码。基代码包括类、接口以及 Java 语言的其他一些结构。
方面代码包括一些方面。方面是一个横切关注点实现的模块化的单位。每
一个方面封装能够横切其它类或方面的机能。方面依据一些包含在其中的
说明和它所横切的类结合到一起。
指向分析(points-to)是一种基本的程序分析技术,其基本思想是计算
出程序中的引用变量有可能指向的对象创建点的集合。作为一种基本技术,
第 I 页
摘要
指针分析在编译器优化以及软件工程等方面有着广泛的应用。尽管目前有
许多指向分析算法用于分析面向过程语言和面向对象语言,如对 C 和 Java
语言的分析,但是迄今为止还没有针对面向方面语言的指向分析算法。
本文基于 Andersen 风格的 Java 语言指向分析技术,提出了一种针对
AspectJ 语言的流非敏感(flow-insensitive)、上下文非敏(context-insensitive)、
的指向分析方法。其主要是能够使指向分析的算法跨越类与方面的界限,
从而能够处理面向方面的特性。为了检验所提出的指向分析技术的有效性,
我们实现了一个基于 ajc 编译器的 AspectJ 程序指向分析工具,并应用九
个广泛使用的 AspectJ 基准程序对该工具进行了试验评估。试验的结果显
示,与已有的基于字节码的 Java 语言指向分析技术相比,我们的方法能够
在比较小的时间和空间代价下能够显著地提高分析的精度。
本论文的贡献主要有三点:(1)我们定义了一个通用的针对AspectJ语言
的指向分析语义,该语义扩展了Rountev等人提出的针对Java的Andersen风
格的指向分析。(2)基于AspectJ 的ajc编译器,我们实现了AspectJ语言指
向分析工具AJPTAT。(3)我们应用九个广泛使用的AspectJ基准程序对所实
现的指向分析工具进行了实验评估并且得到了预期的结果。

关键词:指向分析,面向方面编程(AOP),AspectJ 语言

第 II 页
ABSTRACT
DESIGN AND IMPLEMENTATION OF POINTS-TO ANALYSIS TOOL
FOR ASPECT-ORIENTED PROGRAM
ABSTRACT
Aspect-oriented programming (AOP) has been proposed as a programming
paradigm for improving separation of concerns in software design and
implementation. AOP works by providing explicit mechanisms for capturing the
structure of crosscutting concerns such as exception handling, synchronization,
performance optimizations, and resource sharing, which are usually difficult to
express clearly in source code using existing programming techniques. AOP can
also control the code tangling problem, making the underlying concerns more
appar