Компьютер Пресс №10-98

ERwin и автоматическая генерация кода клиентских приложений

Анатолий Тощев

Введение

Привычным становится для программистов, создающих информационные системы в технологии «клиент-сервер», работа по моделированию структуры базы данных с помощью CASE-средств. Это позволяет значительно упростить процесс создания реально работающих информационных систем, а также облегчает их сопровождение. Но данная методика касается только серверной части информационных систем. А может ли CASE-средство автоматизировать разработку клиентского приложения? Однозначно положительный ответ вряд ли кто рискнет дать. Когда разговор идет об автоматической генерации кода приложения, любой программист скажет, что об оптимальности этого кода не может быть и речи. Однако все серьезные CASE-средства имеют модули по автоматизации разработки клиентской части информационной системы. В чем же они могут оказать помощь программисту? Рассмотрим генерацию клиентских приложений на примере одного из самых распространенных CASE-средств программного продукта ERwin фирмы Logic Works.

С чем работает ERwin?

Первый вопрос, который возникает при попытке использования ERwin для разработки клиентской части звучит так: «Какие средства разработки приложений поддерживает ERwin?». Последняя версия ERWin 3.5 напрямую работает с двумя средствами: Visual Basic (Microsoft) и PowerBuilder (Sybase) версии 4.0, 5.0 и 6.0. Т.е., весь процесс обмена информацией при генерации приложения осуществляется только между ERwin и соответствующим средством разработки. Используя специальный продукт MetaBase (производитель - швейцарская фирма «gs-soft»), можно расширить список еще одним популярным средством разработки, а именно Delphi (Borland).
Какое приложение ERwin создает при использовании автоматической генерации кода? Все зависит от используемого средства разработки. Давайте более подробно остановимся на каждом из этих средств.

Visual Basic

При работе с Visual Basic сразу виден результат работы, т.к. на основе модели данных создается экранная форма. Процесс генерации можно разбить на две части: формирование клиентских данных в ERwin и использование Visual Basic для создания кода приложения.
Загрузив в ERwin модель данных, необходимо установить через меню Client - Target Client средство разработки Visual Basic. Следует заметить, что ERwin работает с Visual Basic версии 4.0 или 5.0. Выбор номера версии непредусмотрен, т.к. практически нет никаких различий с точки зрения ERwin на генерацию кода в различных версиях Visual Basic. Работа с клиентской частью доступна только на уровне физической модели.
Далее приступаем к созданию словарей (осуществляется с помощью соответствующих пунктов меню Client) для стилей, форматов, условий проверки и начальных значений. Можно пропустить этот шаг и формировать словари непосредственно на следующем шаге. Назначение словарей состоит в следующем:
Следующий шаг требует задать параметры для всех колонок модели, которые будут использованы в процессе генерации.
Для этого используются соответствующие закладки в редакторе колонок. Параметры, задаваемые для колонок: На данном этапе работу с ERwin можно считать завершенной.

Перейдем к этапу генерации, который выполняется с помощью Visual Basic. Для процесса генерации кода должны быть загружены обе программы (ERWin и Visual Basic). Первым шагом необходимо создать новый проект Visual Basic и подключить к нему два внешних файла (модуля) CONST40.BAS и ERWIN40.BAS, расположенных в каталоге ERwin. Если Вы забудете добавить файлы, генерация кода пройдет успешно, но проблемы возникнут на этапе компиляции приложения. Используя пункт меню AddIns-ERwin-Form Wizard, начните процесс генерации. Генерация кода производится по принципу Wizard. Для данной операции потребуется от трех до пяти шагов:

1. Выбор таблицы (таблиц) для генерации кода - перенесите нужные таблицы из левого списка в правый. Если в ERwin в данный момент открыто более одной модели имеется возможность работы с любой из них, но только с одной, выбрав ее в списке моделей. Нажмите кнопку Next.

2. Выбор дочерних таблиц (выполняется если выбрано более одной таблицы) - выберите дочерние таблицы (из выбранных) для всех родительских таблиц, приведенных в верхнем списке. Нажмите кнопку Next.

3. Выбор колонок для включения в форму - перенесите все необходимые колонки из левого списка в правый для всех выбранных таблиц. Нажмите кнопку OК для пропуска шага 4 или кнопку Next.

4. Установите стиль отображения таблиц с помощью выпадающего списка:

Нажмите кнопку OК.

5. Задайте параметры для соединения с базой, имя и заголовок формы. Нажмите кнопку OК.
Через некоторое время будет создана экранная форма, которая содержит все выбранные таблицы и элементы для работы с базой данных (кнопки New, Update, Delete и навигатор для перемещения по строкам), а также кнопку Close. Результат работы можно увидеть на рисунке:

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

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

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

PowerBuilder

