形式化方法是基于严密的、数学上的形式机制的计算机系统研究方法。
形式化方法(FM-Formal Method)知识体系中的6个知识领域为:
① 基础(Foundations);
② 形式化规格(Formal specification paradigms);
③ 正确性验证及演算(Correctness, verification and calculation);
④ 形式化语义(Formal semantics);
⑤ 可执行规格支持(Support for executable specification);
⑥ 其他(Other Topics)。
6个知识领域包括15个知识子领域或者知识单元:
FM01形式化方法的集合理论/拓扑基础(Set-theoretic/topological foundations of Formal Methods);
FM02 形式化方法的逻辑基础(Logical foundations of Formal Methods);
FM03 形式化方法的类型理论基础(Type-theoretic foundations of Formal Methods);
FM04 形式化方法的代数基础(Algebraic foundations of Formal Methods);
FM05 面向性质规格(Property oriented specification);
FM06 面向模型规格(Model oriented specification);
FM07 多范式规格(Multi-paradigm specification);
FM08 构造正确性(Correct by construction);
FM09 验证正确性(Correct by verification);
FM10 机器检验正确性(Correct by machine checking);
FM11 求精技术(Refinement techniques);
FM12 程序语言语义(Programming language semantics);
FM13 形式化分布式、并发、移动(Formalizing distribution, concurrency and mobility);
FM14 声明式程序设计(Declarative programming);
FM15 其他。
形式化方法的分类:
根据说明目标软件系统的方式,形式化方法可以分为两类:
1)面向模型的形式化方法。面向模型的方法通过构造一个数学模型来说明系统的行为。
2)面向属性的形式化方法。面向属性的方法通过描述目标软件系统的各种属性来间接定义系统行为。
根据表达能力,形式化方法可以分为五类:
1)基于模型的方法:通过明确定义状态和操作来建立一个系统模型(使系统从一个状态转换到另一个状态)。用这种方法虽可以表示非功能性需求(诸如时间需求),但不能很好地表示并发性。如:Z语言,VDM,B方法等。
2)基于逻辑的方法:用逻辑描述系统预期的性能,包括底层规约、时序和可能性行为。采用与所选逻辑相关的公理系统证明系统具有预期的性能。用具体的编程构 造扩充逻辑从而得到一种广谱形式化方法,通过保持正确性的细化步骤集来开发系统。如:ITL(区间时序逻辑),时段演算(DC),hoare 逻辑,WP演算,模态逻辑,时序逻辑,TAM(时序代理模型),RTTL(实时时序逻辑)等。
3)代数方法:通过将未定义状态下不同的操作行为相联系,给出操作的显式定义。与基于模型的方法相同的是,没有给出并发的显式表示。如:OBJ, Larch族代数规约语言等;
4)进程代数方法:通过限制所有容许的可观察的进程间通信来表示系统行为。此类方法允许并发进程的显式表示。如:通信顺序进程(CSP),通信系统演算 (CCS),通信进程代数(ACP),时序排序规约语言(LOTOS),计时CSP(TCSP),通信系统计时可能性演算(TPCCS)等。
5)基于网络的方法:由于图形化表示法易于理解,而且非专业人员能够使用,因此是一种通用的系统确定表示法。该方法采用具有形式语义的图形语言,为系统开发和再工程带来特殊的好处。如 Petri图,计时Petri图,状态图等。