Открыть сервис

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

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

Место в языке UML

Диаграмма последовательности входит в группу диаграмм взаимодействия наряду с диаграммой коммуникации, диаграммой обзора взаимодействия и диаграммой синхронизации. В отличие от диаграммы классов, которая фиксирует статическую структуру, диаграмма последовательности показывает динамику: временной порядок вызовов, возвратов и передачи данных. В спецификации UML она обозначается как Sequence Diagram и применяется как на этапе анализа требований, так и при детальном проектировании.

Основные элементы

Графически диаграмма строится из нескольких стандартных нотаций.

  • Линия жизни (lifeline) — вертикальная пунктирная линия, обозначающая отдельного участника взаимодействия. Верхний прямоугольник содержит имя объекта и, при необходимости, имя класса в формате «имя: Класс».
  • Актор — внешний пользователь или система, инициирующая сценарий; изображается стилизованной фигуркой.
  • Сообщение — горизонтальная стрелка между линиями жизни. Различают синхронные вызовы (сплошная стрелка с закрашенным наконечником), асинхронные (открытый наконечник), ответные (пунктирная стрелка) и потерянные/найденные сообщения.
  • Активация (полоса активности) — узкий прямоугольник на линии жизни, показывающий период, когда объект выполняет операцию.
  • Фрагменты (combined fragments) — рамки с операторами alt, opt, loop, par, критическая секция и другими, задающие ветвления, циклы и параллелизм.
  • Ворота и временные ограничения — элементы для указания длительности операций и условий.

Чтение диаграммы

Чтение выполняется сверху вниз: время на диаграмме течёт по вертикали. Каждое сообщение имеет порядковый номер, отражающий очерёдность. Совокупность сообщений образует сценарий — один из возможных путей выполнения варианта использования. Ветвления через фрагмент alt описывают альтернативные потоки, а loop — повторяющиеся действия. Возврат управления показывается пунктирной стрелкой от активированного объекта к инициатору.

Применение

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

В российской практике диаграммы последовательности применяются при разработке автоматизированных систем по ГОСТ 19.701 и в проектах, где требуется согласование технического задания с заказчиком. Их включают в пояснительные записки к эскизному и техническому проекту.

Инструменты

Построение диаграмм поддерживают как проприетарные, так и свободные средства: IBM Rational Rose, Enterprise Architect, Visual Paradigm, а также PlantUML, Mermaid и draw.io. В текстовых форматах PlantUML и Mermaid диаграмма описывается кодом, что упрощает хранение и версионирование моделей вместе с исходным кодом проекта. Это делает диаграммы последовательности удобными для интеграции в системы непрерывной интеграции и документацию.

Связь с другими диаграммами

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

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

К достоинствам относят наглядность временного порядка, точное отображение синхронных и асинхронных вызовов, поддержку ветвлений и циклов. Ограничения связаны с масштабируемостью: при большом числе участников диаграмма становится громоздкой, а сложные условия и параллельные потоки трудно читаются без дополнительных пояснений. Поэтому на практике крупные сценарии разбивают на несколько диаграмм, каждая из которых описывает отдельный фрагмент взаимодействия.

Пример

Типичный пример — сценарий оформления заказа в интернет-магазине. Актор «Покупатель» отправляет сообщение «оформить заказ» объекту «Корзина», тот обращается к «Складу» для проверки наличия товара, затем к «Платёжной системе» для списания средств и к «Службе доставки» для регистрации отправления. Ответные сообщения возвращают подтверждение или ошибку. Фрагмент alt описывает случаи успешной оплаты и отказа банка, а фрагмент loop — повторную проверку наличия позиций.

Обозначения в нотации

ЭлементИзображениеНазначение
Линия жизниПунктирная вертикальУчастник взаимодействия
Синхронное сообщениеСплошная стрелкаВызов с ожиданием ответа
Асинхронное сообщениеОткрытая стрелкаВызов без ожидания
ОтветПунктирная стрелкаВозврат результата
АктивацияПрямоугольник на линииПериод выполнения
alt / optРамка с операторомВетвление и условие
loopРамка с операторомЦикл

Источники: спецификация OMG UML, ГОСТ 19.701-90, учебные пособия по объектно-ориентированному анализу и проектированию, документация PlantUML и Mermaid.

Загружаем BFOmetr…