BOLD - инструмент реализации MDA в Delphi


Роль модели в Bold


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

• определяет состав и тип классов и атрибутов классов;

• фиксирует наличие связей между классами, определяет тип этих связей и их размерность;

• определяет условия и ограничения, накладываемые на классы и их атрибуты; такие условия формируются на диалекте языка OCL, встроенного в Bold;

• содержит информацию для адаптации к среде разработки Delphi в виде набора специальных тэг-параметров;

• содержит информацию для адаптации к СУБД — также в виде набора специальных тэг-параметров.

В Bold, таким образом, отсутствует четкое разделение между PIM (Platform Independent Model)- и PSM (Platform Specific Model)-моделями MDA (см. первую часть статьи), а вся необходимая информация содержится в одной общей модели. Функции PSM-модели в основном выполняет набор тэг-параметров (tagged values), которые будут описаны ниже. Кроме того, такие функции могут выполнять и некоторые компоненты Bold, являющиеся адаптерами СУБД (вопросам взаимодействия Borland MDA и СУБД будет посвящена отдельная часть данной статьи).

Bold использует модель для реализации следующих основных функций:

1. Генерация кода. Под генерацией кода понимается автоматическое создание модулей описаний (*.inc-файлов) и функциональных модулей (*.pas-файлов) на языке Object Pascal, содержащих полную реализацию классов модели приложения. Строго говоря, сам по себе Bold не нуждается в генерации кода. Как мы уже видели на примере простого приложения и увидим в дальнейшем, можно создавать достаточно серьезные приложения, вообще не используя генерацию кода. Однако в некоторых случаях она бывает необходимой. Общая стратегия здесь выглядит примерно так: если поддерживаемых Bold возможностей языка OCL недостаточно для реализации, например, желаемых методов или вычисляемых атрибутов на бизнес-уровне, то разработчик вправе опуститься на уровень программного кода. Кроме того, генерация кода необходима, если классы модели содержат операции. Генерацию кода можно произвести из встроенного редактора модели (Model Editor) на этапе разработки приложения. Кроме генерации кода, Bold обеспечивает и возможность генерации интерфейсов, необходимых для функционирования распределенных DCOM-приложений.

2. Генерация схемы базы данных. Структура базы данных (то есть набор описаний таблиц, полей, индексов и ключей) может быть сгенерирована автоматически как из встроенного редактора модели на этапе разработки, так и программно во время выполнения приложения. Bold также поддерживает синхронизацию структуры базы данных с изменяющейся во времени моделью приложения (Model Evolution — эволюция модели), при этом сохраняется уже имеющаяся в БД информация. Такая возможность в Bold носит специальное название — эволюция базы данных (DataBase Evolution). В дальнейшем эти вопросы мы рассмотрим подробнее. Необходимо иметь в виду, что между составом классов модели и составом таблиц генерируемой базы данных нет взаимно-однозначного соответствия. Во-первых, Bold использует ряд таблиц БД для собственных нужд и создает их автоматически. Во-вторых, не все классы модели требуют сохранения информации объектов в БД (persistent class), а могут быть транзиентными (transient) классами, кроме того, даже в persistent-классах модели часто присутствуют вычисляемые (derived) атрибуты, которые не сохраняются в базе данных. И в-третьих, в ряде случаев принципиально невозможно в реляционной БД реализовать некоторые виды отношений (см. следующий раздел).

3. Интерпретация модели во время выполнения для управления поведением приложения. Вся информация о модели сохраняется в компоненте TBoldModel и на этапе выполнения приложения используется для управления объектным пространством, для контроля его целостности, а также для управления взаимодействием бизнес-уровня с уровнем данных и графическим интерфейсом. Объектное пространство (Object Spase) в Borland MDA является экземпляром модели по аналогии с тем, как объект является экземпляром класса в ООП. Управление каждым объектным пространством обеспечивается компонентом TBoldSystemHandle. Информацию о типах этот компонент получает из компонента TBoldSystemTypeInfoHandle.

В основе создания модели приложения лежит унифицированный язык моделирования (UML), а более конкретно — диаграмма классов. Понимание основ создания диаграммы классов является необходимым условием практического применения MDA. Для полного понимания диаграмм классов необходимо знание UML, систематическое описание которого выходит за рамки данной публикации, однако, с учетом того обстоятельства, что для понимания основ работы с Bold вполне достаточно начальных сведений о диаграмме классов, ниже очень кратко описаны базовые элементы и правила, на основе которых можно будет в дальнейшем формировать модели приложений.

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



- Начало -  - Назад -  - Вперед -