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

Что такое диаграмма последовательности?

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

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

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

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

  1. Показать порядок взаимодействия между объектами. Смоделируйте поведение взаимодействия как передачу сообщений и динамически покажите взаимодействие между объектами, описав, как сообщения отправляются и принимаются между ними.
  2. По сравнению с другими диаграммами UML диаграмма временной последовательности уделяет больше внимания хронологическому порядку взаимодействия.
  3. Он может визуально описать процесс параллелизма.

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

1. Актер – Системные субъекты, которыми могут быть люди, машины, другие системы, подсистемы; используется для представления на диаграмме временной последовательности.

2. Объект. Существует три способа именования объектов:

  1. Включает имя объекта и имя класса, например: live class: class, на диаграмме временных рядов с «object: class».
  2. Показывает только имя класса, то есть это анонимный объект, например: :course; на временной диаграмме с «: class».
  3. Показывает только имя объекта, но не имя класса, например: лектор; на временной диаграмме он представлен «объектом».

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

3. Порядок объектов

  • Левый и правый порядок объектов не имеет значения, но для того, чтобы сделать четкую и аккуратную диаграмму, следует придерживаться следующих двух принципов: располагать объекты с частыми взаимодействиями как можно ближе друг к другу;
  • Поместите объект, который инициализирует всю активность взаимодействия, в самый левый конец.

Линия жизни

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

  • Фокус управления (также известный как период активации) — это символ периода времени, в течение которого объект будет выполнять соответствующую операцию. Его можно интерпретировать как пару скобок { } в семантике C; представлен небольшим прямоугольником. Он представляет собой период, в течение которого элемент выполняет операцию. Верх и низ прямоугольника соответствуют времени начала и завершения соответственно.
  • Сообщения обычно классифицируются как синхронное сообщение, асинхронное сообщение и возвратное сообщение.

Обратите внимание, что

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

 

Сообщения о создании и уничтожении

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

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

Сообщение  деструктора  уничтожает получателя. Есть и другие способы указать, что цель уничтожена во время взаимодействия. Только когда для уничтожения цели установлено значение «после деструктора», вам нужно использовать деструктор.

Не мгновенное сообщение

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

Фрагменты комбинации

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

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

 

Пример – сценарий размещения заказа

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

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Другой пример: разместить заказ

Диаграмма последовательности представляет собой двумерную диаграмму, на которой горизонтальная ось представляет объекты, а вертикальная ось представляет время, где сообщения передаются горизонтально между объектами и располагаются вертикально в хронологическом порядке. В примере показана диаграмма Sequence с тремя участвующими объектами: Customer, Order и Stock. Даже формально не зная нотации, вы, вероятно, сможете получить довольно хорошее представление о том, что происходит.

  1. Шаг 1 и 2: Клиент создает заказ.
  2. Шаг 3: Клиент добавляет товары в заказ.
  3. Шаг 4, 5: Каждый предмет проверяется на наличие в инвентаре.
  4. Шаг 6, 7, 8: Если товар есть в наличии, он добавляется в заказ.
  5. Шаг 9 возврат
  6. Шаг 10, 11: сохранить и уничтожить порядок

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

 

Часто используемые фрагменты комбинации

Типы фрагментов включают ref, assert, loop, break, alt, opt и neg, ref, sd.

Оператор Значение
альтернативный Альтернативные множественные фрагменты: будет выполняться только тот, условие которого истинно.
выбрать Необязательно : фрагмент выполняется только в том случае, если предоставленное условие истинно. Эквивалентно альту только с одной трассировкой.
номинал Parallel : каждый фрагмент выполняется параллельно.
петля Цикл : фрагмент может выполняться несколько раз, а сторож указывает основу итерации.
критический Критическая область : фрагмент может иметь только один поток, выполняющий его одновременно.
отрицательный Отрицательный : фрагмент показывает недопустимое взаимодействие.
ссылка Ссылка : относится к взаимодействию, определенному на другой диаграмме. Рамка нарисована, чтобы покрыть линии жизни, участвующие во взаимодействии. Вы можете определить параметры и возвращаемое значение.
сд Диаграмма последовательности : используется для обозначения всей диаграммы последовательности.

Обратите внимание, что:

  • Можно комбинировать кадры, чтобы захватывать, например, петли или ответвления.
  • Комбинированные  ключевые слова фрагмента: alt, opt, break, par, seq, strict, neg, Critical, ignore, рассматривает, утверждает и зацикливается.
  • Ограничения обычно используются для отображения временных ограничений сообщений. Они могут применяться к времени одного сообщения или интервалам между сообщениями.

Примеры комбинированных фрагментов

(1) Выбор (Alt) — альтернативный фрагмент предоставляет несколько защищенных альтернативных фрагментов (разделенных операндами взаимодействия), т. е. используется для указания взаимоисключающих вариантов выбора между двумя или более последовательностями сообщений, что эквивалентно классическому if..else…:

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

