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

 

Диаграмма последовательности (sequence diagram) является основным способом отображения взаимодействия объектов во времени. Несмотря на то, что диаграмма последовательности изначально ориентирована на программные проекты с использованием ООП, она применяется значительно шире, в том числе в случаях, когда не предусмотрены соответственные методы описания «динамики» программы. В подобных случаях должна осуществляться адаптация понятия объекта.

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

Основные моменты, на которые следует обратить внимание при работе над диаграммой последовательности:

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

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

Среди объектов могут выделяться так называемые актеры (actors), Актеры должны изображаться не особым образом с помощью символа «человечка», а так, как обычные объекты.

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

С помощью линии жизни показывается период времени, в течение

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

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

Активность (activity) объекта, т.е. период времени, в течение которого он участвует во взаимодействии, может совпадать с фокусом управления (focus of control) и отображается тонким вертикальным прямоугольником соответствующей продолжительности на линии его жизни. Ширина прямоугольников должна равняться 10 мм и должна быть одинаковой в пределах чертежа. Объекты – инициаторы взаимодействий рекомендуется изображать на чертеже левее.

3. Сообщения (messages), которыми обмениваются объекты в процессе взаимодействия, показываются различными линиями со стрелками между линиями жизни объектов, направленными в сторону передачи.

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

Выделяются следующие стереотипы сообщений:

– вызов (call) – вызов передающим объектом подпрограммы принимающего объекта для обработки инкапсулированных в передающий объект либо внешних по отношению к передающему объекту либо переданных в сообщении данных с возможной передачей фокуса управления;

– возврат (return) – возврат передающим объектом обработанных данных или возврат фокуса управления;

– создание (create) – создание передающим объектом принимающего объекта для выполнения каких-либо действий с возможной передачей фокуса управления;

– разрушение (destroy) – разрушение передающим объектом принимающего объекта;

– посылка (send) – посылка передающим объектом сигнала или данных принимающему объекту для обработки инкапсулированных в передающий объект либо внешних по отношению к передающему объекту либо переданных данных с возможной передачей и фокуса управления.

Выделяются следующие виды сообщений:

– простое сообщение (например, посылка) – синхронизация передающего и принимающего процессов не обязательна – обозначается сплошной линией со стрелкой-углом;

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

– асинхронное сообщение (например, посылка) – обязательна синхронизация передающего и принимающего процессов, причем передающий процесс не блокируется – обозначается сплошной линией с неполной стрелкой- углом;

– возврат из подпрограммы (возврат) – обозначается штриховой линией со стрелкой-углом.

Объекты могут передавать сообщения и сами себе.

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

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

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

4. При изображении повторяющихся сообщений и последовательностей сообщений надписи начинаются c префикса повторения * и содержат ограничивающие условия, заключаемые в квадратные скобки. Повторяющаяся последовательность заключается в сплошную рамку (надпись помещается над рамкой).

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

Более подробные сведения излагаются в стандарте UML.

Пример диаграммы последовательности (Visio) приведен в прил. Ж.