Файл: Технологии разработки программных систем.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.11.2023

Просмотров: 167

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

1. Введение в Rational Rose

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

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

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

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

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

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

2. Диаграмма прецедентов

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

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

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 (формальные аргументы) – только для параметризированных классов и утилит классов. Compo­nentsКомпо­ненты Отражает компоненты, с которыми ассоциирован класс. Она похожа на Realized в спецификациях компонента. Здесь возможна установка связи текущего класса и компонента, а в Realized – установка связи текущего компонента и класса.На вкладке помечены красным маркером компоненты, которые включены в текущую модель и могут быть показаны остальные компоненты модели. Из этой вкладки по двойному нажатию мыши на компоненте можно получить доступ к её спецификациям. Замечание: Для быстрого импорта библиотеки MFC необходимо выполнить Menu → Tools → Visual C++ → Quick Import MFC 6.0. Attri­butesАтри­буты Управляет атрибутами класса. Здесь представлен список атрибутов класса, который можно редактировать при помощи контекстного меню. По двойному нажатию мыши на атрибуте предоставляется доступ к окну спецификаций атрибутов. Show inherited позволяет скрыть / показать доступные атрибуты родителей.Вкладка General: название атрибута (Name), его тип (Type) и стереотип (Stereotype), начальное значение (Initial value) и видимость (Export Control).Вкладка Detail: тип хранения атрибута в классе: By Value (по значению) – значения атрибута хранятся пределах адресного пространства, выделенного для объекта этого класса; By Reference (по ссылке) – значение атрибута хранится вне адресного пространства, выделенного для объекта этого класса, но у объектов класса имеется указатель на этот атрибут; Unspecified (не определён) – метод локализации этого атрибута не определён. В этом случае при генерации кода для этого атрибута по умолчанию выбирается значение By value. Также можно указать, что атрибут является Static (статическим) или Derived (производным). Opera­tionsОпера­ции Управляет операциями класса. Здесь представлен список операций класса, который можно редактировать при помощи контекстного меню. По двойному нажатию мыши на операции предоставляется доступ к окну спецификаций операции.Вкладка General аналогична вкладке General атрибутов.Вкладка Detail: дополнительные свойства операции. Поля этой вкладки:Arguments (аргументы) – список аргументов для операции с их типами и значениями по умолчанию. Protocol (протокол) – список установок, предоставляемых клиенту для вызова. Qualification (квалификация) – детали реализации операции, связанные с конкретным ЯП. Exceptions (исключения) – список исключений, которые могут быть вызваны операцией; необходимо ввести имена классов, обрабатывающих исключительные состояния. Size (размер) – размер памяти, требуемый для выполнения операции. Time (время) – время выполнения операции.Concurrency (параллелизм) – тип выполнения операции для многопотоковой программы: sequential (последовательная) – операция может быть выполнена только при наличии одного потока управления; guarded (охраняемая) – при наличии нескольких потоков управления выполнение операции класса гарантируется только тогда, когда обеспечено взаимодействие объектов друг с другом в различных потоках; synchronous (синхронная) – выполнение операции класса гарантируется при наличии нескольких потоков управления, операция будет выполняться в отдельном потоке управления. Можно устанавливать параллелизм для класса в спецификациях класса.Вкладки Preconditions, Postconditions, Semantics позволяют задать дополнительные описания процессов подготовки и завершения операции, а также описание алгоритма операции. Кроме текстового описания здесь же можно задать имя диаграммы взаимодействия, которая описывает указанные действия. Rela­tionsСвязи Управляет связями класса. Здесь представлен список связей класса, который можно редактировать при помощи контекстного меню. Для добавления связи лучше воспользоваться инструментом из панели инструментов, а для удаления – контекстным меню на элементе. После удаления связей с диаграммы полностью удалить их можно только посредством вкладки Relations. Стереотип – это механизм, позволяющий категоризировать классы. Часто используются классы со стереотипами: boundary (пограничные классы – расположены на границе системы с внешней средой; это формы, отчёты, интерфейсы с аппаратурой и др.), entity (классы-сущности – содержат информацию, хранимую обычно постоянно), control (классы управления – отвечают за координацию действий других классов) и т.д. К стереотипам, которые доступны в среде RR, относятся: actor (актёр), boundary (граница), business actor (бизнес-актёр), business entity (бизнес-сущность), business worker (работник), control (управление), entity (сущность, объект), interface (интерфейс).В RR имеется возможность добавить собственные стереотипы. Примерами таких стереотипов являются: для классов для хранения данных – стереотип <>; для классов для показа данных – стереотип <>; для классов-форм – стереотип <> (Форма). Для добавления стереотипов нужно ввести новый стереотип в поле Stereotype в окне спецификации класса. Он будет появляться в раскрывающемся списке, но только для текущей модели.Для добавления стереотипа ко всем моделям необходимо завершить работу с RR, в файле DefaultStereotypes.ini перейти в раздел [Stereotyped Items] и добавить в него строку для нового стереотипа:Далее нужно добавить в файл DefaultStereotypes.ini раздел для этого стереотипа, где указать, для чего будет он использоваться (для классов, сценариев и т.д.) и ввести его имя, например:[Stereotyped Items]...Class: Form...[Class: Form]Item=ClassStereotype=FormRR позволяет альтернативно представлять стереотипы в форме специальных графических изображений (как в браузере проекта) или в форме небольших значков в верхней секции прямоугольника класса на диаграмме, а также вообще отказаться от изображения стереотипов.Для вывода имени стереотипа на диаграмму потребуется щелкнуть правой кнопкой мыши на классе, выбрать в открывшемся меню пункт Options → Stereotype Display → Label (Параметры → Показ стереотипа → Метка). Над именем этого класса появится имя стереотипа, заключённое в двойные угловые скобки (<< >>). Стереотип может быть показан / скрыт при помощи контекстного меню класса Options → Stereotype Display → Icon (Параметры → Показ стереотипа → Значок). На рис.3.1 показаны примеры вариантов визуализации стереотипов. Рис.3.1. Варианты визуализации стереотипов: None, Label, Decoration, IconИз всех графических элементов класс обладает максимальным набором свойств, главными из которых являются его атрибуты и операции (табл.3.2).Добавить атрибут к классу можно следующим образом: а) с помощью операции контекстного меню New Attribute (Новый атрибут) для класса, выделенного на диаграмме; в этом случае активизируется курсор ввода текста в области графического изображения класса на диаграмме; б) с помощью операции контекстного меню New → Attribute (Новый → Атрибут) для класса, выделенного в браузере; в этом случае активизируется курсор ввода текста в области иерархического представления класса в браузере проекта под именем соответствующего класса.Для редактирования свойств атрибутов предназначено окно спецификации атрибута Class Attribute Specification (рис.3.2), которое открывается двойным щелчком мыши на имени выбранного атрибута в окне спецификации свойств класса. Для удаления атрибута класса щелкните правой кнопкой мыши на атрибуте в браузере и в открывшемся меню выберите пункт Delete (Удалить). Рис.3.2. Диалоговое окно спецификации свойств атрибутаДобавить операцию к классу можно следующим образом: а) с помощью операции контекстного меню New Operation (Новая операция) для класса, выделенного на диаграмме; б) с помощью операции контекстного меню New → Operation (Новая → Операция) для класса, выделенного в браузере.Каждая из операций классов имеет собственное окно спецификации свойств Operation Specification, которое открывается по двойному щелчку мыши на имени выбранной операции в окне спецификации свойств класса или на имени операции в браузере. Удалить операцию можно из диаграммы классов или из браузера. При удалении из диаграммы операция автоматически удаляется из модели.С целью установки и спецификации отношений между классами необходимо добавить на диаграмму связи между классами. Существует 4 типа связей между классами: ассоциации (Association), зависимости (Dependency), агрегации (Aggregations) и обобщения (Generalization). Для этого на специальной панели инструментов необходимо нажать кнопку требуемого типа связи. Далее на диаграмме классов надо выделить первый элемент связи, и, не отпуская нажатую левую кнопку мыши, переместить её указатель ко второму элементу отношения. При отсутствии кнопок на панели инструментов можно воспользоваться меню Tools → Create → Aggregation / Dependency / Association / Inherits.Доступ к окну спецификации свойств связи можно получить после выделения линии связи на диаграмме классов или в браузере проекта и двойного щелчка на ней левой кнопки мыши.Классы можно вкладывать друг в друга. Во вложенные (nested) классы можно вкладывать другие классы, организуя столько уровней вложения, сколько необходимо. Для создания вложенного класса потребуется: 1) открыть окно спецификации родительского класса; 2) перейти на вкладку Nested (Вложенные); 3) щелкнуть правой кнопкой мыши на белом поле этой вкладки; 4) в открывшемся меню выбрать пункт Insert (Вставить); 5) ввести имя вложенного класса.Если нужно показать вложенный класс на диаграмме классов необходимо: 1) открыть диаграмму классов; 2) выбрать в меню модели пункт Query → Add Classes (Запрос → Добавить классы); 3) перетащить вложенный класс из списка Classes (Классы) в список Selected Classes (Выбранные классы); 4) Щелкнуть на OK. Вложенный класс появится на диаграмме с именем родительского класса, заключённым в скобках.Пакеты классов в среде RR создаются в логическом представлении браузера.Для добавления на диаграмму классов существующего пакета нужно перетащить пакет на диаграмму из браузера. Поместить на диаграмму классов новый пакет можно следующим образом: нажать на кнопку Package (Пакет) панели инструментов, щелкнуть мышью внутри диаграммы классов и ввести его имя. Для добавления пакета в браузер: а) щелкните правой кнопкой мыши на логическом представлении браузера; если вы создаёте пакет внутри существующего пакета, щёлкните правой кнопкой мыши на нём в браузере; б) выберите пункт меню модели New → Package (Создать → Пакет) и введите имя пакета. Если нужно поместить в пакет элемент, перетащите его в этот пакет в браузере.Необходимо отметить, что диаграмму робастности (устойчивости) проектируемой системы можно создать в среде RR на основе диаграммы классов, используя возможность изменения отображения стереотипа класса (для диаграммы робастности – в виде значка).Типовой примерПри построении диаграммы классов для модели банкомата были добавлены и детализированы следующие классы и ассоциации.1. Класс ‘Транзакция банкомата’ с <>: текст – ‘Используется для сохранения информации о выполненных банкоматом транзакциях’; multiplicity = n (у класса может быть любое конечное число объектов); persistent (информация об объектах класса должна быть сохранена в системе); sequential.Для этого класса добавлены следующие атрибуты:1) Атрибут ‘идентификатор карточки’: тип – integer; видимость – public; initial value – пустой; текст – ‘Устройство чтения карточки считывает значение этого атрибута с кредитной карточки клиента’.2) Атрибут ‘значение ПИН-кода карточки’: тип – integer; видимость – public; текст – ‘Устройство чтения карточки считывает значение этого атрибута с кредитной карточки клиента’.3) Атрибут ‘введённый ПИН-код’: тип – integer; видимость – public; текст – ‘Значение этого атрибута вводится клиентом с клавиатуры банкомата’.4) Атрибут ‘введённая сумма наличных’: тип – currency; видимость – public; текст – ‘Значение этого атрибута вводится клиентом с клавиатуры банкомата’.Операциями класса ‘Транзакция банкомата’ являются следующие:1) Операция ‘создать новую транзакцию’: видимость – public; параллелизм – sequential; текст – ‘Вызывается после того, как кредитная карточка вставлена в устройство чтения карточки’.2) Операция ‘проверить правильность ПИН-кода()’: видимость – public; тип возвращаемого результата – boolean; текст – ‘Вызывается после того, как клиент ввёл значение ПИН-кода с клавиатуры банкомата’.3) Операция ‘завершить транзакцию()’: видимость – public; текст – ‘Вызывается после завершения всех действий банкомата по обслуживанию клиента’.2. Класс ‘Контроллер банкомата’ с <>: текст – ‘Реализует логику функционирования банкомата’. Атрибутов и операций у этого класса нет.3. Класс ‘Устройство чтения карточки’ с <>; текст – ‘Устанавливается на банкомате’.Для данного класса добавлены следующие операции:1) Операция ‘прочитать идентификатор карточки()’: видимость – public; тип – integer; текст – ‘Вызывается после того, как кредитная карточка вставлена в устройство чтения карточки’.2) Операция ‘прочитать ПИН-код()’: видимость – public; тип – integer; текст – ‘Вызывается после того, как кредитная карточка вставлена в устройство чтения карточки’.3) Операция ‘вернуть кредитную карточку()’: видимость – public; текст – ‘Вызывается после завершения транзакции’.4) Операция ‘блокировать кредитную карточку()’: видимость – public; текст – ‘Вызывается после того, как установлен факт утраты кредитной карточки владельцем’.4. Класс ‘IКонтроллер банка’ с <> (банкомат пользуется услугами банка при обработке своих транзакций). Первая буква в имени класса –английское ‘I’ – служит в UML для указания интерфейса.К операциям этого класса относятся:1) Операция ‘проверить идентификатор карточки (идентификатор карточки: integer)’: видимость – public; тип – boolean; аргумент – идентификатор карточки (integer). Для ввода аргументов необходимо перейти на вкладку Detail окна спецификации свойств операции и использовать контекстное меню.2) Операция ‘открыть счёт клиента (идентификатор карточки: integer)’: видимость – public; аргумент – идентификатор карточки (integer).3) Операция ‘проверить баланс клиента (идентификатор карточки: integer, введённая сумма наличных: currency)’: видимость – public; тип – boolean; аргумент 1 – идентификатор карточки (integer), аргумент 2 – введённая сумма наличных (currency).4) Операция ‘уменьшить счёт клиента (идентификатор карточки: integer, введённая сумма наличных: currency)’: видимость – public; тип – boolean; аргумент 1 – идентификатор карточки (integer), аргумент 2 – введённая сумма наличных (currency).5. Абстрактный класс ‘Контроллер’, предназначенный для спецификации системных атрибутов и операций, необходимых при исполнении программы.6. Класс ‘Экран банкомата’ с <> и 2 операциями: ‘показать меню опций()’: видимость – public; ‘показать меню снятия суммы()’: видимость – public.7. Класс ‘Клавиатура банкомата’ с <> и 3 операциями: 1) ‘ввести ПИН-код()’: видимость – public; тип – integer; 2) ‘ввести тип транзакции()’: видимость – public; тип – boolean; текст – ‘Возвращает значение Истина, если клиент выбирает снятие наличных, и значение Ложь, если клиент выбирает получение справки о состоянии счёта’; 3) ‘ввести сумму снятия наличных()’: видимость – public; тип – currency.8. Класс ‘Устройство выдачи наличных’ с <> и операцией ‘выдать наличные()’: видимость – public.9. Класс ‘Принтер банкомата’ с <> и операцией ‘распечатать текст()’: видимость – public.На диаграмму классов добавлены следующие ассоциации и отношения:1. Направленная ассоциация, изменённая в агрегацию, ‘Создаёт’ между ‘Контроллер банкомата’ и ‘Транзакция банкомата’: кратность конца ассоциации у 1‑го класса = 1, у 2‑го класса = 1..n.2. Отношение обобщения ‘Наследует’ между ‘Контроллер банкомата’ и ‘Контроллер’.3. Направленная ассоциация от ‘Контроллер банкомата’ к ‘Устройство чтения карточки’: кратность концов = 1.4. Направленная ассоциация от ‘Контроллер банкомата’ к ‘Принтер банкомата’: кратность концов = 1.5. Направленная ассоциация от ‘Контроллер банкомата’ к ‘Клавиатура банкомата’: кратность концов = 1.6. Направленная ассоциация от ‘Контроллер банкомата’ к ‘Устройство выдачи наличных’: кратность концов = 1.7. Направленная ассоциация от ‘Контроллер банкомата’ к ‘Экран банкомата’: кратность концов = 1.8. Направленная ассоциация от ‘Контроллер банкомата’ к ‘IКонтроллер банка’ с <> (между ними должна быть физическая взаимосвязь): кратность конца ассоциации у 1‑го класса = 0..n, у 2‑го класса = 1. Рис.3.3. Окончательный вид диаграммы классов для модели банкоматаОкончательный вид диаграммы классов для модели банкомата приведён на рис.3.3. При изображении диаграммы классов все классы представлены в форме графических стереотипов с отображением сигнатуры операций классов. Для более компактного представления диаграммы можно убрать отображение атрибутов, операций или сигнатуры операций отдельных классов с помощью соответствующих операций контекстного меню Options (Настройка).Так как модель банкомата на начальных этапах работы над проектом используется для анализа общей архитектуры проекта и согласования её с различными участниками рабочей группы, имена классов, их атрибутов и операций для большей наглядности и понимания задаются на русском языке с пробелами и записываются кириллицей. По мере выполнения проекта и реализации модели на некотором ЯП, имена этих классов, атрибутов и операций должны быть преобразованы в латиницу без пробелов.1   2   3   4   5   6   7   8   9

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

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

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

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

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

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

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

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

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

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

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

