1. 概念
形式化方法可以分为形式化描述和建立在形式化描述基础之上的形式化开发。形式化的描述就是用形式化的语言(具有严格的语法语义定义的语言)做描述。形式化的软件开发,就是用形式化的语言来描述软件需求和特征,并且通过推理验证来保证最终的软件产品是否满足这些需求和具备这些特征。这样的验证当然得建立在严格的语法语义的基础之上的。在实际应用中,这是不容易做到的。形式化方法研究的目的就是希望能够提供更好的理论、方法和工具,扩大形式化方法的应用范围和使用价值。
2.分类
1)面向模型的形式化方法。面向模型的方法通过构造一个数学模型来说明系统的行为。
2)面向属性的形式化方法。面向属性的方法通过描述目标软件系统的各种属性来间接定义系统行为。
3.优点
(1)形式化说明以逻辑精确性为特色, 除去了在非形式化说明中不可避免的大部分含糊不清的描述, 这种精确性为开发人员与用户对需求的一致性理解, 及需求的正确执行提供了更大的可能性。
(2)形式化证明通过对需求分析中所描述的系统行为提供逻辑的精确论证, 除去了需求分析中的模糊性和主观性。
(3)通过形式化说明和证明实现了系统的重复分析、一致性分析以及一个较少依赖特定分析者技术和毅力的分析过程。
(4)形式化说明和证明可以通过“裁剪”以适合于给定的项目及技术要求, 也就是说能被调整以满足具体项目的需要。
(5)形式化说明和证明能够应用于任何开发阶段, 包括目前最需要分析方法的开发早期, 越早发现和确定错误比晚一些发现付出的代价要小的多。
(6)形式化说明和证明是基于计算机的工具所支持, 这使得一致性检查和证明等实现了自动化, 提高了系统的可靠性, 减少了在分析方面的费用。同时, 这些工具容许证明能够被重复执行而大大增强了分析的重复性。
4.特点
形式化方法的特点:
从研究角度来讲,形式化方法是一个重要的研究领域,
从应用角度来讲,目前能做的事有限,应用面窄、有较大局限性,比如:
a. 形式化描述的困难
b. 抽象度适当的形式化描述的困难
c. 模型检测的局限
5.基本思想
用形式化规约语言精确地描述软件规约说明,然后由支持形式化的工具完全自动化或半自动化地转化为可执行代码。
5.意义
形式化方法的意义在于它能帮助发现其它方法不容易发现的系统描述的不一致,不明确或不完整,有助于增加软件开发人员对系统的理解,因此形式化方法是提高软件系统,特别是safety-critical系统的安全性与可靠性的重要手段.