论文部分内容阅读
软件再工程作为能够增进对现有软件的理解,改进软件自身质量以提高其可维护性、可复用性和可演化性的一类活动,在软件工业中占据了越来越重要的地位。通过软件再工程,可以发掘出遗产系统中各个层次的设计和实现信息,从而为遗产系统的维护、构件的提取、领域知识的获取以及软件的复用提供帮助。
作为恢复软件系统设计信息的一种方式,在逆向工程中识别和恢复能在较高抽象层次上反映系统特征的设计模式,有助于正确理解遗产系统,也为进一步的系统维护、系统重构和系统演化打下基础。但国内外在这方面已经开展的一些研究工作大多局限于静态分析,没有充分考虑动态分析的重要性,因此具有较大的局限性。
本文提出一个综合利用静态分析和动态分析从Java遗产系统中识别设计模式实例的方法:将复杂的模式结构层层分解为子模式和基本原语元素,并引入形式化的方式来定义和描述;在对遗产系统进行静态分析的基础之上,给出一个模式实例的推导识别算法,根据模式静态结构特征的形式化定义,可以自动地进行模式实例的识别和推导;在自动的模式实例识别的基础之上,通过运用面向方面编程(AOP)技术对遗产系统进行动态分析来获取系统运行时交互信息,结合模式的动态交互行为特征,实现了对自动识别出的模式实例进一步的验证。