5. Диаграммы переходов состояний

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

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

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

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

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

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

6. Диаграмма компонентов

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

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

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

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

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

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

7. Диаграмма развёртывания

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

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





Рис.7.1. Диаграмма развёртывания модели управления банкоматом

После построения диаграммы развёртывания разработка визуальной модели системы управления банкоматом в нотации UML может считаться завершённой.

RR не поддерживает возможности графического размещения внутри узлов развёртываемых на них компонентов. Указать размещение компонентов модели в узлах диаграммы развёртывания можно с помощью документации этих узлов.

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


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

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

2.1. Активизировать окно диаграммы развёртывания.

2.2. Определить состав и добавить на диаграмму развёртывания необходимые узлы (процессоры и устройства) и соединения.

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

3. Сгенерировать с помощью RR отчёт о разрабатываемой модели.

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

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


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

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

2. Краткое описание составляющих диаграммы развёртывания.

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

Дополнить отчёт результатами генерации отчёта о модели с помощью RR.

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


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

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


1. Для чего предназначена диаграмма развертывания?

2. Что отображает диаграмма развертывания модели?

3. Сколько диаграмм развертывания может быть построено для разрабатываемой модели в RR?

4. Какое представление используется в браузере проекта для разработки и размещения диаграммы развертывания?

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

