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

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

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

Участники

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

Сообщения

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

Прямоугольники активации

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

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

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

На странице Диаграмма последовательности UML нажмите P или выберите Участник в меню UML на панели инструментов, затем щёлкните на холсте, чтобы разместить участников. Новые участники выстраиваются в ряд с уже существующими. Нажмите Return при выбранном участнике, чтобы переименовать его.

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

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

  • Участник — обобщённый объект или часть системы (прямоугольник)
  • Актёр — пользователь или внешняя система (человечек)
  • Граница — граница интерфейса или системы
  • Управление — логика процесса или контроллера
  • Сущность — объект данных или предметной области
  • База данных — хранилище данных

Задайте тип роли во вкладке инспектора Расположение → раздел UML.

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

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

Нажмите M, чтобы активировать инструмент «Сообщение», затем:

  1. Щёлкните на линии жизни участника-источника
  2. Перетащите к линии жизни участника-получателя
  3. Отпустите, чтобы создать сообщение

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

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

Задайте тип сообщения для выбранного сообщения в разделе UML инспектора.

Надписи сообщений

Выберите сообщение и отредактируйте его надпись в разделе UML инспектора. Распространённые форматы:

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

Прямоугольники активации

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

Добавление прямоугольников активации

  1. Выберите Активация в меню UML на панели инструментов
  2. Перетащите вдоль линии жизни участника на промежутке, где она активна
  3. Прямоугольник активации размещается на этой линии жизни

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

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

Фрагменты

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

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

ТипКлючевое словоНазначение
АльтернативаaltВетвление если-иначе
ОпцияoptНеобязательное выполнение (если без иначе)
ЦиклloopПовторяющееся выполнение
ПрерываниеbreakВыход из охватывающего цикла
ПараллельноparПараллельное выполнение
Критическая секцияcriticalАтомарная/критическая секция
ОтрицаниеnegНедопустимое взаимодействие
УтверждениеassertОбязательное взаимодействие
ИгнорированиеignoreСообщения, которые можно игнорировать
УчётconsiderСообщения, которые нужно учитывать
СсылкаrefСсылка на другое взаимодействие

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

  1. Выберите Фрагмент в меню UML на панели инструментов
  2. Перетащите прямоугольник поверх участников и сообщений, которые хотите сгруппировать
  3. Выберите фрагмент и задайте его тип фрагмента в разделе UML инспектора
  4. При необходимости введите условие защиты

Условия защиты фрагментов

Условия защиты показываются в квадратных скобках:

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

Изменение порядка элементов

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

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

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

Выберите сообщение и нажмите Cmd+↑ или Cmd+↓, чтобы переместить его раньше или позже в последовательности.

Рекомендации

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

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

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

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

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