Комментарии или примечания уже рассматривались ранее при изучении других видов диаграмм. Они могут включаться и в диаграммы последовательности, ассоциируясь с отдельными объектами или сообщениями. При этом используется стандартное обозначение для комментария – прямоугольник с «заломленным» правым верхним углом. Внутри этого прямоугольника записывается текст комментария на естественном языке.
8.3. Пример построения диаграммы последовательности
В качестве примера рассмотрим построение диаграммы последовательности для моделирования процесса телефонного разговора с использованием обычной телефонной сети. Объектами в этом примере являются: два абонента а и Ь, два телефонных аппарата end, коммутатор и сам разговор как объект моделирования. При этом как коммутатор, так и разговор являются анонимными объектами.
На первом этапе располагаем выбранные объекты на предполагаемой диаграмме (рис. 8.8). Заметим, что абонентов мы будем рассматривать как актеров, причем первый из них – а – играет активную роль, а второй – b – пассивную роль. Поэтому первый получает фокус управления сразу после своего появления в системе, а второй имеет только линию жизни. Коммутатор также имеет постоянную активность, что изображается его фокусом управления. Разговор как объект появляется только после установки соединения и уничтожается с его прекращением. Поэтому он будет изображен позже на этой же диаграмме последовательности.
Рис. 8.8. Начальный фрагмент диаграммы последовательности для моделирования телефонного разговора
Процесс взаимодействия в этой системе начинается с поднятия трубки телефонного аппарата первым абонентом. Тем самым он посылает сообщение телефонному аппарату с, которое переводит этот аппарат в активное состояние и вызывает действие – подачу тонового сигнала в телефонную трубку для первого абонента. Следующее действие также инициируется первым абонентом – набор цифр телефонного номера. Это представлено в форме итеративного сообщения со знаком "*" слева от его имени.
Заметим, что поднятие телефонной трубки и набор цифр номера являются физическими действиями и поэтому изображаются в форме простых асинхронных сообщений. После набора цифр'номера телефона аппарат с рекурсивно вызывает процедуру посылки коммутационных импульсов на коммутатор. Последний инициирует создание нового объекта в моделируемой системе – телефонного разговора. Дополненный фрагмент диаграммы последовательности изображен на рис. 8.9.
После создания анонимный объект «разговор» сразу получает фокус активности и посылает сообщение телефонному аппарату d на выполнение действия – звонка вызова. При этом второй абонент снимает трубку (асинхронное сообщение), тем самым устанавливается прямое соединение между абонентами а и Ь. После того как абоненты опустят трубки, разговор заканчивается. Тем самым объект «разговор» уничтожается. Окончательный вариант диаграммы последовательности может содержать некоторые временные ограничения и комментарии (рис. 8.10). Назначение отдельных сообщений соответствуют рассмотренным действиям.
Рис. 8.9. Дополненный фрагмент диаграммы последовательности для моделирования телефонного разговора
Рис. 8.10. Окончательный вариант диаграммы последовательности для моделирования телефонного разговора
8.4. Заключительные рекомендации по построению диаграмм последовательности
Как уже отмечалось, построение диаграммы последовательности целесообразно начинать с выделения из всей совокупности тех и только тех классов, объекты которых участвуют в моделируемом взаимодействии. После этого все объекты наносятся на диаграмму с соблюдением некоторого порядка инициализации сообщений. Здесь необходимо установить, какие объекты будут существовать постоянно, а какие временно – только на период выполнения ими требуемых действий.
Когда объекты визуализированы, можно приступать к спецификации сообщений. При этом следует учитывать те роли, которые играют сообщения в системе. При необходимости уточнения этих ролей надо использовать их разновидности и стереотипы. Для уничтожения объектов, которые создаются на время выполнения своих действий, нужно предусмотреть явное сообщение.
Наиболее простые случаи ветвления процесса взаимодействия можно изобразить на одной диаграмме с использованием соответствующих графических примитивов. Однако следует помнить, что каждый альтернативный поток управления может существенно затруднить понимание построенной модели. Поэтому общим правилом является визуализация каждого потока управления на отдельной диаграмме последовательности. В этой ситуации такие отдельные диаграммы должны рассматриваться совместно как одна модель взаимодействия.