ECO-система .NET

Евгений Афанасьев, Евгений Даниленко

Что такое ECO

Архитектура ECO и пространство имен

Процесс разработки приложения ECO

Заключение

 

Пример разработки приложения с использованием ECO

 


Евгений Афанасьев (u_geen@mail.ru), ведущий программист ЗАО «Гольфстрим Охранные Системы».

Евгений Даниленко (eugene@eadsoft.com), EADSOFT.COM, редактор и автор сайта C#Builder.RU, Borland Technology Partner.

Появление масштабных IT-проектов инициировало рост интереса к средствам моделирования, используемым при разработке программного обеспечения. В данной статье рассматривается одна из первых реализаций основных концепций идеологии MDA — технология Borland ECO для .NET Framework.

Сегодня очевидно, что проектирование при разработке информационной системы любого масштаба — очень важный процесс, от которого во многом зависит успех проекта. Все большее внимание в сфере разработки программного обеспечения привлекает технология MDA (Model-Driven Architecture) — инициатива консорциума OMG (Object Management Group), в который входит более 800 компаний. Архитектура, управляемая моделью, является новейшей методологией создания кроссплатформенных приложений, позволяющей вести процесс объектно-ориентированного анализа и проектирования (ООАП) с использованием элементов нотации языка UML (Unified Modeling Language).

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

• разрабатывать платформенно-независимые решения (Platform Independent Model, PIM);

• трансформировать PIM на язык высокого уровня платформенной модели (Platform Specific Model, PSM);

• автоматически создавать программный код для конкретного объектно-ориентированного языка программирования (ООЯП) на основании модели.

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

Рассмотрим теперь основные принципы и возможности технологии Borland ECO (Enterprise Core Objects) — одной из первых реализаций MDA, представленной в средах Borland C#Builder и Delphi 8 for Microsoft .NET Framework. Заметим, что ECO не является чистой реализацией MDA в его сегодняшнем состоянии, но концепция MDA и такие средства MDА, как язык OCL, легли в основу этой платформы. Редакции Architect средств разработки C#Builder и Delphi 8 отражают взгляд компании Borland на интеграцию средств разработки, моделирования и платформы исполнения — их пользователям предлагается технология двунаправленной синхронизации между UML и программным кодом с минимальным кодированием вручную и строго типизированным объектно-ориентированным дизайном. C#Builder Architect и Delphi 8 Architect предоставляют доступ к функциональности .NET, одновременно избавляя разработчика от управления традиционно объемным кодом.

Что такое ECO

