[发明专利]一种基于插值的模型检测路径缩减方法、计算机有效

专利信息
申请号: 201710896756.2 申请日: 2017-09-28
公开(公告)号: CN107844415B 公开(公告)日: 2021-02-05
发明(设计)人: 田聪;段钊;段振华 申请(专利权)人: 西安电子科技大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 西安长和专利代理有限公司 61227 代理人: 黄伟洪;何畏
地址: 710071 陕西省*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 模型 检测 路径 缩减 方法 计算机
【说明书】:

发明属于计算机应用技术领域,公开了一种基于插值的模型检测路径缩减方法、计算机,读入C程序,对C程序进行语法语义分析,并从抽象语法树中提取出控制流自动机CFG;给CFG添加safety(S)插值和error(E)插值,扩展CFG;在根据CFG生成ARG的过程中,在每一个状态,判断safety插值和error插值是否被当前路径公式蕴含。本发明通过计算S插值和E插值,提高了检测的效率,使得模型检测算法可以更好地应用于大规模的程序;S插值避免不必要的探索,大大地减少ARG的状态数;E插值可以运用于快速地判断程序中是否存在真反例路径,加快了程序的验证,提高了效率;裁剪CFG中无用结点和边,缩小了遍历状态空间。

技术领域

本发明属于计算机应用技术领域,尤其涉及一种基于插值的模型检测路径缩减方法、计算机。

背景技术

随着科技的快速发展和工业需求的不断提高,各种软硬件设计的的复杂度也日益增加,对于可靠性和安全性的要求也不断提高。系统的可靠性,安全性和正确性已经受到了科学界和工业界的广泛关注。形式化验证和测试是解决该问题的主要方法。形式化验证方法始于20世纪60年代末的Floyd、Hoare和Manna等在程序规范和验证方面的研究。形式化验证方法分为两大类:基于定理证明和基于模型。20世纪80年代初提出的模型检测(ModelChecking)属于基于模型的形式化验证方法,思想相对简单和自动化程度高,可以广泛用于硬件电路系统和网络协议系统的验证。模型检测就是先把系统建模为有限状态转移系统,并用时态逻辑描述特验证的规范,在有限状态转移系统上进行穷尽搜索,确定规范是否被满足,若没有满足,给出反例指出为什么没有满足。模型检测面临状态爆炸问题,所谓状态爆炸问题即系统状态数随着状态规模的增加呈指数级增加。所以该领域的研究人员使用各种方法缩减搜索的状态空间,基于反例引导的抽象模型检测是常用的技术。基于反例路径的抽象细化(Counterexample-Guided Abstraction Refinement,CEGAR)技术的过程如下:给定一个模型和性质,首先通过抽象的方法生成一个抽象模型。抽象模型包含的行为可能会多于原始模型,但是,抽象模型的结构和描述都比原始模型简单,所以可以缓解状态空间爆炸问题。然后调用模型检测器,检测公式是否在抽象模型中有效。如果有效,则程序终止;否则,会给出反例路径,然后进行重构(reconstruction)过程,即在原始模型中,如果成功找到一条路径对应于反例路径,则程序结束;否则,反例路径为虚假反例路径,下一个迭代过程开始,重新生成抽象模型,进行验证。重复此过程,直到返回有效或者无效,或者状态空间爆炸造成程序停止。动态符号执行技术是一种符号执行与具体执行相结合的测试手段。符号执行是指在不执行程序的前提下,用符号值表示程序变量的值,然后模拟程序执行来进行相关分析。首先,对待分析代码构建控制流图(Control Flow Graph,CFG),它是编译器内部用有向图表示一个程序过程的抽象数据结构。在CFG上从入口节点开始模拟执行,在遇到分支节点时,使用约束求解器判定哪条分支可行,并根据预先设计的路径调度策略实现对该过程所有路径的遍历分析,最后输出每条可执行路径的分析结果。动态符号执行是以具体数值作为输入,同时启动代码模拟执行器,并从当前路径的分支语句的谓词中搜集所有符号约束。然后根据策略反转约束中的一个分支,构造一条新的可行的路径约束,并用约束求解器求解出一个可行的新的具体输入,接着符号执行引擎对新输入值进行新一轮的分析。通过使用这种输入迭代产生新输入的方法,理论上所有可行的路径都可以被计算并分析一遍。动态符号执行技术的主要瓶颈是路径爆炸问题,即随着程序中分支数的增多,路径呈指数级增加。插值是缓解路径爆炸问题的有效方法,主要是一种搜索剪枝的思想,通过利用不可行路径给行节点标记插值,插值是指一定不会到达被标记为错误行的条件约束。对于分支节点,若该节点的每个分支都被探索过,那么在该节点标记的插值为全插值,否则为半插值。在动态符号执行中,若从开始节点到当前节点的路径约束满足当前节点的全插值,则该路径可被归并,即不被探索,从而有效缓解了路径爆炸问题。对于大规模系统,抽象模型在进行验证时细化次数过多。细化的次数越多,占用的时间就越多。每次细化后,都要重新构建抽象模型,重复遍历的许多路径,降低了验证效率。而且验证模型时,产生的状态数随系统的规模和复杂性增大而增大,会引起状态空间爆炸问题,从而消耗大量的内存和时间,导致验证崩溃,因此,在验证的过程中,找到一种方法,可以减少遍历的路径和细化的次数,快速地对程序进行验证,从而降低状态数,使之可以对大规模的程序进行验证,已经成为一个亟待解决的问题。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201710896756.2/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top