形式化方法
为了让系统表现的和规范(specification)一致,现代软件工程采用了一系列的形式化方法。其中包括一些强有力的框架,例如,霍尔逻辑(Hoare logic),Algebraic specification language(Specification language),模态逻辑(Modal logic),指称语义(Denotational semantics)。它们虽然功能强大,但是对程序员来说门槛较高。
另一方面,还有一些轻量级的技术,可以被植入编译器,连接器或程序分析器中,进行自动校验。从而,那些不熟悉底层理论的程序员也可以使用它们。模型检测(Model checking),运行时验证(Runtime verification)和类型系统(Type system)是常见的轻量级形式化方法。其中类型系统最流行,发展最完善。
- 类型系统:是通过程序的每个组成部分的计算值对组成部分进行分类,证明程序的某种不好的行为不会发生的一种形式化方法
形式化验证
指采用形式化方法对计算机软件或硬件进行验证的过程。而形式化方法是基于严格的数学基础,对计算机硬件和软件系统进行描述,开发和验证的技术。
- 定理证明(theorem proving)
- 模型检验(model checking)