Тема:
Простой пример генерации программного кода в среде IBM Rational Rose
Генерировать программный код на данном лабораторном занятии будем на примере задания пятой лабораторной работы — простейшего графического редактора. (Откройте созданный ранее проект (Рис. 1.1).)
Рис. 1.1 Диаграмма классов – пример простого графического редактора
Общая последовательность действий, которые необходимо выполнить для генерации программного кода в среде IBM Rational Rose, состоит из следующих этапов:
Check Model (Инструменты Проверить модель). Результаты проверки разработанной модели на наличие ошибок отображаются в окне журнала. Прежде чем приступить к генерации текста программного кода разработчику следует добиться устранения всех ошибок и предупреждений, о чем должно свидетельствовать чистое окно журнала (Рис. 1.2).
Рис. 1.2Проверка модели на отсутствие ошибок
Создание компонентов для реализации классов
Здесь нужно вкратце рассказать про «Диаграмму компонентов».
Диаграмма компонентов служит частью физического представления модели и является необходимой для генерации программного кода. Для разработки диаграмм компонентов в браузере проекта предназначено отдельное представление компонентов (Component View), в котором уже содержится диаграмма компонентов с пустым содержанием и именем по умолчанию Main (Главная).
Активизация диаграммы компонентов может быть выполнена одним из следующих способов:
. (Рис.1.3) Добавим его в область «диаграммы компонентов» и зададим имя «MainPaint.exe». «exe» - приписка в названии, как бы говорит о том, что при генерации кода можно получить не просто файлы с кодом программы, но и исполняемый файл. (В данном лабораторном занятии не рассматривается, но подобное допускается, если задать в свойствах компонента стереотип <<EXE>> из предлагаемого вложенного списка.)
Рис. 1.3 Создали диаграмму компонентов и добавили “Компонент” «MainPaint.exe»
Отображение классов на компоненты
Для отображения классов на компоненты можно воспользоваться окном спецификации свойств компонента, открытого на вкладке Realizes (Реализует). Для включения реализации класса в данный компонент следует выделить требуемый класс на этой вкладке и выполнить для него операцию контекстного меню Assign (Назначить). В результате перед именем класса на этой вкладке появится специальная отметка (Рис.1.4)
Рис. 1.4 Связываем “Компонент” и классы
Выбор языка программирования для генерации текста программного кода и Установка свойств генерации программного кода
Для выбора языка ANSI C++ в качестве языка реализации модели следует выполнить операцию главного меню: Tools Options (Инструменты Параметры), в результате чего будет вызвано диалоговое окно настройки параметров модели. Далее на вкладке Notation (Нотация) в строке Default Language (Язык по умолчанию) из вложенного списка следует выбрать язык - ANSI C++(Рис.2.1).
Если по какой-то причине языка ANSI C++ не оказалось во вложенном списке, то следует убедиться в том, что этот язык программирования установлен в качестве расширения IBM Rational Rose. Для этого следует открыть окно установленных расширений, выполнив операцию главного меню: Add-Ins Add-In Manager (Расширения Менеджер расширений), и убедиться в том, что выставлена отметка в строке с именем языка ANSI C++.
После выбора языка программирования по умолчанию следует изменить язык реализации каждого из компонентов модели. С этой целью следует изменить язык в строке Language (Язык) на вкладке General (Общие) окна спецификации свойств компонента, для чего из вложенного списка следует выбрать язык - ANSI C++ (Рис. 2.1).
Рис. 2.1Выбор языка программирования и языка реализации компонентов
Выбор класса, компонента или пакета и Генерация программного кода
Генерация программного кода в среде IBM Rational Rose возможна для отдельного класса или компонента. Для этого нужный элемент модели предварительно следует выделить в браузере проекта и выполнить операцию контекстного меню: ANSI C++ Generate Code_ (Язык ANSI C++ Генерировать код). В результате этого будет открыто диалоговое окно с предложением выбора классов для генерации программного кода на выбранном языке программирования (Рис. 3.1). После выбора соответствующих классов и нажатия кнопки OK программа IBM Rational Rose выполняет кодогенерацию
.
Рис. 3.1 Генерация программного кода
|

