5

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

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

类图很适合显示关系,但缺少数据流。

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

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

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

4

5 回答 5

6

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

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

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

于 2011-06-14T15:02:06.253 回答
5

序列图确实具有并行操作和异步调用的符号,并且是显示数据流的适当方式。

在此处输入图像描述

在此处输入图像描述

于 2011-06-14T15:15:35.473 回答
3

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

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

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

于 2011-06-14T15:02:19.220 回答
0

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

例如红色显示一个线程和蓝色显示不同线程

于 2012-04-18T09:05:25.377 回答
0

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

于 2020-02-14T10:34:01.277 回答