论文部分内容阅读
软件维护活动是软件生命周期中时间跨度最长的一个阶段,在软件开发过程中变得越来越重要。其中,维护工作的效率很大程度上依赖于技术人员对软件的理解。程序理解技术是通过计算机自动实现对软件系统的辅助理解,在软件逆工程、软件分析等多方面得到了广泛应用。程序理解技术的主要过程包括:对软件系统的程序信息进行抽取、建立理解模型,最终组织成符合人们理解习惯的形式展现出来。程序设计中的关注点是指软件工程中有实现意义的、可描述的、可管理的软件组成部分,也即是说它们是软件系统中各种功能实现的最小组成部分。由于传统的软件设计方法本身的缺陷,导致遗产系统中的非核心关注点出现横切现象,并进一步导致系统代码的交织和散布,使得系统的模块化程度和可理解性降低,维护难度增大。面向方面的软件设计方法是在面向对象设计的基础上提出的基于方面的开发概念。它通过对系统中的横切关注点进行识别和挖掘,将相关横切代码重构成一种新的代码结构——方面。方面挖掘是其中的重点工作,主要过程是分析、计算和挖掘系统中的横切关注点,建立起候选的方面,为后续的方面重构的工作打下基础。面向方面程序设计方法已经得到了广泛应用,而在对传统的程序理解辅助工具进行分析后,我们发现这些工具对面向方面程序设计的支持不够。因此,本文提出了将方面挖掘作为程序理解中信息抽取的一部分应用在程序理解工作中,并对方面挖掘算法进行了改善。本文的主要工作如下:(1)研究了传统的方面挖掘算法,对它们进行分析和比较,提出了一种改进的方面挖掘算法——结合Fan-in分析和克隆探测的方面挖掘算法。其中,克隆探测算法是在传统的PDG算法上进行了改进。并以实例验证的方式证明了其在挖掘时间和挖掘结果上相比传统的算法有了一定的提高。(2)设计开发了一个面向方面的程序理解信息抽取系统。首先,本文在综合认知理论的研究基础上提出了系统的功能需求。除了进行传统的程序静态分析以外,方面挖掘作为信息抽取的一部分,其结果也在这个系统中以图形化的方式展现给用户。对此系统进行了性能上的分析也证明了本文设计的系统相比传统的程序理解工具在面向方面层次有了优化。