Разработка диаграммы последовательности и редактирование свойств ее элементов
Диаграмма последовательности является другой формой визуализации взаимодействия в модели и, как и диаграмма кооперации , оперирует объектами и сообщениями . Общие рекомендации по построению диаграммы последовательности были рассмотрены в лекции 8 курса «Основы объектно-ориентированного моделирования в нотации UML «. Особенность работы в среде IBM Rational Rose 2003 заключается в том, что этот вид канонической диаграммы может быть создан автоматически после построения диаграммы кооперации и нажатия клавиши <F5>. С помощью этой же клавиши осуществляется переключение между диаграммами последовательности и кооперации в модели.
Однако в отдельных случаях бывает удобно начать построение диаграмм взаимодействия с диаграммы последовательности . В этом случае активизировать рабочее окно диаграммы последовательности можно несколькими способами:
- Щелкнуть на кнопке с изображением диаграммы взаимодействия на стандартной панели инструментов и выбрать для построения диаграмму последовательности.
- Выполнить операцию главного меню: Browse
Interaction Diagram (Браузер
Диаграмма взаимодействия) и выбрать для построения новую диаграмму последовательности.
- Выполнить операцию контекстного меню: New
Sequence Diagram (Новая
Диаграмма последовательности ) для логического представления или представления вариантов использования в браузере проекта.
При этом появляется новое окно с чистым рабочим листом диаграммы классов и специальная панель инструментов , содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы последовательности (табл. 8.1). Назначение отдельных кнопок панели можно узнать из всплывающих подсказок.
Диаграммы взаимодействия
Диаграммы взаимодействия являются моделями, описывающими поведение взаимодействующих групп объектов.
Как правило, диаграмма взаимодействия охватывает поведение только одного варианта использования. На такой диаграмме отображается ряд объектов и те сообщения, которыми они обмениваются между собой в рамках данного варианта использования.
Данный подход будет проиллюстрирован на примере простого варианта использования, который описывает следующее поведение:
- «Менеджер» запрашивает текущий «Отчет» «Исполнителя»;
- если «Отчет» устарел, «Менеджер» посылает запрос «Исполнителю» на обновление «Отчета»;
- «Исполнитель» создает новый «Отчет»;
- «Менеджер» делает повторный запрос «Отчета».
Существует два вида диаграмм взаимодействия: диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams).
Диаграммы последовательности
На диаграмме последовательности объект изображается в виде прямоугольника на вершине пунктирной вертикальной линии (рис. 12.1).
Эта вертикальная линия называется линией жизни (lifeline) объекта. Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия.
Каждое сообщение представляется в виде стрелки между линиями жизни двух объектов. Сообщения появляются в том порядке, как они показаны
Рис. 12.1. Пример диаграммы последовательности
На диаграмме (сверху рниз). Каждое сообщение может быть помечено именем, при желании можно показать также аргументы и некоторую управляющую информацию. Также можно показать самоделегирование — сообщение, которое объект посылает самому себе, при этом стрелка сообщения указывает на ту же самуто линию жизни.
Изо всей возможной управляющей информации два ее вида имеют существенное значение. Во-первых, это условие, показывающее, в каком случае посылается сообщение (например, [ОтчетУстарел() == true]). Сообщение посылается только при выполнении данного условия. Другой полезный управавляющий маркер — это маркер итерации, показывающий, что сообщение посылается много раз для множества объектов-адресатов (например, обновить).
Активизации — прямоугольники на линиях жизни — показывают, когда метод становится активным (во время его выполнения либо при ожидании результата выполнения какой-либо процедуры). Используя механизм активизаций, можно более четко показать смысл самоделегирования. Без них довольно трудно определить, где же выполняются следующие после самоделегирования вызовы — в вызывающем методе или в вызываемом. Активизации вносят ясность в этот вопрос.
Таблица 12.1. Описание кнопок панели инструментов диаграмм взаимодействия Rational Rose
Кнопка
Кооперативные диаграммы (collaboration diagrams)
Вторым видом диаграмм взаимодействия является кооперативная диаграмма
Рис. 12.2. Кооперативная диаграмма
На кооперативной диаграмме экземпляры объектов показаны в виде пиктограмм. Линии между ними обозначают сообщения, обмен которыми осуществляется в рамках данного варианта использования.
Каждый вид диаграмм взаимодействия имеет свои преимущества, выбор обычно осуществляется исходя из предпочтений разработчика. На диаграммах последовательности делается акцент именно на последовательности сообщений, при этом легче наблюдать порядок, в котором происходят различные события. В случае кооперативных диаграмм можно использовать пространственное расположение объектов для того, чтобы показать их статическое взаимодействие.
Одним из главных свойств любой диаграммы взаимодействия является ее простота. Посмотрев на диаграмму, можно легко увидеть все сообщения.
Однако при попытке изобразить нечто более сложное, чем единственный последовательный процесс без множества условных переходов или циклов, данный подход может не сработать.
Для отображения условного поведения на диаграммах взаимодействия существует два подхода. Один из них состоит в использовании отдельных диаграмм для каждого сценария. Второй заключается в том, что сообщения сопровождаются условиями, показывающими поведение объектов.
Таблица 12.2. Описание кнопок панели инструментов кооперативных диаграмм Rational Rose
Кнопка
Пример
На рис. 12.3 и 12.4 приведены диаграммы последовательности модели подсистемы «Служба занятости», показывающие взаимодействие двух классов модели: Студент и БД студентов. На рис. 12.5 и 12.6 то же взаимодействие показано с помощью кооперативных диаграмм.
Найдем численную оценку для каждой из диаграмм.
Рис. 12.3. Диаграмма 1
Диаграмма 1: Так как на диаграмме последовательности связи отсутствуют, проведем расчет по сокращенной формуле:
Диаграмма 2
Рис. 12.5. Диаграмма 2
Рис. 12.5. Диаграмма 3
Теперь рассчитаем оценку для кооперативных диаграмм.
Диаграмма 3
Рис. 12.6. Диаграмма 4
Диаграмма 4
В результате значения для диаграмм 1 и 3 соответствуют оптимальным, для диаграмм 2 и 4 — ниже оптимальных. Это можно объяснить низкой информативностью диаграмм 2 и 4, так как взаимодействие классов показано на них на слишком высоком уровне.
Упражнения
Упражнение 1. Создание диаграмм взаимодействия
Создадим диаграммы последовательности и кооперативные диаграммы для основного потока событий варианта использования Register for Courses. Готовые диаграммы последовательности должны иметь вид, как на рис. 12.7 — 12.11.
- В меню модели выберите пункт Tools > Options.
- Перейдите на вкладку диаграмм.
- Контрольные переключатели Sequence Numbering, Collaboration Numbering должны быть помечены, a Focus of Control — нет.
- Нажмите OK, чтобы выйти из окна параметров.
Создание диаграммы последовательности
- Щелкните правой кнопкой мыши в пакете Use-Case Realization — Register for Courses.
- Выберите пункт New > Sequence Diagram в открывшемся меню.
- Назовите новую диаграмму Register for Courses — Basic Flow.
- Дважды щелкните по ней, чтобы открыть ее.
Добавление на диаграмму действующего лица, объектов и сообщений:
- Перетащите действующее лицо Student из браузера на диаграмму.
- Перетащите классы RegisterForCoursesForm и Registration Controller из браузера на диаграмму.
- На панели инструментов нажмите кнопку Object Message (Сообщение объекта).
- Проведите мышью от линии жизни действующего лица Student к линии жизни объекта RegisterForCoursesForm.
- Выделив сообщение, введите его имя: // register for courses.
- Повторите действия 3-5, чтобы поместить на диаграмму остальные сообщения, как показано на рис. 12.7 (для рефлексивного сообщения 3 используется кнопка Message to Self).
Соотнесение сообщений с операциями
- Щелкните правой кнопкой по сообщению 1, // register for courses.
- Выберите пункт <new operation> в открывшемся меню. Появится окно спецификации операции.
- В поле имени оставьте имя сообщения — // register for courses.
- Нажмите на кнопку ОК, чтобы закрыть окно спецификации операции и вернуться на диаграмму.
- Повторите действия 1-4, пока не соотнесете с операциями все остальные сообщения.
Рис. 12.7 Диаграмма последовательности Register for Courses — Basic Flow (2 варианта)
Выполните аналогичные действия для создания диаграмм последовательности, показанных на рис. 12.8 — 12.11. Обратите внимание, что на диаграмме рис. 12.11 появился объект нового класса PrimarySheduleOfferinglnfo (класса ассоциаций, описывающего связь между классами Shedule и Offeringlnfo), который нужно предварительно создать.
Рис. 12.8 Диаграмма последовательности Register for Courses — Basic Flow (Create Schedule)
Рис. 12.9 Диаграмма последовательности — Register for Courses — Basic Flow (Update Schedule)
Рис. 12.10 Диаграмма последовательности Register for Courses — Basic Flow (Delete Schedule)
Рис. 12.11 Диаграмма последовательности Register for Courses — Basic Flow (Submit Schedule)
Создание примечаний
Для того чтобы поместить на диаграмму примечание:
- Нажмите на панели инструментов кнопку Note.
- Щелкните мышью по тому месту диаграммы, куда собираетесь поместить примечание.
- Выделив новое примечание, введите туда текст.
- Чтобы прикрепить примечание к элементу диаграммы, на панели инструментов нажмите кнопку Anchor Notes To Item (Прикрепить примечания к элементу).
- Нажав левую кнопку мыши, проведите указатель от примечания до элемента диаграммы, с которым оно будет связано.Между примечанием и элементом возникнет штриховая линия.
- Чтобы создать примечание-ссылку на другую диаграмму, создайте пустое примечание (без текста) .и перетащите на него из браузера нужную диаграмму.
Кроме примечаний на диаграмму можно поместить также и текстовую область. С ее помощью можно, например, добавить к диаграмме заголовок.
Для того чтобы поместить на диаграмму текстовую область:
- На панели управления нажмите кнопку Text Box.
- Щелкните мышью внутри диаграммы, чтобы поместить туда текстовую область.
- Выделив эту область, введите в нее текст.
Создание кооперативной диаграммы
Для создания кооперативной диаграммы достаточно открыть диаграмму последовательности и нажать клавишу F5.
Так, диаграмма классов VOPC (classes only) после построения диаграмм взаимодействия в упражнении будет похожа на диаграмму приведенную на рис. 12.12.
Рис 12.12
Атрибуты классов анализа определяются исходя из знаний о предметной области, требований к системе и глоссария.