Есть ли способ указать действие на диаграмме классов, которое происходит во время выполнения - PullRequest
0 голосов
/ 29 февраля 2020

Вопрос

Если существует способ записи действий или поведения в диаграмме классов, если это возможно, например, создание ссылок во время выполнения для ассоциаций или обновление состояний объектов.

Фон

В моем понимании диаграмма классов предназначена для захвата отношений stati c, таких как класс X, имеет класс-Y в качестве члена или имеет ссылку на класс Z. Следовательно, я предполагаю захват действий во время выполнения или поведения не должны быть в диаграмме классов, но мне интересно, может ли быть способ внедрить знания о том, что происходит во время выполнения, среди объектов классов.

Например, в диаграмме, где Я пытаюсь захватить AWS ECS ER.

  • Docker Демон создает связь между Контейнерный сетевой интерфейс и Сетевой интерфейс хоста с docker командой запуска " publi sh port ".

  • Агент ECS отправляет команду Docker Daemon через Docker Сокет , но между ними нет прямой связи и ссылки.

  • Агент ECS связывается с Планировщик ECS , но агент ECS не знает напрямую о планировщике ECS, пока агент не присоединится к кластеру и не получит информацию.

  • Планировщик ECS обновляет ELB Целевая группа для пересылки сетевого трафика c на хост-интерфейс .

Пожалуйста, предложите способ UML, с помощью которого я могу перехватить "publi sh port "или" update TargetGroup "в диаграмме классов, если таковые имеются.

enter image description here

Другие

Пожалуйста, исправьте, если возникли ошибки или неправильное использование обозначений на диаграмме. Это было бы высоко оценено.

Ответы [ 2 ]

1 голос
/ 01 марта 2020

UML довольно плохо интегрирует моделирование классов с моделированием поведения (то есть события / действия).

Однако вполне естественно моделировать действия активных объектов (типа A) в форме операции в соответствующем классе A.

Затем вы можете express их эффекты (например, изменение значения свойства объекта или создание новой ссылки)

  1. с помощью постусловий OCL или
  2. в связанной диаграмме действий, где прямоугольники действий / действий соответствуют операциям в диаграмме классов.

При использовании диаграммы действий вы можете использовать разделы (или «плавательные дорожки»). ') для представления ваших активных объектов.

1 голос
/ 29 февраля 2020

Два ответа (о поведении):

  • Да, вы можете сделать, чем.

  • Нет, вы не должны этого делать.

И что? Диаграммы классов предназначены для показа отношений между классами. Причина ассоциаций между классами существует только по причине дизайна. У архитектора есть ощущение, что из-за описанного (прецедентного) поведения все должно быть именно так. Когда это решено (хотя и не конкретно), вы моделируете различное поведение (с помощью диаграмм действий или последовательностей), которые иллюстрируют определенные взаимодействия, реализующие варианты использования. В связи с этим этапом проектирования может потребоваться адаптация отношений stati c. И это может снова повлиять на показанное поведение. Или даже может прийти к выводу, что действия варианта использования должны быть адаптированы (и даже может быть доказано, что требование не реализуемо тем или иным способом, потому что ...).

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

Лучшим способом было бы разместить соответствующую часть дизайна класса stati c дополнительно на SD или AD. Согласно UML spe c вы можете (и должны) смешивать все элементы UML на всех диаграммах (если это помогает сообщить причины проектирования).


Для портов: вы будете показывать их на диаграммах компонентов , Порт является элементом для компонента и показывает интерфейсы. Они обычно делегируются классам внутри компонента, реализующим или требующим интерфейсы. Вы будете показывать порты в виде небольших квадратов на границе. Я не видел их в операционном отделении (это, вероятно, неправильно). Если текстовый, вам понадобится отдельное отделение, помеченное как «список портов» или тому подобное. Просто помещать их в один ряд с атрибутами не правильно.

...