Корпоративные базы данных - статьи

       

Генераторы приложений



Входящие в состав DESIGNER/2000 генераторы разбиваются на две группы:


  • генератор сервера
  • генераторы клиентской части

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

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


программа, написанная на языке, соответствующем этому типу: генератор форм создает
приложения для ORACLE/Forms, генератор отчетов позволяет получать процедуры на PL/SQL
либо приложения для ORACLE/Report.

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

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

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

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

Например, если мы хотим создать экранную форму для таблицы СОТРУДНИКИ, то нет
необходимости включать в число используемых таблиц ОТДЕЛЫ в качестве источника для
заполнения столбца ОТДЕЛ в таблице СОТРУДНИКИ. Генератор, анализируя структуру базы
данных, автоматически создаст правильный список возможных значений и включит в текст
программы все необходимые проверки на правильность вводимых данных. Такой принцип
работы генераторов особенно существенен для поддержки прикладной системы: при
необходимости изменения схемы базы данных (добавилась новая таблица, логически связанная с
уже существующими, или изменился тип некоторой взаимосвязи между базовыми таблицами и
т.п.) можно не вносить никаких изменений в старые спецификации модулей, а лишь
перегенерировать их и все необходимые изменения в тексты программ будут внесены
автоматически.

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

При необходимости сгенерированный текст программы можно дополнительно доработать и
дополнить, пользуясь непосредственно соответствующими инструментальными средствами
разработки "нижнего уровня", входящими в состав DEVELOPER/2000.


В этом случае появляется
некоторая опасность несоответствия конечной версии программы спецификациям проекта, что
особенно неудобно при возможных изменениях проекта, например схемы базы данных. Такое
изменение требует перегенерации модулей с учетом новых таблиц и взаимосвязей, а с другой
стороны выполнение повторной генерации "уничтожит" старую версию программы со всеми
введенными "вручную" дополнительными фрагментами. Для такой ситуации в DESIGNER/2000
предусмотрен специальный режим работы генераторов - регенерация. При регенерации
происходит не замена старого программного текста на новый, а его "редактирование", когда по
возможности вносятся лишь необходимые изменения и не корректируются отдельные
фрагменты. При этом можно управлять уровнем изменений и запретить модифицировать
определенные фрагменты программы (например, все, относящееся к описанию расположения
полей или триггеры заданного типа и т.п.).

Из дополнительных средств, входящих в состав генераторов, особый интерес представляют
утилиты, позволяющие использовать DESIGNER/2000 не только для новых разработок,
начинающихся с этапа постановки задачи, но и для готовых прикладных систем, которые были
спроектированы и реализованы без использования CASE-средств. Для такой ситуации
предусмотрена возможность реинженигинга системы - автоматического создания по работающей
версии приложения его описания в репозитарии, т.е. спецификаций структуры базы данных,
программных модулей типа экранных форм и отчетов, ER-модели. Полученные описания могут
быть использованы для анализа возможностей и выявления недостатков существующей версии
приложения, а впоследствии модифицированы в соответствии с новыми требованиями и
условиями функционирования системы. На основе отредактированных спецификаций
производится генерация новой версии системы.



Содержание раздела