ЕCO Framework содержит набор компонентов .NET, позволяющих организовать процесс разработки, создавая непосредственно диаграмму классов, а затем автоматически трансформировать ее в традиционную модель данных «сущность—связь» в табличном виде. Эти компоненты подразделяются на несколько видов, например компоненты этапа разработки (в частности, Borland Together UML C#/Delphi synchronizer — генератор кода, обеспечивающий двустороннюю синхронизацию UML-модели и кода C#/Delphi), компоненты для связывания элементов модели и визуальных компонентов .NET-приложения и т.д. ECO широко применяют технологии Bold и Together, которые обеспечивают использование UML для первоначального дизайна, исполнения, последующего развития и сопровождения приложения.

Существует несколько основных идей, реализованных в ECO:

UML run-time — выполнение UML во время исполнения приложения, основанное на сохранении модели в базе данных, обеспечении связей и транслировании UML-объектов в классы .NET и объекты реляционной базы данных;

двусторонняя синхронизация между кодом приложения и UML-моделью, обеспечиваемая посредством встроенной технологии Together. Это означает, что при изменении модели изменяется сгенерированный код C# Builder/Delphi, а при ручном изменении атрибутов и классов изменяется модель, причем глубина отслеживания изменений достаточно велика. Например, при изменении названия класса в модели изменяются все типы соответствующих локальных переменных, которые были введены разработчиком вручную;

хранение метаданных модели в базе данных. Строя модель приложения, разработчик описывает связи между классами в соответствии с нотацией UML для диаграмм классов: отношения, ассоциации, зависимости и обобщения. Эти связи могут быть как простыми, так и сложными, описанными с использованием языка объектных ограничений OCL. При этом часть метаданных модели хранится в базе данных приложения, которая генерируется на основе самой модели. Это позволяет организовать легкую манипуляцию данными;

расширение возможностей .NET-объектов. .NET CLR не имеет таких же развитых средств нотации, как UML, поэтому NET-объекты — это не объекты UML. В свою очередь, UML-объекты не могут предоставить полную поддержку выполнения — алгоритмы и методы описываются другими языками программирования (не UML). UML-объекты в ECO обеспечивают поддержку выполнения посредством проецирования в объекты .NET, что в конечном счете придает мощь UML-объектам .NET. Зная это, можно понять, почему во время работы приложения выполняется модель, написанная на UML, — в действительности выполняются объекты .NET, реализующие конструкции UML. Таким образом, в любой момент можно из мира UML перейти в мир .NET простым использованием свойства AsObject любого компонента ECO. Зачем? UML, как универсальный язык, не несет в себе ничего платформенно-специфического, тогда как связывание UML-объекта с классом .NET привносит такую специфику.

Чтобы понять, как взаимодействуют все части ECO-приложения, обратимся к рис. 1.

 

Рис. 1. Структура ECO

Рис. 1. Структура ECO

Центром приложения является модель, которая, используя компоненты времени разработки, взаимодействует с C#Builder и Delphi 8 или на этапе выполнения приложения исполняется в .NET-приложении посредством содержащих ее классов .NET.

Следует рассмотреть еще два элемента ECO.

Eco Space. Именно Eco Space — отображение UML-модели в классы .NET — отвечает за наложение UML-объектов на классы .NET, а также за взаимодействие UML-модели с хранилищем данных. Класс Eco Space — базовый для набора классов, обеспечивающих работу приложения с данными; обработку выражений языка OCL, который используется для описания поведения сущностей модели, специализированные средства навигации по объектам; трансляцию OCL-выражений в выражения SQL и т.д. Для каждой модели ECO генерирует уникальный экземпляр класса Eco Space, который является наследником от CustomEcoSpace, базового класса описания модели в ECO (рис. 2).

 

Рис. 2. Модель наследования Eco Space

Рис. 2. Модель наследования Eco Space

Persistence. Persistence (рис. 3) — универсальное, прозрачное для разработчика хранилище данных. Универсальность Persistence заключается в том, что физически база данных может храниться в любой СУБД, доступной через ADO .NET или через Borland Data Providers (универсальное средство доступа из приложений C#Builder и Delphi к различным СУБД). Ничего страшного, если никакой СУБД вообще нет — не изменяя модели, бизнес-правил или логики, можно хранить данные в XML-документе без потери функциональности приложения.

 

Рис. 3. Схема взаимодействия Persistence с Eco Space-приложениями и системами хранения данных

Рис. 3. Схема взаимодействия Persistence с Eco Space-приложениями и системами хранения данных

С точки зрения .NET, ECO-приложение представляет собой многозвенное приложение (рис. 4).

 

Рис. 4. Структура ECО как многозвенного приложения

Рис. 4. Структура ECО как многозвенного приложения

Persistence — нижний слой хранения данных, Eco Space является слоем среднего уровня, компоненты связывания модели и элементов пользовательского интерфейса (ECO Handles) — слоем бизнес-логики, элементы пользовательского интерфейса являются слоем представления.

В начало В начало

Архитектура ECO и пространство имен

Вorland ECO содержится в шести сборках, занимающих пространство имен Borland.Eco (рис. 5).

 

Рис. 5. Схема пространства имен ECO

Рис. 5. Схема пространства имен ECO

Каждая сборка содержит часть классов ECO со следующей функциональностью:

• Borland.Eco.UmlRtm — доступ к UML-модели во время выполнения программы;

• Borland.Eco.ObjectRepresentation — доступ к объектам и значениям .NET, реализованным на основе UML-модели;

• Borland.Eco.Subscription — уведомление об изменении ECO-объектов или значений;

• Borland.Eco.Persistence — автоматическое сохранение объектов ECO в файле или в базе данных;

• Borland.Eco.Handles — предоставление компонентов, осуществляющих доступ в ObjectRepresentation во время исполнения, а также связь между объектами ECO и элементами пользовательского интерфейса;

• Borland.Eco.Services — проверка OCL-выражений и выполнение сервисных функций ECO, таких как копирование, откат, поддержка версии и т.д.

Кроме набора классов, в ECO входят мастера, предназначенные для упрощения процесса разработки приложений:

• ECO Application — создает новое приложение ECO, которое содержит Eco Space, пустую модель, главную форму приложения и форму, несущую в себе инициализацию классов, отвечающих за связь ECO-объектов с пользовательским интерфейсом;

• ECO enabled Windows Form — добавляет к проекту новую форму, поддерживающую ECO;

• Eco Space — добавляет Eco Space к существующему проекту;

• Eco UML Package — добавляет еще один UML-пакет к существующему проекту.

Инструмент моделирования — встроенная в среду разработки версия средства моделирования Borland Together, которая позволяет строить модели и просматривать структуру приложений в виде диаграмм классов.

В начало В начало

Процесс разработки приложения ECO

Технология ECO позволяет сократить время разработки приложений. За счет чего? При разработке программ традиционным способом, используя различные технологии проектирования и программирования, будь то экстремальное программирование, восходящее и нисходящее проектирование, разработчик вынужден значительную часть времени тратить на разработку взаимодействия с СУБД, проектирование и реализацию базы данных и т.д. ЕСО позволяет сократить или вообще исключить эти этапы из процесса проектирования и реализации. Как уже говорилось, Eco Space берет на себя функции взаимодействия с данными и организацию целостности данных. Разработчику остается смоделировать приложение, описать бизнес-правила и реализовать пользовательский интерфейс. На рис. 6 показано место применения ECO в процессе разработки.

 

     

Пример разработки приложения с использованием ECO

Использование ECO очень удачно вписывается в методологию функционально ориентированной разработки ПО (FDD) [1], а имеющиеся инструменты позволяют построить модель, определить бизнес-правила и создать пользовательский интерфейс.

Построение модели

Построение модели приложения происходит в редакторе моделей среды C#Builder или Delphi 8 путем оперирования понятиями класса, отношения и связей. В модели сразу, не приступая к кодированию, с помощью OCL-выражений можно внести часть бизнеc-правил, определяющих взаимоотношения между классами модели или поведение атрибутов классов. Здесь же происходит первый шаг к документированию разработки, заключающийся в том, что в модель можно вносить заметки и/или выносить части модели (для более компактного и понятного отображения) в отдельные диаграммы. Вид модели показан на рис. 1.

Рис. 1. Пример модели

Рис. 1. Пример модели

Создание хранилища

При создании хранилища нужно выбрать, где физически будут храниться данные, с помощью одного из трех компонентов: PersistenceMapperXml, PersistenceMapperBdp или PersistenceMapperSqlServer, а также присвоить значения соответствующим свойствам компонентов. Сделав это, надо указать для Eco Space-приложения источник данных и сгенерировать структуру базы данных, учитывая, что эта операция возможна только на одном из поддерживаемых серверов СУБД и что нельзя использовать в качестве хранилища XML-файл. Необходимо отметить, что разработчик в какой-то мере может воздействовать на структуру базы данных, изменяя соответствующие атрибуты модели. Например, можно изменить место хранения классов-наследников, в случае если у них нет новых атрибутов (рис. 2).

 

Рис. 2

Рис. 2

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

Бизнес-правила и пользовательский интерфейс

Если по каким-то причинам в модели невозможно описать все бизнес-правила, то их можно реализовать посредством C#Builder или Delphi .NET. В этом случае бизнес-логика может описываться как средствами UML, с помощью выражений OCL, так и средствами объектов .NET. Например, при отображении данных в DataGrid используются оба эти метода. Соответствующее OCL-выражение, дающее набор экземпляров класса, обрабатывается компонентом ExpressionHandle, который, в свою очередь, предоставляет интерфейс DataTable, применяемый классом DataGrid. Таким образом, реализация пользовательского интерфейса ничем не отличается от привычного процесса разработки.

1. Палмер С., Фелсинг Д. Практическое руководство по функционально-ориентированной разработке ПО. — Киев: Вильямс, 2002.

 

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

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

 

Рис. 6. Место ECO в процессе разработки приложений

Рис. 6. Место ECO в процессе разработки приложений

В связи с тем, что сегодня невозможно указать в качестве источника данных сервер приложений, пока остается открытым вопрос о применяемости ECO-приложений в системах с вынесенной бизнес-логикой на серверах приложений. Тем не менее с помощью ECO можно строить приложения, которые сами будут серверами приложений, поскольку ничто не мешает использовать ECO при разработке, например, Web-служб или приложений, реализующих такой механизм .NET, как remoting, позволяющий создавать распределенные приложения. ЕСО можно применять при разработке приложений Windows Forms и ASP .NET.

В начало В начало

Заключение

Сочетание передовых технологий моделирования и разработки выделяет технологию ECO из ряда способов разработки программного обеспечения. Особо надо отметить, что ECO укладывается в новую технологию Borland по управлению жизненным циклом приложений (Application Lifecycle Management, ALM) в нише средств моделирования и разработки, использующих RUP. Технология ECO предлагает подход к разработке информационных систем, при котором разработчик больше времени уделяет моделированию бизнес-логики и меньше — кодированию.

КомпьютерПресс 8'2004

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует