Читайте также: |
|
Этап 1. Создание необходимого набора параметров
Для класса, роли, атрибута, операции и проекта в целом существуют параметры генерации кода. К параметрам, применяемым ко всему проекту, относятся имя файла, имя основного контейнера и место генерации кода. Параметры для класса определяют генерацию конструктора, деструктора, копирующего конструктора, операторов сравнения и методов установки / получения данных (get /set methods). Параметры для роли управляют созданием методов установки / получения данных, видимостью методов и определяют используемый класс-контейнер. Параметры операции задают тип операции (общая, виртуальная, абстрактная, статическая, дружественная) и позволяют ей стать константой. Наборы параметров могут редактироваться. Также могут создаваться новые наборы параметров, чтобы указать особенности С++, требующиеся в проекте.
Для каждого класса создаются два файла: файл заголовка (.h) и файл спецификаций (.cpp).
Типичные наборы параметров могут быть такими: виртуальный деструктор, виртуальная операция, абстрактная операция, статическая операция, функция, не возвращающая данные, опережающее определение.
Создание наборов параметров:
1. Выбрать команду меню Tools Options (Сервис
Параметры).
2. Выбрать вкладку С++.
3. Указать нужный тип набора параметров в раскрывающемся списке Type (Тип).
4. Щёлкнуть по кнопке Clone (Клонировать), чтобы открыть диалоговое окно Clone Property Set (Клонированный набор параметров).
5. Ввести название нового набора параметров.
6. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно.
7. В списке параметров щёлкнуть по параметру, который требуется изменить.
8. Щёлкнуть по значению параметра.
9. Ввести или выбрать из раскрывающегося списка новое значение параметра.
10. Аналогичным образом изменить значения других параметров.
11. Щёлкнуть по кнопке Apply (Применить), чтобы сохранить изменения.
12. Повторить выполненные действия для каждого нового набора параметров.
13. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно Options (Параметры).
Этап 2. Создание компонентов для тела пакета на диаграмме компонентов
Программа Rational Rose генерирует код на основе компонентов и их стереотипов, расположенных на диаграммах. Для компонентов без стереотипов создается h-файл, содержащий определение и декларацию класса. Для компонентов со стереотипом заголовок пакета (Package Specification) создается h-файл, включающий определение класса.
Если существует компонент со стереотипом тело пакета (Package Body), то для него создается файл.cpp, содержащий декларацию класса.
Последовательность указания стереотипов для компонентов:
1. Дважды щёлкнуть по диаграмме компонентов, чтобы открыть её.
2. Щелкнуть правой кнопкой мыши по компоненту на диаграмме.
3. В появившемся контекстно-зависимом меню выбрать команду Open Specification (Открыть параметры).
4. Выбрать или ввести нужный стереотип в открывающемся списке Stereotype (Стереотип).
5. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно настройки параметров компонента.
Создание заголовка и тела компонентов:
· Дважды щёлкнуть по диаграмме компонентов, чтобы открыть её.
· Щелкнуть правой кнопкой мыши по компоненту на диаграмме.
· В появившемся контекстно-зависимом меню выбрать команду Open Specification (Открыть параметры).
· Для файла заголовка выбрать стереотип Package Specification (Заголовок пакета) в раскрывающемся списке Stereotype.
· Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно настройки параметров компонента.
Этап 3. Назначение языка С++ компонентам
После создания компонентов для заголовка и тела им необходимо назначить язык С++. Если для модели по умолчанию выбран язык С++ (устанавливается на вкладке Notation (Нотация) диалогового окна настройки параметров, вызываемого командой меню Tools Options (Сервис
Параметры)), программа Rational Rose автоматически назначит его всем компонентам модели.
Последовательность назначения языка компоненту:
1. Щёлкнуть правой кнопкой мыши по компоненту в списке браузера или по диаграмме.
2. В появившемся контекстно-зависимом меню выбрать команду Open Specification (Открыть параметры).
3. В раскрывающемся списке Language (Язык) выбрать C++.
4. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно настройки параметров компонента.
Этап 4. Связывание классов с компонентами
После создания компонентов устанавливается связь классов с компонентами, представляющими файлы заголовков.
Чтобы связать классы с компонентами, необходимо:
1. Дважды щёлкнуть по диаграмме компонентов, содержащей компоненты для h- и cpp-файлов, чтобы открыть её.
2. В списке браузера щёлкнуть по классу и перетащить его на компонент, представляющий h-файл.
Этап 5. Привязка наборов параметров к элементам моделирования
Каждый элемент моделирования (класс, атрибут или роль) изучаются на предмет особенностей генерации кода. Если для элемента требуется набор параметров, отличный от используемого по умолчанию, то он привязывается к элементу моделирования.
Привязка набора параметров к выбранному элементу предусматривает выполнение следующих действий:
1. Щёлкнуть правой кнопкой мыши по компоненту в списке браузера или по диаграмме.
2. В появившемся контекстно-зависимом меню выбрать команду Open Specification (Открыть параметры).
3. Выбрать вкладку С++.
4. В раскрывающемся списке Set (Набор) указать нужный набор параметров.
5. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно настройки параметров элемента.
Поскольку для каждой комбинации элементов нельзя подобрать набор параметров, некоторые из них можно изменить. Это справедливо и в том случае, когда параметр является частью набора, используемого по умолчанию.
Изменение параметра:
1. Щёлкнуть правой кнопкой мыши по компоненту в списке браузера или по диаграмме.
2. В появившемся контекстно-зависимом меню выбрать команду Open Specification (Открыть параметры).
3. Выбрать вкладку С++.
4. В раскрывающемся списке Set (Набор) указать нужный набор параметров.
5. В списке параметров щёлкнуть по значению, которое требуется изменить.
6. Ввести или выбрать из раскрывающегося списка новое значение параметра.
7. Аналогичным образом изменить значения других параметров.
8. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно настройки параметров элемента.
Этап 6. Выбор компонентов и генерация кода
Код может быть сгенерирован для всего пакета, для компонента или набора компонентов. Название компонента используется в качестве имени файла, содержащего полученный код. Файл с кодом помещается в папку, соответствующую названию пакета в представлении компонентов.
Последовательность генерации кода:
1. Выбрать пакет, компонент или набор компонентов.
2. Выбрать команду меню Tools C++
Code Generation (Сервис
C++
Генерация кода).
3. Процесс генерации кода будет отображаться в окне Code Generation Status (Состояние генерации кода).
Этап 7. Оценка ошибок при генерации кода
Программа Rational Rose выводит все ошибки и предупреждения в окне Log (Журнал). Если проектирование класса частично не завершено, то будут взяты значения по умолчанию, а в журнале появится предупреждение. Это особенно важно при использовании итеративного подхода в разработке, когда класс не реализуется полностью в одной версии.
Примеры ошибок и предупреждений при генерации кода:
1. Error: Missing attribute data type. Void is assumed. (Ошибка: Не указан тип данных атрибута. Подразумевается void.);
2. Warning: Unspecified multiplicity / cardinality indicators. One is assumed. (Предупреждение: Не задан индикатор множественности. Подразумевается единица.);
3. Warning: Missing operation return type. Void is assumed. (Предупреждение: Не указан тип возвращаемого значения для операции. Подразумевается void.).
Возвратное проектирование с использованием анализатора кода С++
Этап 1. Создание проекта
Проект в анализаторе кода С++ (Rational Rose C++ Analyzer) содержит информацию, необходимую для получения элементов проектирования по исходному коду в файлах. В проекте анализатора указываются следующие сведения:
· заголовок (Caption) – информационное описание проекта;
· каталоги (Directories) – список каталогов, используемых анализатором. Каталоги, содержащие файлы с исходным кодом и сопутствующие файлы, должны быть включены в список каталогов;
· расширения (Extensions) – список расширений, распознаваемых анализатором;
· файлы (Files) – список файлов, которые требуется проанализировать;
· определенные символы (Defined Symbols) и неопределенные символы (Undefined Symbols) – список символов препроцессора и их расширений;
· категории (Categories) – список пакетов, которым могут присваиваться компоненты и пакеты;
· подсистемы (Subsystems) – список пакетов, которым могут присваиваться компоненты и пакеты;
· базы (Bases) – список базовых проектов, требующийся для разрешения ссылок в исходном коде;
· контекст типа 2 (Type 2 Context) – директивы препроцессора, требующиеся зависимым от контекста файлам исходного кода;
· параметры экспорта (Export Options) – список информации, которая экспортируется для создания или обновления модели в Rational Rose.
После создания проект сохраняется в файле с расширением.pjt.
Создание проекта в анализаторе кода С++:
· Выбрать команду меню Tools C++
Reverse Engineering (Сервис
C++
Возвратное проектирование) для запуска анализатора кода С++.
· Выбрать команду меню File New (Файл
Новый).
Этап 2. Добавление заголовка проекта
Проект анализатора, так же как код, содержит описание. Каждый проект должен иметь заголовок – общие сведения о проекте (его название и назначение). Такая информация потребуется разработчикам для определения возможности повторного использования проекта.
Добавление заголовка проекта в анализаторе кода С++:
1. Щёлкнуть по кнопке Caption (Заголовок), чтобы открыть одноименное диалоговое окно.
2. Ввести в нем необходимую информацию.
3. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно.
Этап 3. Добавление связанных библиотек и базовых проектов
В список каталогов проекта включены каталоги, используемые анализатором. Каталоги, содержащие анализируемые и сопутствующие файлы, должны быть включены в список каталогов проекта.
Создание списка каталогов проекта в анализаторе кода С++ предусматривает выполнение следующих действий:
1. Щёлкнуть по кнопке Directories (Каталоги), чтобы открыть диалоговое окно Project Directory List (Список каталогов проекта).
2. Выбрать нужный каталог в списке Directory Structure (Структура каталогов).
3. Щёлкнуть по кнопке Add Current (Добавить текущий), чтобы добавить в список каталогов текущий каталог.
4. Щёлкнуть по кнопке Add Subdirs (Добавить подкаталоги), чтобы добавить в список каталогов текущий каталог и его непосредственные подкаталоги.
5. Щёлкнуть по кнопке Add Hierarchy (Добавить иерархию), чтобы добавить в список каталогов текущий каталог и все вложенные подкаталоги.
Проект анализатора может содержать информацию из другого проекта, называемого базовым. Обычно он включает информацию о файлах заголовков для дополнительных библиотек, на основе которых построена программа.
Вместо того чтобы анализировать эту информацию в каждом проекте, где используются библиотеки, создается один базовый проект, который может использоваться в любом другом проекте. Базовый проект вносится в список базовых проектов.
Если анализатор не находит нужного файла в каталогах из списка каталогов, он ищет его в базовом проекте. Если базовых проектов несколько, они просматриваются в порядке включения в список.
Добавление базового проекта в анализаторе кода С++:
1. Щёлкнуть по кнопке Base (Базовый проект), чтобы открыть диалоговое окно Base Project (Базовый проект).
2. Найти каталог с нужным базовым проектом.
3. Щёлкнуть по файлу проектов в списке файлов.
4. Щёлкнуть по кнопке Add (Добавить), чтобы добавить проект в список базовых проектов.
Этап 4. Установка типа файлов и анализ файлов
Анализатор классифицирует файлы по трем типам – тип 1, тип 2 и тип 3. Когда файл добавляется в список файлов проекта, он относится к категории первого типа. Файлы этого типа являются семантически завершенными и независимыми от контекста, т. е. файл включает список завершенных деклараций на языке С++ и либо содержит в себе всю необходимую информацию, либо получает информацию из директив # include. Файлы второго типа являются семантически завершенными, но зависимыми от контекста, т. е. файл включает список завершенных деклараций на языке С++, но при этом содержит символы, определяемые по контексту, в который включен файл. Файлы третьего типа – семантически незавершенные и всегда обрабатываются в том случае, когда встречаются.
Изменение типа анализа в анализаторе кода С++ осуществляется следующим образом:
1. Из списка файлов выбрать файл, щелкнув по нему мышью.
2. Выбрать нужный тип файла в меню Action Set Type (Действие
Установить тип).
Анализатор кода С++ может обрабатывать один файл или группу файлов. Он создает и хранит информацию об анализе в отдельном файле данных для каждого обработанного файла. Эти данные используются при очередном анализе исходного файла. После обработки статус файла в списке файлов обновляется. Файлу могут присваиваться следующие статусы:
a. Неизвестный (Unknown) – файл не обрабатывался анализатором.
b. Устаревшие данные (Stale Data) – файл содержит потенциально устаревшие данные.
c. Проанализирован (Analyzed) – файл успешно обработан анализатором. Этот статус присваивается только исходным файлам первого и второго типа.
d. С циклическим кодом (CodeCycled) – файл успешно обработан анализатором и содержит сведения, защищающие информацию от перезаписи. Этот статус присваивается только исходным файлам первого и второго типа.
e. Исключен (Excluded) – это файл третьего типа, который анализируется каждый раз, когда встречается в другом файле.
f. Содержит ошибки (Has Errors) – при анализе файла обнаружены ошибки в исходном коде.
g. Отсутствует (No Source) – невозможно найти файл в файловой системе.
h. Не проанализирован (Unanalyzed) – для этого файла невозможно найти файл данных.
Анализ файлов в анализаторе кода С++:
i. Указать тип для каждого анализируемого файла.
ii. Выделить файлы в списке файлов.
iii. Выбрать команду меню Action Analyze (Действие
Анализировать) для анализа файлов или команду Action
CodeCycle (Действие
Анализировать с циклическим кодом) для анализа с внесением данных для Rational Rose.
Этап 5. Оценка ошибок
Анализатор выводит все ошибки в окне Log (Журнал). Их также можно просмотреть, если дважды щёлкнуть мышью по файлу в списке файлов. Каждую ошибку нужно оценить по степени важности. В качестве примера можно привести некоторые типичные ошибки:
1. Неразрешенная ссылка (Unresolved reference): анализатор не смог найти исходный файл, на который указывает ссылка. Для устранения такой ошибки в список каталогов проекта необходимо добавить каталог с файлом, указанным в ссылке.
2. Незнакомое расширение языка (Missing language extension): расширение языка не опознано анализатором. Для устранения этой ошибки расширение языка должно быть определено в проекте как символ.
3. Контекстно-зависимый исходный файл (Context-sensitive source file): используется код из других каталогов, не включенный в данный файл. Для устранения ошибки необходимо изменить тип файла на второй или третий.
Этап 6. Настройка параметров экспорта и экспорт в Rational Rose
При указании параметров экспорта определяются элементы, которые должны быть смоделированы и отображены в экспортируемом файле. Например, класс может быть смоделирован и отображен, комментарии – добавлены, ассоциативные связи – смоделированы и отображены, отношения зависимости – смоделированы. Если элемент смоделирован, он может быть отображен средствами программы Rational Rose после создания или обновления модели.
В анализаторе кода С++ имеется несколоко готовых наборов параметров экспорта:
· Двустороннее проектирование (Round Trip): параметры экспорта, полезные для отработки проектирования в обе стороны. Создается файл с расширением.red.
· Первый взгляд (First Look): обобщенный взгляд на модель. Создается файл с расширением.mdl.
· Детальный анализ (Detailed Analysis): детальный взгляд на модель. Создается файл с расширением.mdl.
Можно использовать готовый набор параметров экспорта, изменить его или создать собственный.
Экспорт параметров в анализаторе кода С++:
1. Выделить файлы для экспорта в списке файлов.
2. Выбрать команду меню Action Export To Rose (Действие
экспортировать в Rational Rose).
3. В раскрывающемся списке Option Set (Набор параметров) выбрать нужный набор параметров экспорта.
4. Щёлкнуть по кнопке ОК или Overwrite (Заменить) для экспорта данных в Rational Rose.
Этап 7. Обновление модели в Rational Rose
После создания анализатором файла.red он используется для обновления модели в Rational Rose. При этом в программе элементы модели заменяются элементами, полученными из исходного кода, а также добавляются новые элементы, не включенные ранее в модель.
Чтобы обновить модель, следует:
1. Открыть модель, которая будет обновляться.
2. Выбрать команду меню File Update (Файл
Обновление).
3. Найти и выделить файл.red.
4. Щёлкнуть по кнопке ОК, чтобы закрыть диалоговое окно Update Model From (Обновить модель из).
Генерация кода и возвратное проектирование для Visual С++ и Visual Basic
Этапы генерации кода
1. Назначение языка Visual С++ или Visual Basic компонентам.
2. Связывание классов с компонентами.
3. Установка параметров генерации кода с помощью программы Model Assistant Tool.
4. Выбор компонентов и генерация кода с помощью мастера Code Update Tool.
5. Оценка ошибок при генерации кода.
Этапы возвратного проектирования
1. Возвратное проектирование по коду Visual С++ или Visual Basic с помощью мастера Model Update Tool.
2. Оценка ошибок.
Дата добавления: 2015-09-11; просмотров: 63 | Поможем написать вашу работу | Нарушение авторских прав |