Диаграммы последовательности
Диаграммы последовательности визуализируют, как объекты взаимодействуют во времени. Они показывают порядок сообщений, которыми обмениваются участники, чтобы выполнить конкретную задачу или сценарий.
Основные понятия
Участники
Участники представляют объекты или действующие лица, вовлечённые во взаимодействие. У каждого участника есть линия жизни — вертикальная пунктирная линия, идущая вниз и представляющая время.
Сообщения
Сообщения — это коммуникации между участниками, показанные как горизонтальные стрелки между линиями жизни. Время течёт сверху вниз.
Прямоугольники активации
Прямоугольники активации (также называемые спецификациями выполнения) — это тонкие прямоугольники на линии жизни, показывающие, когда участник активно что-то обрабатывает.
Создание участников
Использование инструмента «Участник»
На странице Диаграмма последовательности UML нажмите P или выберите Участник в меню UML на панели инструментов, затем щёлкните на холсте, чтобы разместить участников. Новые участники выстраиваются в ряд с уже существующими. Нажмите Return при выбранном участнике, чтобы переименовать его.
Типы участников
Участники могут представлять различные типы сущностей:
- Участник — обобщённый объект или часть системы (прямоугольник)
- Актёр — пользователь или внешняя система (человечек)
- Граница — граница интерфейса или системы
- Управление — логика процесса или контроллера
- Сущность — объект данных или предметной области
- База данных — хранилище данных
Задайте тип роли во вкладке инспектора Расположение → раздел UML.
Создание сообщений
Использование инструмента «Сообщение»
Нажмите M, чтобы активировать инструмент «Сообщение», затем:
- Щёлкните на линии жизни участника-источника
- Перетащите к линии жизни участника-получателя
- Отпустите, чтобы создать сообщение
Типы сообщений
| Тип | Стиль стрелки | Описание |
|---|---|---|
| Синхронное | Сплошная линия, закрашенная стрелка | Отправитель ждёт ответа |
| Асинхронное | Сплошная линия, незакрашенная стрелка | Отправитель продолжает, не дожидаясь ответа |
| Возврат | Пунктирная линия, незакрашенная стрелка | Ответ на синхронный вызов |
| Создание | Пунктирная линия, незакрашенная стрелка к прямоугольнику | Создаёт нового участника |
| Уничтожение | Линия, заканчивающаяся символом X | Завершает работу участника |
| Самовызов | Стрелка, возвращающаяся на ту же линию жизни | Участник вызывает сам себя |
Задайте тип сообщения для выбранного сообщения в разделе UML инспектора.
Надписи сообщений
Выберите сообщение и отредактируйте его надпись в разделе UML инспектора. Распространённые форматы:
methodName()— простой вызов методаmethodName(param1, param2)— вызов с параметрамиresult := methodName()— вызов с присвоением возвращаемого значения[condition] methodName()— условное сообщение (guard)
Прямоугольники активации
Прямоугольники активации показывают период, в течение которого участник выполняется или ожидает ответа.
Добавление прямоугольников активации
- Выберите Активация в меню UML на панели инструментов
- Перетащите вдоль линии жизни участника на промежутке, где она активна
- Прямоугольник активации размещается на этой линии жизни
Вложенные активации
Когда участник вызывает сам себя (рекурсивный вызов) или обрабатывает несколько вложенных вызовов, прямоугольники активации могут накладываться друг на друга.
Фрагменты
Фрагменты группируют сообщения, чтобы показать условную логику, циклы или другую логику потока управления.
Типы фрагментов
| Тип | Ключевое слово | Назначение |
|---|---|---|
| Альтернатива | alt | Ветвление если-иначе |
| Опция | opt | Необязательное выполнение (если без иначе) |
| Цикл | loop | Повторяющееся выполнение |
| Прерывание | break | Выход из охватывающего цикла |
| Параллельно | par | Параллельное выполнение |
| Критическая секция | critical | Атомарная/критическая секция |
| Отрицание | neg | Недопустимое взаимодействие |
| Утверждение | assert | Обязательное взаимодействие |
| Игнорирование | ignore | Сообщения, которые можно игнорировать |
| Учёт | consider | Сообщения, которые нужно учитывать |
| Ссылка | ref | Ссылка на другое взаимодействие |
Создание фрагментов
- Выберите Фрагмент в меню UML на панели инструментов
- Перетащите прямоугольник поверх участников и сообщений, которые хотите сгруппировать
- Выберите фрагмент и задайте его тип фрагмента в разделе UML инспектора
- При необходимости введите условие защиты
Условия защиты фрагментов
Условия защиты показываются в квадратных скобках:
[x > 0]— числовое условие[user.isAdmin]— проверка свойства[else]— ветка по умолчанию/иначе во фрагментах alt
Изменение порядка элементов
Перемещение участников
Перетаскивайте участников по горизонтали, чтобы изменить их порядок. Связанные сообщения последуют за ними.
Перемещение сообщений
Выберите сообщение и нажмите Cmd+↑ или Cmd+↓, чтобы переместить его раньше или позже в последовательности.
Рекомендации
- Начните с основного потока — сначала смоделируйте основной сценарий, затем добавьте альтернативы
- Сохраняйте читаемость — ограничьтесь 5–7 участниками на диаграмму
- Используйте осмысленные имена — подписывайте сообщения реальными именами методов или описаниями
- Показывайте сообщения возврата — особенно для синхронных вызовов, где важно возвращаемое значение
- Используйте фрагменты умеренно — слишком много вложенных фрагментов снижает читаемость
- Добавляйте заметки — используйте стикеры, чтобы пояснить сложную логику
Пример: процесс входа пользователя
Типичная последовательность входа может включать:
- Пользователь вводит учётные данные
- Клиент отправляет запрос на вход серверу
- Сервер проверяет данные в базе данных
- База данных возвращает запись пользователя
- Сервер создаёт сессию
- Сервер возвращает клиенту результат — успех или неудачу
- Клиент обновляет интерфейс
Этот сценарий демонстрирует синхронные вызовы, сообщения возврата и возможные фрагменты alt для путей успеха/неудачи.