软件可靠性方法
English: Software Reliability Methods
http://u.cs.biu.ac.il/~doronp/srm.html
中文版序
形式化方法的研究牵涉了数学、计算机科学中的不同领域。本书中描述的主要技术是基于自动机理论和逻辑。
而形式化方法、技术和工具中还用到一些更深的思想,比如机器学习、微分方程、数据结构、博弈论等。
经过对其多年的研究,我已经确信这是最有意思的研究领域。
译者序
英文版序
前言
- 如果没有直接使用相关工具的实际经验,对形式化方法的学习就是不完整的。
- 学习形式化方法并且了解其优点和缺陷的一个有效方法是跟踪理解这些跨章节的实例
第1章 引言
软件开发过程中的质量控制
1.1 形式化方法
演绎软件验证(deductive software verification)
- 正确性:系统是否满足客户的规约
- 系统vs规约
- deductive software verification
- 不变式:正确性断言
- model checking: FSM
- 软件测试
1.2 开发与学习形式化方法
- 规约
- 验证
- 测试
1.3 使用形式化方法
- 获得关于一个系统共同的、形式化的描述。形式化规约(specification)允许参与开发的不同小组共同使用对系统或其属性的一致描述。
- 研究形式化方法的目的是找出系统开发过程中引入的错误
- 可将形式化方法集成到开发过程中,并起到辅助作用。
1.4 应用形式化方法
- 状态空间爆炸
- 可组合:先对系统各部分单独验证,再推断系统整体可靠性
1.5 本书概要
- loigc
- FSM
第2章 预备知识
2.1 集合表示法
2.2 字符串和语言
2.3 图
图2.1中表示的是有向图的一个例子。节点的集合是{r1,r2,…,r9}。
所有的边如下:{(r1,r2),(r2,r3),(r3,r1),(r2,r5),(r3,r4),(r4,r4),(r5,r6),
2.4 计算复杂度和可计算性
Turning Machine
- 确定性模型
- 非确定性模型
复杂度指标
- 空间/时间
- 度量(多项式,指数)
- 确定性/非确定性
2.5 扩展阅读
第3章 逻辑和定理证明
- 语法:规定如何写合法/良序的公式
- 语义:规定每个公式的明确含义
3.1 一阶逻辑
first order loigc
- domain
codomain
first order: 公式中所有变元的值域为一常量domain
- second order: 变元可为简单变元或集合变元
集合变元x:x的取值可以是对象的集合
3.2 项(term)
signature G=(V,F,R)
- 集合V,F,R两两不相交
- V:变元集合
- F:函数集合
- R:关系集合
arity(元数):参数的个数。 加法函数add()的元数为2,
sine()函数的元数为1
项:函数和变元所构造的表达式。
例如,令v1为一变元,zero和one为常量,add为二元函数符号,
则add(one,one)和add(add(one,one),v1)为项
BNF
term:=var|const|func(term,...terms)
- var: 变元
- func:函数
- const:常量
论域 D : 一个值的集合
结构
- G=(V,F,R) : signature
- D: 论域
- F:函数集合
- R:关系集合
- 映射 f:F∪R→F∪R :
Examples:
- 符号sub: 可由f映射到整数域的减法
- +:
+
本身只是一个语法对象,通过f映射赋予加法含义
3.2.1 赋值和解释
assignment: 将变元集合V中变元映射到论域D中值,记作: α:V→D
Examples:
设D为整数集,变元集合V={v1,v2,v3};可设一赋值为 α={
v1↦3,v2↦0,v3↦−5}
- term(G): signature G上所有项。
- Tα:term(G))↦D : 语义解释(semantic interpretation),将每个项映射为论域中值。
递归定义:
Example:
整数域和赋值 α={ v1↦2,v2