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

来源 :上海交通大学 | 被引量 : 0次 | 上传用户:aiwo2516
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
面向方面的编程(Aspect-Oriented Program,AOP)是一种编程范式,它允许对应用于某种宿主语言的关注点的分离,并且提供一种可以描述那些横切其他组件的关注点的描述机制。这些横切关注点可以是异常处理、同步、性能优化以及资源共享,而这些关注点很难在已有的程序设计技术中表达清晰。面向方面的技术能够控制代码纠缠,使关注点的表示更加清晰,从而使程序更易于开发、维护和进化。AspecJ是一种通用的面向方面编程语言,是一种基于Java语言的面向方面的无缝扩展。AspectJ中增加了新的概念,诸如连接点(join point)、通知(advice)、方面(aspect)等。AspectJ程序通常可以分成两个部分:基代码以及方面代码。基代码包括类、接口以及Java语言的其他一些结构。方面代码包括一些方面。方面是一个横切关注点实现的模块化的单位。每一个方面封装能够横切其它类或方面的机能。方面依据一些包含在其中的说明和它所横切的类结合到一起。指向分析(points-to)是一种基本的程序分析技术,其基本思想是计算出程序中的引用变量有可能指向的对象创建点的集合。作为一种基本技术,指针分析在编译器优化以及软件工程等方面有着广泛的应用。尽管目前有许多指向分析算法用于分析面向过程语言和面向对象语言,如对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)可以使横切关注点更
低密度校验码(LDPC)是一类用稀疏校验矩阵定义的线性分组码,具有逼近Shannon限的性能。对于基于二部图模型的LDPC码,短环是影响LDPC码性能的重要因素之一,因此有关环的研究也受
当前,由于我国检察机关办案监管体系的不完善,在审讯过程中容易出现因办案人员执法不规范而引起犯罪嫌疑人以体罚虐待和刑讯逼供等理由进行翻供,导致案件需要重审,不利于和谐
自从二十世纪九十年代以来,核方法已经被广泛应用于模式识别与机器学习领域。其优势在于核方法允许研究者在原始数据对应的高维特征空间使用线性方法来分析和解决问题,不需要
随着电力系统计算任务要求的不断提高,在一个单节点上进行计算任务的传统计算思想已经不能满足越来越高的计算要求。网格计算的发展,经过几年的研究,已经从实验走到现实中来。通过充分利用分布式计算环境中的有效计算资源,网格平台提供了统一的,透明一致的,高效的计算方式来满足如今的大规模计算需求。为了有效的利用电力系统中的分布计算资源,适应电力系统大规模计算和模拟的需求,基于面向服务的思想体系,本文首先构建了一
随着计算机技术的发展和计算机应用的日趋复杂,人们对计算机处理速度的需求也在不断地增长。如何满足计算数据多、算法复杂、计算规模大、难度高的科学计算的要求,快速而有效
随着CAN总线功能不断增强,其节点数目的不断增多,系统变得越来越复杂。现有的通过显式发送和接收消息进行通信的开发模式将会导致系统开发成本高、软件移植和扩展困难等问题
随着信息时代的来临,互联网(Internet)一直朝着规模更广、速度更快的方向不断发展。计算机网络为整个人类社会带来了空前的改变,它影响着人们工作、娱乐和生活的方方面面。如
近几年,随着互联网技术的发展,网络给人们提供了越来越多的服务,但各种网络的攻击手段以及病毒的产生和传播速度也加快了,这给网络安全带来了巨大的挑战。现有的一些常用网络
网络技术的飞速发展使其在现代社会中的重要性越来越突出。如何将地理上分布、异构的各种存储资源通过网络连接并集成起来,形成庞大的分布虚拟存储空间,提供安全高效的数据存