Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по курсу ТРПС / Копия ТРПС - Метод-указания к ЛР.doc
Скачиваний:
48
Добавлен:
12.03.2015
Размер:
1.33 Mб
Скачать

3.3. Порядок выполнения

1. Изучить назначение элементов интерфейса RRдля построения диаграммы классов. Рассмотреть типовой пример построения диаграммы для банкомата.

2. Продолжить моделирование системы в соответствии с индивидуальным заданием в виде построения диаграммы классов:

2.1. Определить состав классов различных типов для реализации модели системы (должно быть не менее 6 классов для актёров и прецедентов), создать несколько пакетов и распределить классы по пакетам.

2.2. Для каждого класса установить стереотипы, добавить и специфицировать атрибуты и операции (определить тип аргументов и результата); задать число объектов этого класса, его устойчивость, а также другие свойства.

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

2.4. В секции документации для каждого класса ввести комментарии.

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

3. Оформить отчёт по результатам выполнения лабораторной работы.

3.4. Содержание отчёта

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

1. Постановка задачи.

2. Описание пакетов и классов системы.

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

4. Окончательный вид диаграммы классов проектируемой системы.

3.5. Варианты заданий

Вариант индивидуального задания соответствует варианту, полученному при выполнении лабораторной работы №2.

3.6. Контрольные вопросы

1. Каково назначение диаграммы классов? Какие типы классов можно создать в средеRR?

2. Какими способами можно создать диаграмму классов в средеRR?

3. Какие инструменты доступны для диаграммы? Какие команды предоставляет контекстное меню класса?

4. Как настроить свойства атрибутов и операций класса?

5. Какие виды связей доступны в диаграмме классов?

6. Каким образом можно детализировать описание класса в средеRR?

7. Что такое стереотип? Какие стереотипы доступны вRR?

8. Каким образом можно добавить новый стереотип вRR?

9. Как создать вложенный класс вRR?

10. Как формируются пакеты классов вRR?

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

4.1. Цель работы

Целью данной работы является использование диаграмм взаимодействия (диаграммы последовательностей и диаграммы кооперации) при разработке программной системы в среде RR.

4.2. Общие сведения

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

Существует два типа диаграмм взаимодействия – диаграммы последовательности (sequence diagram) и диаграммы кооперации (collaboration diagram). На диаграммах обоих типов представлена одна и та же информация, но между ними есть два различия. Диаграммы последовательности заостряют внимание на управлении и представляют собой разворот взаимодействия во времени с отображением последовательности выдачи сообщений. Диаграммы кооперации отображают поток данных и показывают взаимодействие объектов независимо от времени.

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

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

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

1. Щёлкнуть правой кнопкой мыши на пакете или прецеденте в браузере.

2. В открывшемся меню выбрать пункт New → Sequence Diagram(Создать → Диаграмма последовательности) и определить имя новой диаграммы.

3. Дважды щёлкнуть на диаграмме в браузере для её открытия.

Либо выполнить операцию меню Browse → Interaction Diagram(Браузер → Диаграмма взаимодействия) и выбрать для построения новую диаграмму последовательности с указанием места её размещения.

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

Таблица 4.1

Значок

Подсказка

Назначение кнопки

Selection Tool

Переключает в режим выделения элементов на диаграмме

Text Box

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

Note

Добавляет на диаграмму примечание

Anchor Note to Item

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

Object

Добавляет на диаграмму объект

Object Message

Добавляет на диаграмму простое сообщение

Message to Self

Добавляет на диаграмму рефлексивное сообщение

Return Message

Добавляет сообщение типа возврата из процедуры

Destruction Marker

Добавляет на диаграмму символ уничтожения объекта

Procedure Call

Добавляет на диаграмму сообщение типа вызова процедуры

Asynchronous Message

Добавляет на диаграмму асинхронное сообщение

Открыть существующую диаграмму последовательности можно с помощью пункта меню Browse → Interaction Diagram(Браузер → Диаграмма взаимодействия) или дважды щёлкнуть по этой диаграмме в логическом представлении или в представлении прецедента браузера.

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

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

