Какую диаграмму UML следует использовать для документирования системной архитектуры, управляемой сообщениями, которая использует EIP?

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

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

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


person 8bitjunkie    schedule 11.04.2019    source источник
comment
Определить прием сигналов в интерфейсах.   -  person Jim L.    schedule 12.04.2019
comment
Спасибо за предложение. Однако разве сигнал не является событием, а не средством? Я хочу иметь возможность рисовать микросервисы и каналы сообщений, которые они публикуют и на которые подписываются.   -  person 8bitjunkie    schedule 12.04.2019
comment
Для этого вы можете соединить порты вместе.   -  person Jim L.    schedule 12.04.2019
comment
Вы имеете в виду порты между компонентами на диаграмме компонентов? Будет ли семантически допустимо рисовать канал сообщений в качестве промежуточного компонента? Самое близкое, что я нашел, это то, что напрямую связывает микросервисы creately.com/diagram/ пример/il431k3q1/   -  person 8bitjunkie    schedule 12.04.2019


Ответы (3)


Когда вы говорите EIP, я предполагаю, что вы имеете в виду Шаблоны корпоративной интеграции, т.е. разнообразный набор шаблонов для интеграции корпоративных приложений, таких как Маршрутизатор сообщений, Посредник сообщений, Канал сообщений, Вызов службы и так далее, как описано в нескольких популярных книгах и газетах. Если это так, то ваша ссылка на шаблон Канал сообщений имеет смысл, и я думаю, что понимаю, что вы имеете в виду.

UML — это набор языков общего назначения, который можно использовать для представления многих различных аспектов вашей архитектуры, поэтому ответ на ваш вопрос зависит от того, что вы пытаетесь показать и на каком уровне абстракции. Если вы сосредоточены на обмене сообщениями (время сообщений, порядок и т. д.), вам нужно использовать один из поведенческих языков в UML; если вы хотите представить сообщения (структуру, типы, содержимое и т. д.), вы можете сделать это с помощью структурного языка. Ответ от 8bitjunkie предлагает диаграммы связи для поведенческой стороны, но вы также можете использовать диаграммы последовательности, диаграммы активности и диаграммы состояний в зависимости от вашего внимания / потребностей. Диаграммы последовательности позволяют более четко определить временные аспекты, чем диаграммы связи. Для структуры сообщений я бы рекомендовал диаграммы классов. UML также можно расширить с помощью тегированных значений и стереотипов, чтобы включить гораздо большую специфичность и добавить структурированные детали, если хотите; нет никакого реального ограничения на структурированную информацию, которую вы можете зафиксировать в модели UML.

person muszeo    schedule 12.04.2019
comment
поведенческий/структурный язык не подходит. UML — это язык. А поведенческие/структурные — это всего лишь предложения языка. Просто используйте для этого идиому диаграммы. - person qwerty_so; 12.04.2019
comment
Достаточно справедливо, это правда. Что я (пытаюсь) передать здесь, так это то, что вы можете моделировать как поведенческие, так и структурные проблемы с помощью UML, и что то, что известно как EIP, может быть легко смоделировано с использованием UML. Первоначально «языки» UML были получены из нескольких источников/авторов, и, следовательно, моя интерпретация — по памяти того времени — состоит в том, что UML состоит из других языков. Но да, ты прав. - person muszeo; 12.04.2019

Из введения enterpriseintegrationpatterns.com:

Профиль UML для EAI [UMLEAI] расширяет семантику диаграмм взаимодействия для описания потоков сообщений между компонентами. Эта нотация очень полезна в качестве точного визуального описания системы, которая может служить основой для генерации кода в рамках архитектуры, управляемой моделями (MDA).

Диаграммы взаимодействия заменены в UML 2 на диаграммы связи.

Однако введение enterpriseintegrationpatterns.com продолжает:

Мы решили не принимать эту нотацию... {потому что} ...профиль UML не охватывает все шаблоны, описанные в нашем языке шаблонов.

На момент написания (апрель 2019 г.) похоже, что в последний раз профиль EAI для UML публиковался март 2004 г.. Это предшествует выдержкам из enterpriseintegrationpatterns.com, который, согласно предыдущей версии, был впервые опубликован в августе 2015 г..

Это говорит о том, что UML 2 плохо подходит для описания системных архитектур, управляемых сообщениями, которые воплощают EIP.

person 8bitjunkie    schedule 11.04.2019
comment
enterpriseintegrationpatterns.com — это всего лишь два автора, которые хотят продать свою книгу. Судя по тому, что я видел на предприятиях в прошлом, такого не бывает. Каждое предприятие индивидуально (не зря). А интегрировать что-либо в предприятие — это не то, о чем может рассказать книга. Использование UML, исходящего от (своего рода) команды по стандартизации, — это просто открытый подход (который для меня всегда хорошо подходил). Мои 2 цента. - person qwerty_so; 12.04.2019

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

Очередь сообщений можно смоделировать как отдельный компонент со стереотипом ‹‹queue>> или как интерфейс со стереотипом ‹‹queue>>. Моделирование очереди как отдельного компонента — лучший выбор, если очередь не принадлежит одной службе. Однако, если он принадлежит (только один сервис ставит/публикует сообщения на нем), то отдельный компонент-очередь загромождает диаграмму и лучше моделировать его как интерфейс, предоставляемый производителем сообщения и требуемый потребителями сообщения. .

person www.admiraalit.nl    schedule 12.04.2019