一、概念
模型检测是一种用于自动验证有限状态并发系统的技术;模型检测算法通常对系统状态空间进行穷尽搜索来确定性质的真假。如果资源充足,检测过程总是以是或非终止,是表示系统满足性质,否表示不满足性质,并自动给出一个反例。
模型检测中最大的困难是状态空间爆炸;解决状态空间爆炸有如下方法:
- 符号化模型检验技术;
- 偏序规约技术;
- on-the-fly技术;
- 对称技术;
- 抽象和组合技术;
二、模型检测的过程
使用模型检测技术来进行系统设计的验证包含以下三个步骤:
1、建模:第一个步骤是把设计转化为被模型检测工具接受的形式;可能由于验证时间和计算机内存的限制,还需要使用抽象技术简约不相关或不重要的细节(建模+简约)
2、刻画:声明设计必须满足的性质。性质刻画通常以某种逻辑的形式(如时序逻辑,这种逻辑体系表示系统随着时间的变化)表示。(用一种逻辑形式来刻画一个性质)
3、验证:理想上的验证应该是完全自动的。但实际上常常需要人的帮助,其中之一就是分析结果。当得到失败结果后,通常可以给用户提供一个错误轨迹,可以把它看作检测性质的一个反例。
三、解决状态空间爆炸的方法简介
1、符号化模型检验技术
1993年KL McMillan基于RE Byrant的有序二叉判定图(OBDD)来有效地表示状态迁移系统,提出了符号化模型检验,大大地提高了可有效应用模型检验技术的系统规模,使得模型检验在工业界逐步得到应用。
用布尔公式刻画状态集合和状态对集合,用OBDD来表示这些布尔公式,使用OBDD上的布尔操作来计算谓词转换子(其不动点刻画了CTL模态子),从而使模型检验在压缩了的符号化状态空间上来验证CTL性质。
2、偏序规约技术
通过发掘系统中并发执行的迁移的交换性,减少本质上相同的状态,从而仅生成足以检验性质的小部分状态空间。
3、on-the-fly技术
把状态空间生成和检验它是否满足性质合在一起做,而不去预先生成整个状态空间,从而尽可能避免状态爆炸。
4、对称技术
针对由多个完全类似的进程组成的系统,利用其模型的状态空间的对称性来生成压缩的且对模型检验等价的模型。
5、抽象和组合技术
抽象方法通过把原来模型中与待验证性质无关的信息去掉而获得简化模型的方式来减小模型检验时问题的规模,抽象必须是保持性质的,即若简化的模型满足性质,则原来的模型亦满足该性质。
组合方法基于分而治之的思路来缩减模型检验时问题的规模,先验证系统的构件的局部性质,然后把这些性质组合起来获得系统的全局性质。