论文部分内容阅读
计算机软硬件系统已广泛应用于商业攸关和安全攸关等重要领域,一旦这些系统出错的话,就会造成巨大且不可估量的损失。随着计算机软硬件系统的日益复杂化,如何确保其正确性和可靠性的研究也成为计算机领域内的研究热点。在众多研究方法和理论当中,模型检测作为一种简洁且自动化程度较高的验证方法,已成为人们关注的焦点。模型检测是一种自动的、基于模型的、性质验证处理方法。在模型检测中,系统模型常用Kripke结构或有限状态系统或有限状态转移系统表示。模型检测基于时态逻辑(temporal logic),包括线性时态逻辑和计算树逻辑。模型检测在硬件、通信协议和软件的验证中是非常有效的。作为一种重要的自动验证技术,模型检测对已知的有限状态机和时序逻辑公式进行验证,并且可以在系统不满足性质的时候产生导致失败的反例路径。模型检测对状态空间进行穷尽地搜索,但模型本身关于变量的个数及并行执行的系统组件的数目通常是指数的。也就是说系统每增加一个变量,验证性质的复杂度将会加倍。状态空间呈指数增长的现象称为状态空间爆炸,是模型检测的瓶颈问题。在模型检测中存在很多处理状态空间爆炸问题的技术。其中之一就是使用分布式技术来存储和搜索系统模型的状态空间。本文采用了一个开源的分布式数据处理框架Hadoop来设计和实现模型检测算法。Hadoop框架充分利用了计算机集群的优势高速运算和存储,可以对海量数据进行分布式处理,而用户可以在不了解分布式底层细节的情况下,轻松地开发和运行处理大量数据的应用程序。本文阐述了Hadoop的基础架构,主要包括分布式文件系统(HDFS)、MapReduce编程模型。文章介绍了CTL模型检测算法的设计和实现方法,在算法的理论研究基础上,结合Kripke结构给出适合MapReduce编程范型的数据表示方法,设计并实现基于MapReduce编程框架的CTL模型检测算法。此算法实现了给定一个模型和一个计算树逻辑公式,输出满足公式的模型的状态集合,并通过实例验证了基于MapReduce对CTL公式进行检测是可行的。基于Hadoop的模型检测算法为缓解模型检测中的状态空间爆炸问题提供了一种新的思路。