Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2-й курс / Человеко-машинный интерфейс / ПрЧМИ / Diagrammy_posledovatelnosti_Spravochny_material_2

.doc
Скачиваний:
31
Добавлен:
18.12.2017
Размер:
114.18 Кб
Скачать

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

Диаграммы последовательности выделяют временной порядок

сообщений. Как показано на рис. 19.2, формирование диаграммы

последовательности начинается с размещения объектов или ро-

лей, участвующих во взаимодействии, в верхней части диаграм-

мы, по горизонтальной оси. Обычно объект или роль, иницииру-

ющие взаимодействие, размещаются слева, а зависимые объекты

или роли – справа. Далее по вертикальной оси расставляются со-

общения, которые отправляют и принимают эти объекты, – сверху

вниз, в хронологическом порядке. Это создает у читателя представ-

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

Диаграммы последовательности отличаются от диаграмм ком-

муникации двумя признаками.

ВоFпервых, это линии жизни (lifelines). Линия жизни объекта

вертикальная пунктирная линия, символизирующая существова-

ние объекта в течение некоторого периода времени. Большинство

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

твуют в течение всего взаимодействия, поэтому все они выровне-

ны по верхней границе диаграммы, а линии их жизни проведены

от верха до низа.

Объекты могут быть созданы в процессе взаимодействия. Их вре-

мя жизни начинается с получения сообщения create, направленно-

го к прямоугольнику объекта в начале жизненного пути. Равным

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

Их линия жизни заканчивается при получении сообщения destroy,

что графически отмечено большим символом X.

Если взаимодействие отражает историю конкретных объектов,

то символ объекта с подчеркнутым именем размещается в начале

линии жизни. Однако в основном вам придется показывать взаи-

модействия прототипов. При этом линии жизни не представляют

конкретных объектов – они специфицируют прототипные роли,

представляющие разные объекты в каждом экземпляре взаимо-

действия. В данном случае не нужно подчеркивать имена, посколь-

ку они не символизируют конкретных объектов.

На заметку. Если объект изменяет значения своих атри-

бутов, свое состояние либо свои роли, то вы можете поме-

тить такую модификацию, разместив пиктограмму состоя-

ния на линии жизни объекта в точке, где происходит изме-

нение.

ВоFвторых, это наличие фокуса управления. Фокус управления

(focus of control) – высокий узкий прямоугольник, показывающий

период времени, в течение которого объект выполняет действие – как

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

по его завершению и может быть отмечена сообщением возврата.

Вы можете показать вложенность фокуса управления, вызванную

рекурсией, вызовом собственной операции либо возвратом вызова

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

родительского (таким образом можно изобразить сколько угодно

уровней вложения). Если нужно особенно точно показать располо-

жение фокуса управления, оттените часть прямоугольника, обозна-

чающего период времени, в течение которого на самом деле работает

метод объекта и управление не передается другому объекту. Правда,

эта конструкция будет казаться довольно «утяжеленной».

Основное содержимое диаграммы последовательности – сооб-

щения. Они изображаются стрелками, направленными от одной ли-

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

Если таковое асинхронно, то стрелка рисуется «уголком», а если

синхронно (вызов), то закрашенным треугольником. Ответ на син-

хронное сообщение (возврат из вызова) показывается пунктирной

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

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

да удобно таким образом продемонстрировать возвращаемое зна-

чение.

Упорядочение по времени вдоль единственной линии жизни

весьма важно. Обычно точное расстояние не имеет значения; ли-

нии жизни показывают лишь относительные последовательности,

поэтому не обеспечивают масштабного отображения времени. Кро-

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

правило, не влияют на хронологию передачи информации; сообще-

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

на отдельных линиях жизни формируют частичное упорядочение.

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

поэтому любая точка на другой линии жизни в конце цепи должна

всегда следовать за точкой начала цепи на исходной линии.

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

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

Последовательность сообщений прекрасно подходит для отобра-

жения отдельных линейных последовательностей, но часто возника-

ет необходимость показать условные операторы и циклы. Иногда

нужно отобразить параллельное выполнение множества последова-

тельностей. Эти разновидности высокоуровневого управления мо-

гут быть показаны на диаграммах последовательности с помощью

операторов структурированного управления.