Отметим, что каждый объект является реализацией класса, поэтому каждый объект диаграммы последовательности может быть соотнесён с классом. Для этого можно воспользоваться полем Classокна спецификации объекта. По умолчанию полеClass=Unspecified(не определён). После соотнесения класса с объектом название класса появится на диаграмме за именем объекта и двоеточием. При назначении объекту класса можно либо указать уже существующий класс модели, либо создать новый класс. К моменту генерации кода все объекты должны быть соотнесены с классами. Разорвать соотнесение объекта с классом можно следующим образом: щёлкнуть правой кнопкой мыши на объекте, в появившемся меню выбрать пунктOpen Specificationи в раскрывшемся классе выбрать пунктUnspecified. Если нужно создать для объекта новый класс, то нужно выполнить те же действия, но в списке классов выбрать пунктNew(Создать).

Если вы хотите убедиться, что все объекты соотнесены с классами, то выберите в меню модели пункт Report → Show Unresolved Objects(Отчёт → Показать свободные объекты).

В среде RRдля каждого объекта можно задать его устойчивость в окне спецификации. Поддерживаются следующие варианты:persistent(устойчивый) – сохраняется в базе данных или другим способом, обеспечивающим постоянное хранение;static(статичный) – сохраняется в памяти компьютера в течение всего времени работы программы;transient(временный) – сохраняется в течение очень короткого времени (например, пока не закончится выполнение процессов).

Расположив объекты на диаграмме, нужно показать сообщения между ними. Сообщение – это связь между объектами, в которой один из них (клиент) требует от другого (сервера) выполнения каких-либо действий. При генерации кода сообщения транслируются в вызовы функций.

Для добавления сообщения между объектами нужно с помощью левой кнопки мыши нажать кнопку с изображением сообщения на специальной панели инструментов, отпустить левую кнопку мыши, щёлкнуть левой кнопкой мыши на изображении линии жизни 1‑го объекта на диаграмме и отпустить её на изображении линии жизни 2‑го объекта. При этом изображение линии жизни у этой пары объектов изменится на изображение фокуса управления.

Для спецификации свойств добавленного сообщения предназначено окно, которое можно открыть двойным щелчком на изображении сообщения на диаграмме последовательности. Имя сообщения можно выбрать на вкладке Generalиз выпадающего списка операций соответствующего класса-приёмника. Имя сообщения можно выбрать также из контекстного меню сообщения, в котором перечислены все операции класса-приёмника данного сообщения. В контекстном меню можно задать новую операцию, в этом случае следует выбрать строкуNew operation. При этом откроется окно спецификации свойств новой операции класса-приёмника.

При добавлении сообщений на диаграмму последовательности они получают по умолчанию свой номер в общей последовательности сообщений. Нумерация сообщений на диаграмме последовательности может быть отключена. При необходимости показать номера сообщений следует выполнить операцию меню Tools → Options(Инструменты → Параметры), открыть вкладкуDiagram(Диаграмма) и выставить отметку выбора строкиSequence numbering(Нумерация сообщений на диаграмме последовательности) в группе свойствDisplay.

Для детальной спецификации свойств сообщений можно использовать группы свойств Synchronization(Синхронизация) иFrequency(Частота) на вкладкеDetailокна спецификации сообщения. При изменении способа синхронизации передаваемого сообщения изменяется графическое изображение стрелки этого сообщения. Группа свойствSynchronizationопределяет порядок обмена сообщениями, который может быть выбран из следующих вариантов:Simple– простая посылка сообщения;Synchronous– операция происходит только в том случае, когда клиент посылает сообщение, а сервер может принять сообщение клиента;Balking– операция происходит только в том случае, когда сервер готов немедленно принять сообщение, если сервер не готов к приёму, клиент не выдаёт сообщение; Timeout – клиент отказывается от выдачи сообщения, если сервер в течение определённого времени не может его принять; Procedure Call – клиент вызывает процедуру сервера и полностью передает ему управление; Return – определяет, что происходит возврат из процедуры; Asynchronous – клиент выдаёт сообщение, и, не ожидая ответа сервера, продолжает выполнение.Группа свойств Frequencyопределяет частоту обмена сообщениями: Periodic – сообщения поступают от клиента с заданной периодичностью;Aperiodic– сообщения поступают от клиента нерегулярно.

