Диаграммы взаимодействия

Цель работы: 

  • изучение диаграмм взаимодействия,
  • изучение их применения в процессе проектирования.

1. Диаграммы взаимодействия (interaction diagrams)

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

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

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

  • «Менеджер» запрашивает текущий «Отчет» «Исполнителя»;
  • если «Отчет» устарел, «Менеджер» посылает запрос «Исполнителю» на обновление «Отчета»;
  • «Исполнитель» создает новый «Отчет»;
  • «Менеджер» делает повторный запрос «Отчета».

Существует два вида диаграмм взаимодействия: диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams).

На диаграмме последовательности объект изображается в виде прямоугольника на вершине пунктирной вертикальной линии (рис. 12.1).

Эта вертикальная линия называется линией жизни (lifeline) объекта. Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия.

Каждое сообщение представляется в виде стрелки между линиями жизни двух объектов. Сообщения появляются в том порядке, как они показаны

12-1.jpg (10652 bytes)

 

Рис. 12.1. Пример диаграммы последовательности

На диаграмме (сверху рниз). Каждое сообщение может быть помечено именем, при желании можно показать также аргументы и некоторую управляющую информацию. Также можно показать самоделегирование - сообщение, которое объект посылает самому себе, при этом стрелка сообщения указывает на ту же самуто линию жизни.

Изо всей возможной управляющей информации два ее вида имеют существенное значение. Во-первых, это условие, показывающее, в каком случае посылается сообщение (например, [ОтчетУстарел() == true]). Сообщение посылается только при выполнении данного условия. Другой полезный управавляющий маркер - это маркер итерации, показывающий, что сообщение посылается много раз для множества объектов-адресатов (например, обновить).

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

Таблица 12.1. Описание кнопок панели инструментов диаграмм взаимодействия Rational Rose

Кнопка

Описание Название

panel121.jpg (3048 bytes)

Выбор элемента модели Sekection Tool
Ввод текста Text Box
Комментарий Note
Связь комментария с элементом Abchor Note to Item
Объект Object
Сообщение Object Message
Самоделегирование Message to self

 

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

12-2.jpg (5286 bytes)

Рис. 12.2. Кооперативная диаграмма

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

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

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

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

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

Таблица 12.2. Описание кнопок панели инструментов кооперативных диаграмм Rational Rose

Кнопка

Описание Название

panel122.jpg (4875 bytes)

Выбор элемента модели Sekection Tool
Ввод текста Text Box
Комментарий Note
Связь комментария с элементом Abchor Note to Item
Объект Object
Представитель класса Class Instanse
Связь Object Link
Самоделегирование Link to self
Сообщение Link Message
Ответ Reverse Link Nessage
Поток данных Data Flow
обратный поток данных Reverse Date Flow

 

На рис. 12.3 и 12.4 приведены диаграммы последовательности модели подсистемы «Служба занятости», показывающие взаимодействие двух классов модели: Студент и БД студентов. На рис. 12.5 и 12.6 то же взаимодействие показано с помощью кооперативных диаграмм.

Найдем численную оценку для каждой из диаграмм.

12-3.jpg (14221 bytes)

 

Рис. 12.3. Диаграмма 1

Диаграмма 1: Так как на диаграмме последовательности связи отсутствуют, проведем расчет по сокращенной формуле:

f12-3.jpg (5245 bytes)

 

Диаграмма 2

f12-4.jpg (5279 bytes)

12-4.jpg (8908 bytes)

Рис. 12.5. Диаграмма 2

12-5.jpg (8075 bytes)

 

Рис. 12.5. Диаграмма 3

Теперь рассчитаем оценку для кооперативных диаграмм.
Диаграмма 3

f12-5.jpg (6286 bytes)

12-6.jpg (5092 bytes)

Рис. 12.6. Диаграмма 4

Диаграмма 4

f12-6.jpg (6379 bytes)

В результате значения для диаграмм 1 и 3 соответствуют оптимальным, для диаграмм 2 и 4 ниже оптимальных. Это можно объяснить низкой информативностью диаграмм 2 и 4, так как взаимодействие классов показано на них на слишком высоком уровне.

 

 

Упражнение 1. Создание диаграмм взаимодействия

Создадим диаграммы последовательности и кооперативные диаграммы для основного потока событий варианта использования Register for Courses. Готовые диаграммы последовательности должны иметь вид, как на рис. 12.7 - 12.11.

Настройка

  1. В меню модели выберите пункт Tools > Options.
  2. Перейдите на вкладку диаграмм.
  3. Контрольные переключатели Sequence Numbering, Collaboration Numbering должны быть помечены, a Focus of Control - нет.
  4. Нажмите OK, чтобы выйти из окна параметров.

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

  1. Щелкните правой кнопкой мыши в пакете Use-Case Realization - Register for Courses.
  2. Выберите пункт New Sequence Diagram в открывшемся меню.
  3. Назовите новую диаграмму Register for Courses - Basic Flow.
  4. Дважды щелкните по ней, чтобы открыть ее.

