【问题标题】:UML for multithreading dataflow用于多线程数据流的 UML
【发布时间】:2011-09-14 18:55:50
【问题描述】:

我想画一张图,您可以在其中看到 java 程序的数据流,以及是否有一个或多个线程处理数据。

当您拥有超过 5 个不同的实体时,序列图不会显示多线程并且会变得非常混乱。

类图可以很好地显示关系,但缺少数据流。

我想画盒子(比如类/包图)并将它们连接起来。也许有一个盒子翻了一番,... 在两者之间表明可以有多个线程。

对于这种数据流图,UML 有什么图?

哪个编辑器适合该图表?如果可能的话,免费软件或开源软件。

【问题讨论】:

    标签: java uml class-diagram sequence-diagram dataflow


    【解决方案1】:

    我会看一个显示多个线程及其并行执行的 UML 活动图。在通信图上,您有时还会看到线程字母(例如 A、B、C)来尝试表示并发线程,但我几乎总是觉得这令人困惑。 UML 2 中有一些片段可能有助于在序列图中显示并发性,但我总是觉得这很麻烦并且图很难重构(这意味着它们很快就会过时)。

    如果线程正在执行相同的任务,但并行运行,您可以在图表中添加注释来解释这一点。这样您就可以专注于准确、干净地建模单个线程。

    关于使用哪种工具,大多数 IDE 都会包含一定程度的 UML 建模工具,例如我很高兴使用 Eclipse 附带的基于 EMF 的工具。

    【讨论】:

      【解决方案2】:

      序列图确实有两个 parallel operations and asynchronous 调用的符号,并且是显示数据流的合适方法。

      【讨论】:

      • 不错!这让我想起了这个awesome site我曾经做过类似的图表
      • 还要增加对 WSD 的喜爱
      【解决方案3】:

      取决于问题,但我可能会使用活动图来描述事件的顺序: http://www.agilemodeling.com/style/activityDiagram.htm

      然后可能是一组序列图来捕获每个步骤的类级交互。

      或者,您可以查看串行描述序列(想想在循环中迭代数组)并注意迭代应该在实现中并行化。

      【讨论】:

        【解决方案4】:

        要显示多线程,您可以使用不同的颜色来显示。

        ex red 显示一个线程 蓝色表示不同的线程

        【讨论】:

        • 非标准但视觉上可以非常具有描述性。
        【解决方案5】:

        如果您想可视化多个线程的状态(就像许多分析器所做的那样),请查看PlantUML timing diagrams。它不是显示许多线程间通信的理想工具,但非常适合显示线程状态之间的转换:

        【讨论】:

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