Как изображается рефлексивное сообщение на диаграмме последовательности

Обновлено: 18.05.2024

ГЛАВА 8 Диаграмма последовательности (sequence diagram)

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

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

На диаграмме последовательности изображаются исключительно те объекты, которые непосредственно участвуют во взаимодействии и не показываются возможные статические ассоциации с другими объектами. Для диаграммы последовательности ключевым моментом является именно динамика взаимодействия объектов во времени. При этом диаграмма последовательности имеет как бы два измерения. Одно – слева направо в виде вертикальных линий, каждая из которых изображает линию жизни отдельного объекта, участвующего во взаимодействии. Графически каждый объект изображается прямоугольником и располагается в верхней части своей линии жизни (рис. 8.1). Внутри прямоугольника записываются имя объекта и имя класса, разделенные двоеточием. При этом вся запись подчеркивается, что является признаком объекта, который, как известно, представляет собой экземпляр класса.


Рис. 8.1. Различные графические примитивы диаграммы последовательности

Крайним слева на диаграмме изображается объект, который является инициатором взаимодействия (объект 1 на рис. 8.1). Правее изображается другой объект, который непосредственно взаимодействует с первым. Таким образом, все объекты на диаграмме последовательности образуют некоторый порядок, определяемый степенью активности этих объектов при взаимодействии друг с другом.

Линия жизни объекта

Линия жизни объекта (object lifeline) изображается пунктирной вертикальной линией, ассоциированной с единственным объектом на диаграмме последовательности. Линия жизни служит для обозначения периода времени, в течение которого объект существует в системе и, следовательно, может потенциально участвовать во всех ее взаимодействиях. Если объект существует в системе постоянно, то и его линия жизни должна продолжаться по всей плоскости диаграммы последовательности от самой верхней ее части до самой нижней (объекты 1 и 2 на рис. 8.1).

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

Вовсе не обязательно создавать все объекты в начальный момент времени. Отдельные объекты в системе могут создаваться по мере необходимости, существенно экономя ресурсы системы и повышая ее производительность. В этом случае прямоугольник такого объекта изображается не в верхней части диаграммы последовательности, а в той ее части, которая соответствует моменту создания объекта (объект 6 на рис. 8.2). При этом прямоугольник объекта вертикально располагается в том месте диаграммы, которое по оси времени совпадает с моментом его возникновения в системе. Очевидно, объект обязательно создается со своей линией жизни и, возможно, с фокусом управления.


Рис. 8.2. Графическое изображение различных вариантов линий жизни и фокусов управления объектов

С другой стороны, периоды активности объекта могут чередоваться с периодами его пассивности или ожидания. В этом случае у такого объекта имеются несколько фокусов управления (объект 5 на рис. 8.2). Важно понимать, что получить фокус управления может только существующий объект, у которого в этот момент имеется линия жизни. Если же некоторый объект был уничтожен, то вновь возникнуть в системе он уже не может. Вместо него лишь может быть создан другой экземпляр этого же класса, который, строго говоря, будет являться другим объектом.

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

Иногда некоторый объект может инициировать рекурсивное взаимодействие с самим собой. Речь идет о том, что наличие во многих языках программирования специальных средств построения рекурсивных процедур требует визуализации соответствующих понятий в форме графических примитивов. На диаграмме последовательности рекурсия обозначается небольшим прямоугольником, присоединенным к правой стороне фокуса управления того объекта, для которого изображается это рекурсивное взаимодействие (объект 7 на рис. 8.3).



Ветвление потока управления

С помощью ветвления можно изобразить и более сложную логику взаимодействия объектов между собой (фокус управления объекта 1 на рис. 8.6). Если условий более двух, то для каждого из них необходимо предусмотреть ситуацию единственного выполнения. Рассматриваемый пример относится к моделированию взаимодействия программной системы обслуживания клиентов в банке. На этом примере диаграммы последовательности объект 1 передает управление одному из трех других объектов.


Рис. 8.5. Графическое изображение бинарного ветвления потока управления на диаграмме последовательности


Рис. 8.6. Графическое изображение тернарного ветвления потока управления на диаграмме последовательности

Условием ветвления может служить сумма снимаемых клиентом средств со своего текущего счета. Если эта сумма превышает $1000, то могут потребоваться дополнительные действия, связанные с созданием и последующим разрушением объекта 4. Если же сумма превышает $50, но не превышает $1000, то управление передается объекту 3. И, наконец, если сумма не превышает $50, то управление получает объект 2. При этом объекты 1, 2 и 3 постоянно существуют в системе. Объект 4 создается, только если справедливо первое из альтернативных условий. В противном случае он может быть никогда не создан. После выполнения требуемых действий объекты 2 и 3 просто информируют объект 1 о завершении соответствующих операций, не требуя от него никаких действий (пунктирная стрелка). Объект 4 после завершения своих действий уничтожается, передавая управление объекту 3, делая его активным (фокус управления).

