-
一个模型,从广义上来说,可以被认为是一个系统“在纸上”的描述,或者是一个“虚拟”系统。这与“真实”系统形成对比,后者可以被认为是一个物理组件例如一辆汽车、一个医疗设备、一个Java程序或一个股票市场。将Java程序或股票市场描述为“实体”可能看起来很奇怪;然而,抛开哲学上的考虑,大多数人会同意这些系统是具体而真实的,足以直接影响我们的生活。模型也影响我们的生活,但是是以一种更间接的方式,正如我们下面讨论的那样。
-
模型的类型由其用途定义。现有系统的模型通常被简称为“模型”,而尚未建立的系统模型可以被称为“规范”或“设计”。有些模型是用开放解释的非形式化符号编写的,而另一些是用具有数学语义的语言编写的,被称为“形式化模型”。最重要的是,模型很少完整刻画一个系统,因为大多数系统的绝对规模和复杂性使得这成为一项不可能的任务。因此,模型通常只关注系统的“相关”部分和或系统的特定方面。例如,同时涉及硬件(HW)和软件(SW)的系统模型可能只关注软件部分;或者一个模型只关注通信系统的逻辑方面,例如通信协议,而忽略其他方面,例如性能(例如吞吐量、延迟)或能耗。
-
一直以来模型对于我们的生活都至关重要。人类以及许多其他生物需要在他们的大脑中形成外部世界如何运行起来的内部特征,这些可以看作模型。而更接近本书的重点的是工程和技术严重依赖数学模型。事实上,设计和构建系统的任务与各种建模任务密切相关。规范模型用于在不同的工程团队之间交流系统的目标和需求。建立详细的设计模型是为了在系统构建之前对其行为进行评估。这对于避免建造有缺陷的系统的成本和危险是至关重要的。在一个系统建立后,为了操作和维护系统,校准和调整系统,监控异常行为,并最终升级系统,模型仍然是必不可少的。
-
本章的目标是阐明系统建模中的关键问题,通常是形式验证,特别是模型检测。因为有这么多不同类型的系统和应用领域,有不同的关注点,甚至在形式化验证领域也有许多种建模语言、形式和工具以及建模技术、用途和方法。对这些进行彻底的说明超出了本章的范围;对这些语言或工具的描述可能需要一整本书。相反,这一章有三个更可描述的目标。首先,我们试图提供一个在为验证而建模系统时必须考虑的主要问题的概述。这些问题涉及建模语言的选择或设计以及模型创建的步骤。其次,我们介绍一种简单的建模语言,SML,说明选择或设计建模语言所涉及的问题。SML使用一种抽象的状态机形式,它基于转换系统表示捕获广泛使用的语言的关键特征,并且可以将手册中介绍或使用的建模语言绑定在一起。通过引入SML,我们还寻求简化从业者使用的真实语言(比如说,虚拟语言、Simulink或C语言)和模型检测中使用的各种底层形式(例如,自动机或克里普克结构)之间的联系。最后,本章通过从三个不同领域(硬件、软件和网络物理系统)提取的例证,展示了SML模型创建的关键步骤。
-
系统建模主要考虑的因素
-
模型的建立有不同的原因。需要强调的是,模型主要是用于实现特定目的的工具。它们是达到目标的手段,而不是目标本身。因此,模型“好”或“坏”的概念本身没有什么意义。对于某个目标来说,检查一个模型是否好更合适。例如,模型对于估计系统的吞吐量可能是好的,但是对于检查系统是否有死锁是无用的,反之亦然。——所以对于一个模型,我们更要关注的是模型对于达成目标是否更有效果。
-
在选择一种好的建模形式和语言时,一般的形式验证,特别是模型检测通常要考虑以下几个主要因素:
-
系统的类型:基于被建模系统的特性,已经开发了不同的建模形式。 一些更常见的形式包括:
-
所需建模的内容类型
-
关于环境的相关信息
-
抽象的层次
-
清晰程度和模块化程度
-
构成模型的形式
-
计算引擎以及建模和表达的实际简易性
阅读Model Checking笔记手册 第三章 模型验证
最新推荐文章于 2022-10-12 23:25:27 发布