Рис. 3.2 Окно выбора классов для генерации программного кода
Для просмотра и редактирования созданных файлов с текстом программного кода на языке ANSI C++ предназначен встроенный текстовый редактор, который можно открыть с помощью операции контекстного меню: ANSI C++
Browse Header_ (Язык ANSI C++
Просмотреть заголовочный файл) или ANSI C++
Browse Body_ (Язык ANSI C++
Просмотреть файл реализации) для выбранного класса в браузере проекта.
После генерации программного кода для компонентаMainPaint.exe каждому классу, реализованному в данном компоненте, будет соответствовать 2 файла с текстом кода на языке ANSI C++ (Рис.3.3):
· заголовочный файл с расширением «h»;
· файл реализации с расширением «cpp».

Рис. 3.3 Сгенерированные файлы
l Пример сгенерированного кода — файл Line.cpp
#include "Line.h"
//##ModelId=48FB039303B9
Line::get P1()
{}
//##ModelId=48FB039C0196
Line::get P2()
{}
//##ModelId=48FB03A3035B
Line::set P1(Point P1)
{}
//##ModelId=48FB03CC0203
Line::set P2(Point P2)
{}
//##ModelId=48FB03D40261
Line::move By(Integer X, Integer Y)
{}
l Пример сгенерированного кода — файл Line.h
#ifndef LINE_H_HEADER_INCLUDED_B6EFE6B3
#define LINE_H_HEADER_INCLUDED_B6EFE6B3
#include "Point.h"
//##ModelId=48FAFE8C0399
class Line: public Figure Element
{
public:
//##ModelId=48FB039303B9
get P1();
//##ModelId=48FB039C0196
get P2();
//##ModelId=48FB03A3035B
set P1(Point P1);
//##ModelId=48FB03CC0203
set P2(Point P2);
//##ModelId=48FB03D40261
move By(Integer X, Integer Y);
};
#endif /* LINE_H_HEADER_INCLUDED_B6EFE6B3 */
Заключение
Система Rational Rose — признанный лидер среди средств визуального моделирования, и, используя ее, вы сможете интерактивно разрабатывать архитектуру создаваемого приложения, генерировать его исходные тексты и параллельно работать над документированием разрабатываемой системы.
Преимущества от применения Rational Rose значительны:
· сокращение цикла разработки приложения;
· увеличение продуктивности работы программистов;
· улучшение потребительских качеств создаваемых программ за счет ориентации на пользователей и бизнес;
· способность вести большие проекты и группы проектов;
· возможность повторного использования уже созданного ПО за счет упора на разбор их архитектуры и компонентов;
· язык UML служит универсальным «мостиком» между разработчиками из разных отделов.
В данных методических указаниях рассмотрены примеры использования данной среды — лабораторные занятия, а также краткий теоретический материал. С их помощью студенты получат начальные знания и навыки в работе с Rational Rose и UML.
Используемая литература
1. Учебный курс Интернет-Университета Информационных Технологий (INTUIT.RU) Леоненкова Александра Васильевича «Визуальное моделирование в среде IBM Rational Rose»
Дополнительная литература
1. Практикум для ВУЗов «CASE-технологии» Д.Э.Федотова, Ю.Д.Семенов, К.Н.Чижик;
2. «Rational Rose 2000 и UML визуальное программирование» Терри Кватрани, предисловие грейди Буча ДМК, Москва 2001;
Алфавитный указатель
АИС..................................................................................................................................................... 4
Актер................................................................................................................................................ 19
аргументы редактируемой операции............................................................................................. 59
Ассоциация................................................................................................................................. 22, 31
атрибуты........................................................................................................................................... 27
Генерация программного кода........................................................................................... 67, 70, 71
Главное меню и стандартная панель инструментов.................................................................... 12
действующие лица (Actors)............................................................................................................. 18
деятельности................................................................................................. 47, 49, 50, 51, 52, 53, 54
Диаграмма деятельности (действий)................................................................................. 47, 53, 54
Диаграмма классов.......................................................................................................................... 24
диаграмма компонентов.................................................................................................................. 68
Диаграмма компонентов........................................................................................................... 67, 68
Диаграмма прецедентов.................................................................................................................. 18
заголовочный файл.......................................................................................................................... 72
изображение деятельности.............................................................................................................. 50
изображение перехода..................................................................................................................... 53
квантор видимости.................................................................................................................... 29, 39
логическое представление (Logical View)........................................................................ 24, 47, 55
обобщение............................................................................................................................. 30, 36, 62
Обобщение.................................................................................................................................. 36, 64
однонаправленная ассоциация....................................................................................................... 22
операции........................................................................................................................................... 27
Операции.......................................................................................................................................... 40
Отображение классов на компоненты..................................................................................... 66, 68
Прецедент......................................................................................................................................... 19
Проверка модели на отсутствие ошибок................................................................................. 66, 67
программный код............................................................................................................................. 66
рабочий интерфейс программы...................................................................................................... 12
символ синхронизации............................................................................................................. 48, 53
Специальная панель инструментов............................................................................................... 16
спецификации атрибута.................................................................................................................. 39
спецификации свойств ассоциации.............................................................................................. 32
Стандартная панель инструментов................................................................................................ 12
стереотип.......................................................................................................................................... 39
тип данных атрибута....................................................................................................................... 39
файл реализации............................................................................................................................. 72
элемент принятия решения (ветвления)........................................................................................ 52
Элемент принятия решения (ветвления)....................................................................................... 52
язык реализации............................................................................................................................... 69
Assign................................................................................................................................................ 68
Main (Главная)........................................................................................................................... 24, 68
Activity diagram (диаграммы активности)....................................................................................... 9
Class Attribute Specification............................................................................................................. 39
Class diagram (диаграммы классов)................................................................................................ 10
Collaboration diagram (диаграммы сотрудничества)..................................................................... 10
Component..................................................................................................................................... 7, 68
Component diagram (диаграммы компонентов)............................................................................ 11
Component View......................................................................................................................... 67, 68
Deployment diagram (диаграммы топологии).................................................................................. 8
General (Общие)................................................................................................................................ 69
Generalization.................................................................................................................................... 36
Horizontal Synchronization................................................................................................................ 53
Interaction diagram (диаграммы взаимодействия)........................................................................... 9
Language........................................................................................................................................ 4, 69
Rational Rose....................................................................................................................................... 4
Sequence diagram (диаграммы последовательностей действий)................................................... 9
State Maсhine diagram (диаграммы состояний)............................................................................... 8
TextBox............................................................................................................................................. 56
Unidirectional Association................................................................................................................. 22
Unified Modeling Language, UML..................................................................................................... 4
Use case................................................................................................................................................ 5
Use case diagram (диаграммы прецедентов).................................................................................... 7
Use Case View.................................................................................................................................. 19





