BOLD - инструмент реализации MDA в Delphi. Часть 1. MDA - технология будущегоИсточник: КомпьютерПресс, 3'2003 Константин Грибачев
Оглавление
ВведениеВ истории развития средств разработки программного обеспечения не раз происходили события, когда появление новых технологий разработки кардинально изменяло мировоззрение программистов и методы создания приложений и программных систем. Можно вспомнить в связи с этим возникновение методологии объектно-ориентированного программирования (ООП), теории и практики создания реляционных баз данных и т.д. Похоже, что в скором времени можно ожидать очередную подобную революцию, последствия которой будут, по-видимому, ничуть не меньшими по масштабу изменений в мире программирования. Речь идет о новейшей технологии создания программного обеспечения - 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 базируется на объектно-ориентированном подходе и включает диаграмму классов для описания структуры и состава модели. Диаграмма классов является основой для формирования модели приложения и играет важнейшую роль при работе с продуктом 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:
Даже перечисленных основных возможностей продукта более чем достаточно для кардинального сокращения трудозатрат на создание приложений баз данных практически любой сложности. По отзывам разработчиков, применение Bold позволяет сократить время разработки приложений баз данных в 5-10 раз. На практике использование Bold дает следующие преимущества:
Необходимо отметить, что средства автоматической генерации баз данных и даже классов приложений существовали и прежде, например Rational Rose и PowerBuilder компании Powersoft. Имеется и такой программный продукт, как Delphi RoseLink компании Ensemble Systems1, являющийся своего рода моcтом между CASE-системой Rational Rose и Delphi. Основные его функции - генерация кода на Object Pascal и обратное проектирование. Однако генерируемый с его помощью код не содержит реализацию функциональности, а генерируются только описания - определения классов, интерфейсов и т.д. Bold for Dephi отнюдь не ограничивается этим, поскольку, интегрируясь в Borland Delphi, он предоставляет разработчику полный набор визуальных и невизуальных компонентов, достаточный для реализации объектного пространства (Object Space) приложения. Поэтому разработчик получает возможность работать не на уровне кода и таблиц БД, а на уровне объектов внутри этого объектного пространства. Другими словами, используя Bold, разработчик:
Как принято говорить, в этом случае разработка ведется на бизнес-уровне. Принципиальным моментом при использовании 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 появятся новые закладки, в частности:
Следует иметь в виду, что визуальные компоненты Bold взаимодействуют не с данными, а с объектами бизнес-уровня. По этой причине Bold имеет собственные аналоги таких визуальных компонентов, как метка (Label), сетка (Grid) и т.д., обладающие дополнительными, необходимыми для взаимодействия свойствами. Впрочем, в дальнейшем будет показано, что при желании во многих случаях можно использовать и обычные компоненты, а также компоненты сторонних производителей. Остальные компоненты Bold будут рассмотрены отдельно, при описании дополнительных возможностей продукта. РезюмеИз этой части статьи, являющейся, по сути, вводной, мы узнали следующее:
Кроме того, мы кратко рассмотрели инсталляцию продукта и общую классификацию основных его компонентов. Тому, как работает Bold на практике, будет посвящена следующая часть данной статьи. |