Ниже представлена диаграмма последовательности для рассмотренного выше случая ветвления, дополненная стереотипными значениями (рис. 8.7).


Временные ограничения на диаграммах последовательности

Комментарии или примечания

8.3. Пример построения диаграммы последовательности

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

На первом этапе располагаем выбранные объекты на предполагаемой диаграмме (рис. 8.8). Заметим, что абонентов мы будем рассматривать как актеров, причем первый из них – а – играет активную роль, а второй – b – пассивную роль. Поэтому первый получает фокус управления сразу после своего появления в системе, а второй имеет только линию жизни. Коммутатор также имеет постоянную активность, что изображается его фокусом управления. Разговор как объект появляется только после установки соединения и уничтожается с его прекращением. Поэтому он будет изображен позже на этой же диаграмме последовательности.


Рис. 8.8. Начальный фрагмент диаграммы последовательности для моделирования телефонного разговора


Рис. 8.9. Дополненный фрагмент диаграммы последовательности для моделирования телефонного разговора


Рис. 8.10. Окончательный вариант диаграммы последовательности для моделирования телефонного разговора

8.4. Заключительные рекомендации по построению диаграмм последовательности

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

Примечания:

Примечание 6

Степень затемнения фона на приведенном выше рисунке имеет более глубокий смысл, чем может показаться на первый взгляд. Если ассоциировать реализацию программного модуля с. водой в аквариуме, то видимость объектов, находящихся в воде, будет зависеть от степени ее чистоты или загрязнения. В ООП существуют различные варианты доступа к свойствам и методам классов, которые получили название видимости свойств и методов. В этом случае использование различных форм видимости для компонентов классов удобно ассоциировать с прозрачностью фона рисунка или видимостью в воде аквариума. Более детальное рассмотрение различных форм видимости приводится в части II книги.

Примечание 62

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

Примечание 63

Примечание 64

В первом из рассмотренных случаев знак "-" во временном ограничении обозначает арифметическую операцию вычитания (минус). Другие знаки являются обычными знаками сравнения величин. В последнем случае перед временной характеристикой указано имя объекта, к которому она относится.

Примечание 65

Дополнить диаграмму последовательности для этого примера временными ограничениями предлагается выполнить самостоятельно в качестве упражнения.

Аннотация: Назначение диаграммы последовательности. Объекты, их графическое представление. Линия жизни и фокус управления. Особенности изображения моментов создания и уничтожения объектов. Ветвление и условия их выполнения. Рекомендации по построению диаграмм последовательности.

Диаграмма последовательности (sequence diagram) - диаграмма, на которой показаны взаимодействия объектов, упорядоченные по времени их проявления.

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

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

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

Каждый объект графически изображается в форме прямоугольника и располагается в верхней части своей линии жизни ( рис. 8.1). Внутри прямоугольника записываются собственное имя объекта со строчной буквы и имя класса , разделенные двоеточием. При этом вся запись подчеркивается, что является признаком объекта , который, как указывалось ранее, представляет собой экземпляр класса.

Для объектов диаграммы последовательности остаются справедливыми правила именования, рассмотренные ранее применительно к диаграммам кооперации. Если на диаграмме последовательности отсутствует собственное имя объекта , то при этом должно быть указано имя класса . Такой объект считается анонимным. Может отсутствовать и имя класса , но при этом должно быть указано собственное имя объекта . Такой объект считается сиротой. Роль классов в именах объектов на диаграммах последовательности , как правило, не указывается.

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

Линия жизни объекта (object lifeline) - вертикальная линия на диаграмме последовательности, которая представляет существование объекта в течение определенного периода времени.

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

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

Вовсе не обязательно создавать все объекты в начальный момент времени. Отдельные объекты в системе могут создаваться по мере необходимости, существенно экономя ресурсы системы и повышая ее производительность . В этом случае прямоугольник такого объекта изображается не в верхней части диаграммы последовательности , а в той, которая соответствует моменту создания объекта ( анонимный объект , образованный от Класса 3 на рис. 8.2). При этом прямоугольник объекта вертикально располагается в том месте диаграммы, которое по оси времени совпадает с моментом его возникновения в системе. Объект создается со своей линией жизни а, возможно, и с фокусом управления .