(2) Option (Opt) — содержит последовательность возможных вхождений или ненаступлений, что означает, что необязательный фрагмент выполняется только в том случае, если какое-либо защитное условие истинно:

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

(3) Цикл (Loop) — Цикл позволяет повторять фрагмент до тех пор, пока какое-либо охранное условие не станет ложным:

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Ломать

Разрыв позволяет выйти из окружающего цикла, когда некоторая защита становится истинной:

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Разрывы чаще всего используются для моделирования обработки исключений. В этом примере диаграммы последовательности используется фрагмент комбинации разбиения, поскольку он рассматривает условие баланса < суммы как исключение, а не как альтернативный поток. Чтобы прочитать этот пример, мы начинаем с верхнего левого угла последовательности и читаем вниз. Когда последовательность достигает возвращаемого значения «баланс», она проверяет, меньше ли баланс суммы. Если баланс не меньше суммы, следующим отправленным сообщением будет сообщение addDebitTransaction, и последовательность продолжится как обычно.

Параллельно

Параллельный фрагмент позволяет выполнять несколько взаимодействий параллельно:

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Рамки

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

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Ссылка (Ссылка)

На кадр можно ссылаться в другой диаграмме последовательности:

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Протоколы

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Сотрудничество

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Сценарии

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Сигналы и приемы

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

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

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

На диаграмме последовательности мы можем представить сигнал как асинхронный сигнал, а прием как вызов приема:

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

Критический

ИЗМЕНИТЬ ЭТУ ДИАГРАММУ ПОСЛЕДОВАТЕЛЬНОСТИ

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

  • Строгий
  • Утверждать
  • Рассмотреть возможность
  • Игнорировать
  • Область, край
  • отрицательный

Сводка обозначений диаграммы последовательности

Обозначение Описание Визуальное представление
Актер
  • тип роли, которую играет сущность, которая взаимодействует с субъектом (например, путем обмена сигналами и данными)
  • внешним по отношению к субъекту (т. е. в том смысле, что экземпляр актора не является частью экземпляра соответствующего ему субъекта).
  • представляют роли, которые играют пользователи-люди, внешнее оборудование или другие субъекты.

Обратите внимание, что:

  • Актер не обязательно представляет конкретный физический объект, а просто определенную роль некоторого объекта.
  • Один человек может играть роль нескольких разных актеров и, наоборот, данного актера могут играть несколько разных людей.
Диаграмма последовательности UML: пример актера
Линия жизни
  • Линия жизни представляет отдельного участника Взаимодействия.
Диаграмма последовательности UML: пример активации
Активации
  • Тонкий прямоугольник на линии жизни) представляет собой период, в течение которого элемент выполняет операцию.
  • Верх и низ прямоугольника выровнены со временем начала и завершения соответственно.
Диаграмма последовательности UML: пример активации
Сообщение о вызове
  • Сообщение определяет конкретную связь между жизненными линиями взаимодействия.
  • Сообщение о вызове — это вид сообщения, представляющий собой вызов операции целевой линии жизни.
Диаграмма последовательности UML: пример сообщения о вызове
Ответное сообщение
  • Сообщение определяет конкретную связь между жизненными линиями взаимодействия.
  • Возвратное сообщение — это вид сообщения, которое представляет собой передачу информации обратно вызывающей стороне соответствующего прежнего сообщения.
Диаграмма последовательности UML: пример возвращаемого сообщения
Само сообщение
  • Сообщение определяет конкретную связь между жизненными линиями взаимодействия.
  • Самосообщение — это своего рода сообщение, которое представляет собой вызов сообщения той же линии жизни.
Диаграмма последовательности UML: пример самосообщения
Рекурсивное сообщение
  • Сообщение определяет конкретную связь между жизненными линиями взаимодействия.
  • Рекурсивное сообщение — это тип сообщения, который представляет собой вызов сообщения той же линии жизни. Его цель указывает на активацию поверх активации, из которой было вызвано сообщение.
Диаграмма последовательности UML: пример рекурсивного сообщения
Создать сообщение
  • Сообщение определяет конкретную связь между жизненными линиями взаимодействия.
  • Создать сообщение — это своего рода сообщение, которое представляет собой создание (целевой) линии жизни.
Диаграмма последовательности UML: пример создания сообщения
Уничтожить сообщение
  • Сообщение определяет конкретную связь между жизненными линиями взаимодействия.
  • Сообщение об уничтожении — это своего рода сообщение, которое представляет собой запрос на уничтожение жизненного цикла целевой линии жизни.
Диаграмма последовательности UML: пример сообщения об уничтожении
Сообщение о продолжительности
  • Сообщение определяет конкретную связь между жизненными линиями взаимодействия.
  • Сообщение о продолжительности показывает расстояние между двумя моментами времени для вызова сообщения.
Диаграмма последовательности UML: пример сообщения о продолжительности
ПримечаниеПримечание (комментарий) дает возможность прикреплять к элементам различные примечания. Комментарий не несет семантической силы, но может содержать информацию, полезную для разработчика моделей. Диаграмма последовательности UML: пример примечания