По другому пути пошли разработчики ERwin при генерации кода для PowerBuilder. Одна из основных задач построения модели данных - генерация структуры базы данных. Резонно предположить, что правильнее всего в клиентском приложении формировать ту часть, которая отвечает за работу с базой данных. Эта часть в PowerBuilder реализована в виде объекта DataWindow, который отвечает за взаимодействие приложения с БД через сформированные запросы. И именно он создается ERwin при генерации кода для PowerBuilder.

В отличие от Visual Basic ERwin для PowerBuilder все делает сам без загрузки последнего. Единственное условие - в AUTUEXEC.BAT должен быть прописан путь к каталогу PowerBuilder, т.к. ERwin при генерации использует динамические библиотеки PowerBuilder. Описанным выше способом установите в качестве средства разработки PowerBuilder. ERwin работает с тремя версиями PowerBuilder - 4.0, 5.0 и 6.0. Установите нужную версию. В поле PBL File надо указать путь и имя файла (библиотеки Power Builder), в котором будут создаваться DataWindow.

При работе с PowerBuilder ERwin имеет одну важную особенность: в структуре БД создаются служебные таблицы для работы с PowerBuilder, называемые PB Catalog. В них прописываются все элементы модели, а так же стили, форматы. и начальные значения. Для правильной работы с таблицами в поле PB Catalog Owner надо указать имя пользователя БД, под которым они были созданы. Если таблицы в БД не созданы, не надо расстраиваться: ERwin будет нормально работать с Power Builder и без них. Правда, при синхронизации структуры БД ERwin будет формировать запросы по изменению данных в данных таблицах, а значит будут выдаваться сообщения об ошибках. Но эти ошибки не мешают нормальной генерации структуры, т.к. вышеуказанные запросы будут созданы в конце скрипта.

Принцип работы с клиентской частью ERwin аналогичен работе с Visual Basic. Надо также создать словари стилей,

форматов и начальных значений. Требуется описать свойства колонок в редакторе колонок.
Есть некоторое отличие в стилях, объясняемое наличием PowerBuilder специфических элементов управления, таких как Drop Down DataWindow. Я не буду останавливаться на этом подробно, т.к. на мой взгляд программист, который решил воспользоваться возможностью ERwin для генерации кода, наверняка знает их знает. Еще одним отличием является присутствие во всех формах работы с клиентской частью кнопки PB Sync. Она позволяет синхронизировать модель данных и приложение. Наличие этой возможности отразилось на появлении дополнительных пунктов в меню Client. Имеется возможность установки большого числа опций для настройки синхронизации, по результатам которой можно формировать отчеты. К сожалению синхронизация происходит на уровне стилей, форматов и т. п., но не затрагивает DataWindow.
Процесс генерации DataWindow начинается выполнением пункта меню Client - Create DW. Для генерации надо выбрать таблицы из модели данных и перенести их в список выбранных таблиц. За один сеанс ERwin может создать несколько DataWindow. Необходимо отметить тот факт, что нельзя создать DataWindow из двух и более таблиц (организовать JOIN). Еще одной особенностью является задание стиля отображения DataWindow. ERwin позволяет создать три стиля: Надо заметить, что стиль задается на все выбранные таблицы. Создание DataWindow с различными стилями выполняется за несколько сеансов. Имя DataWindow будет состоять из префикса (поле DataWindow Name Prefix) и имени таблицы. При нажатии на кнопку Finish начнется непосредственно процесс генерации кода приложения. Результат процесса будет выдан в виде сообщения с указанием количества созданных DataWindow. При наличии в приложении DataWindow с таким же именем, как у создаваемого, будет выдано предупреждение и пользователю надо будет решить: создавать или нет DataWindow.

Второй вариант создания DataWindow - это использовать закладку Power Builder редактора таблиц.

В этом случае будет создаваться DataWindow на конкретную таблицу. Имеется возможность установки шрифтов для всей DataWindow (для данных, меток и заголовков). Процесс генерации разбит на два шага: Пожалуй, все, что было сказано по поводу использования ERwin для генерации кода на Visual Basic, можно сказать и для Power Builder. Можно еще отметить, что генерация DataWindow очень удобна на начальном этапе кодирования, когда за короткое время можно создать DataWindow на все таблицы модели. В дальнейшем, как показывает опыт, в ходе разработки приложения придется неоднократно изменять расположение полей в DataWindow под требования заказчика. Наличие синхронизации приложения и модели несомненно можно отнести к достоинствам, т.к. это шаг вперед по сравнению с Visual Basic.

Delphi

