Alloy和UML的关系?

Relationship between Alloy and UML?

我开始学习 Alloy 并且非常喜欢我所看到的。

在鼓励同事们和我一起学习和使用Alloy之前,我需要了解一下Alloy和UML的关系。

  1. Alloy是UML的替代品吗?如果用了Alloy,那么就不用用UML了?
  2. Alloy 是 UML 的补充吗?推荐的做法是同时使用 Alloy 和 UML 吗?
  3. Alloy 与 UML 正交吗? Alloy 和 UML 的目的完全不同?
  4. 在功能方面,Alloy 是 UML 的超集吗?根据我的阅读,我了解到使用 Alloy 语言可以表达很多约束,然后 Alloy 中的 SAT 工具可以根据模型(使用 Alloy 创建)检查约束。我 "think" UML 工具,例如 MagicDraw, 具有表达约束和根据约束评估 UML 模型的等效能力 -- 正确吗?

一般来说,如果您能告诉我任何关于 Alloy 和 UML 之间的关系(或缺乏关系)的信息,我们将不胜感激。

谢谢。

Alloy 可与 UML class 图相媲美,并使用 UML 的约束语言 OCL 进行扩充。它不会取代 UML 的其他图表。

我建议使用 Alloy 对数据进行建模并在较高级别对行为进行建模。例如,参见 Alloy website。您始终可以将 Alloy 模型转换为 UML 图。

Alloy 旨在提供 — 精确、简洁的数据丰富设计模型 — 全自动分析

UML 图的表现力不足以进行详细建模。 UML 约束语言 OCL 确实涵盖了与 Alloy 相同类型的细节,但没有相同程度的自动化支持。

Alloy中的约束不是为了检查图表的结构,而是为了实际建模系统并表达其属性(然后您可以检查系统是否满足这些属性)。 Alloy在表达能力上与OCL无可比拟:OCL在处理算术方面更具表现力,但它缺乏传递闭包,例如。

我对 UML/OCL 研究不是很了解,所以也许那个领域的人可以插话,但我可以建议您从 Martin Gogolla 小组的工作开始了解更多信息,例如作为 Mark Richters 关于 OCL 语义的论文。

如果您搜索 "Alloy and UML",您会找到一堆关于从 UML 自动翻译到 Alloy 的论文,以及比较论文,例如 this one. We also wrote a paper 返回 OCL 和 Alloy 这可能会批评 OCL 在 Richters 等人的工作中已修复的问题