Bold — реализация MDA в Delphi
Однако некоторые фирмы-разработчики не стали ожидать появления окончательных стандартов, поскольку основные подходы и идеи MDA оказались достаточно простыми и весьма заманчивыми. Производители программного обеспечения уже разработали несколько инструментов для реализации (может быть, пока частичной) MDA-технологии в различных средах программирования. Среди этих инструментов имеется и программный продукт для реализации MDA в Delphi. Шведская компания BoldSoft MDE Aktiebolag, активный участник консорциума OMG, создала первую версию программного продукта Bold for Delphi в 1999 году, а в 2000-м в состав Borland Enterprise Studio 6 вместе с Delphi 6 вошла доработанная и расширенная версия Bold 3. В сентябре прошлого года в состав Delphi 7 Studio Architect вошла версия 4 Bold этого продукта. В начале октября фирма Borland приобрела шведскую компанию BoldSoft, так что в настоящее время Bold является продуктом фирмы Borland.
Основные возможности Bold for Delphi:
- встроенный текстовый редактор UML-моделирования для создания моделей приложения;
- возможность импорта и экспорта UML-моделей из Rational Rose ? CASE-средства компании Rational Software;
- автоматическая генерация баз данных практически для всех реляционных СУБД, существующих в настоящее время (доступных через интерфейсы BDE, ADO, dbExpress);
- поддержка модификации базы данных с сохранением информации (DataBase Evolution);
- возможность хранения базы данных в XML-документе без использования СУБД;
- поддержка подмножества языка UML ? OCL (Object Constraint Language);
- автоматическая генерация программного кода на языке Object Pascal;
- автоматическая генерация экранных форм для просмотра и редактирования данных;
- поддержка создания многозвенных приложений и тонких клиентов на базе DCOM.
Даже перечисленных основных возможностей продукта более чем достаточно для кардинального сокращения трудозатрат на создание приложений баз данных практически любой сложности. По отзывам разработчиков, применение Bold позволяет сократить время разработки приложений баз данных в 5-10 раз.
На практике использование Bold дает следующие преимущества:
- полностью устраняется этап ручного создания базы данных ? все таблицы, поля, индексы, ключи генерируются автоматически в соответствии с моделью. Для использования конкретной СУБД достаточно подключить и настроить один из адаптеров баз данных, входящих в состав Bold. Есть возможность создания собственных адаптеров баз данных;
- модификация базы данных превращается в тривиальный процесс ? после внесения необходимых изменений в модель следует только сгенерировать новую базу данных;
- использование языка OCL позволяет полностью абстрагироваться от SQL-диалекта конкретной СУБД. Язык SQL становится практически ненужным и используется редко, хотя возможность его применения сохраняется;
- автоматически генерируемые экранные формы избавляют разработчика от необходимости рутинного кодирования графического интерфейса для ввода и редактирования данных. При этом автоматически задействуется интерфейс drag&drop для перемещения мышью необходимых данных между таблицами.
Необходимо отметить, что средства автоматической генерации баз данных и даже классов приложений существовали и прежде, например Rational Rose и PowerBuilder компании Powersoft. Имеется и такой программный продукт, как Delphi RoseLink компании Ensemble Systems1, являющийся своего рода моcтом между CASE-системой Rational Rose и Delphi. Основные его функции ? генерация кода на Object Pascal и обратное проектирование. Однако генерируемый с его помощью код не содержит реализацию функциональности, а генерируются только описания ? определения классов, интерфейсов и т.д.
Bold for Dephi отнюдь не ограничивается этим, поскольку, интегрируясь в Borland Delphi, он предоставляет разработчику полный набор визуальных и невизуальных компонентов, достаточный для реализации объектного пространства (Object Space) приложения. Поэтому разработчик получает возможность работать не на уровне кода и таблиц БД, а на уровне объектов внутри этого объектного пространства.
Другими словами, используя Bold, разработчик:
- не создает базу данных, а формирует модель приложения на языке UML;
- работает не с таблицами, полями и ключами базы данных, а с объектами созданной им модели приложения ? классами и их атрибутами;
- подключает визуальные компоненты для отображения данных не к таблицам БД, а к объектам модели;
- не пишет запросы на языке SQL, а формирует предложения на гибком и мощном диалекте языка OCL.
Как принято говорить, в этом случае разработка ведется на бизнес-уровне.
Принципиальным моментом при использовании Bold является трехуровневая схема создания приложения, которая включает уровень данных, бизнес-уровень и графический интерфейс пользователя. И в данном случае это ? не абстракция, а реальность, воплощенная в конкретные наборы компонентов Bold, с которыми имеет дело разработчик. Так, если обычно при создании приложения баз данных в Delphi визуальные компоненты подключаются к полям или таблицам БД, то при работе с Bold все они подключаются к промежуточному слою ? к объектам бизнес-уровня. Формирование бизнес-уровня приложения является одной из основных функций Bold. Другая важнейшая функция ? обеспечение взаимодействия между бизнес-уровнем и уровнем данных (СУБД), то есть объектно-реляционное отображение и взаимодействие. Такое взаимодействие включает автоматическую, прозрачную для разработчика, трансляцию OCL в операторы SQL, выполнение операций с таблицами БД и т.д. (подробнее обо всем этом будет рассказано в следующих частях статьи).
И наконец, основное отличие Bold от упомянутых выше CASE-средств состоит в том, что Bold работает не только на этапе разработки приложения, но и на этапе его исполнения. Именно это качество позволяет называть Bold инструментом реализации MDA. Любое CASE-средство, сколь бы совершенным оно ни было, предназначено для реализации только этапов проектирования и моделирования. Оно, конечно, может включать также возможности генерации кода и генерации базы данных, но после запуска приложения CASE-система уже не функционирует, ее «присутствие» на этом этапе по сути уже не ощущается. Функционирование же Bold коренным образом отличается от функционирования других CASE-средств: сохраняя модель приложения в исполняемом файле, Bold на этапе выполнения приложения использует эту модель для управления бизнес-уровнем, для контроля целостности объектного пространства, для управления взаимодействием бизнес-уровня с уровнем данных и графическим интерфейсом.
Необходимо подчеркнуть, что Bold ? это не генератор кода, хотя такая возможность в него заложена. В дальнейшем будет продемонстрировано, что при использовании Bold в принципе не обязательно генерировать код классов модели. В следующей части этой статьи мы создадим приложение баз данных, в котором вообще будет отсутствовать как код классов модели, так и пользовательский код. Немного забегая вперед, поясним, что информацию о модели Bold сохраняет не в генерируемом коде, а в специальном компоненте.
Резюмируя вышесказанное, можно дать следующее определение этому программному продукту: Bold for Delphi ? это, с одной стороны, среда разработки, позволяющая на этапе создания формировать объектное пространство (бизнес-уровень) и реализовывать бизнес-логику приложения, а с другой ? программная система, обеспечивающая на этапе выполнения функционирование бизнес-уровня и его интеграцию с СУБД (уровнем данных) и графическим интерфейсом пользователя.
До появления Bold существовал разрыв между средствами проектирования и моделирования, такими как Rational Rose, и RAD-системой Borland Delphi. Можно было и тогда создавать красивые схемы-модели в Rational Rose, но, переходя в среду Delphi, разработчик вынужден был реализовывать эти схемы вручную. Сейчас, после появления Bold, использование UML-редакторов, например Rational Rose (как уже говорилось, в составе Bold имеется и собственный UML-редактор, однако он функционирует только в текстовом режиме, что при создании больших моделей не всегда удобно), стало неотъемлемым этапом разработки, от которого напрямую зависит поведение и функциональные возможности создаваемого приложения.
Включение Bold в состав Delphi позволяет говорить, что из RAD-средства (RAD, Rapid Application Development ? быстрая разработка приложений) Delphi превращается в интегрированную среду разработки, поддерживающую полный жизненный цикл создания приложений (Application Lifecycle Management, ALM).