形式化方法:
基于严格数学基础, 对计算机软(硬)件系统进行形式规约、开发和验证的技术.形式化方法一般可分为形式化规范说明和形式化验证。(在逻辑科学中是指分析、研究思维形式结构的方法。它把各种具有不同内容的思维形式(主要是命题和推理)加以比较,找出其中各个部分相互联结的方式,如命题中包含概念彼此间的联结,推理中则是各个命题之间的联结,抽取出它们共同的形式结构;再引入表达形式结构的符号语言,用符号与符号之间的联系表达命题或推理的形式结构。)
其中,
1、形式规约使用形式语言构建所开发的软件系统的规约, 它们对应于软件生命周期不同阶段的制品, 刻画系统不同抽象层次的模型和性质。
2、形式验证是证明不同形式规约之间的逻辑关系, 这些逻辑关系反映了在软件开发不同阶段软件制品之间的需要满足的各类正确性需求.包括定理证明(自动定理证明器、交互式定理证明器及证 明检验器),模型检测(时态模型检测和等价性检测)两部分。
3、在形式规约和验证的基础上, 形式化开发主要是构造、证明形式规约之间的等价转换和精化关系, 以系统的形式模型为指导, 逐步精化, 开发出满足需要的系统, 也称为构造即正确(correct by construction)的开发。
形式化方法的分类:
1、根据说明目标软件系统的方式分类
(1)面向模型的形式化方法:通过构造一个数学模型来说明系统的行为。
(2)面向属性的形式化方法:通过描述目标软件系统的各种属性来间接定义系统行为。
2、根据表达能力分类
(1)基于模型的方法
(2)基于逻辑的方法
(3)代数方法
(4)进程代数方法
(5)基于网络的方法
它与其他软件开发方法的主要区别在于:
1、其描述软件及其性质的语言是无歧义的。
2、构造和验证软件的方法是严格的。在软件工程中, 形式化方法提供了工程化系统设计的一种比较透彻的思维方式, 可以很好地支持抽象模型建立、系统精化、模型和证明重用; 形式化开发过程具有很好的可重复性, 相应的软件制品模型也具有较强的可分析性和可验证性.因而, 形式化方法可以有效地提高和保障系统的可信性。
优点:
形式化的规格说明可以用数学方法研究、验证,此外形式化的规格说明消除了而义性,而且它鼓励软件开发者在软件工程过程的早期阶段使用更严格的方法,从而可以减少差错。
缺点:
大多数形式化的规格说明主要关注与系统的功能和数据,而问题的时序、控制和行为等方面的需求却更难于表示。此外,形式化方法比欠形式化方法更难学习,不仅在培训阶段要华大量的投资,而且对某些软件工程师来说,它代表了一种“文化冲击”。