论文部分内容阅读
面向方面的程序设计(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编译器的总体设计和实现策略,并对各个组成部分的设计和实现进行了详细的介绍。最后,我们对系统进行了一系列的实验和评估。