Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

sequence diagram (диаграмма последовательности)

Диаграмма, на которой изображено упорядоченное во времени взаимодействие объектов. В частности, на ней изображаются участвующие во взаимодействии объекты и последовательность сообщений, которыми они обмениваются.
См. activation; collaboration; lifeline; message.

Семантика

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

Нотация

У диаграммы последовательности есть два измерения: вертикальное (время) и горизонтальное (объекты, участвующие во взаимодействии). Примеры вы найдете на рис. 161 и 162. Как правило, временная ось направлена сверху вниз (при желании направление осей можно поменять местами). Как правило, существенна именно последовательность сообщений, однако для приложений реального времени временная ось может служить реальной метрикой. Порядок горизонтального расположения объектов значения не имеет.
Каждый объект изображается в виде отдельной вертикальной колонки. Символ объекта (прямоугольник, внутри которого располагается подчеркнутое имя объекта) помещается сверху колонки, у конца стрелки-сообщения, которое этот объект создает. Если объект существовал еще до первой операции, изображенной на диаграмме, символ объекта изображается в верхней части диаграммы, до всяких сообщений. От него идет пунктирная линия, которая прерываемся в той точке, где объект прекращает свое существование (опять-таки, если этот момент описывается диаграммой). Эта линия называется линией жизни. Точка, в которой объект прекращает свое существование, отмечается большим крестом (X), стоящим либо у хвоста стрелки, обозначающей сообщение, которое вызывает уничтожение объекта, либо в той точке, где объект уничтожает себя сам. Период активности объекта изображается в виде двойной непрерывной черты. К такому периоду относится все время жизни активного объекта или активация пассивного объекта, - то есть время, в течение которого выполняется операция данного объекта (куда включается также время, затраченное операцией на ожидание возврата из вызванных сто операций). Если объект вызывает себя рекурсивным образом, прямо или косвенно, то около первой двойной непрерывной линии помещается точно такая же вторая. Так изображается двойная активация (теоретически количество таких двойных линий может быть и больше двух). Порядок расположения объектов не имеет особого значения, хотя, с точки зрения удобства, лучше максимально уменьшить расстояние между линиями жизни, через которое должны проходить стрелки-сообщения. Комментарий относительно активации можно расположить прямо около нее.
Каждое сообщение выглядит как горизонтальная стрелка, идущая от линии жизни того объекта, который отправляет сообщение, к линии жизни объекта, который его получает. На уровне стрелки на полях можно поместить метку, в которой будет указано время отправки сообщения. Во многих моделях сообщения принято считать мгновенными или, по крайней мере, атомарными. Если сообщению требуется некоторое время для того, чтобы дойти до адресата, то стрелка сообщения изображается с наклоном вниз - это обозначает, что получение сообщения происходит с задержкой. При этом у обоих концов стрелки могут располагаться метки с указанием времени отправки и получения сообщения.
Чтобы показать асинхронный поток управления между активными объектами, эти объекты изображаются в виде двойных непрерывных линий, а сообщения - в виде стрелок. Можно послать два сообщения одновременно, однако при этом их нельзя одновременно получить - одновременное получение сообщений просто невозможно гарантировать. На рис. 161 вы видите пример диаграммы последовательности с асинхронным управлением.

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

Рис. 162. Диаграмма последовательности с процедурным потоком управления
Разветвление изображается путем разделения линии жизни объекта. Каждое ответвление может отправлять и получать сообщения. Как правило, разные ответвления отправляют различные сообщения. После этого линии жизни могут опять сливаться в одну.
На рис. 163 изображены состояния, в которых за время своей жизни находится театральный билет. Если линия жизни прерывается символом состояния, значит, в этот момент состояние объекта меняется. На диаграмме кооперации то же самое изображается при помощи перехода превращения. К символу состояния может подходить стрелка того сообщения, которое вызвало перемену состояния.
Рис. 163. Состояния объекта на диаграмме последовательности
Большая часть этой нотации взята из схемы последовательностей объектных сообщений Object Message Sequence Chart (Диаграмма последовательности объектных сообщений, описанной в книге Франка Бушмана), которая, в свою очередь, представляет собой модифицированную схему последовательности сообщений Message Sequence Chart (Диаграмма последовательности сообщений).
Диаграмма последовательности может также существовать в форме дескриптора, где ее составляющими будут не объекты, а роли. Такая диаграмма описывает некий общий случай, а не конкретное единичное выполнение. На диаграммах такого уровня имена не подчеркиваются, так как символы обозначают роли, а не конкретные объекты.

Алфавитный указатель