Добавление на диаграмму действующего лица, объектов и сообщений:

  1. Перетащите действующее лицо Student из браузера на диаграмму.
  2. Перетащите классы RegisterForCoursesForm и Registration Controller из браузера на диаграмму.
  3. На панели инструментов нажмите кнопку Object Message (Сообщение объекта).
  4. Проведите мышью от линии жизни действующего лица Student к линии жизни объекта RegisterForCoursesForm.
  5. Выделив сообщение, введите его имя: // register for courses. 
  6. Повторите действия 3-5, чтобы поместить на диаграмму остальные сообщения, как показано на рис. 12.7 (для рефлексивного сообщения 3 используется кнопка Message to Self).

Соотнесение сообщений с операциями

  1. Щелкните правой кнопкой по сообщению 1, // register for courses.
  2. Выберите пункт <new operation> в открывшемся меню. Появится окно спецификации операции.
  3. В поле имени оставьте имя сообщения - // register for courses.
  4. Нажмите на кнопку ОК, чтобы закрыть окно спецификации операции и вернуться на диаграмму.
  5. Повторите действия 1-4, пока не соотнесете с операциями все остальные сообщения.


12-7-1.jpg (22240 bytes)

12-7.jpg (54376  bytes)

Рис. 12.7 Диаграмма последовательности Register for Courses - Basic Flow (2 варианта)

Выполните аналогичные действия для создания диаграмм последовательности, показанных на рис. 12.8 - 12.11. Обратите внимание, что на диаграмме рис. 12.11 появился объект нового класса PrimarySheduleOfferinglnfo (класса ассоциаций, описывающего связь между классами Shedule и Offeringlnfo), который нужно предварительно создать.

12-8.jpg (48871 bytes)

Рис. 12.8 Диаграмма последовательности Register for Courses - Basic Flow (Create Schedule)

12-9.jpg (56492 bytes)

Рис. 12.9 Диаграмма последовательности - Register for Courses - Basic Flow (Update Schedule)

12-10.jpg (48681 bytes)

Рис. 12.10 Диаграмма последовательности Register for Courses - Basic Flow (Delete Schedule)

12-11.jpg (54636 bytes)

Рис. 12.11 Диаграмма последовательности Register for Courses - Basic Flow (Submit Schedule)

Создание примечаний

Для того чтобы поместить на диаграмму примечание:

  1. Нажмите на панели инструментов кнопку Note.
  2. Щелкните мышью по тому месту диаграммы, куда собираетесь поместить примечание.
  3. Выделив новое примечание, введите туда текст.
  4. Чтобы прикрепить примечание к элементу диаграммы, на панели инструментов нажмите кнопку Anchor Notes To Item (Прикрепить примечания к элементу).
  5. Нажав левую кнопку мыши, проведите указатель от примечания до элемента диаграммы, с которым оно будет связано.Между примечанием и элементом возникнет штриховая линия.
  6. Чтобы создать примечание-ссылку на другую диаграмму, создайте пустое примечание (без текста) .и перетащите на него из браузера нужную диаграмму.

Кроме примечаний на диаграмму можно поместить также и текстовую область. С ее помощью можно, например, добавить к диаграмме заголовок.

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

  1. На панели управления нажмите кнопку Text Box.
  2. Щелкните мышью внутри диаграммы, чтобы поместить туда текстовую область.
  3. Выделив эту область, введите в нее текст.

Создание кооперативной диаграммы

Для создания кооперативной диаграммы достаточно открыть диаграмму последовательности и нажать клавишу F5.

Так, диаграмма классов VOPC (classes only) после построения диаграмм взаимодействия в упражнении будет похожа на диаграмму приведенную на рис. 12.12.

12-12.jpg (52169 bytes)

Рис 12.12

Атрибуты классов анализа определяются исходя из знаний о предметной области, требований к системе и глоссария.

  1. Каково назначение диаграмм взаимодействия?
  2. Как относятся между собой диаграммы вариантов использования и диаграммы взаимодействия?
  3. Назовите два вида диаграмм взаимодействия.
  4. Что такое «жизненная линия» на диаграмме последовательности?
  5. Как на диаграмме последовательности представляются сообщения?
  6. Что такое самоделегирование?
  7. Что показывает активизация объекта?
  8. В чем отличие кооперативных диаграмм от диаграмм взаимодействия?
  9. Каковы преимущества и недостатки каждого вида взаимодействия?
  10. Как отображается условное поведение на диаграммах взаимодействия?