6. Какие свойства можно специфицировать для процессора?

7. Как определить быстродействие и объем памяти процессора при создании диаграммы развертывания в RR?

8. В чем состоит спецификация процедуры планирования процессов процессора в RR?

9. Как отобразить планирование процессов на диаграмме развертывания в RR?

10. Как добавляется процесс для процессора в диаграмме развёртывания?

11. Каким образом назначаются приоритеты у процессов?

8. Дальнейшая работа с моделью

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


Целью данной работы является изучение и выполнение последовательности действий, необходимых для генерации отчёта о модели и программного кода в среде RR на основе построенной модели программной системы.

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


Дальнейшая работа с моделью зависит от целей выполнения проекта.

Отчёт о модели

Если проект не предполагает реализацию, то можно ограничиться формированием проектной документации.

С этой целью следует выполнить операцию меню ReportSoDA Report (Отчёт → Отчет с помощью SoDA), в результате чего будет открыто окно свойств для выбора шаблонов генерации отчёта. После выбора шаблонов будет автоматически сгенерирован отчёт о модели в формате MS Word с использованием специального средства IBM Rational SoDA, если оно доступно в системе после инсталляции RR.

Генерация кода

Если проект предполагает программную реализацию, то целесообразно воспользоваться возможностями генерации кода в среде RR.

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

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

