Баннер
Баннер

Генерация исходных текстов программ

Оглавление
Генерация исходных текстов программ
Пример кодогенерации
Контрольные вопросы
Все страницы
Все разработчики сталкиваются с ситуацией, когда приходится проек­тировать большие классы. При ручном вводе и объявлении имеется ряд подводных камней: во-первых, постановщик задач, как правило, описывает «что нужно» на словах, в крайнем случае с минимальным бумажным сопровождением; во-вторых, разработчик, создающий систему, опять-таки в большинстве случаев игнорирует все комментарии, которыми необходи­мо сопровождать программный код. Система кодогенерации Rational Rose позволяет, наряду с другими средствами проектирования, построить про­цесс разработки программного обеспечения как производственный процесс со строгим распределением ролей, полномочий и т. д.

Для демонстрационных целей достаточно спроектировать только один класс. Назовем его String. В его обязанности должны входить основные операции над массивами (печать, копирование, сравнение, получение размера). В качестве примера опишем сначала данный класс на C++:

Class String Protected:

Char *TmpString; Public:

Int Counter;
Int Stat;
Int GetStringSize(Char *);
Int PrintString(Char *);
Int CmpString(Char *, Char *);
Int
CpyString(Char *, Char *);

};

Теперь средствами Rose все спроектируем в графическом виде. Каждый атрибут задается отдельно, с комментарием, и расписывается тип (public, protected, private). На рис. 15.1 показан разворот спецификации для TmpString. Подобным образом расписываются все переменные.

15-1.jpg (29248 bytes)

Рис 15.1. Разворот спецификации для TmpString

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

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

15-2.jpg (12475 bytes)
Рис 15.2 Класс String

Следующий шаг в работе - получение кода на C++. Rational Rose 98 в принципе не может дать готового кода, она способна лишь спроектировать класс и расписать спецификацию каждого элемента, подставить шаблоны членов класса для дальнейшего заполнения кодом. Для 100 %-ной генерации рабочего кода на C++ используется Rational Rose RealTime, которая в данном случае не рассматривается.

Рассмотрим кодогенерация (точнее сказать, классогенерацию). Через систему меню выбираем поддерживаемый язык для описания спроектированного класса (в данном случае это C++), вызываем Code Generational. Результатом работы будет появление двух файлов:MyString и MyString. В первом расписывается сам класс, а второй является шаблоном для дальнейшего заполнения соответствующим кодом. Имея подобный шаблон, становится не важно, какой именно разработчик начал создавать кодирование логики класса.Для получения же подробного отчета по классу или технического задания можно воспользоваться инструментом Rational SoDA.

Следующая задача, с которой поможет справиться RationalRose - анализ существующей системы. Зачем переписывать и документировать крупные системы заново, если можно воспользоваться функцией обратно­го проектирования, что позволит из имеющегося кода построить визуаль­ную модель и уже визуально дописать необходимые свойства и атрибуты, дописать новые классы. А под конец сгенерировать весь спектр файлов, необходимых для дальнейшей работы программистов. Данный подход называется Round Trip и полностью поддерживается в RationalRose.





Читайте также:

Добавить комментарий


Защитный код
Обновить




Разделы



Главная Rational Rose Генерация исходных текстов программ