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 系统建模工具的主要内容,如果未能解决你的问题,请参考以下文章