模型检测原理、方法学习

模型检测学习

一、模型检测概论

1.1 模型检测所解决的问题:保证并发系统正确性和可靠性
1.2 特点:自动化程度高、简洁明了
1.3 发展:用于描述并发系统性质的CTL逻辑 符号模型检测技术
1.4 基本思想
用状态迁移系统(S)表示系统的行为,用模态/时序逻辑公式(F)描述系统的性质,这样“系统是否具有所期望的性质”就转化为数学问题“状态迁移系统 S 是否是时序逻辑公式 F 的一个模型?”,这个问题是可判定的,即可以用计算机程序在有限时间内自动确定。在这里插入图片描述
1.5模型检测过程
(1)建模:第一个步骤是把设计转化为被模型检测工具接受的形式;可能由于验证时间和计算机内存的限制,还需要使用抽象技术简约不相关或不重要的细节。
(2)刻画(规约):声明设计必须满足的性质。性质刻画通常以某种逻辑的形式(如时序逻辑,这种逻辑体系表示系统随着时间的变化)表示。(用一种逻辑形式来刻画一个性质)
(3)验证:理想上的验证应该是完全自动的。但实际上常常需要人的帮助,其中之一就是分析结果。当得到失败结果后,通常可以给用户提供一个错误轨迹,可以把它看作检测性质的一个反例,使设计者可以跟踪错误发生的具体位置
在这里插入图片描述

二、系统建模

2.1基于中间建模

基于中间建模语言,将实际程序语言编写的程序转换为一个中间模型,可以重用模型检查算法,使程序模型检查框架具有更好的扩展性。
Example
Fearer /MODEX的目标是将程序的实现级描述(C语言)转换到经典模型检查器spin的验证模型,模型检查器 spin的建模语言是Promela。Feaver/MODEX将源程序的控制流结构表示为Promela语言的控制流结构,用Promela新定义的嵌入原语将源程序中数据声明和基本语句嵌入到验证模型中。

2.2 直接生成验证模型

直接生成验证模型:程序模型检查中,对代码的任何修改、变换都可能导致假报错,或者错误遗漏;模型检查中触发的实际代码越多,可以发现的错误越多。从被检查的源程序中直接生成验证模型,可以有效避免上述问题。
Example:
NASA Ames的JPF2直接处理程序的中间码而不是源程序本身绕开了复杂的源语言结构
CMU的MAGIC在生成模型之前对源程序进行了抽象等变换,以减小检查程序的规模
斯坦福大学的CIVIC用实际(模拟)执行方法得到所需的验证空间
NASA Ames的JPF-SE扩展JP2实现符号执行
CMU的CBMC将源程序直接编码为一个等式系统。

2.3 建模示例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、模型逻辑的种类

3.1计算树逻辑

在这里插入图片描述

在这里插入图片描述
1、原理:一个系统的运行可以看成系统的转态变化,并发系统因为行为不确定性可以有多个可能的后续状态,所以可以产生一颗状态树。
2、描述类型:状态前后关系和分支情况
公式组成:原子命题、逻辑连接符( not,or,and 等)、模态算子(E(Exists), A( Always), X
(Next-time), U(Until), F(Fut

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值