UML для многопоточного потока данных - PullRequest
3 голосов
/ 14 июня 2011

Я хочу нарисовать диаграмму, на которой вы можете видеть поток данных Java-программы, и если есть один или несколько потоков, обрабатывающих данные.

Диаграммы последовательности не показывают многопоточность и очень запутаны, когда у вас более 5 разных сущностей.

Диаграммы классов хороши для отображения отношений, но поток данных отсутствует.

Я бы хотел нарисовать коробки (например, схему классов / пакетов) и соединить их. Может быть, двойная коробка и ... между ними показывают, что может быть несколько потоков.

Какую диаграмму имеет UML для этого типа диаграммы потока данных?

Какой редактор хорош для этой диаграммы? Если возможно бесплатное программное обеспечение или открытый исходный код.

Ответы [ 4 ]

5 голосов
/ 14 июня 2011

Я бы посмотрел на диаграмму активности UML для отображения нескольких потоков и их параллельного выполнения. На диаграммах связи вы также иногда видите буквы потоков (например, A, B, C), чтобы попытаться обозначить параллельные потоки, но я почти всегда нахожу это запутанным. В UML 2 есть фрагменты, которые могут помочь показать параллелизм в диаграммах последовательности, но я всегда нахожу это громоздким и трудным для рефакторинга диаграмм (что означает, что они быстро устаревают).

Если потоки выполняют те же задачи, но работают параллельно, вы можете просто добавить примечание к диаграмме, чтобы объяснить это. Таким образом, вы можете сосредоточиться на моделировании одного потока точно и чисто.

Что касается того, какой инструмент использовать в большинстве IDE, в некоторой степени будет включен инструмент моделирования UML, например, Я счастлив использовать инструменты на основе EMF, которые поставляются с Eclipse.

4 голосов
/ 14 июня 2011

Диаграммы последовательности имеют обозначения как для параллельных операций, так и для асинхронных вызовов и являются подходящим средством отображения вашего потока данных.

enter image description here

enter image description here

2 голосов
/ 14 июня 2011

Зависит от проблемы, но я бы, вероятно, пошел с диаграммой активности, чтобы описать последовательность событий: http://www.agilemodeling.com/style/activityDiagram.htm

Тогда, возможно, набор диаграмм последовательности, чтобы захватить взаимодействия на уровне класса для каждогоиз этих шагов.

В качестве альтернативы, вы можете посмотреть на последовательное описание последовательности (подумайте, итерация массива в цикле) и просто отметить, что итерация должна быть распараллелена в реализации.

0 голосов
/ 18 апреля 2012

Чтобы показать многопоточность, вы можете использовать разные цвета для показа.

Для экс-красного - одна нить, а для синего - другая нить

...