Шаг 137.
Унифицированный язык моделирования UML.
Диаграммы последовательности

    На этом шаге рассмотрим понятие диаграммы последовательности.

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


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

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

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

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

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

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

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

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

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

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

    На следующем шаге рассмотрим структурированное управление на диаграммах последовательности.




Предыдущий шаг Содержание Следующий шаг