论文部分内容阅读
随着软件规模的扩大,程序复杂度的增强,对程序的可靠性和健壮性的要求越来越高。异常处理机制是程序设计语言提供的一种用来检测异常并对其进行处理的技术。使用异常处理机制时,一个必须考虑的问题是异常的传播。引发异常的位置不一定是处理异常的位置,异常可能传播出它被引发的函数。异常的传播会引发程序的提前终止,改变程序原来的执行路线,从而改变程序中各种数据之间的控制关系和依赖关系;异常的传播增加了函数之间的耦合,给程序的测试、理解和维护带来了困难。异常传播如果处理不当,会直接影响软件的可靠性和健壮性。因此,对异常传播分析技术及其应用的有关问题进行研究不仅具有重要的理论意义,也具有广阔的应用前景。本文在对C++的异常传播机制进行分析的基础上,首先建立了C++程序的异常传播分析模型,分析了异常传播路径。然后对包括异常传播的C++程序中控制流、数据流、控制依赖和数据依赖的分析方法进行了研究,并积极探索其在软件工程任务中的应用。最后对异常传播分析工具的有关实现问题进行了探讨。本论文取得的成果主要包含如下几个方面:·为了分析C++程序中异常的传播,我们在充分研究C++异常处理机制的基础上,提出一种适于分析C++程序的异常传播的分析模型,该模型可以计算一定范围内(如一个类,一个函数等)可能引发异常的类型、可能传播出异常的类型等。针对递归函数本身的特殊性,提出一种适于递归函数的异常传播分析方法,该方法比现有的递归函数的异常传播分析方法更为简单。开发了基于该模型的异常分析辅助工具,使用该工具可以帮助程序的开发人员发现程序中潜在的问题,从而为异常处理结构的改进提供依据。·为了解决目前在分析异常传播路径中表示方法过于复杂的问题,我们提出了一种新的异常传播的表示方法——异常传播图,它由组成程序的各个函数的简化的异常控制流图组成。在该异常传播图上,异常的传播路径一目了然,并实现了异常传播路径的可视化显示。与目前已有方法相比,这种异常传播图更简洁、直观、有效。·为了分析异常传播对程序控制流、数据流、控制依赖和数据依赖的影响,我们提出了一种适于分析包括异常传播的C++程序的控制流、数据流、控制依赖和数据依赖的分析方法。通过这种分析方法获得的信息,应用到软件的结构测试,可以提高测试的效率和异常处理代码的测试覆盖率;应用到程序切片中,可以提高程序切片的精确度。