Как мне моделировать интерфейс сообщений между двумя классами c ++ (в разных потоках) в UML?

Что у меня есть:

  • Два разных класса, которые находятся в разных потоках (скажем, classA и classB).

  • Они ничего не знают друг о друге (без включений / пересылок).

  • Когда classA завершил что-то, он отправляет сообщение (маршрутизация обрабатывается в другом месте), и classB получает его.

Это все на самом деле. На моей диаграмме классов я хочу показать, что между classA и classB есть сообщения, проходящие между ними (то есть могут общаться) и что они находятся в разных потоках.

Возможно ли это на диаграмме классов UML? — есть ли синтаксис «общается»?
Если UML этого не делает, я просто создам свой собственный метод, чтобы показать это, но если есть какой-то стандарт, я тоже могу его использовать!

1

Решение

Для изображения потоков вы можете использовать диаграммы действий, диаграммы взаимодействия последовательностей и / или диаграммы состояний.

  • Диаграммы действий — Позволяет разветвляться и указывать
    параллелизм / синхронизация с использованием БАР и линии использования.

  • Диаграммы взаимодействия последовательностей — позволяют указать параллельные
    поведение в последовательности путем бокса параллелизуемое поведение с
    ярлык «пар»

  • Диаграмма состояния — Диаграмма состояния так же, как действие позволяет
    параллелизм с использованием BAR и строк использования.

Изображение иллюстрирует шаблон «потребитель / производитель» на диаграмме активности UML:

введите описание изображения здесь

Modeling_Java_Threads_in_UML

2

Другие решения

Возможно ли это на диаграмме классов UML? — есть ли синтаксис «общается»?

Просто поместите заметки или (стереотипную) зависимость. Невозможно выразить это в диаграмме классов UML. Диаграммы классов по своей сути предназначены не для отображения поведенческих аспектов, а для структуры и статических отношений типов классов.

Хорошими типами диаграмм для представления параллельного поведения в вашей системе являются диаграммы действий или состояний.

ОБНОВИТЬ
Хотя один разумный, соответствующий стандарту UML способ помечать классы как работает в отдельных потоках, это объявить их как «активный класс»:

Активный объект — это объект, который, как прямое следствие своего создания, начинает выполнять свое поведение классификатора и не прекращает работу, пока не будет выполнено либо полное поведение, либо объект не будет завершен каким-либо внешним объектом. (Это иногда называют «объектом, имеющим собственный поток управления».) Точки, в которых активный объект реагирует на сообщения от других объектов, определяются исключительно поведением активного объекта, а не вызывающим объектом. Если поведение классификатора активного объекта завершается, объект завершается.

Спецификация надстройки UML, v2.1.1, с. 438

Это отображается так:
'Active Class' notation visual representation

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

Для диаграмм действий / состояний вы можете думать о таких асинхронных взаимодействиях сообщений в терминах Signal а также Event элементы.

2

По вопросам рекламы [email protected]