【问题标题】:Purpose of Alloy models?合金模型的用途?
【发布时间】:2016-12-21 11:23:16
【问题描述】:

为什么要使用合金创建模型?

我相信我知道答案,但我想和你确认一下。

我们使用 Alloy 创建模型,因为我们想验证模型是否适用于某些属性。请允许我举几个例子来说明我的意思:

  1. 我们创建了一个交通灯系统的合金模型,因为我们想要验证交通灯系统永远不会在一个路口同时有两个绿灯(在垂直方向上)。通过构建合金模型并使用合金分析仪对其进行检查,我们可以验证交通信号灯系统是否安全。
  2. 我们创建了一个领导选举协议的合金模型(在一堆分散的、通信的进程中,一个进程被选举为领导者),因为我们想要验证协议是否会导致恰好选举一个进程作为领导者。
  3. 我们创建了酒店运营的 Alloy 模型,因为我们想要验证不会有未经授权的人进入任何房间。

这些示例说明了我们创建合金模型的原因:因此我们可以验证某些属性是否成立。在创建合金模型并验证所需属性是否成立后,如果我们忠实地实现模型,那么我们可以确信系统将具有所需属性。这就是我们创建合金模型的原因。你同意吗?还有什么要补充的吗?

【问题讨论】:

    标签: alloy


    【解决方案1】:

    我认为 Alloy 的主要原因是提供一种建模语言。在 Alloy 中,您可以定义问题或算法的核心结构。由于该工具可以提供有关此模型的反馈,因此您可以快速了解您最初对问题的误解。

    其次,它是一种规范语言。例如,如果您查看 Javadoc,那么您会看到 API 的语义是 cmets。在 Alloy 中,您实际上可以以无法以不同方式解释的方式定义更多这些语义。陈述不变量和后置条件很容易。例如,在a blog post 中,我在Java Map 中定义了一些操作。有趣的是,对此建模显示了空键和值方面对于 Java 映射的重要性。这在 Javadoc 中几乎没有提及。

    最后,您可以使用 Alloy 来检查系统的属性,如您所指出的。我最近确实发现了一个使用 Alloy 并发问题的案例。然而,一般来说,一旦你找到它,你就可以将它应用到模型中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多