ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 162
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1.3. Порядок выполнения
1. Изучить назначение основных элементов и освоить интерфейс RR.
2. Изучить назначение и освоить операции меню File, View, Browse, и Tools.
1.4. Содержание отчёта
Результаты выполнения лабораторной работы необходимо представить в виде отчёта, который должен содержать краткое изложение изученных элементов и основных операций интерфейса RR.
1.5. Варианты заданий
В данной лабораторной работе варианты заданий не предусмотрены. Студенты выполняют общее для всех задание по изучению интерфейса RR.
1.6. Контрольные вопросы
1. Что представляет собой программа RR?
2. В чём особенности рабочего интерфейса программы RR?
3. Какие документы формируются при разработке проекта с помощью RR?
4. В чём назначение основных элементов рабочего интерфейса RR?
5. Какие пункты меню используются для настройки параметров модели?
6. В чём назначение браузера проекта? Перечислите его составляющие.
7. Как получаются изображения элементов в нотации Booch или OMT?
8. Для чего предназначены операции меню Browse (Обзор)?
9. В чём отличие специальной панели инструментов от стандартной?
10. Для чего используется окно документации?
11. Какие операции меню можно использовать для проверки модели на наличие ошибок? Где будет отображена информация об ошибках?
12. Можно ли импортировать / экспортировать информацию о модели в RR?
2. Диаграмма прецедентов
2.1. Цель работы
Целью данной работы является использование диаграммы прецедентов при разработке программной системы в среде RR.
2.2. Общие сведения
Работа над моделью RR начинается с общего анализа проблемы и построения диаграммы прецедентов (use case diagram, тж. диаграмма вариантов использования), которая отражает функциональное назначение проектируемой системы. Каждый прецедент – это описание набора схожих сценариев поведения, которому следуют актёры (actors). Диаграмма прецедентов показывает совокупность прецедентов и актёров, а также отношения между ними. Актёр изображается фигурой человека или символом класса со стереотипом с кратким именем. Прецедент обозначается эллипсом и кратким именем.
Для вновь создаваемого проекта можно воспользоваться мастером типовых проектов. Мастер типовых проектов доступен из меню File
→ New (Файл → Новый) или при первоначальной загрузке RR. В случае разработки проекта, для которого не известна или не выбрана технология его реализации, следует отказаться от мастера, в результате чего появится интерфейс RR с чистым окном активной диаграммы классов.
Для разработки диаграммы прецедентов необходимо активизировать соответствующую диаграмму в окне диаграммы. Это можно сделать следующими способами: а) раскрыть представление прецедентов Use Case View в браузере проекта и дважды щелкнуть на значке Main (Главная); б) с помощью операции меню Browse → Use Case Diagram (Браузер → Диаграмма прецедентов).
При этом появляется новое окно с чистым рабочим листом диаграммы прецедентов и специальная панель инструментов, содержащая часть кнопок с изображением графических элементов для построения этой диаграммы (табл.2.1).
Добавить кнопки со значками других графических элементов, таких как бизнес-прецедент (business use case), бизнес-актёр (business actor), сотрудник (business worker), или удалить ненужные кнопки можно с помощью настройки специальной панели инструментов. Открыть окно настройки специальных панелей инструментов для диаграмм можно с помощью операции меню Tools → Options (Инструменты → Параметры), раскрыв вкладку Toolbars (Панели инструментов).
Таблица 2.1
Значок | Подсказка | Назначение кнопки |
| Selection Tool | Переключает в режим выделения элементов |
| Text Box | Добавляет на диаграмму текстовую область |
| Note | Добавляет на диаграмму примечание |
| Anchor Note to Item | Добавляет связь примечания с элементом диаграммы |
| Package | Добавляет на диаграмму пакет |
| Use Case | Добавляет на диаграмму прецедент |
| Actor | Добавляет на диаграмму актёра |
| Unidirectional Association | Добавляет на диаграмму направленную ассоциацию |
| Dependency or Instantiates | Добавляет на диаграмму отношение зависимости |
| Generalization | Добавляет на диаграмму отношение обобщения |
Для добавления актёра на диаграмму прецедентов нужно с помощью левой кнопки мыши нажать кнопку со значком актёра на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. На диаграмме появится изображение актёра. Чтобы изменить расположение изображения графического элемента модели, следует щелчком левой кнопки мыши выделить его, и, не отпуская левой кнопки, переместить в нужное место диаграммы.
Для любого графического элемента модели по щелчку правой кнопкой мыши на выбранном элементе вызывается контекстное меню данного элемента, среди операций которого имеется пункт Open Specification (Открыть спецификацию). В этом случае появляется окно со специальными вкладками, в поля ввода которых можно занести всю информацию по данному элементу (рис.2.1):
Рис.2.1. Диалоговое окно спецификации свойств актёра
Следует отметить, что открыть диалоговое окно спецификации свойств любого элемента модели можно также двойным щелчком левой кнопкой мыши на графическом изображении этого элемента. Хотя в RR актёр является классом, для него некорректно специфицировать атрибуты и операции, поскольку актёр является внешней по отношению к системе сущностью.
Для уточнения назначения актёра в модели следует изменить его стереотип и добавить текст документации в спецификации этого актёра (рис.2.2). Для изменения стереотипа нужно выбрать соответствующий стереотип во вложенном списке Stereotype (например, строку Business Actor). Для добавления текста документации в секцию Documentation следует ввести требуемый текст и нажать кнопку Apply (Применить) или OK.
Рис.2.2. Диалоговое окно спецификации свойств
Для уточнения свойств прецедента следует открыть окно спецификации его свойств. Изменение стереотипа осуществляется во вложенном списке Stereotype (например, Business Use Case), добавление текста документации выполняется в секции Documentation, далее следует нажать кнопку Apply (Применить) или OK.
Для добавления ассоциации между актёром и прецедентом на диаграмму нужно с помощью левой кнопки мыши нажать на специальной панели инструментов кнопку со значком направленной ассоциации, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении актёра на диаграмме и отпустить её на изображении прецедента. При необходимости можно сделать направленную ассоциацию ненаправленной, для чего следует воспользоваться диалоговым окном свойств ассоциации. Открыть это окно можно, например,
двойным щелчком на изображении линии ассоциации, после чего убрать отметку строки выбора Navigable (Навигация) на вкладке Role A Detail (детальные свойства концевой точки ассоциации A).
Для добавления на диаграмму отношения зависимости между двумя прецедентами необходимо с помощью левой кнопки мыши нажать кнопку со значком зависимости на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении первого прецедента и отпустить её на изображении второго прецедента. В результате на диаграмме появится изображение отношения зависимости, которое соединяет эти прецеденты.
С целью указания текстового стереотипа для добавленного отношения зависимости между двумя прецедентами необходимо с помощью окна спецификации свойств этого отношения выбрать нужный стереотип из предлагаемого списка (например, стереотип <
Формирование пакета прецедентов выполняется с помощью кнопки Package на специальной панели инструментов, включение (добавление) прецедентов в пакет осуществляется в браузере проекта методом перемещения.
В дальнейшем построенная диаграмма может быть изменена посредством добавления или удаления элементов. Для удаления любого графического элемента с диаграммы его следует выделить на диаграмме и нажать клавишу Delete на клавиатуре. При этом выделенный элемент будет удалён с активной диаграммы, но не из модели. Для удаления элемента из модели необходимо выделить удаляемый элемент на диаграмме и воспользоваться операцией главного меню Edit → Delete from Model (Правка → Удалить из модели). Для этой же цели служит комбинация клавиш быстрого доступа Ctrl+D.
Результаты работы необходимо сохранить в файле проекта через меню File → Save (Файл → Сохранить) или File → Save As (Файл → Сохранить как). При этом вся информация о проекте, включая диаграммы и спецификации элементов, будет сохранена в одном файле.
Типовой пример
В качестве примера рассматривается система управления банкоматом. В этом примере в модель входят элементы: а) актёры: ‘Клиент банка’ и ‘Банк’; б) прецеденты: ‘Снятие наличных по кредитной карточке’, ‘Проверка ПИН-кода’, ‘Получение справки о состоянии счёта’, ‘Блокирование кредитной карточки’.
Актёр ‘Клиент банка’: стереотип – business actor; текст – ‘Любое физическое лицо, пользующееся услугами банкомата’. Актёр ‘Банк’ – стереотип – service (банкомат использует некоторые услуги Банка в качестве сервиса). Прецедент ‘Снятие наличных по кредитной карточке’: стереотип – business use case; текст – ‘Основной прецедент для разрабатываемой модели банкомата’. Прецедент ‘Получение справки о состоянии счёта’: стереотип – business use case.
В модели добавлены следующие направленные ассоциации: от ‘Клиент банка’ к ‘Снятие наличных по кредитной карточке’ и к ‘Получение справки о состоянии счёта’, от ‘Снятие наличных по кредитной карточке’ и от ‘Получение справки о состоянии счёта’ к ‘Банк’. Добавлены 3 отношения зависимости: 1) с <
Рис.2.3. Окончательный вид диаграммы прецедентов для модели банкоматов
Вид диаграммы прецедентов для модели банкомата приведён на рис.2.3.
Характерной особенностью среды RR является возможность работы с символами кириллицы. При спецификации элементов модели с последующей генерацией кода следует записывать имена и свойства символами того языка, который поддерживается соответствующим ЯП.
2.3. Порядок выполнения
1. Изучить особенности построения диаграмм прецедентов с помощью RR. Рассмотреть типовой пример построения модели прецедентов банкомата.
2. Построить модель прецедентов программной системы с помощью RR в соответствии с индивидуальным заданием и со следующей последовательностью действий с учётом приведённых требований к модели прецедентов:
2.1. Определить состав и установить стереотипы актёров (на диаграмме прецедентов должно быть не менее 2 актёров).
2.2. Сформировать состав и последовательность, а также установить стереотипы прецедентов (на диаграмме должно быть не менее 4 прецедентов).
2.3. Обозначить на диаграммах отношения с определёнными стереотипами между исполнителями и прецедентами, а также между прецедентами.
2.4. Организовать пакет прецедентов.
2.5. Добавить к построенным диаграммам соответствующие примечания.
3. Оформить отчёт по результатам выполнения лабораторной работы.
2.4. Содержание отчёта
Результаты выполнения лабораторной работы необходимо представить в виде отчёта, который должен содержать следующие разделы:
1. Постановка задачи.
2. Описание ролей актёров и прецедентов построенной диаграммы.
3. Описание взаимодействия между компонентами проектируемой системы.
4. Окончательный вид диаграммы прецедентов проектируемой системы.
2.5. Варианты заданий
В качестве моделируемых систем предлагается рассматривать следующие:
1. Университет
2. Кафедра ВУЗа
3. Отдел кадров
4. Бухгалтерия
5. Библиотека
6. Поликлиника
7. Аптека
8. Строительная фирма
9. Коммунальное предприятие
10. Станция АЗС
11. Интернет-магазин
12. Интернет-салон
13. Автостоянка
14. Ресторан
15. Автосалон
16. Транспортная фирма
2.6. Контрольные вопросы
1. Для чего используется диаграмма прецедентов?
2. Как создать новую диаграмму прецедентов в среде RR?
3. Как при помощи диаграммы прецедентов описать сценарий поведения проектируемой системы?
4. Каким образом на диаграмму прецедентов можно добавить новый элемент?
5. Как в RR визуализируются актёры и прецеденты?
6. Как в RR можно выполнить настройку специальной панели инструментов?
7. Для чего используется и как открыть окно спецификации в RR?
8. Как изменить стереотип актёра на диаграмме прецедентов?
9. Как осуществляется формирование пакетов прецедентов в RR?
10. В чём отличие удаления элемента с диаграммы от его удаления из модели?
3. Диаграмма классов. Пакеты
3.1. Цель работы
Целью данной работы является использование диаграммы классов при разработке программной системы в среде RR.
3.2. Общие сведения
Диаграмма классов (class diagram)является основным логическим представлением модели и содержит детальную информацию о внутреннем устройстве ОО системы или об архитектуре системы. На диаграммах классов отображаются некоторые классы и пакеты системы. Обычно для описания системы создают несколько диаграмм классов. На одних показывают некоторое подмножество классов и отношения между классами подмножества. На других отображают то же подмножество, но вместе с атрибутами и операциями классов. Третьи соответствуют только пакетам классов и отношениям между ними.
По умолчанию в среде RR существует одна диаграмма классов, называемая главной (Main). На этой диаграмме показывают пакеты классов модели, внутри каждого пакета также имеется главная диаграмма, включающая в себя все классы этого пакета. Двойной щелчок мыши на пакете диаграммы классов в среде RR открывает главную диаграмму этого пакета.
Диаграмма классов – основная диаграмма для создания исходного кода приложения на любом ЯП, который поддерживается генератором кода RR.
Активизировать окно диаграммы классов можно несколькими способами:
– окно диаграммы классов появляется по умолчанию в рабочем окне диаграммы после создания нового проекта;
– щёлкнуть на кнопке с изображением диаграммы классов на стандартной панели инструментов;
– раскрыть логическое представление (Logical View) в браузере проекта и дважды щёлкнуть на значке Main (Главная);
– щёлкнуть правой кнопкой мыши на логическом представлении браузера, в открывшемся меню выбрать пункт New → Class Diagram (Создать → Диаграмма классов), ввести имя новой диаграммы и дважды щелкнуть на диаграмме в браузере для её открытия.
При этом появляется новое окно с чистым рабочим листом диаграммы классов и специальная панель инструментов, содержащая кнопки с изображением графических элементов для разработки диаграммы классов (табл.3.1).
Для открытия существующей диаграммы классы необходимо найти эту диаграмму в логическом представлении браузера и дважды щелкнуть по ней или в меню модели выбрать пункт Browse → Class Diagram (Обзор → Диаграмма классов), затем в списке Package (Пакет) выбрать пакет, содержащий требуемую диаграмму, в списке Class Diagram указать нужную диаграмму и нажать OK.
Таблица 3.1
Значок
Подсказка
Назначение кнопки
Selection Tool
Переключает в режим выделения элементов на диаграмме
Text Box
Добавляет на диаграмму текстовую область
Note
Добавляет на диаграмму примечание
Anchor Note to Item
Добавляет связь примечания с элементом диаграммы
Class
Добавляет на диаграмму класс
Interface
Добавляет на диаграмму интерфейс
Unidirectional Association
Добавляет на диаграмму однонаправленную ассоциацию
класса с классом или класса с интерфейсом
Association Class
Добавляет на диаграмму двунаправленную ассоциацию
Package
Добавляет на диаграмму пакет
Dependency
or Instantiates
Добавляет на диаграмму отношение зависимости
Generalization
Добавляет на диаграмму отношение обобщения
Realize
Добавляет на диаграмму отношение реализации
После создания диаграммы классов нужно добавить новые классы в модель. Доступны классы нескольких типов: регулярные, параметризованные, классы-наполнители, утилиты классов, утилиты параметризованных классов, утилиты классов-наполнителей и метаклассы.
Для добавления класса на диаграмму классов нужно с помощью левой кнопки мыши нажать кнопку со значком класса на специальной панели инструментов, отпустить левую кнопку мыши и щёлкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. Либо воспользоваться меню Tools → Create → Class. На диаграмме появится изображение класса.
Существует несколько путей, чтобы поместить уже созданный класс на диаграмму классов: а) перетащить нужный класс мышкой из окна Browser; б) воспользоваться меню Query → Add Classes (Запрос → Добавить классы) и в окне выбрать необходимые классы для включения в диаграмму.
При необходимости добавления параметризированного класса (parameterized class) нужно выполнить следующие действия: 1) нажать кнопку Parameterized class на панели инструментов (при её наличии) и щелкнуть мышью на диаграмме; 2) добавить новый класс одним из описанных выше методов, в окне спецификации класса в поле Type (Тип) указать Parameterized class и нажать OK; 3) в меню модели выбрать пункт Tools → Create → Parameterized class (Инструменты → Создать → Параметризированный класс) и щёлкнуть мышью на диаграмме.
Аналогичными способами можно создать класс-наполнитель (instantiated class), утилиту класса (class utility), утилиту параметризированного класса (parameterized class utility), утилиту класса-наполнителя (instantiated class utility), метакласс (metaclass).
Для удаления класса из диаграммы выделите его на диаграмме и нажмите клавишу Delete (при этом класс останется на других диаграммах и в браузере). Для удаления класса из модели выделите его на диаграмме, в меню модели выберите пункт Edit → Delete from model (Правка → Удалить из модели).
После добавления класса в диаграмму становится доступно контекстное меню класса. Его содержание может меняться при ассоциации класса с разными ЯП. Назначение отдельных пунктов меню для неассоциированного класса:
– Open Specifications – открытие окна заполнения спецификаций;
– Sub Diagrams – создание к текущему классу диаграммы переходов состояний или переход на поддиаграммы класса;
– New Attribute – добавление нового атрибута класса;
– New Operation – добавление новой операции для класса;
– Select in Browser – выделение класса в окне Browser;
– Relocate – перемещение класса в новый пакет / на новое местоположение;
– Options – вызов подменю настройки значка класса;
– Format – вызов подменю настройки шрифта, цвета, заливки диаграммы.
RR предоставляет ряд возможностей по детализации классов: каждому классу можно дать имя, определить его стереотип, указать видимость, задать другие параметры. Свойства класса значительно влияют на генерацию кода класса.
Большинство определяемых для класса параметров доступно в окне спецификации класса. Для его открытия щёлкните правой кнопкой мыши на классе в браузере или на диаграмме классов, в открывшемся меню выберите пункт Open Specifications (Открыть спецификации) (табл.3.2).
Таблица 3.2
Вкладка
Описание
General
Главная
Задаёт главные свойства класса. Здесь можно задать документацию к классу. Поля вкладки: Name – имя класса;. Type – тип класса; Stereotype – стереотип класса; Export Control – доступ к классу, когда он в пакете. Виды доступа: Public (общедоступный / открытый, знак «+») – элемент виден вне пакета; Protected (защищенный, «#») – элемент доступен только для вложенных классов, классов с типом friends и внутри класса; Private (закрытый, «–») – закрытый элемент класса; Implementation (реализация, «») – элемент виден только в пакете.
Detail
Детализация
Указывает дополнительные установки класса. Поля вкладки:
Multiplicity (кратность) – задаёт ожидаемое число объектов, которые будут созданы на основе этого класса. Обычно его задают для связанных классов. Space (пространство) – размер оперативной памяти для создания объекта этого класса. Может быть задано числом или формулой, значение должно учитывать накладные расходы на создание объекта плюс размер всех входящих объектов.
Persistence (устойчивость) – время жизни объекта класса. Если установлен флажок persistent, то объект должен быть доступен в течение всей работы программы или доступен других потоков или процессов. Не действует для утилит классов, параметризированных утилит класса и реализаций утилит классов.
Concurrency (параллелизм) – поведение элемента в многопотоковой среде. Данная установка может принимать следующие варианты: sequential (последовательный; по умолчанию) – класс для работы только с одним потоком; guarded (охраняемый) – класс для работы с несколькими потоками: является арбитром потоков; active (активный) – класс отдельного потока; synchronous (синхронный) – класс для работы нескольких потоков с их синхронизацией.
Abstract adornment (абстрактное украшение) – абстрактный класс. Название абстрактного класса представляется курсивом.
Formal Arguments (формальные аргументы) – только для параметризированных классов и утилит классов.
Components
Компоненты
Отражает компоненты, с которыми ассоциирован класс. Она похожа на Realized в спецификациях компонента. Здесь возможна установка связи текущего класса и компонента, а в Realized – установка связи текущего компонента и класса.
На вкладке помечены красным маркером компоненты, которые включены в текущую модель и могут быть показаны остальные компоненты модели. Из этой вкладки по двойному нажатию мыши на компоненте можно получить доступ к её спецификациям. Замечание: Для быстрого импорта библиотеки MFC необходимо выполнить Menu → Tools → Visual C++ → Quick Import MFC 6.0.
Attributes
Атрибуты
Управляет атрибутами класса. Здесь представлен список атрибутов класса, который можно редактировать при помощи контекстного меню. По двойному нажатию мыши на атрибуте предоставляется доступ к окну спецификаций атрибутов. Show inherited позволяет скрыть / показать доступные атрибуты родителей.
Вкладка General: название атрибута (Name), его тип (Type) и стереотип (Stereotype), начальное значение (Initial value) и видимость (Export Control).
Вкладка Detail: тип хранения атрибута в классе: By Value (по значению) – значения атрибута хранятся пределах адресного пространства, выделенного для объекта этого класса; By Reference (по ссылке) – значение атрибута хранится вне адресного пространства, выделенного для объекта этого класса, но у объектов класса имеется указатель на этот атрибут; Unspecified (не определён) – метод локализации этого атрибута не определён. В этом случае при генерации кода для этого атрибута по умолчанию выбирается значение By value. Также можно указать, что атрибут является Static (статическим) или Derived (производным).
Operations
Операции
Управляет операциями класса. Здесь представлен список операций класса, который можно редактировать при помощи контекстного меню. По двойному нажатию мыши на операции предоставляется доступ к окну спецификаций операции.
Вкладка General аналогична вкладке General атрибутов.
Вкладка Detail: дополнительные свойства операции. Поля этой вкладки:
Arguments (аргументы) – список аргументов для операции с их типами и значениями по умолчанию. Protocol (протокол) – список установок, предоставляемых клиенту для вызова. Qualification (квалификация) – детали реализации операции, связанные с конкретным ЯП. Exceptions (исключения) – список исключений, которые могут быть вызваны операцией; необходимо ввести имена классов, обрабатывающих исключительные состояния. Size (размер) – размер памяти, требуемый для выполнения операции. Time (время) – время выполнения операции.
Concurrency (параллелизм) – тип выполнения операции для многопотоковой программы: sequential (последовательная) – операция может быть выполнена только при наличии одного потока управления; guarded (охраняемая) – при наличии нескольких потоков управления выполнение операции класса гарантируется только тогда, когда обеспечено взаимодействие объектов друг с другом в различных потоках; synchronous (синхронная) – выполнение операции класса гарантируется при наличии нескольких потоков управления, операция будет выполняться в отдельном потоке управления. Можно устанавливать параллелизм для класса в спецификациях класса.
Вкладки Preconditions, Postconditions, Semantics позволяют задать дополнительные описания процессов подготовки и завершения операции, а также описание алгоритма операции. Кроме текстового описания здесь же можно задать имя диаграммы взаимодействия, которая описывает указанные действия.
Relations
Связи
Управляет связями класса. Здесь представлен список связей класса, который можно редактировать при помощи контекстного меню. Для добавления связи лучше воспользоваться инструментом из панели инструментов, а для удаления – контекстным меню на элементе. После удаления связей с диаграммы полностью удалить их можно только посредством вкладки Relations.
Стереотип – это механизм, позволяющий категоризировать классы. Часто используются классы со стереотипами: boundary (пограничные классы – расположены на границе системы с внешней средой; это формы, отчёты, интерфейсы с аппаратурой и др.), entity (классы-сущности – содержат информацию, хранимую обычно постоянно), control (классы управления – отвечают за координацию действий других классов) и т.д. К стереотипам, которые доступны в среде RR, относятся: actor (актёр), boundary (граница), business actor (бизнес-актёр), business entity (бизнес-сущность), business worker (работник), control (управление), entity (сущность, объект), interface (интерфейс).
В RR имеется возможность добавить собственные стереотипы. Примерами таких стереотипов являются: для классов для хранения данных – стереотип <>; для классов для показа данных – стереотип <>; для классов-форм – стереотип <
1 2 3 4 5 6 7 8 9
1. Университет
2. Кафедра ВУЗа
3. Отдел кадров
4. Бухгалтерия
5. Библиотека
6. Поликлиника
7. Аптека
8. Строительная фирма
9. Коммунальное предприятие
10. Станция АЗС
11. Интернет-магазин
12. Интернет-салон
13. Автостоянка
14. Ресторан
15. Автосалон
16. Транспортная фирма
2.6. Контрольные вопросы
1. Для чего используется диаграмма прецедентов?
2. Как создать новую диаграмму прецедентов в среде RR?
3. Как при помощи диаграммы прецедентов описать сценарий поведения проектируемой системы?
4. Каким образом на диаграмму прецедентов можно добавить новый элемент?
5. Как в RR визуализируются актёры и прецеденты?
6. Как в RR можно выполнить настройку специальной панели инструментов?
7. Для чего используется и как открыть окно спецификации в RR?
8. Как изменить стереотип актёра на диаграмме прецедентов?
9. Как осуществляется формирование пакетов прецедентов в RR?
10. В чём отличие удаления элемента с диаграммы от его удаления из модели?
3. Диаграмма классов. Пакеты
3.1. Цель работы
Целью данной работы является использование диаграммы классов при разработке программной системы в среде RR.
3.2. Общие сведения
Диаграмма классов (class diagram)является основным логическим представлением модели и содержит детальную информацию о внутреннем устройстве ОО системы или об архитектуре системы. На диаграммах классов отображаются некоторые классы и пакеты системы. Обычно для описания системы создают несколько диаграмм классов. На одних показывают некоторое подмножество классов и отношения между классами подмножества. На других отображают то же подмножество, но вместе с атрибутами и операциями классов. Третьи соответствуют только пакетам классов и отношениям между ними.
По умолчанию в среде RR существует одна диаграмма классов, называемая главной (Main). На этой диаграмме показывают пакеты классов модели, внутри каждого пакета также имеется главная диаграмма, включающая в себя все классы этого пакета. Двойной щелчок мыши на пакете диаграммы классов в среде RR открывает главную диаграмму этого пакета.
Диаграмма классов – основная диаграмма для создания исходного кода приложения на любом ЯП, который поддерживается генератором кода RR.
Активизировать окно диаграммы классов можно несколькими способами:
– окно диаграммы классов появляется по умолчанию в рабочем окне диаграммы после создания нового проекта;
– щёлкнуть на кнопке с изображением диаграммы классов на стандартной панели инструментов;
– раскрыть логическое представление (Logical View) в браузере проекта и дважды щёлкнуть на значке Main (Главная);
– щёлкнуть правой кнопкой мыши на логическом представлении браузера, в открывшемся меню выбрать пункт New → Class Diagram (Создать → Диаграмма классов), ввести имя новой диаграммы и дважды щелкнуть на диаграмме в браузере для её открытия.
При этом появляется новое окно с чистым рабочим листом диаграммы классов и специальная панель инструментов, содержащая кнопки с изображением графических элементов для разработки диаграммы классов (табл.3.1).
Для открытия существующей диаграммы классы необходимо найти эту диаграмму в логическом представлении браузера и дважды щелкнуть по ней или в меню модели выбрать пункт Browse → Class Diagram (Обзор → Диаграмма классов), затем в списке Package (Пакет) выбрать пакет, содержащий требуемую диаграмму, в списке Class Diagram указать нужную диаграмму и нажать OK.
Таблица 3.1
Значок | Подсказка | Назначение кнопки |
| Selection Tool | Переключает в режим выделения элементов на диаграмме |
| Text Box | Добавляет на диаграмму текстовую область |
| Note | Добавляет на диаграмму примечание |
| Anchor Note to Item | Добавляет связь примечания с элементом диаграммы |
| Class | Добавляет на диаграмму класс |
| Interface | Добавляет на диаграмму интерфейс |
| Unidirectional Association | Добавляет на диаграмму однонаправленную ассоциацию класса с классом или класса с интерфейсом |
| Association Class | Добавляет на диаграмму двунаправленную ассоциацию |
| Package | Добавляет на диаграмму пакет |
| Dependency or Instantiates | Добавляет на диаграмму отношение зависимости |
| Generalization | Добавляет на диаграмму отношение обобщения |
| Realize | Добавляет на диаграмму отношение реализации |
После создания диаграммы классов нужно добавить новые классы в модель. Доступны классы нескольких типов: регулярные, параметризованные, классы-наполнители, утилиты классов, утилиты параметризованных классов, утилиты классов-наполнителей и метаклассы.
Для добавления класса на диаграмму классов нужно с помощью левой кнопки мыши нажать кнопку со значком класса на специальной панели инструментов, отпустить левую кнопку мыши и щёлкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. Либо воспользоваться меню Tools → Create → Class. На диаграмме появится изображение класса.
Существует несколько путей, чтобы поместить уже созданный класс на диаграмму классов: а) перетащить нужный класс мышкой из окна Browser; б) воспользоваться меню Query → Add Classes (Запрос → Добавить классы) и в окне выбрать необходимые классы для включения в диаграмму.
При необходимости добавления параметризированного класса (parameterized class) нужно выполнить следующие действия: 1) нажать кнопку Parameterized class на панели инструментов (при её наличии) и щелкнуть мышью на диаграмме; 2) добавить новый класс одним из описанных выше методов, в окне спецификации класса в поле Type (Тип) указать Parameterized class и нажать OK; 3) в меню модели выбрать пункт Tools → Create → Parameterized class (Инструменты → Создать → Параметризированный класс) и щёлкнуть мышью на диаграмме.
Аналогичными способами можно создать класс-наполнитель (instantiated class), утилиту класса (class utility), утилиту параметризированного класса (parameterized class utility), утилиту класса-наполнителя (instantiated class utility), метакласс (metaclass).
Для удаления класса из диаграммы выделите его на диаграмме и нажмите клавишу Delete (при этом класс останется на других диаграммах и в браузере). Для удаления класса из модели выделите его на диаграмме, в меню модели выберите пункт Edit → Delete from model (Правка → Удалить из модели).
После добавления класса в диаграмму становится доступно контекстное меню класса. Его содержание может меняться при ассоциации класса с разными ЯП. Назначение отдельных пунктов меню для неассоциированного класса:
– Open Specifications – открытие окна заполнения спецификаций;
– Sub Diagrams – создание к текущему классу диаграммы переходов состояний или переход на поддиаграммы класса;
– New Attribute – добавление нового атрибута класса;
– New Operation – добавление новой операции для класса;
– Select in Browser – выделение класса в окне Browser;
– Relocate – перемещение класса в новый пакет / на новое местоположение;
– Options – вызов подменю настройки значка класса;
– Format – вызов подменю настройки шрифта, цвета, заливки диаграммы.
RR предоставляет ряд возможностей по детализации классов: каждому классу можно дать имя, определить его стереотип, указать видимость, задать другие параметры. Свойства класса значительно влияют на генерацию кода класса.
Большинство определяемых для класса параметров доступно в окне спецификации класса. Для его открытия щёлкните правой кнопкой мыши на классе в браузере или на диаграмме классов, в открывшемся меню выберите пункт Open Specifications (Открыть спецификации) (табл.3.2).
Таблица 3.2
Вкладка | Описание |
General Главная | Задаёт главные свойства класса. Здесь можно задать документацию к классу. Поля вкладки: Name – имя класса;. Type – тип класса; Stereotype – стереотип класса; Export Control – доступ к классу, когда он в пакете. Виды доступа: Public (общедоступный / открытый, знак «+») – элемент виден вне пакета; Protected (защищенный, «#») – элемент доступен только для вложенных классов, классов с типом friends и внутри класса; Private (закрытый, «–») – закрытый элемент класса; Implementation (реализация, «») – элемент виден только в пакете. |
Detail Детализация | Указывает дополнительные установки класса. Поля вкладки: Multiplicity (кратность) – задаёт ожидаемое число объектов, которые будут созданы на основе этого класса. Обычно его задают для связанных классов. Space (пространство) – размер оперативной памяти для создания объекта этого класса. Может быть задано числом или формулой, значение должно учитывать накладные расходы на создание объекта плюс размер всех входящих объектов. Persistence (устойчивость) – время жизни объекта класса. Если установлен флажок persistent, то объект должен быть доступен в течение всей работы программы или доступен других потоков или процессов. Не действует для утилит классов, параметризированных утилит класса и реализаций утилит классов. Concurrency (параллелизм) – поведение элемента в многопотоковой среде. Данная установка может принимать следующие варианты: sequential (последовательный; по умолчанию) – класс для работы только с одним потоком; guarded (охраняемый) – класс для работы с несколькими потоками: является арбитром потоков; active (активный) – класс отдельного потока; synchronous (синхронный) – класс для работы нескольких потоков с их синхронизацией. Abstract adornment (абстрактное украшение) – абстрактный класс. Название абстрактного класса представляется курсивом. Formal Arguments (формальные аргументы) – только для параметризированных классов и утилит классов. |
Components Компоненты | Отражает компоненты, с которыми ассоциирован класс. Она похожа на Realized в спецификациях компонента. Здесь возможна установка связи текущего класса и компонента, а в Realized – установка связи текущего компонента и класса. На вкладке помечены красным маркером компоненты, которые включены в текущую модель и могут быть показаны остальные компоненты модели. Из этой вкладки по двойному нажатию мыши на компоненте можно получить доступ к её спецификациям. Замечание: Для быстрого импорта библиотеки MFC необходимо выполнить Menu → Tools → Visual C++ → Quick Import MFC 6.0. |
Attributes Атрибуты | Управляет атрибутами класса. Здесь представлен список атрибутов класса, который можно редактировать при помощи контекстного меню. По двойному нажатию мыши на атрибуте предоставляется доступ к окну спецификаций атрибутов. Show inherited позволяет скрыть / показать доступные атрибуты родителей. Вкладка General: название атрибута (Name), его тип (Type) и стереотип (Stereotype), начальное значение (Initial value) и видимость (Export Control). Вкладка Detail: тип хранения атрибута в классе: By Value (по значению) – значения атрибута хранятся пределах адресного пространства, выделенного для объекта этого класса; By Reference (по ссылке) – значение атрибута хранится вне адресного пространства, выделенного для объекта этого класса, но у объектов класса имеется указатель на этот атрибут; Unspecified (не определён) – метод локализации этого атрибута не определён. В этом случае при генерации кода для этого атрибута по умолчанию выбирается значение By value. Также можно указать, что атрибут является Static (статическим) или Derived (производным). |
Operations Операции | Управляет операциями класса. Здесь представлен список операций класса, который можно редактировать при помощи контекстного меню. По двойному нажатию мыши на операции предоставляется доступ к окну спецификаций операции. Вкладка General аналогична вкладке General атрибутов. Вкладка Detail: дополнительные свойства операции. Поля этой вкладки: Arguments (аргументы) – список аргументов для операции с их типами и значениями по умолчанию. Protocol (протокол) – список установок, предоставляемых клиенту для вызова. Qualification (квалификация) – детали реализации операции, связанные с конкретным ЯП. Exceptions (исключения) – список исключений, которые могут быть вызваны операцией; необходимо ввести имена классов, обрабатывающих исключительные состояния. Size (размер) – размер памяти, требуемый для выполнения операции. Time (время) – время выполнения операции. Concurrency (параллелизм) – тип выполнения операции для многопотоковой программы: sequential (последовательная) – операция может быть выполнена только при наличии одного потока управления; guarded (охраняемая) – при наличии нескольких потоков управления выполнение операции класса гарантируется только тогда, когда обеспечено взаимодействие объектов друг с другом в различных потоках; synchronous (синхронная) – выполнение операции класса гарантируется при наличии нескольких потоков управления, операция будет выполняться в отдельном потоке управления. Можно устанавливать параллелизм для класса в спецификациях класса. Вкладки Preconditions, Postconditions, Semantics позволяют задать дополнительные описания процессов подготовки и завершения операции, а также описание алгоритма операции. Кроме текстового описания здесь же можно задать имя диаграммы взаимодействия, которая описывает указанные действия. |
Relations Связи | Управляет связями класса. Здесь представлен список связей класса, который можно редактировать при помощи контекстного меню. Для добавления связи лучше воспользоваться инструментом из панели инструментов, а для удаления – контекстным меню на элементе. После удаления связей с диаграммы полностью удалить их можно только посредством вкладки Relations. |
Стереотип – это механизм, позволяющий категоризировать классы. Часто используются классы со стереотипами: boundary (пограничные классы – расположены на границе системы с внешней средой; это формы, отчёты, интерфейсы с аппаратурой и др.), entity (классы-сущности – содержат информацию, хранимую обычно постоянно), control (классы управления – отвечают за координацию действий других классов) и т.д. К стереотипам, которые доступны в среде RR, относятся: actor (актёр), boundary (граница), business actor (бизнес-актёр), business entity (бизнес-сущность), business worker (работник), control (управление), entity (сущность, объект), interface (интерфейс).
В RR имеется возможность добавить собственные стереотипы. Примерами таких стереотипов являются: для классов для хранения данных – стереотип <