1. Проверка модели на отсутствие ошибок.

2. Создание компонентов для реализации классов и отображение классов на компоненты (может выполняться при создании диаграммы компонентов).

3. Выбор ЯП для генерации программного кода.

4. Установка свойств генерации программного кода.

5. Выбор класса, компонента или пакета.

6. Собственно генерация программного кода.

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

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

Проверка модели независимо от выбора языка генерации кода

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

Для проверки модели следует выполнить операцию меню ToolsCheck Model (Инструменты → Проверить модель). Результаты проверки модели на наличие ошибок отображаются в окне журнала.

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

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

Создание компонентов для реализации классов
и отображение классов на компоненты


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

Для отображения классов на компоненты можно воспользоваться окном спецификации свойств компонента на вкладке Realizes. Для включения реализации класса в данный компонент следует выделить требуемый класс на этой вкладке и выполнить для него операцию контекстного меню Assign. В результате перед именем класса на этой вкладке появится специальная отметка.

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

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


Для выбора ЯП в качестве языка реализации модели следует выполнить операцию меню ToolsOptions (Инструменты → Параметры), в результате чего будет вызвано окно настройки параметров модели. На вкладке Notation (Нотация) в строке Default Language (Язык по умолчанию) из вложенного списка следует выбрать требуемый язык.

