BOLD - инструмент реализации MDA в Delphi. Часть 1. MDA - технология будущего

Константин Грибачев

Оглавление

Введение

В истории развития средств разработки программного обеспечения не раз происходили события, когда появление новых технологий разработки кардинально изменяло мировоззрение программистов и методы создания приложений и программных систем. Можно вспомнить в связи с этим возникновение методологии объектно-ориентированного программирования (ООП), теории и практики создания реляционных баз данных и т.д. Похоже, что в скором времени можно ожидать очередную подобную революцию, последствия которой будут, по-видимому, ничуть не меньшими по масштабу изменений в мире программирования. Речь идет о новейшей технологии создания программного обеспечения - Model Driven Architecture.

Model Driven Architecture (MDA) дословно переводится как «архитектура, управляемая моделью». Концепция MDA разрабатывается консорциумом OMG (Object Management Group, http://www.omg.org/), в который сегодня входит более 800 компаний - производителей программного и аппаратного обеспечения. Главной задачей OMG является разработка стандартов и спецификаций, регламентирующих применение новых информационных технологий на различных аппаратных и программных платформах. Широко известны такие стандарты и технологии, как UML и CORBA, в разработке которых активно участвует OMG.

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

В основе MDA лежит идея выделения в качестве самостоятельного и обязательного этапа разработки логики функционирования приложения (бизнес-логики). Согласно концепции MDA разработка приложения должна начинаться с этапа создания модели приложения, которая определяет состав, структуру и поведение будущего программного продукта. Такая модель создается не на языке программирования, а посредством языка унифицированного моделирования (Unified Modelling Language, UML) и является платформенно-независимой (Platform Independent Model, PIM ), то есть при ее создании разработчик полностью абстрагируется от особенностей конкретных программных и аппаратных средств реализации приложения.

На втором этапе, после создания PIM, создаются одна или несколько платформенно-зависимых моделей PSM (Platform Specific Model), которые являются своеобразными адаптерами, обеспечивающими интеграцию PIM с одной или несколькими технологиями разработки программных продуктов. Кроме того, создается специальный набор программных интерфейсов, используемый в дальнейшем для взаимодействия данного приложения с другими.

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

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

Следует отметить, что MDA не является, по замыслу OMG, конкурентом какой-либо из существующих технологий (платформ) создания приложений (CORBA, .NET, J2EE, Sun ONE и т.д.). MDA находится на более высоком уровне обобщения процесса разработки, позволяя на этапе создания PIM-модели абстрагироваться от этих платформ, на следующем этапе выбрать одну или несколько платформ разработки и создать соответствующий набор PSM-моделей и, наконец, на этапе генерации кода получить приложение, функционирующее на этих платформах. Консорциум OMG полагает (и, вероятно, справедливо), что данный подход можно будет применять не только для существующих в настоящее время технологий разработки, но и для любых будущих технологий при условии создания для них соответствующих адаптеров (PSM-моделей).

Таким образом, OMG считает архитектуру MDA не просто новой технологией, а скорее «метатехнологией» создания приложений, которая отныне будет единственно актуальной, независимо от развития и появления новых средств разработки, которые MDA уже «заранее интегрировала» в себя.

Преимущества, которые дает MDA разработчикам, очевидны: локализация всей логики приложения в одном месте (то есть в модели), автоматическая генерация кода и баз данных, а в перспективе - и графического интерфейса пользователя. Если заглянуть дальше, то сценарий создания приложений будет выглядеть примерно так: создается модель, которая поступает на вход специальной программы, а на выходе генерируются готовое приложение и база данных. При необходимости изменения вносятся в модель, и затем процедура генерации повторяется, причем без внесения изменений в код приложения. Из этого следует, что само понятие «разработчик программного обеспечения» может при внедрении MDA довольно сильно видоизмениться. Вследствие смещения акцента на создание модели разработкой приложений будут заниматься не столько программисты, сколько специалисты, владеющие описываемой предметной областью. При этом языком описания является унифицированный язык моделирования UML.

Язык унифицированного моделирования UML

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

Причиной появления Unified Modelling Language (UML) стала необходимость унифицированного подхода к описанию моделей бизнес-приложений в начале 90-х годов ХХ века. К тому времени появилось несколько десятков вариантов инструментария для создания подобных моделей, но все они были не согласованы между собой, что мешало разработке CASE-средств и вносило некоторую путаницу. Напомним читателю, что CASE-средства (Computer Aided Software Engineering - разработка программного обеспечения с помощью компьютера, то есть автоматизированная разработка программного обеспечения) в тот период играли в основном роль графической надстройки над СУБД, позволяющей автоматически генерировать базу данных по ее графической схеме. У истоков разработки языка UML стояла компания Rational Software, разработавшая одно из первых CASE-средств - Rational Rose. В 1995 году консорциум OMG включился в работу по стандартизации UML, затем к разработке языка активно подключились и другие компании, и, после выхода нескольких промежуточных версий, в 1997 году появилась версия UML 1.0.

В настоящее время последней стандартизованной OMG версией является UML 1.4, завершается разработка версии 2.0. Развитие UML сегодня координирует консорциум OMG, который считает разработку и продвижение этого языка своим стратегическим направлением.

Перечислим характерные свойства UML:

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

Язык UML базируется на объектно-ориентированном подходе и включает диаграмму классов для описания структуры и состава модели. Диаграмма классов является основой для формирования модели приложения и играет важнейшую роль при работе с продуктом Bold for Delphi.

В рамках UML существует и развивается формальный язык для текстового описания условий, накладываемых на классы модели. Он получил название OCL (Object Constraint Language - язык объектных ограничений). OCL также играет чрезвычайно важную роль при практическом использовании MDA в Delphi (описанию OCL будет посвящена одна из частей данного цикла).

Bold - реализация MDA в Delphi

Понятно, что создание такой технологии, как MDA, требует весьма длительного времени. В конце 2001 года консорциум OMG выпустил документ «Model Driven Architecture - a Technical Perspective», представляющий собой первую предварительную спецификацию MDA. На очереди - следующие спецификации и документы.

Однако некоторые фирмы-разработчики не стали ожидать появления окончательных стандартов, поскольку основные подходы и идеи 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).

