论文部分内容阅读
随着软件规模和复杂性的日益增长,人们对软件的复杂性进行分析和度量的要求越来越高,因此对软件复杂性分析技术的研究已成为软件工程学中的一个热点。迄今为止,国内对软件复杂性分析技术的研究尚未成熟,对软件复杂性的度量和评估的方法也不尽完善,在此基础上,本文提出了基于程序理解技术的软件复杂性分析技术的研究和应用的课题。
软件复杂性分析技术主要表现在对软件代码进行程序结构分析和关键字识别,以及在此基础上的软件复杂性分析和度量。其中最关键的问题是如何在分析代码的过程中,识别并统计可供复杂性度量的数据。针对这一问题,本文提出了一种基于程序理解技术实现软件复杂性度量的方法。该方法分析和研究了程序理解技术为软件复杂性度量提供数据方面的问题。在问题研究的基础上,设计了基于程序理解技术实现软件复杂性度量的模型,并提出了方法研究中要解决的关键问题以及问题的解决方案,最后本文对该方法的实现给出了相关的算法。
在对方法进行研究的过程中,本文研究和设计了基于程序控制流的数据遍历算法、基于抽象语法树的运算符匹配算法和基于抽象语法树的操作数统计算法,并对抽象语法树所包含的数据信息进行转换、存储、遍历和统计度量。
为了更好的实现本文的研究方法,笔者设计和开发了基于OINK(OINK是由Karl Chen和Scott McPeak开发的一款开源的程序理解工具,该工具针对程序代码进行分析,并应用了多种程序理解技术)的软件复杂度度量系统,该系统通过对OINK中程序理解技术的运用,实现了度量数据的统计,并在此基础上完成软件复杂性度量。因此在对该系统设计的过程中对需求分析进行了详细描述,合理设计了系统的构件图,层次结构模型以及逻辑结构模型,并实现了系统中复杂性分析的关键算法,数据的采集和存储以及人机交互功能。
为了应用和验证本文提出的基于程序理解技术实现软件复杂性度量的方法,文章的最后建立了基于OINK程序理解平台的软件复杂度度量系统的应用环境,并详细地设计了应用流程,对随机选取的代码文件进行了复杂度度量测试。结果分析表明了系统的度量结果和程序复杂性分析结果的一致性,从而证明了课题研究的方法的合理性和可行性。