Если по какой-то причине необходимого языка не оказалось во вложенном списке, то следует убедиться в том, что этот ЯП установлен в качестве расширения RR. Для этого следует открыть окно установленных расширений, выполнив операцию меню Add-InsAdd-In Manager (Расширения → Менеджер расширений), и убедиться в том, что выставлена отметка в строке с именем необходимого языка. Если языка нет, то следует её добавить, после чего появится группа доступных операций этого языка в меню Tools.

После выбора ЯП по умолчанию следует изменить язык реализации каждого из компонентов модели. С этой целью следует изменить язык в строке Language (Язык) на вкладке General (Общие) окна спецификации свойств компонента, для чего из вложенного списка следует выбрать необходимый язык. После выбора ЯП нужно привести в соответствие типы атрибутов, типы аргументов и результатов операций. С этой целью нужно просмотреть все классы диаграммы классов и изменить те типы данных, которые не являются синтаксически допустимыми в выбранном ЯП. Иначе соответствующие исправления придётся выполнять вручную после генерации программного кода.

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

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

Выбор класса или компонента
и генерация для него программного кода


Генерация кода возможна для отдельного класса / компонента: необходимо выделить нужный элемент модели в браузере и выполнить операцию контекстного меню <Требуемый ЯП>Generate Code (<Требуемый ЯП> → Генерировать код).