Инсталляция Bold. Размещение компонентов

Последняя версия продукта входит в состав Delphi 7 Studio Architect, в том числе и в ознакомительную версию, доступную для скачивания с сайта разработчика2. Обратите внимание на то, что Bold не входит в версию Delphi 7 Studio Enterprise.

При инсталляции Delphi 7 Studio Architect Trial Edition на экране появится заставка (рис. 1), позволяющая выбрать устанавливаемые продукты: Delphi 7, ModelMaker и собственно Bold. Продукты устанавливаются в порядке их перечисления. После установки Delphi 7 рекомендуется установить также UML-редактор Model Maker, позволяющий создавать диаграммы классов и взаимодействовать с Bold (хотя это и необязательно). Если при инсталляции Bold будет предложено выбрать состав установки, нужно пометить все компоненты. Кстати, на объем требуемого пространства на жестком диске для Bold этой версии он составляет более 140 Мбайт.

После установки Bold на палитре компонентов Delphi появятся новые закладки, в частности:

  • BoldHandles (рис. 2) - содержит невизуальные компоненты для формирования бизнес-уровня приложения;

  • BoldPersistence (рис. 3) - содержит невизуальные компоненты для взаимодействия с уровнем данных (СУБД). Уровень данных в Bold носит название Persistence Layer;

  • BoldControls (рис. 4) - содержит визуальные и невизуальные компоненты для создания графического интерфейса пользователя;

  • BoldMisc (рис. 5) - содержит прочие вспомогательные визуальные и невизуальные компоненты;

  • Bold COM Handles (рис. 6) - содержит невизуальные компоненты для формирования бизнес-уровней многозвенных приложений. Подобные приложения позволяют распределять функциональность между звеньями таким образом, что появляется возможность создавать так называемые тонкие клиенты баз данных, которые характеризуются минимальными требованиями с точки зрения наличия средств доступа к данным. Более подробная информация об этом будет представлена в последующих статьях;

  • Bold COM Controls (рис. 7) - содержит визуальные и невизуальные компоненты для формирования графического интерфейса многозвенных приложений.

Следует иметь в виду, что визуальные компоненты Bold взаимодействуют не с данными, а с объектами бизнес-уровня. По этой причине Bold имеет собственные аналоги таких визуальных компонентов, как метка (Label), сетка (Grid) и т.д., обладающие дополнительными, необходимыми для взаимодействия свойствами. Впрочем, в дальнейшем будет показано, что при желании во многих случаях можно использовать и обычные компоненты, а также компоненты сторонних производителей.

Остальные компоненты Bold будут рассмотрены отдельно, при описании дополнительных возможностей продукта.

Резюме

Из этой части статьи, являющейся, по сути, вводной, мы узнали следующее:

  • в настоящее время сообществом ведущих мировых производителей программного обеспечения активно разрабатывается и продвигается технология MDA, в основе которой лежит принцип создания приложений, управляемых моделью. Поведение таких приложений определяется заложенными в модель правилами, и, при изменении модели, поведение MDA-приложений изменяется без изменения программного кода приложения. Код приложений и база данных для MDA-приложений генерируются автоматически в соответствии с моделью;
  • в основе создания модели приложения лежит язык унифицированного моделирования UML, позволяющий в графической наглядной форме формировать состав и структуру модели и налагать определенные условия и ограничения посредством подмножества UML - формального языка OCL;
  • компания BoldSoft MDE AB, не дожидаясь окончания процесса стандартизации технологии MDA, разработала программный продукт - Bold for Delphi, предназначенный для реализации MDA в среде Delphi. В настоящее время Bold является продуктом фирмы Borland и входит в состав Borland Delphi 7 Studio Architect;
  • использование Bold позволяет разработчику сконцентрироваться на логике работы приложения (бизнес-уровне), абстрагируясь в достаточной степени от специфики используемой СУБД. Bold обеспечивает создание объектного пространства на этапе разработки, функционирование бизнес-уровня на этапе эксплуатации, автоматически интегрируя бизнес-уровень с СУБД и графическим интерфейсом пользователя.

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

Часть 2


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=1744