Pipa语言及其Runtime Assertion Checking编译器的研究与实现

来源 :上海交通大学 | 被引量 : 0次 | 上传用户:wanghldss
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
面向方面的程序设计(Aspect-Oriented Programming,AOP)是一种全新的程序设计方法,其核心旨在克服面向对象程序设计中抽象建模的局限性,在系统设计时将分散在各个模块中的横切关注(crosscutting concerns)分离出来,抽象成为单独的编程模块或组件,实现了横切关注点的模块化,从而使系统具有更好的模块性、可维护性和可扩展性。同时,越来越多的软件系统采用面向方面的方法构建,系统的复杂性不断增加,对于可靠性的需求也变得日益紧迫。对程序进行运行时检查是提高程序可靠性的有效手段,但是,目前依据程序规格对程序进行运行时检查的技术还很缺乏。本文针对上述实际需求,通过分析研究Pipa语言和AspectJ语言的语法和语义,重点研究了针对Pipa语言的Runtime Assertion Checking编译器的设计和实现。其目的是构建一个编译平台,能够支持带有Pipa规格的AspectJ程序编译,编译后所得到的Java字节码文件可以在运行时自动检查是否出现违背Pipa规格行为,并给出相关的错误信息,提高了系统的可靠性。在构建该Runtime Assertion Checking编译器时,我们采用了预处理的方法将Pipa规格转化为标准的Java代码,使之可以通过abc的编译,得到反编译后的Java源文件。然后通过jmlc生成可执行的Java字节码。在研究和设计的过程中,我们主要参考了jmlc,jContractor等项目。并且充分利用了现有的abc和jmlc等系统,降低了系统的实现难度。在本文中,我们首先介绍了AOP和AspectJ的基本概念,回顾了JML和Pipa语言的主要特性。然后简要介绍了Runtime Assertion Checking的相关技术,在完成了这些之后介绍了Pipa的Runtime Assertion Checking编译器的总体设计和实现策略,并对各个组成部分的设计和实现进行了详细的介绍。最后,我们对系统进行了一系列的实验和评估。
其他文献
SAGE:简单自适应性的网格引擎(Simple Adaptive Grid Engine),是我们实现的一个基于纯C++的分布式网格中间件,其主要是用于构建在桌面应用和集群计算服务之间的分布式通讯应
随着机器人的发展和技术的不断提高,机器人已经被应用到生产,生活,军事等各个方面,机器人能代替人工完成一些高难度的,恶劣环境下的工作。受到鸟类可随意栖息的启发,我们团队
入侵检测系统是在目前网络安全问题日益突出的环境下,提出的一种对网络传输进行实时监控,主动保护自己免受攻击的一种网络安全技术。尽管这项技术经历了长足的发展,但是在某
变分优化是指对于给定的问题,首先将问题建立优化模型函数,然后求解函数的极值的过程。变分优化方法是一门应用非常广泛的学科,它已经被广泛的应用到经济计划、工程设计、生
电力负荷预测是电力系统的一项基本工作,是安全调度和经济运行的重要依据,在电力市场下,各电力公司要制定合理的经济模型和具有竞争力的实时电价,必须依赖于准确和快速的负荷
随着多媒体、网络技术的飞速发展,工程图纸数字信息在企业生产部门中的应用日益广泛,如何从大量的工程图纸信息中快速而准确地检索出所需的信息成为一个亟待解决的问题。本文
随着计算机网络和数据库技术的迅速发展,人们对数据库的要求越来越高。传统的集中式数据库一般都被放置在服务器上,这样比较方便管理,但随着网络技术的迅猛发展,数据分布存储
随着Internet技术的发展,安全协议在电子商务和电子政务中的应用越来越多。与此相应的就是人们对协议的安全性更加关注,随之涌现出各种安全协议的形式化分析方法。本文简要介
延迟容忍网络(Delay Tolerant Networks, DTNs)是一种新型Ad-hoc网络。在这种网络中,由于节点移动过于频繁,以及节点密度过于稀疏,导致整个网络中不存在端到端完整而稳定的通
随着科技技术的飞速发展,互联网的广泛使用,单一应用系统不再能够满足政府和企业客户的多样性需求,因此,多个具有独立用户身份认证模块但又彼此互相联系的系统和网站涌现到用