Сообщения об ошибках процесса генерации кода будут появляться в окне журнала. Если проектирование класса частично не завершено, то будут взяты значения по умолчанию, а в журнале появится предупреждение. Это важно при итеративном подходе разработки, когда класс не реализуется полностью в одной версии.

Сгенерированные файлы с текстом кода содержат минимум информации. Для включения дополнительных элементов в код следует изменить свойства генерации программного кода, установленные по умолчанию.

Эффект от использования RR проявляется при разработке масштабных проектов в составе команды. Для таких проектов явно выявляется преимущество использования RR и UML для документирования и реализации моделей.

Краткое описание кодогенератора Rose Delphi Link

Для совместного использования Delphi и RR необходимо использовать кодогенератор Rose Delphi Link (RDL). После установки RDL в среде RR появляется новый пункт меню в разделе Tools (рис.8.1).



Рис.8.1. Пункты меню кодогенератора Delphi

Интерфейс основного окна RDL включает в себя (рис.8.2): меню с командами для работы с проектом, настройки опций и вызова помощи; панели, на которых в виде деревьев отображаются иерархические структуры моделей RR и Delphi; кнопки обновления объектных деревьев, прямого и обратного проектирования.



Рис.8.2. Основное окно Rose Delphi Link

Пункт меню FileOpen Project – служит для открытия в RDL созданного проекта Delphi. При открытии проекта в окне RDL отображаются объектные деревья открываемого проекта. При выборе пункта меню FileNew Project RDL предлагает создать пустой Delphi-проект. Новый проект стоит создавать в случае, если программа не содержит графического пользовательского интерфейса (например, динамическая библиотека). Пункты меню View и Help стандартны.

Для отображения элементов модели в код RDL использует Code Generation Properties (CGP) – набор специальных таблиц, которые связываются с каждым элементом модели RR и содержат специфическую для Delphi информацию, используемую для кодогенерации. Набор этих таблиц (рис.8.3) доступен из главного меню (пункт ToolsOptions, вкладка Delphi).



Рис.8.3. Таблица свойств CGP для операций в кодогенераторе Delphi

Чтобы CGP для Delphi были доступны из спецификации, необходимо установить значение поля Default Language = Delphi во вкладке Notation меню ToolsOptions. Для упрощения работы в меню ToolsEnsemble Tools есть вкладка Delphi Property Editor, где можно настроить свойства элемента модели. При его использовании можно без кодогенерации просмотреть код элемента модели.

В целом RDL охватывает все перечисленные возможности кодогенератора:

– возможность преобразовывать классы RR в код определения классов на целевом языке (в данном случае Delphi). При этом описание, связанное с конкретным классом, должно помещаться в соответствующее место кода;

– поддерживать для диаграммы классов стереотипы, связанные со специфическими особенностями языка (например, стереотип unit, interface или property с соответствующими определениями: модуль Delphi, интерфейс Delphi, свойство компонента Delphi);

