formal model

Formal Model

形式化模型

所属分类

是软工开发模型中的一种,也可以称为形式化方法模型,与之相关的有形式验证。关于软件开发模型,不懂请点这里软件开发模型

推荐学习路线

  1. 软件开发模型(稍微了解下什么是瀑布模型,迭代模型即可)
  2. 形式化模型 (重点掌握)
  3. 形式验证(作为补充和延伸)

概念

形式化模型的主要活动是生成计算机软件形式化的数学规格说明。形式化方法使软件开发人员可以应用严格的数学符号来说明、开发和验证基于计算机的系统。

形式化方法原则上就是用数学与逻辑的方法描述和验证软件。从描述上讲,一方面是系统或程序的描述,另一方面是性质的描述。这些可以用一种或多种语言来描述。这些语言包括命题逻辑,一阶逻辑,高阶逻辑,代数,状态机,并发状态机,自动机,计算树逻辑,线性时序逻辑,进程代数, π-演算, μ-演算,特殊的程序语言,以及程序语言的子集等。从验证来讲,主要有两类方法,一类是以逻辑推理为基础,另一类则以穷尽搜索为基础。逻辑推理有 natural deduction, sequent calculus, resolution 以及Hoare-logic 等方法,穷尽搜索方法统称为模型检测。这类方法与系统或程序以及系统性质的表示有很大的关系,比如说符号模型检测,其基本原理是用命题逻辑公式表示状态转换关系,用不动点算法计算状态的可达性以及这些状态是否满足某些性质。

特点

开发者通过使用一个严格的数学符号体系来描述、开发和验证基于计算机的系统。

使用形式化方法能够更容易发现和纠正二义性、不完整性和不一致性等其他软件过程模型难以克服的问题。它不是依靠特定的评审,而是应用数学分析的方法。在设计阶段,形式化方法是程序验证的基础,使软件开发人员能够发现和改正一些往往被忽略的问题。

局限性

开发很费时、昂贵。

具备所必须背景的开发者太少。

对于技术水平不高的客户,很难用这种模型进行沟通。

存在原因

尽管有这些疑虑,软件开发者中还是有很多形式化方法的追随者,比如有人用其开发高度关注安全性的软件(如飞行器和医疗设施),或者开发出错将导致重大经济损失的软件。虽然不是一种主流的方法,形式化方法的意义在于可以提供无缺陷的软件。应用场景有下:

  1. 安全性、可靠性至关重要时
  2. 软件发生错误会导致严重经济损失时

总结

以上只是要点,要想深入了解,请移步软件形式化方法概述(强烈推荐,总结很好)以及对应的教程《软件开发的形式化方法》(古天龙著)

参考资料

1.UML(一)——面向对象方法与软件过程模型

2.形式化方法模型

3.软件开发模型

4.软件形式化方法概述

5.The formal modeling lectures of toronto edu