По сравнению с предыдущими средствами разработки Delphi не может напрямую работать с ERwin. Посредником между ними выступил продукт фирмы gs-soft MetaBase. На момент написания данной статьи MetaBase версии 3.0 может работать только с ERwin 3.0 (пока нет поддержки ERwin 3.5).
Как взаимодействуют эти три продукта? Созданная с помощью ERwin модель данных сохраняется в файле с расширением ERX (по умолчанию ERwin создает файлы с расширением ER1). Формат ERX стандартизован и описывает модель данных в текстовом формате. Применяется он для переноса моделей между разными CASE-средствами и для организации доступа к моделям из пользовательских приложений. Чтобы понять дальнейший процесс проектирования давайте определим последовательность преобразования модели данных. Модель преобразуется в метамодель MetaBase, которая хранится в файле специального формата. В метамодели описываются свойства сущностей и атрибутов модели данных. Кроме того, MetaBase содержит библиотеку компонент, которые помимо работы с базой умеют читать метамодель. При построении проекта на Delphi с использованием данных компонент не требуется настройка свойств, т. к. они описаны уже в метамодели. В чем преимущество подобного подхода к проектированию. При изменении модели данных потребуется только прочитать ее в MetaBase и изменить метамодель, настроив свойства новых или измененных сущностей и атрибутов. Но сначала надо сделать обратное проектирование метамодели в модель данных (чтобы в модели данных сохранились все описанные в метамодели свойства). При запуске проекта на Delphi все новые колонки или поля появятся в экранной форме. Пожалуй, потребуется только изменить размер формы (если будут дополнительные поля).

Для работы с MetaBase необходимо запустить программу MetaGen.

Работа начинается с создания проекта (закладка Projects), для которого надо задать следующие параметры: На закладке Model выводится список файлов моделей данных, расположенных в указанном каталоге и соответствующих фильтру. Необходимо выбрать одну модель для проекта. Закладки Settings и Settings Codegen позволяют установить дополнительные параметры для проекта.

Далее надо перейти на закладку Transfer. Нажатием кнопки Import модель преобразуется в метамодель MetaBase. Чтобы иметь возможность редактировать метамодель надо нажать кнопку Check Out. Для редактирования нажимается кнопка MetaBase Editor. Для открытия доступа к метамодели надо нажать кнопку Check In. Кнопкой Export выполняется процесс создания из метамодели модели данных в формате ERX.

Редактор метамодели позволяет установить свойства сущностей и атрибутов модели данных, которые сохраняются в метамодели: Особенностью MetaBase является возможность задания индивидуальных свойств для каждого пользователя (при условии многопользовательской версии MetaBase), т. о. каждый пользователь может увидеть свои заголовки колонок в таблице и т. п.. Однопользовательская версия работает только с пользователем, имеющим имя USER1. Данную особенность надо учесть при создании базы, . объявив пользователя USER1 в БД.
В редакторе можно выполнить команды Check In и Check Out.
Следующим этапом надо создать новый проект в Delphi. Если создается первый проект, предварительно надо установить компоненты MetaBase.
Компоненты устанавливаются командой Install Packages. Устанавливать надо файл, расположенный в подкаталоге VCLGS того каталога, куда был установлен MetaBase. Порядок создания формы для работы с MetaBase в Delphi практически ничем не отличается от создания стандартной формы для работы с базой данных. Отличие заключается только в используемых компонентах (названия компонент MetaBase оканчивается на GS). В таблице приведена последовательность подключения компонент в стандартном и рассматриваемом случае (рассмотрен самый простой случай).
Стандартный Работа с БД с использованием
MetaBase
Database *) MetabaseGS *)
- MetaSourceGS
Table или Query TableGS или QueryGS
DataSource DataSourceGS
DBGrid DBGridGS

*) - использование необязательно

Для связи компонент в цепочку устанавливаются соответствующие свойства. При установке свойства MetaBaseName в компоненте MetaSourceGS (надо установить имя метамодели) для остальных компонент становятся доступными соответствующие параметры и свойства метамодели. Например в компоненте TableGS для свойства MetaEntityName появляется возможность выбора из списка сущностей метамодели. После выбора сущности автоматически устанавливается свойство TableName, т.к. в метамодели прописана связь имен сущностей и таблиц.

Преимуществами использования MetaBase является полное согласование модели данных и кода приложения (при посредничестве метамодели), что значительно упрощает процесс внесения изменений в процесс разработки информационных систем. Можно отметить наличие индивидуальных настроек свойств для пользователей, приводящее к повышению гибкости приложения К недостаткам можно отнести более длительный процесс проектирования на начальной стадии и более сложную структуру компонент для работы с базой данных. Пожалуй, есть еще один неприятный момент: иногда возникают ошибки при чтении ERwin файла ERX, созданного MetaBase, что практически сводит на нет весь круговорот разработки приложения.

Заключение

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

Координаты автора:
Учебно-консалтинговый центр Interface Ltd., тел. (095)135-55-00, 135-25-19,
mail@interface.ru


Interface Ltd.

Ваши замечания и предложения направляйте по адресу: webmaster@interface.ru

Reklama.Ru. The Banner Network.