– иметь описанный, очевидный и однозначный способ отображения диаграммы классов в код Delphi. При этом отображение должно быть настраиваемым;

– иметь возможность импорта актуальной объектной модели Delphi (желательно для различных версий библиотеки VCL);

– поддерживать генерацию кода для создания классов Delphi;

– уметь правильным образом отображать типовые виды связей между классами (обобщение, агрегацию и композицию);

– уметь отображать в программный код кардинальность связи;

– исходя из диаграммы компонентов RR, создавать проект Delphi, содержащий требуемые программные модули (forward engineering);

– на основе готового проекта Delphi строить диаграмму компонентов RR, содержащую в виде компонентов все модули проекта Delphi и связанные с ними классы, полученные из Delphi в результате обратного проектирования (reverse engineering), диаграммы должны быть компактными и очевидными;

– обеспечивать автоматическое согласование модели RR и Delphi после внесения изменений в код модулей Delphi (round trip engineering);

– после внесения изменений в модель RR и повторной генерации кода не уничтожать фрагменты, написанные в среде Delphi;

– работать на реальных проектах (сотни классов и модулей) с приемлемой производительностью.

Основным недостатком RDL является то, что он не позволяет создавать формы. Для решения этой проблемы компания Ensemble Systems предлагает следующую методологию проектирования, представленную на рис.8.4.

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

Код, создаваемый RDL, не содержит реализации (для объектной модели обычно это тело метода). Когда модель обновляется из кода, модель не подгружает код, написанный в среде Delphi, для тел методов. Изменения в модели касаются только декларативных элементов: определений классов, интерфейсов, типов, записей и т.п. Но при повторной генерации кода из RR тела методов в Delphi также остаются неизменными, а меняются лишь декларативные элементы.



Рис.8.4. Методология проектирования с использованием RDL

Дистрибутив Rose Delphi Link можно скачать с сайта Ensemble Systems (URL: http://www.ensemblesystems.com/downloads.html).

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


1. Изучить особенности генерации программного кода с помощью RR.

2. Сгенерировать программный код на основе построенной модели системы.

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

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


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

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

2. Результаты генерации кода (в т.ч. окно журнала после проверки модели на отсутствие ошибок, описание свойств генерации кода, файлы с текстом кода).

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


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

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


1. Что необходимо выполнить для генерации отчёта о модели в RR?

2. Какое ПО необходимо для осуществления генерации отчёта о модели в RR?

3. Почему нужно строить разные диаграммы при моделировании системы?

4. Какие диаграммы модели необходимы для генерации программного кода?

5. На каких ЯП могут быть сгенерированы коды программ в RR?

6. Какие основные действия необходимо выполнить для генерации кода в RR?

7. Каким образом осуществляется проверка модели на отсутствие ошибок?

8. Что должно выполняться для классов и компонентов для генерации кода?

9. Как выбирается в RR ЯП? Что нужно проверить с точки зрения синтаксиса выбранного ЯП?

10. Как осуществляется редактирование свойств генерации кода?

11. В чём состоят особенности генерации кода модели в среде RR?

12. Для чего предназначена программа Rose Delphi Link?

13. Какие особенности имеет программа Rose Delphi Link?

Список литературы


1. Боггс У., Боггс М. UML и Rational Rose / Пер. с англ. М.: Изд‑во «ЛОРИ», 2000. 580 с.

2. Кватрани Т. Rational Rose 2000 и UML: Визуальное моделирование. М.: ДМК Пресс, 2001. 176 с.

3. Леоненков А.В. Визуальное моделирование в среде IBM Rational Rose 2003. 2008. (URL: http://www.intuit.ru/department/se/ibmrrose/).

4. Глотова Т.В. Объектно-ориентированная методология разработки сложных систем: Учеб. пособие // Пенз. гос. ун‑т. Пенза: Изд-во ПГУ, 2001. 49 с.

5. Большаков О. Проектирование на Rose Delphi Link // Программист. 2001. №3. (URL: http://delphiplus.spils.lv/articles/delphi/rdl/index.html).

6. Алфимов Р., Золотухина Е. Совместное использование Delphi и Rational
Rose при проектировании пользовательского интерфейса // КомпьютерПресс. 2001. №4. (URL: http://www.lib.csu.ru/dl/bases/prg/KOMPRESS/articles/
2001_04_delphi/index.htm).