Для удаления элемента с диаграммы выделите его и в меню модели выберите пункт Edit → Delete from model(Правка → Удалить из модели). При необходимости удаления всей диаграммы последовательности нужно щелкнуть правой кнопкой мыши на ней в браузере и в открывшемся меню выбрать пунктDelete.

Типовой пример

Для модели банкомата фрагмент вида диаграммы последовательности для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’, приведён на рис.4.1. При построении диаграммы последовательности ‘Снятие наличных по кредитной карточке’ добавлены следующие объекты и сообщения.

1. Объекты классов: ‘Клиент банкомата’, ‘Устройство чтения карточки’, ‘Контроллер банкомата’, ‘Транзакция банкомата’, ‘Клавиатура банкомата’, ‘Экран банкомата’, ‘Принтер банкомата’, ‘Устройство выдачи наличных’ и ‘IКонтроллер Банка’.

2. Сообщения:

1) ‘прочитать идентификатор карточки()’ – от линии жизни объекта класса ‘Клиент банкомата’ к линии жизни объекта класса ‘Устройство чтения карточки’;

2) ‘проверить идентификатор карточки(integer)’ – от ‘Контроллер банкомата’ к ‘IКонтроллер банка’;

3) ‘ввести ПИН-код()’ – от ‘Клиент банкомата’ к ‘Клавиатура банкомата’;

4) ‘прочитать ПИН-код()’ – от ‘Контроллер банкомата’ к ‘Устройство чтения карточки’;

5) ‘создать новую транзакцию()’ – от ‘Контроллер банкомата’ к изображению ‘Транзакция банкомата’. Изображение 2‑го объекта перемещено вниз на уровень этого сообщения, что означает создание объекта в более поздний момент времени, чем начало функционирования системы.

6) ‘проверить правильность ПИН-кода()’ – от ‘Контроллер банкомата’ к ‘Транзакция банкомата’;

7) ‘показать меню опций()’ – от ‘Контроллер банкомата’ к ‘Экран банкомата’;

8) ‘ввести тип транзакции()’ – от ‘Клиент банкомата’ к ‘Клавиатура банкомата’;

9) ‘показать меню снятия суммы()’ – от‘Контроллер банкомата’ к ‘Экран банкомата’;

10) ‘ввести сумму снятия наличных()’ – от ‘Клиент банкомата’ к ‘Клавиатура банкомата’;

Рис.4.1. Фрагмент окончательного вида диаграммы последовательности для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’

11) последовательно 3 сообщения: ‘открыть счёт клиента(integer)’, ‘проверить баланс клиента(integer, currency)’ и ‘уменьшить счёт клиента(integer, currency)’ – от ‘Контроллер банкомата’ к ‘IКонтроллер банка’;

12) ‘распечатать чек()’ – от ‘Контроллер банкомата’ к ‘Принтер банкомата’;

13) ‘вернуть кредитную карточку()’ – от ‘Контроллер банкомата’ к ‘Устройство чтения карточки’;

14) ‘выдать наличные()’ – от ‘Контроллер банкомата’ к ‘Устройство выдачи наличных’;

15) ‘завершить транзакцию()’ – от ‘Контроллер банкомата’ к ‘Транзакция банкомата’.

После добавления сообщения ‘завершить транзакцию()’ поместить на линию жизни объекта класса ‘Транзакция банкомата’ символ уничтожения этого объекта.

Диаграмма кооперации

Особенность работы в среде RRзаключается в том, что диаграмма кооперации может быть автоматически создана на основе диаграммы последовательности и наоборот. Для этого, находясь в диаграмме необходимо нажать клавишу <F5> или использовать менюBrowse → Create Collaboration/Sequence diagram(Браузер → Создать диаграмму кооперации/последовательности). С помощью клавиши <F5> также осуществляется переключение между диаграммами в модели.

