形式化验证笔记
2.2 形式化方法简介
正则化工具箱形式化方法是一类基于数学的用于精确化规范说明、开发和验证软件和硬件 系统的多种方法的总称[28]。对软件和硬件设计使用形式化方法是为了通过利用 适当的数学分析方法,来保证设计的正确性、可靠性和健壮性。 形式化方法一般可以分为形式化规范说明(Formal Specification)和形式化 验证(Formal Verification)两大类。其中形式化验证又可分为定理证明(Theorem Proving)、模型检测(Model Checking)和自动测试用例生成(Automated Test Case
Generation)三类。其中定理证明也称演绎验证(Deductive Verification)。本文中 采用的形式化验证方法属于定理证明的范畴。
下面简要介绍一下这三种形式化验证技术:
, 模型检测:模型检测是一种通过对目标系统建立一个有限的模型,并在 模型发生改变时,检测某系统属性(如安全性和活性)在该模型中是否 保持的技术。从本质上讲,模型检测技术就是穷尽地对状态空间搜索, 并通过模型的有限性来保证该搜索过程一定会终止。最初模型检测应
用 在硬件和协议验证领域,大为成功,后来在软件系统的验证上也得到了 广泛应用。
, 定理证明:定理证明是一种用某种数学逻辑公式来表达系统及其属性的 技术,该数学逻辑公式被定义为一个形式化系统,包含一系列系统公理、 已证明的定理及其推论,定理证明的本质就是基于该形式化系统,到 某属性的一个证明的过程。定理证明通常被应用于对软硬件系统重要属 性的机械化验证。与模型检测的不同是,定理证明一般是需要人辅助来 交互地完成证明的,而模型检测可以达到完全的自动化。由于使用了结 构归纳(Structural Induction)等技术,定理证明可以处理无限的状态空 间,这一点是模型检测难以做到的。但由于需要人的参与,定理证明一 般较慢且易出错,这一点上模型检测则做得更好。
, 自动测试用例生成:自动测试用例生成是一种通过形式化地分析系统规 范说明以及代码,并且通过机械推理技术来实现自动化地给出完全覆盖 的测试用例算法的技术。与前面两个针对系统设计的验证技术不同的 是,自动测试用例生成技术一般是为程序验证服务的,即目的是发现已 经写好的程序中的错误。该技术已经广泛地应用于软件测试领域。 形式化方法发展历程中的一个里程碑的事件是:由于在1981 年提出了模型 检测技术[29],美国计算机科学家Edmund M. Clarke、E. Allen Emerson和法国计 算机科学家Joseph Sifakis三人获得了2007
年的图灵奖(ACM Turing Award)。 由于基于数学语言的逻辑严密性,形式化方法常常可以为目标系统提供从词 法、语法到语义,以及基于状态、时间和动作等因素的推理过程的精确描述,不 含任何二义性。在实践中,人们通常使用一些形式化规范(说明)语言来描述目 标系统。形式化规范语言是一种特殊的程序设计语言。由于用于描述待计算的系 统,而非用于表达计算是如何完成的,它们一般是不可执行的。绝大部分形式化 规范语言是基于命题逻辑、一阶逻辑、高阶逻辑和集合论等离散数学和数理逻辑 中的基本概念的。常用的形式化规范黖霶焈魗语言

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。