Рис. 1.1 Диаграмма классов – пример простого графического редактора
Общая последовательность действий, которые необходимо выполнить для генерации программного кода в среде IBM Rational Rose, состоит из следующих этапов:
Рис. 1.2Проверка модели на отсутствие ошибок
Создание компонентов для реализации классов
Здесь нужно вкратце рассказать про «Диаграмму компонентов».
Диаграмма компонентов служит частью физического представления модели и является необходимой для генерации программного кода. Для разработки диаграмм компонентов в браузере проекта предназначено отдельное представление компонентов (Component View), в котором уже содержится диаграмма компонентов с пустым содержанием и именем по умолчанию Main (Главная).
Активизация диаграммы компонентов может быть выполнена одним из следующих способов:
. (Рис.1.3) Добавим его в область «диаграммы компонентов» и зададим имя «MainPaint.exe». «exe» - приписка в названии, как бы говорит о том, что при генерации кода можно получить не просто файлы с кодом программы, но и исполняемый файл. (В данном лабораторном занятии не рассматривается, но подобное допускается, если задать в свойствах компонента стереотип <<EXE>> из предлагаемого вложенного списка.)
Рис. 1.3 Создали диаграмму компонентов и добавили “Компонент” «MainPaint.exe»
Отображение классов на компоненты
Для отображения классов на компоненты можно воспользоваться окном спецификации свойств компонента, открытого на вкладке Realizes (Реализует). Для включения реализации класса в данный компонент следует выделить требуемый класс на этой вкладке и выполнить для него операцию контекстного меню Assign (Назначить). В результате перед именем класса на этой вкладке появится специальная отметка (Рис.1.4)
Рис. 1.4 Связываем “Компонент” и классы
Выбор языка программирования для генерации текста программного кода и Установка свойств генерации программного кода
Для выбора языка ANSI C++ в качестве языка реализации модели следует выполнить операцию главного меню: Tools
Рис. 2.1Выбор языка программирования и языка реализации компонентов
Выбор класса, компонента или пакета и Генерация программного кода
Генерация программного кода в среде IBM Rational Rose возможна для отдельного класса или компонента. Для этого нужный элемент модели предварительно следует выделить в браузере проекта и выполнить операцию контекстного меню: ANSI C++
Рис. 3.1 Генерация программного кода