Диаграммы кооперации обычно создаются в браузере и размещаются под прецедентом или пакетом. Для создания новой диаграммы кооперации щёлкните правой кнопкой мыши на прецеденте в браузере, в открывшемся меню выберите пункт New → Collaboration Diagram(Создать → Диаграмма кооперации), после определения имени диаграммы дважды щёлкните мышью на ней в браузере.

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

Таблица 4.2

Значок

Подсказка

Назначение кнопки

Selection Tool

Переключает в режим выделения элементов на диаграмме

Text Box

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

Note

Добавляет на диаграмму примечание

Anchor Note to Item

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

Object

Добавляет на диаграмму объект

Class Instance

Добавляет экземпляр класса (абстрактные реализации класса)

Object Link

Добавляет на диаграмму связь

Link To Self

Добавляет на диаграмму рефлексивную связь

Link Message

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

Reverse Link Message

Добавляет на связь диаграммы обратное сообщение

Data Token

Добавляет на связь элемент прямого потока данных

Reverse Data Token

Добавляет на связь элемент обратного потока данных

Добавление объекта на диаграмму кооперации и редактирование его свойств выполняется так же, как и для диаграммы последовательности. Перед тем как поместить сообщение на диаграмму кооперации, необходимо установить путь коммуникации между объектами. Этот путь называется связью (link) и создаётся с помощью кнопкиObject Link(Связь объекта) панели инструментов. После создания связи можно поместить сообщение между объектами.

Для добавления связи между объектами нужно с помощью левой кнопки мыши нажать кнопку с изображением связи на специальной панели инструментов, отпустить левую кнопку мыши, щёлкнуть левой кнопкой мыши на изображении 1‑го объекта на диаграмме и отпустить её на изображении 2‑го объекта. Можно задать имя связи с помощью окна спецификации свойств данной связи.

Кроме имени связи можно также задать: имя ассоциации, видимость связанных объектов и наличие общих ролей. Более важной является вкладка Messages(сообщения) для спецификации сообщений между связанными объектами. Добавить сообщения можно несколькими способами. Стандартный способ заключается в использовании кнопки со значком сообщения на специальной панели инструментов. Более удобным представляется способ добавления сообщений с помощью окна свойств связей. Для этого двойным щелчком на линии связи вызывается окно её свойств и раскрывается вкладкаMessages(сообщения). После этого следует выполнить операцию контекстного менюInsert To(Вставить в направлении), в результате чего появляется вложенный список с предложением выбрать одну из операций целевого класса для спецификации имени сообщения.

Спецификация сообщений диаграммы кооперации выполняется тем же способом, что и для диаграммы последовательности.

Типовой пример

Для модели банкомата окончательный вид диаграммы кооперации для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’ приведён на рис.4.2.

Рис.4.2. Окончательный вариант диаграммы кооперации для типичного хода событий прецедента ‘Снятие наличных по кредитной карточке’

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

1. Проверить соотнесение объекта, получающего сообщения, с классом.

2. Щёлкнуть правой кнопкой мыши на сообщении диаграммы.

3. Выбрать операцию из появившегося списка.

Для уничтожения соотнесения сообщения с операцией дважды щёлкните на сообщение диаграммы, из поля Nameудалите имя операции и введите новое имя сообщения.

Если нужно создать новую операцию для сообщения:

1. Проверить соотнесение объекта, получающего сообщения, с классом.

2. Щёлкнуть правой кнопкой мыши на сообщении диаграммы и выбрать пункт New operation(Новая операция).

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

4. Щёлкнуть на сообщении правой кнопкой мыши, в появившемся списке выбрать новую операцию.

Если вы хотите убедиться, что каждое сообщение соотнесено с операцией, то выберите в меню модели пункт Report → Show Unresolved Messages(Отчёт → Показать свободные сообщения).