Главная » Delphi » Delphi 2006 – Диаграмма последовательности (Sequence diagram)

0

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

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

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

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

Создание диаграммы последовательности выполняется командой контекстного меню с пространства диаграммы Add > Other Diagram > Sequence Diagram (Добавить > Другая диаграмма > Диаграмма последовательности) — рис. 8.21.

Объекты

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

Рис. 8.23. Доставка сообщения с задержкой

зи Message with delivery time (Сообщение с задержкой). Объект-сервер в результате автоматически сдвигается вниз. Тот же эффект достигается с помощью свойства Non-Atomic Delivery (Распределенная доставка) сообщения, если оно равно True (рис. 8.23).

Как правило, смысл сообщения в диаграммах данного класса — извещение сервера о том, что ему необходимо выполнить некоторое действие. Свойство Synchronization (Синхронизация) позволяет уточнять форму сообщения. Оно может принимать одно из следующих значений.

•        call. Обычное сообщение. Сплошная линия со стрелкой отходит от линии жизни клиента, а стрелка касается линии жизни сервера.

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

•        synchronous, no wait. Синхронное сообщение, не требующее ожидания ответа от сервера, обозначается символом X или О рядом со стрелкой (рис. 8.24).

•        wait. Сообщение, ответ на которое ожидается. Обозначается символом о рядом со стрелкой.

Сообщение может посылаться объектом самому себе, тогда стрелка показывается замкнутым кольцом. Этот элемент формируется на линии жизни инструментом Self Message.

Puc. 8.24. Сообщение, не требующее ответа

Необходимс^ртметить удобную возможность той версии UML, которая реализована в Delphi, — возможность дополнения диаграммы последовательностей операторами языка. Это позволит, в частности, моделировать непосредственный процесс работы исходного кода. Для этого на палитре инструментов выбирается инструмент Statement Block (Оператор). После добавления блока на линию жизни будет предложено выбрать в диалоговом окне один из допустимых операторов языка Delphi (рис. 8.25).

Рис. 8.25. Включение операторов языка Delphi в диаграмму UML

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

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

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

•             call — вызов серверного метода.

•        return — возврат после вызова. Если выбрать инструмент Return палитры инструментов, то он автоматически соединит сервер, выполнявший действие, с клиентом, вызвавшим это действие. Таким образом указывается завершающее сообщение (пунктирная линия), информирующее о завершении некоторого процесса.

•        create — требование создать объект. Оно может быть указано явно с помощью свойства сообщения Creation (Создание), равного true. В этом случае объект, принимающий сообщение, размещается сразу после стрелки, что обозначает его создание в соответствующий момент времени. Параметры процедуры создания со своими типами могут указываться в свойстве Arguments (Аргументы), а условия вызова — в свойстве Condition (Условие).

•        destroy — требование уничтожить объект. Формируется заданием значения true свойству Destruction (Уничтожение).

•        send — послать конкретный асинхронный сигнал, описанный в объекте- клиенте.

Комментарий к линии сообщения вводится в поле Label (Подпись). В некоторых случаях требуется указать операцию (свойство Operation), связанную с отсылкой сообщения, явно ввести время отправки сообщения (Send Time), время его доставки (Execution Time) и приема (Receive Time). При этом, хотя на диаграмме и будут показаны временные процессы, но, как уже говорилось, продолжительность тех или иных событий не указывается в абсолютных единицах времени.

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии