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

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

Основные понятия

Участники

Участники представляют объекты или действующих лиц, вовлечённых во взаимодействие. Каждый участник имеет линию жизни — вертикальную пунктирную линию, идущую вниз, которая обозначает время.

Сообщения

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

Полосы активации

Полосы активации (также называемые спецификациями выполнения) — это тонкие прямоугольники на линии жизни, показывающие, когда участник активно обрабатывает запрос.

Создание участников

Использование инструмента участников

Нажмите P для активации инструмента участников, затем нажмите на холсте для размещения участников.

Диаграмма последовательностей с участниками

Типы участников

Участники могут представлять разные типы сущностей:

  • Actor — Пользователь или внешняя система (значок фигурки)
  • Object — Экземпляр класса (прямоугольник)
  • Component — Системный компонент (прямоугольник со стереотипом)
  • Boundary — Граница интерфейса или системы
  • Control — Логика процесса или контроллера
  • Entity — Данные или доменный объект

Настройте тип участника в панели Инспектора.

Создание сообщений

Использование инструмента сообщений

Нажмите M для активации инструмента сообщений, затем:

  1. Нажмите на линию жизни исходного участника
  2. Перетащите к линии жизни целевого участника
  3. Отпустите для создания сообщения

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

ТипСтиль стрелкиОписание
СинхронноеСплошная линия, заполненная стрелкаОтправитель ожидает ответа
АсинхронноеСплошная линия, открытая стрелкаОтправитель продолжает без ожидания
ВозвратноеПунктирная линия, открытая стрелкаОтвет на синхронный вызов
СозданиеПунктирная линия, открытая стрелка к блокуСоздаёт нового участника
УничтожениеЛиния, заканчивающаяся XЗавершает участника

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

Подписи сообщений

Дважды нажмите на сообщение для редактирования его подписи. Типичные форматы:

  • methodName() — Простой вызов метода
  • methodName(param1, param2) — Вызов с параметрами
  • result := methodName() — Вызов с присваиванием возвращаемого значения
  • [condition] methodName() — Условное сообщение (охранное условие)

Полосы активации

Полосы активации показывают период, в течение которого участник выполняет действие или ожидает ответа.

Добавление полос активации

  1. Выделите сообщение
  2. В Инспекторе включите «Show Activation»
  3. Полоса активации появится на линии жизни принимающего участника

Вложенные активации

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

Полосы активации

Фрагменты

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

Типы фрагментов

ТипКлючевое словоНазначение
АльтернативаaltВетвление if-else
НеобязательныйoptНеобязательное выполнение (if без else)
ЦиклloopПовторяющееся выполнение
ПрерываниеbreakВыход из объемлющего цикла
ПараллельныйparПараллельное выполнение
КритическийcriticalАтомарная/критическая секция

Создание фрагментов

  1. Выделите сообщения, которые хотите сгруппировать
  2. Щёлкните правой кнопкой мыши и выберите «Add Fragment» или используйте инструмент фрагментов
  3. Выберите тип фрагмента
  4. Добавьте условия/охранные выражения по необходимости

Пример фрагмента

Охранные условия фрагментов

Охранные условия — это условия, показанные в квадратных скобках:

  • [x > 0] — Числовое условие
  • [user.isAdmin] — Проверка свойства
  • [else] — Ветвь по умолчанию/else в фрагментах alt

Переупорядочивание элементов

Перемещение участников

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

Перемещение сообщений

Перетаскивайте сообщения вертикально для изменения их порядка в последовательности. Это влияет на хронологию взаимодействия.

Лучшие практики

  1. Начните с основного потока — Смоделируйте успешный сценарий, затем добавьте альтернативы
  2. Сохраняйте читаемость — Ограничьтесь 5-7 участниками на диаграмму
  3. Используйте осмысленные имена — Подписывайте сообщения реальными именами методов или описаниями
  4. Показывайте возвратные сообщения — Особенно для синхронных вызовов, где важно возвращаемое значение
  5. Используйте фрагменты умеренно — Слишком много вложенных фрагментов снижает читаемость
  6. Добавляйте заметки — Используйте элементы заметок для пояснения сложной логики

Пример: Поток авторизации пользователя

Типичная последовательность входа может включать:

  1. Пользователь вводит учётные данные
  2. Клиент отправляет запрос на вход серверу
  3. Сервер проверяет через базу данных
  4. База данных возвращает запись пользователя
  5. Сервер создаёт сессию
  6. Сервер возвращает результат успеха/неудачи клиенту
  7. Клиент обновляет интерфейс

Этот поток демонстрирует синхронные вызовы, возвратные сообщения и возможные фрагменты alt для сценариев успеха/неудачи.