de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Диаграмма последовательности UML: визуализация времени и взаимодействия

Диаграмма последовательности UML — это важный инструмент для понимания динамического поведения системы. Она моделирует, как объекты взаимодействуют друг с другом и в каком порядке происходят эти взаимодействия, подчеркивая порядок сообщений во времени. Это критически важно для определения случаев использования, документирования вызовов API и отслеживания сложных потоков транзакций.

В этом руководстве вы пройдете основные элементы и методы моделирования диаграммы последовательности.

Основная структура и назначение

Диаграмма последовательности организована по двум осям:

  1. Горизонтальная ось: Показывает участвующие объекты (или участники, классы и компоненты).
  2. Вертикальная ось (ось времени): Представляет поток времени, движущийся вниз. Сообщения, отправленные ниже на диаграмме, происходят позже в последовательности.

Axis-of-sequence-diagram

Цель состоит в том, чтобы ответить на вопрос: «В этом конкретном сценарии (случае использования), в каком порядке эти объекты обмениваются информацией, чтобы достичь желаемого результата?»

Основные элементы диаграммы последовательности

Для моделирования последовательности вам нужны три основных элемента: жизненные циклы, сообщения и полосы активности.

А. Жизненные циклы (участники)

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

  • Обозначение: Прямоугольная рамка в верхней части диаграммы, содержащая имя объекта, с вертикальной пунктирной линией, идущей вниз.
  • Синтаксис:
    • ИмяУчастника (если объект является экземпляром, например, пользователь)
    • ИмяЭкземпляра: ИмяКласса (например, authService: AuthenticationService)
  • Цель:Пунктирная линия указывает на существование участника во времени в пределах последовательности.

lifeline

B. Сообщения (взаимодействие)

Сообщения — это горизонтальные стрелки, проведённые между линиями жизни. Они представляют собой обмен информацией между объектами, например, вызовы методов, сигналы или запросы API.

Messages-(Interaction)

Типы сообщений:

Тип сообщения Обозначение Описание
Синхронный вызов Сплошная линия с закрашенным наконечником стрелки Отправитель ожидает ответа перед продолжением. Это инициирует Блок активации на линии жизни получателя.
Ответ/возврат Пунктирная линия с открытым наконечником стрелки Ответ на синхронный вызов, указывающий на возврат управления отправителю. Обычно это закрывает блок активации.
Асинхронное сообщение Сплошная линия с открытым наконечником стрелки Отправитель не ждёт ответа и немедленно продолжает выполнение. Распространено в архитектурах, основанных на событиях.
Самовызов Стрелка, возвращающаяся на ту же линию жизни Объект вызывает один из своих собственных методов.
Сообщение-обнаружение Стрелка, начинающаяся от конечной точки и достигающая линии жизни Отправитель сообщения неизвестен или находится за пределами диаграммы (например, внешний триггер).

C. Блоки активации (спецификация выполнения)

Блок активации (также называемый фокусом управления) — это тонкий вертикальный прямоугольник, нарисованный на линии жизни.

  • Обозначение: Сплошной вертикальный прямоугольник на линии жизни.
  • Цель: Это обозначает период, в течение которого объект активно выполняет операцию (то есть его метод выполняется) или ожидает синхронного возврата. Он начинается, когда получено синхронное сообщение, и заканчивается, когда отправлено сообщение-ответ.

Моделирование логики и управления потоком

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

А. Комбинированные фрагменты

Комбинированные фрагменты позволяют моделировать условную логику, повторение и необязательные шаги. Наиболее распространенные фрагменты включают:

  1. Альтернатива (alt): Используется для if-else логики. Фрагмент разделен пунктирной линией, и каждый раздел включает условие («охранник») в квадратных скобках. Можно выбрать только один путь.
    • Пример: [если учетные данные пользователя действительны] и [иначе / недействительные учетные данные].
  2. Опция (opt): Используется для if оператора. Взаимодействие внутри фрагмента является необязательным и выполняется только в том случае, если условие (охранник) истинно.
    • Пример: [если у пользователя есть товары в корзине].
  3. Цикл (loop): Используется для повторения. Охранник определяет условие итерации (например, [для каждого элемента] или [пока (попытки < 3)]).
  4. Ссылка (ref): Используется для модульного построения диаграммы путем ссылки на последовательность взаимодействий, определенную в другой, отдельной диаграмме последовательности. Это предотвращает избыточное загромождение диаграмм.
  5. Критический (crit): Используется для обозначения раздела, который не должен быть прерван, часто используется для моделирования параллельных процессов.

Пример пошагового моделирования

Давайте смоделируем упрощённыйПроцесс оформления заказа пользователем с использованием основных элементов:

Шаг Действие Тип сообщения
1. Пользователь нажимает «Оформить заказ». Синхронный вызов
2. Фронтенд проверяет корзину. Самовызов (на фронтенде)
3. Фронтенд запрашивает обработку оплаты. Синхронный вызов
4. Шлюз оплаты проверяет средства. Синхронный вызов
5. Шлюз оплаты возвращает «Успех». Сообщение о возврате
6. Фронтенд отправляет асинхронное сообщение в сервис инвентаря для уменьшения запасов. Асинхронное сообщение
7. Фронтенд отправляет синхронное сообщение в сервис заказов для завершения заказа. Синхронный вызов
8. Сервис заказов возвращает «ID заказа». Сообщение возврата
9. Фронтенд отображает страницу подтверждения. Сообщение возврата (пользователю)

Моделирование логики (альтернативный фрагмент)

Для обработки сбоя мы используемАльтернативный фрагмент:

  1. РазместитеПроверка платежного шлюза (шаги 4 и 5) внутриальт фрагмента.
  2. Первая секция защищена[Успех]. Эта секция содержит шаги 6, 7, 8 и 9.
  3. Вторая секция, разделённая пунктирной линией, защищена[Сбой]. Эта секция содержит новое синхронное сообщение:paymentService -> frontend: вернуть «Ошибка оплаты» и фронтенд отображает страницу ошибки.

Обзор лучших практик диаграмм последовательности

  • Держите фокус: Диаграмма последовательности должна, как правило, моделировать один сценарий использования или одну атомарную операцию (например, «Вход», «Добавить товар в корзину»). Используйтефрагменты ссылок для подпроцессов.
  • Чётко обозначьте сообщения: Используйте глагольные фразы для сообщений, отражающие имена методов или конечные точки API (например,processPayment(amount, token)).
  • Правильно идентифицируйте участников: Различайте между Актер (внешняя сущность) и Объект (внутренний компонент или экземпляр системы).
  • Время течет вниз: Убедитесь, что сообщения последовательно упорядочены сверху вниз.
  • Используйте фрагменты для управления: Избегайте рисования сложных узлов принятия решений или циклов внутри самого потока сообщений; используйте alt, opt, и loop фрагменты.

Чтобы получить дополнительную информацию о UML и его методах визуализации, основанных на искусственном интеллекте, посетите наш центр ресурсов UML.

Эта статья также доступна на Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Việt Nam, 简体中文 and 繁體中文