Оператор управления (control operator) изображается на диа-

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

провождается тегом – текстовой меткой, заключенной в маленький

пятиугольник, в верхнем левом углу. Она показывает, какой это

оператор управления. Оператор применяется к линиям жизни, ко-

торые его пересекают. Эта часть называется телом оператора. Если

линия жизни не затрагивается оператором, она может быть прерва-

на в его начале (вверху) и продолжена в конце (внизу). Чаще всего

применяются следующие виды управления:

_ необязательное выполнение (тег opt). Тело этого управляю-

щего оператора выполняется, если защитное условие истин-

но на его входе. Защитное условие – это булево выражение,

которое указано в квадратных скобках в верхней части одной

из линий жизни внутри тела и может ссылаться на атрибуты

объекта;

_ условное выполнение (тег alt). Тело управляющего операто-

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

пунктирными линиями. Каждая подобласть представляет

одну ветвь условия и снабжена своим защитным условием.

Если защитное условие подобласти истинно, то она выпол-

няется. Вместе с тем может выполниться не более одной

подобласти. Если истинно несколько защитных условий,

то выбор подобласти для выполнения не определен и может

варьироваться от запуска к запуску. Если ни одно из условий

не истинно, то управление продолжается за пределами опе-

ратора. Одна подобласть может иметь особое защитное усло-

вие [else]. Такая подобласть выполняется, если не истинны

никакие другие защитные условия;

_ параллельное выполнение (тег par). Тело управляющего

оператора делится на несколько подобластей горизонталь-

ными пунктирными линиями. Каждая подобласть представ-

ляет параллельный (конкурирующий) поток вычислений.

При этом в большинстве случаев каждая подобласть включа-

ет разные линии жизни. Когда управление переходит к дан-

ному оператору, все его подобласти начинают выполнять-

ся параллельно. Выполнение сообщений в каждой из них

последовательно, но относительный порядок сообщений

из параллельных подобластей совершенно произволен. Эта

конструкция не должна применяться, если разные вычис-

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

существует очень много ситуаций из реального мира, в ко-

торых можно вычленить независимые параллельные потоки

деятельности;

циклическое (итерационное) выполнение (тег loop). Защит-

ное условие появляется в вершине одной линии жизни внутри

тела. Тело оператора цикла выполняется неоднократно – до тех

пор, пока защитное условие истинно перед каждой итераци-

ей. Когда же оно принимает значение false (ложь) в вершине

тела, управление передается за пределы оператора.

Существует также множество других операторов, но перечис-

ленные используются наиболее часто.

Для четкого обозначения границ диаграмма последовательнос-

ти может заключаться в прямоугольник с тегом sd в верхнем левом

углу. За этим тегом может следовать имя диаграммы.

На рис. 19.3 представлен упрощенный пример, который иллюст-

рирует использование некоторых управляющих операторов. Пользо-

ватель инициирует последовательность. Первый оператор – оператор

цикла. Цифры в скобках (1, 3) означают минимальное и максималь-

ное количество выполнений тела цикла. Поскольку минимальное

число – единица, это тело выполнится как минимум один раз, пре-

жде чем будет проверено защитное условие. В цикле пользователь

вводит пароль, и система проверяет его. Цикл прерывается после

трех попыток, хотя может завершиться и раньше в случае ввода не-

правильного пароля.

Следующий оператор необязательный. Его тело выполняется,

если введен правильный пароль; в противном случае остаток диа-

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

оператора содержит в себе параллельный оператор. Операторы мо-

гут быть вложены, как показано на рис. 19.3.

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

пользователю ввести номер счета, а другая – сумму. Поскольку они

параллельны, для этих двух элементов не предусматривается опре-

деленный порядок ввода. Это говорит о том, что параллельность

не всегда означает одновременное выполнение. На самом деле это

говорит о том, что два действия не скоординированы и могут со-

вершаться в любом порядке. Если они действительно независимы,

то могут перекрывать друг друга; если же последовательны, то одно

начинается по завершении другого в произвольной очередности.

После того как оба действия выполнены, параллельный опера-

тор завершен. Далее внутри необязательного оператора банк выда-

ет наличные пользователю. Этим исчерпывается роль диаграммы

последовательности.

Соседние файлы в папке ПрЧМИ