形式化验证笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形式化验证笔记
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)。由于基于数学语言的逻辑严密性,形式化方法常常可以
为目标系统提供从词法、语法到语义,以及基于状态、时间和动作等因素的推理
过程的精确描述,不含任何二义性。在实践中,人们通常使用一些形式化规范(说明)语言来描述目标系统。形式化规范语言是一种特殊的程序设计语言。由于用于描述待计算的系统,而非用于表达计算是如何完成的,它们一般是不可执行的。
绝大部分形式化规范语言是基于命题逻辑、一阶逻辑、高阶逻辑和集合论等离散
数学和数理逻辑中的基本概念的。常用的形式化规范黖霶焈魗语言