自动软件模型检查与堆属性验证:技术融合与应用探索
1. 自动软件模型检查技术
在软件验证领域,自动软件模型检查是确保程序正确性的重要手段。不同的研究方向为这一领域带来了丰富的技术和方法。
- CLP在模型检查中的应用 :Delzanno和Podelski探索了约束逻辑编程(CLP)在模型检查中的应用。他们聚焦于Shankar提出的受保护命令规范语言所表达的并发系统,该语言不提供动态分配或递归的显式支持,不过基于CLP的模型检查方法表现出了良好的性能。
- 多线程Java程序的检查方法
- Bruening构建了基于状态空间探索的动态断言检查器,用于多线程Java程序。
- Stoller对Bruening的方法进行了推广,允许对具有消息传递或共享内存通信的程序进行模型检查。这两种方法都是在具体程序上操作,不进行任何抽象。
- Yahav描述了一种使用三值逻辑抽象存储来对多线程Java程序进行模型检查的方法。
- 抽象解释与注解推断
- 抽象解释是开发和描述程序分析的标准框架,为上述模型检查工具中的抽象提供了语义基础,并且已成功应用于许多领域,如火箭控制器。
- 另一种方法是自动推断循环不变式和规范等注解。Houdini注解推断系统在生成 - 测试方法中重用ESC/Java作为子程序进行注解推断,Daikon则使用经验方法来查找可能的不变式。
<
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