Фокус управления (focus of control) - специальный символ на диаграмме последовательности, указывающий период времени, в течение которого объект выполняет некоторое действие, находясь в активном состоянии.

Фокус управления изображается в форме вытянутого узкого прямоугольника ( объект а на рис. 8.1), верхняя сторона которого обозначает начало получения фокуса управления объекта (начало активности), а ее нижняя сторона - окончание фокуса управления (окончание активности). Этот прямоугольник располагается ниже обозначения соответствующего объекта и может заменять его линию жизни ( объект a на рис. 8.2), если на всем ее протяжении он активен.

Периоды активности объекта могут чередоваться с периодами его пассивности или ожидания. В этом случае у такого объекта фокусы управления изменяют свое изображение на линию жизни и наоборот ( объект сирота ob2 на рис. 8.2). Важно понимать, что получить фокус управления может только объект , у которого в этот момент имеется линия жизни . Если же объект был уничтожен, то вновь возникнуть в системе он уже не может. Вместо него может быть создан лишь экземпляр этого же класса, который, строго говоря, будет другим объектом .

В отдельных случаях инициатором взаимодействия в системе может быть актер или внешний пользователь . При этом актер изображается на диаграмме последовательности самым первым объектом слева со своим фокусом управления ( рис. 8.3). Наиболее часто актер и его фокус управления будут существовать в системе постоянно, отмечая характерную для пользователя активность в инициировании взаимодействий с системой. Актер может иметь собственное имя либо оставаться анонимным.

Данное учебное пособие поможет Вам лучше понять диаграммы последовательностей; объяснит все, что Вам необходимо знать, от того, как нарисовать диаграмму последовательностей до распространенных ошибок, которых следует избегать при рисовании одной из них.

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

В этом учебном пособии по последовательной диаграмме вы узнаете об этом;

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

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

Проще говоря, диаграмма последовательности показывает различные части работы системы в “последовательности”, чтобы что-то сделать.

Обозначения диаграмм последовательности

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

Последовательная диаграмма - LifelineA

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

lifeline с символом элемента-актера

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

Линия жизни с элементом-субъектом представляет системные данные. Например, в приложении “Обслуживание клиентов” организация-заказчик будет управлять всеми данными, относящимися к клиенту.

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

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


Бары активации

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


Пример создания участника

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

Аналогичным образом, участники, которые больше не нужны, могут быть удалены из схемы последовательности. Это делается путем добавления буквы “Х” в конце спасательной линии указанного участника.

Комментарий

Пример объекта комментария

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

Примечание: Просмотрите “Лучшие методы работы с диаграммой последовательностей”, чтобы узнать о фрагментах последовательностей.

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

  • Управление сложными взаимодействиями с фрагментами последовательности

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

Он используется для более структурированного отображения сложных взаимодействий, таких как альтернативные потоки и циклы. В верхнем левом углу фрагмента расположен оператор. Этот оператор – оператор фрагмента – указывает, что это за фрагмент.

Альтернативы

Альтернативный фрагмент представляет собой большой прямоугольник или кадр, который задается упоминанием ‘alt’ в окошке с названием кадра (так называемый оператор фрагмента).

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

Альтернативный пример фрагмента - учебное пособие по схеме последовательности

Фрагмент комбинации опций используется для указания последовательности, которая будет происходить только при определенном условии, в противном случае последовательность не будет происходить. Оно моделирует утверждение “если тогда”.

Как и альтернативный фрагмент, фрагмент опции также представлен прямоугольной рамкой, в которой в окошке с названием помещается ‘opt’.

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

(Найдите пример диаграммы последовательности с фрагментом опции в разделе Шаблоны и примеры последовательностей).

Loop фрагмент используется для представления повторяющейся последовательности. Поместите слова “петля” в поле с названием и состояние защиты в верхнем левом углу рамы.

В дополнение к Булеву тесту, защитный кожух в фрагменте петли может иметь два других специальных условия, с которыми он тестируется. Это минимальные (записанные как minint = [число] и максимальные (записанные как maxint = [число])).

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

(Пример фрагмента цикла приведен ниже в шаблонах последовательных диаграмм и разделе с примерами)

Вы можете использовать фрагмент ссылки для управления размером больших последовательных диаграмм. Это позволяет повторно использовать часть одной диаграммы последовательностей в другой, или, другими словами, можно ссылаться на часть диаграммы в другой диаграмме, используя фрагмент рефрагмента.

