论文部分内容阅读
由于程序分析和理解的困难性,软件系统特别是大型软件系统,其生存期往往长达数十年,多年的运行历史,使得遗留软件系统中包含了众多知识,包括系统需求分析、设计决策、业务规则、维护及需求变更等。为了能够充分利用这些遗留软件资源,软件系统的持续性演化变得十分重要。然而,对这些系统常年的维护或演化异常困难,且成本开销巨大。软件维护已成为软件工程界面临的重要课题之一,能否准确、迅速、全面地理解程序是决定维护工作成败的关键。因此,程序理解研究对软件开发、管理和维护有着关键意义,特别是针对遗留软件系统维护和演化具有重要的意义。程序理解的目的在于获得足够的软件系统信息,适用于人理解的形式展现出来,以辅助和促进人对软件的理解。这是一项非常耗费时间的过程,要自动实现对程序的分析、理解和表达,首先要解决程序静态分析和信息抽取关键技术。因为源程序分析的高效性、抽取信息的完整性和准确性将直接影响到后续的程序理解系统的整个过程和性能,对软件的维护工作或演化过程具有非常重要的作用和意义。论文通过深入的调研,在参阅国内外大量文献资料的基础上,对程序理解、静态分析技术和信息抽取机制进行了较为系统的研究,所做主要工作包括:1、对程序理解相关理论的研究:研究了有关程序理解的相关背景知识和技术现状;对程序理解的意义、关键技术问题、存在困难以及设计模型进行了较系统的研究。2、对静态分析技术进行了研究,特别是对其中的预处理这一技术进行了专题研究,针对如何处理源程序中的预处理分析、几个编译阶段包含词法分析、具体预处理过程的实现等,提出了具体的实现模型和方案。3、通过对目前典型抽取工具及静态分析系统中词法、语法分析工具的研究和比较,设计了静态分析信息抽取系统的架构,设计和实现了语法和词法分析器,重点实现了静态信息抽取模块。4、通过分析传统静态分析抽取机制,研究了静态分析抽取机制的优化问题。此外,针对有些编译系统的头文件关系复杂、规模庞大的问题,论文对于如何提高这类文件的静态分析抽取效率,如何快速、准确地抽取信息进行了较深入的探讨。