Erlang 系统建模工具

Posted

技术标签:

【中文标题】Erlang 系统建模工具【英文标题】:Tools for modeling Erlang systems 【发布时间】:2010-11-26 17:22:26 【问题描述】:

对于建模 OO 系统,一个常用工具是类图。在 Erlang 中,重点是进程而不是类。您使用什么工具对 Erlang 系统和进程之间的交互进行建模?

【问题讨论】:

【参考方案1】:

我一直在“尝试”将双图作为模型工具进行销售。一个二合图被定义为:

称为链接图的超图。它有一个顶点进程和作为这些之间的超边通信。在超图中,一条边可以在任意数量的进程之间移动,而不仅仅是两个。实际上,该图映射了程序中的通信渠道或通信路线。 “谁在和谁说话”。示例:

具有相同顶点的树称为位置图。这形成了进程所在的主管层次结构。换句话说,它映射了每个进程的责任。在树中越往下,它就越不稳定。根附近的进程通常是那些处于 state 并且必须受到保护的进程。示例:

我确实希望这将为您提供一种可视化和处理 Erlang 程序的方法。如果有任何不清楚的地方,请随时督促我。

【讨论】:

如何区分链接图中的同步与异步通信?那些虚线是发送还是 gen_casts,实线是 gen_calls? 我想你可以对这些信息进行编码,但虚线只是通过套接字或更高级别的 HTTP 客户端库与“外部”世界进行通信。您可以通过添加小箭头来使图表有方向 - 没有给它太多时间或思考。 超图看起来很适合描述整个系统。感觉几乎就像一个类图,但使用模块名而不是类名。 它与协作图有一些相似之处 - 但我犹豫是否先写。【参考方案2】:

Sequence diagrams 可以成为可视化流程和消息流以及它们之间的控制的好工具。我似乎记得它们实际上存在于 UML 之前。

【讨论】:

序列图似乎是可视化某个用例的好方法,但它并没有提供整个系统的概述。感谢罗伯特的回答以及您上周举办的精彩课程! 哦,这是我发现的用于编写序列图的最佳工具:websequencediagrams.com【参考方案3】: 用于 FSM 建模 (OTP) 的 SDL - 尽管代码也同样易于阅读。 主管树的双图 MSCs 用于进程和/或应用程序之间的消息序列

【讨论】:

【参考方案4】:

最近才发现这一点,尽管它在 2011 年在 Erlang mailing list 上被提及。

基本建模概念 (FMC): http://fmc-modeling.org/

它旨在为软件系统建模,并且似乎处于完全正确的抽象级别。整个符号仅包含在 three different diagram types 中。看看这个漂亮的符号(petri-net 图类型):

他们还提供了一个很好的演示,比较 FMC 和 UML here。

【讨论】:

以上是关于Erlang 系统建模工具的主要内容,如果未能解决你的问题,请参考以下文章

基于UML的毕业选题系统建模研究

软件开发工具(第14章:常用建模工具)

UML建模之 - 类图&时序图

体系设计建模系统软件解决方案

CPN Tools 形式化建模分析工具

UML建模工具