Для указания ссылочного фрагмента необходимо в окошке с названием кадра указать ‘ref’, а внутри кадра – название диаграммы последовательности, на которую делается ссылка.

Пример справочного фрагмента

Для получения дополнительных фрагментов последовательностей обратитесь к Основам диаграмм последовательностей: Часть 1, Часть 2 и Часть 3.

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

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

Как нарисовать схему последовательности

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

Из вышеприведенного примера схемы использования ‘Создать новую учетную запись онлайн-библиотеки’, мы сконцентрируемся на примере схемы использования под названием ‘Создать новую учетную запись пользователя’.

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

  • Библиотекарь
  • Система управления онлайн-библиотекой
  • База данных учетных данных пользователей
  • Система электронной почты

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

Вот шаги, которые происходят в случае использования под названием “Создать новую учетную запись пользователя библиотеки”.

  • Библиотекарь просит систему создать новую онлайновую библиотечную учетную запись
  • Затем библиотекарь выбирает тип учетной записи пользователя библиотеки
  • Библиотекарь вводит данные пользователя
  • Детали пользователя проверяются с помощью базы данных Credentials Database
  • Создана учетная запись пользователя новой библиотеки
  • После этого по электронной почте пользователю отправляется краткая информация о новой учетной записи

Приведенная ниже схема последовательности показывает, как объекты в системе управления онлайн-библиотекой взаимодействуют друг с другом для выполнения функции “Создать новую учетную запись пользователя библиотеки”.

Как нарисовать схему последовательности - учебное пособие по схеме последовательности

Распространенные ошибки в диаграммах последовательностей

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

См. подробное объяснение этих распространенных ошибок в Руководстве по последовательным диаграммам: Обычные ошибки, которых следует избегать при рисовании диаграмм последовательностей.

Примеры и шаблоны схем последовательностей

Ниже приведены несколько примеров схем последовательностей и шаблонов, которые нарисованы с использованием Creately. Создавайте диаграммы последовательности онлайн с помощью онлайн-инструмента Creately. Щелкните по шаблону, чтобы открыть его в редакторе.

Система онлайн-экзаменов – Схема последовательности

Онлайн экзамен - Шаблон последовательной диаграммы

Щелкните по изображению, чтобы отредактировать его в режиме онлайн

Схема последовательности Пример системы управления школой

Система управления школой - Шаблон последовательной диаграммы

Пример фрагмента комбинации опций

Пример фрагмента опции

Пример последовательности циклов

 Циклы - Пример диаграммы последовательности

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

Учебное пособие по диаграммам последовательности – презентация SlideShare

Обратная связь по учебному пособию “Схема последовательности”

Данное учебное пособие по последовательным схемам охватывает все, что необходимо знать на последовательных схемах и их построении. Если у Вас есть какие-либо предложения или вопросы касательно учебного пособия “Схема последовательности”, Вы можете оставить свой комментарий.

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

Существует два вида диаграмм взаимодействия: диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams). Они позволяют с разных точек зрения рассмотреть взаимодействие объектов в создаваемой системе.

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

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

На диаграмме последовательности объект изображается в виде прямоугольника, от которого вниз проведена пунктирная вертикальная линия. Эта линия называется линией жизни (lifeline) объекта. Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия.

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


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

На диаграмме кооперации представлена вся та информация, которая есть и на диаграмме последовательности, но кооперативная диаграмма по-другому описывает поток событий. Из нее легче понять связи между объектами, однако, труднее уяснить последовательность событий.


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

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

Линия жизни объекта (object lifeline) - вертикальная линия на диаграмме последовательности, которая представляет существование объекта в течение определенного периода времени.

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

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


Фокус управления (focus of control) - специальный символ на диаграмме последовательности, указывающий период времени, в течение которого объект выполняет некоторое действие, находясь в активном состоянии.

Фокус управления изображается в форме вытянутого узкого прямоугольника, верхняя сторона которого обозначает начало получения фокуса управления объекта (начало активности), а ее нижняя сторона - окончание фокуса управления (окончание активности). Этот прямоугольник располагается ниже обозначения соответствующего объекта и может заменять его линию жизни, если на всем ее протяжении он активен.

Периоды активности объекта могут чередоваться с периодами его пассивности или ожидания. В этом случае у такого объекта фокусы управления изменяют свое изображение на линию жизни и наоборот. Важно понимать, что получить фокус управления может только объект, у которого в этот момент имеется линия жизни. Если же объект был уничтожен, то вновь возникнуть в системе он уже не может. Вместо него может быть создан лишь экземпляр этого же класса, который, строго говоря, будет другим объектом.

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


Читайте также: