异常与异常安全性错误往往相互伴随、相互激发、相互转化,对软件的可靠性造成严重威胁。针对这种现象,项目提出了一种软件异常的双路传播模型,使用两条传播路线分别建模异常与不安全状态在软件中的产生、传递、演变、消亡,以及两者的相互激发转化过程。基于数据起源理论与技术,给出了异常传播元数据的描述和动态获取方法,以及通过对异常传播元数据进行查询和推理,检测异常安全性、构建双路传播模型的方法。基于双路传播模型,给出了追踪软件异常和安全性缺陷、分析软件可靠性的方法。同时研制异常传播的监控与分析工具并开展案例研究。项目研究工作将为探索异常传播与不安全状态传播的基本规律,掌握传播的机理和演变方式,提供新的理论模型和方法体系,具有重要的学术意义。研发的成果可以应用于软件的运行和调试环境中,辅助开发人员检查软件错误,编写更健壮的异常处理代码,具有重要工程应用价值。
Exception Propagation;Exception Safety;Data Provenace;Exception Flow Analysis;
软件中不完善的异常处理常常会导致软件产生资源泄露、非法数据不良等不良后果。我们称之为软件的异常安全性(Exception Safety)缺陷。异常安全性缺陷造成的错误会和异常一样在系统中传播。例如由于异常而产生的非法数据在其他模块中使用时,会引发其他模块数据出错。由于异常处理的不正确发生了资源泄漏,会使其他需要资源的模块发生无法获取资源的错误。本项目针对软件中异常与其引发的错误相互伴随传播的特点,提出了一种软件异常的双路传播模型,使用两条传播路线分别建模异常与错误在软件中的产生、传递、演变、消亡过程。本项目的主要研究成果包括(1)提出了软件异常的双路传播模型,给出了模型的形式化定义。该模型针对异常显式传播的特点,建模了异常造成的控制流变化,针对错误隐式传播的特点,建模了安全性错误对资源和数据上的影响。并通过过程内和过程间两级模型,分别建模方法内部的异常流、错误流以及方法之间的异常传播过程。(2)借鉴数据溯源技术,给出了基于RDF图的异常传播元数据表示方法和采集方法。异常传播元数据将异常、数据和资源作为溯源的对象,利用RDF图表示这些对象的演变轨迹,作为其传播分析的基础数据。我们通过静态分析,创建程序中执行单元与异常、数据、资源和数据之间的关系,形成传播分析所需的元数据。(3)基于RDF的推理和查询技术,给出了异常双路传播模型的构造方法。我们定义了一组推理规则,对采集的传播元数据进行推理,构造出异常传播模型;并结合规则推理和数据流分析,对传播元数据的RDF图进行分析,检测出异常发生后资源泄露和数据未还原的错误,对这些错误使用RDF进行建模,并与异常传播模型进行关联,形成错误与异常的双路传播模型。本项目研究成果可以揭示软件异常与错误传播的规律,掌握异常和错误的传播机理和演变方式,具有重要的学术意义。研发的成果可以应用于软件的运行和调试环境中,辅助开发人员检查软件错误,编写更健壮的异常处理代码,具有重要工程应用价值。