Подготовка модели для генерации программного кода
Одним из наиболее важных свойств программы IBM Rational Rose 2003 является возможность генерации программного кода на нескольких языках программирования, которая может быть использована разработчиком после построения модели. Для этой цели в среде IBM Rational Rose 2003 присутствует достаточно большой выбор языков программирования и схем баз данных. Однако возможность генерации текста программы на том или ином языке программирования зависит от установленной версии IBM Rational Rose 2003.
Общая последовательность действий, которые необходимо выполнить для генерации программного кода в среде IBM Rational Rose 2003, состоит из следующих этапов:
- Проверка модели на отсутствие ошибок.
- Создание компонентов для реализации классов.
- Отображение классов на компоненты.
- Выбор языка программирования для генерации текста программного кода.
- Установка свойств генерации программного кода.
- Выбор класса, компонента или пакета.
- Генерация программного кода.
Особенности выполнения каждого из этапов могут изменяться в зависимости от выбора языка программирования или схемы базы данных.
В среде IBM Rational Rose 2003 предусмотрено задание достаточно большого числа свойств, характеризующих как отдельные классы, так и проект в целом. Для определенности в качестве языка реализации проекта целесообразно выбрать язык программирования ANSI C++, который не требует инсталляции дополнительных программ и поставляется практически во всех конфигурациях IBM Rational Rose 2003. Рассмотрим особенности выполнения каждого из указанных выше этапов для языка реализации модели ANSI C++.
Поскольку язык ANSI С++ не допускает использование символов кириллицы в качестве имен классов, атрибутов и операций, необходимо соответствующим образом модифицировать диаграмму классов. После изменения имен классов, атрибутов и операций диаграмма классов модели банкомата будет иметь следующий вид (рис. 14.1).
Рис. 14.1. Диаграмма классов модели банкомата после преобразования имен классов, их атрибутов и операций
Проверка модели независимо от выбора языка генерации кода
В общем случае проверка модели может выполняться на любом этапе работы над проектом. Однако после завершения разработки графических диаграмм она является обязательной, поскольку позволяет выявить целый ряд ошибок разработчика. К числу таких ошибок и предупреждений относятся, например, не используемые ассоциации и классы, оставшиеся после удаления отдельных графических элементов с диаграмм, а также операции, не являющиеся именами сообщений на диаграммах взаимодействия.
Для проверки модели следует выполнить операцию главного меню: Tools Check Model (Инструменты Проверить модель). Результаты проверки разработанной модели на наличие ошибок отображаются в окне журнала. Прежде чем приступить к генерации текста программного кода разработчику следует добиться устранения всех ошибок и предупреждений, о чем должно свидетельствовать чистое окно журнала (рис. 14.2).
Рис. 14.2. Вид журнала при отсутствии ошибок по результатам проверки модели
Создание компонентов для реализации классов и отображение классов на компоненты
По существу данные этапы выполняются в ходе разработки диаграммы компонентов. Хотя программа IBM Rational Rose 2003 позволяет генерировать программный код на языке ANSI C++ для каждого класса модели без предварительного построения диаграммы компонентов, имеет смысл воспользоваться разработанной ранее диаграммой компонентов. Применительно к разрабатываемому проекту желательно переименовать компоненты, задав им англоязычные имена. В этом случае соответствующая диаграмма компонентов модели банкомата будет иметь вид, представленный на рис. 14.3.
Рис. 14.3. Диаграмма компонентов модели банкомата после преобразования имен компонентов
Для отображения классов на компоненты можно воспользоваться окном спецификации свойств компонента, открытого на вкладке Realizes (Реализует). Для включения реализации класса в данный компонент следует выделить требуемый класс на этой вкладке и выполнить для него операцию контекстного меню Assign (Назначить). В результате перед именем класса на этой вкладке появится специальная отметка.
Применительно к модели банкомата для компонента MainATM.exe выберем для генерации программного кода классы ATMTransaction и ATMController (рис. 14.4).
Рис. 14.4. Диалоговое окно настройки свойств реализации классов в компоненте MainATM.exe
Подобная операция должна быть выполнена для всех классов модели, которые предполагается реализовывать на выбранном языке программирования. Имеется и другой способ установления реализации классов на компоненте. А именно, можно просто выделить класс в браузере проекта и перетащить его на нужный компонент диаграммы компонентов.
Выбор языка программирования и редактирование свойств генерации программного кода
Для выбора языка ANSI C++ в качестве языка реализации модели следует выполнить операцию главного меню: Tools Options (Инструменты Параметры), в результате чего будет вызвано диалоговое окно настройки параметров модели. Далее на вкладке Notation (Нотация) в строке Default Language (Язык по умолчанию) из вложенного списка следует выбрать язык - ANSI C++.
Если по какой-то причине языка ANSI C++ не оказалось во вложенном списке, то следует убедиться в том, что этот язык программирования установлен в качестве расширения IBM Rational Rose 2003. Для этого следует открыть окно установленных расширений, выполнив операцию главного меню: Add-Ins Add-In Manager (Расширения Менеджер расширений), и убедиться в том, что выставлена отметка в строке с именем языка ANSI C++. Если ее нет, то ее следует добавить, после чего появится группа доступных операций ANSI C++ в главном меню Tools.
После выбора языка программирования по умолчанию следует изменить язык реализации каждого из компонентов модели. С этой целью следует изменить язык в строкеLanguage (Язык) на вкладке General (Общие) окна спецификации свойств компонента, для чего из вложенного списка следует выбрать язык - ANSI C++ (рис. 14.5).
Рис. 14.5. Окно спецификации свойств компонента MainATM.exe при выборе языка его реализации
Следует заметить, что после выбора языка программирования следует привести в соответствие типы атрибутов, типы аргументов и возвращаемых значений операций. С этой целью нужно просмотреть все классы диаграммы классов и изменить те типы данных, которые не являются синтаксически допустимыми в выбранном языке программирования. Применительно к языку ANSI C++ следует заменить тип Integer на int, Boolean на bool, Currency на float. В противном случае соответствующие исправления придется выполнять вручную после генерации программного кода.
Редактирование общих свойств генерации программного кода возможно в специальном диалоговом окне, которое может быть открыто в результате выполнения операции главного меню: Tools ANSI C++ Open ANSI C++ Specification (Инструменты Язык ANSI C++ Открыть спецификацию языка ANSI C++). Дополнительные свойства генерации программного кода отдельного класса можно специфицировать в диалоговом окне, которое может быть открыто в результате выполнения операции контекстного меню: ANSI C++ Class Customization (Язык ANSI C++ Настройка свойств класса). При этом соответствующий класс должен быть выделен в браузере проекта.
При генерации программного кода на языке ANSI C++ для модели банкомата значения свойств, предлагаемых средой IBM Rational Rose 2003 по умолчанию, первоначально можно оставить без изменения.
Выбор класса или компонента и генерация для него программного кода
Выбор класса или компонента для генерации программного кода означает выделение соответствующего элемента модели в браузере проекта. Применительно к рассматриваемой модели системы управления банкоматом для генерации программного кода на языке ANSI C++ выберем компонент с именем MainATM.exe.
Генерация программного кода в среде IBM Rational Rose 2003 возможна для отдельного класса или компонента. Для этого нужный элемент модели предварительно следует выделить в браузере проекта и выполнить операцию контекстного меню: ANSI C++ Generate Code_ (Язык ANSI C++ Генерировать код). В результате этого будет открыто диалоговое окно с предложением выбора классов для генерации программного кода на выбранном языке программирования (рис. 14.6). После выбора соответствующих классов и нажатия кнопки OK программа IBM Rational Rose 2003 выполняет кодогенерацию.
Рис. 14.6. Окно выбора классов для генерации программного кода
Для просмотра и редактирования созданных файлов с текстом программного кода на языке ANSI C++ предназначен встроенный текстовый редактор, который можно открыть с помощью операции контекстного меню: ANSI C++ Browse Header_ (Язык ANSI C++ Просмотреть заголовочный файл) или ANSI C++ Browse Body_ (Язык ANSI C++ Просмотреть файл реализации) для выбранного класса в браузере проекта.
После генерации программного кода для компонента MainATM.exe каждому классу, реализованному в данном компоненте, будет соответствовать 2 файла с текстом кода на языке ANSI C++. Так, например, для класса ATMTransaction будет сгенерирован заголовочный файл с расширением «h» (рис. 14.7) и файл реализации с расширением «cpp» (рис. 14.8).
Рис. 14.7. Вид встроенного текстового редактора с загруженным в него заголовочным файлом ATMTransaction.h
Рис. 14.8. Вид встроенного текстового редактора с загруженным в него заголовочным файлом ATMTransaction.cpp
Как видно из рассмотрения полученного заголовочного файла, в нем содержится объявление в соответствии с правилами синтаксиса языка ANSI C++ всех операций и атрибутов класса ATMTransaction. При этом информация о документировании операций и атрибутов помещается в комментарии перед соответствующими элементами программы.
В файле реализации содержится заготовка для реализации всех операций класса ATMTransaction в соответствии с правилами синтаксиса языка ANSI C++. При этом каждая из операций имеет пустое тело реализации, которое следует написать дополнительно, исходя из функциональных требований модели и синтаксиса языка программированияANSI C++. Данную работу удобнее выполнять в выбранной интегрированной среде программирования, например, MS Visual C++ или Borland C++. При использовании интегрированной среды кроме компиляции, отладки и тестирования исходных модулей программы разработчик получает возможность дополнить приложение графическим интерфейсом, необходимым для взаимодействия с пользователем.
Следует заметить, что при установленной на компьютер разработчика интегрированной среды сгенерированные файлы с текстом программного кода автоматически открываются в этой среде после двойного щелчка на пиктограмме этих файлов. Тем не менее, лучше копировать содержимое этих файлов в предварительно созданные программные проекты для полного контроля в этих средах процесса программирования и отладки приложений.
Сгенерированные программой IBM Rational Rose 2003 файлы с текстом программного кода содержат минимум информации. Для включения дополнительных элементов в программный код следует изменить свойства генерации программного кода, установленные по умолчанию. Сгенерировать файлы с текстом программного кода при различных значениях свойств выбранного языка программирования предлагается читателям самостоятельно в качестве упражнения.
В заключение следует отметить, что эффект от использования средства IBM Rational Rose 2003 проявляется при разработке масштабных проектов в составе команды или проектной группы. Действительно, при рассмотрении модели системы управления банкоматом может сложиться впечатление того, что написать и отладить соответствующую программу гораздо проще непосредственно в той или иной интегрированной среде программирования.
Однако ситуация покажется не столь тривиальной, когда станет необходимо выполнить проект с несколькими десятками вариантов использования и сотней классов. Именно для подобных проектов явно выявляется преимущество использования средства IBM Rational Rose 2003 и нотации языка UML для документирования и реализации соответствующих моделей.
|