Bold - инструмент реализации MDA в Delphi. Часть 4. Создание моделиИсточник: КомпьютерПресс, №6'2003 Константин Грибачев
Оглавление
Rational Rose как средство разработки моделей приложений для Borland MDAВ предыдущей части были рассмотрены основные функции модели приложения в Borland MDA, а также кратко описаны элементы диаграммы классов UML. Настоящая статья посвящена практической разработке модели MDA-приложения в графических UML-редакторах на примере CASE-системы Rational Rose. Следует отметить, что после включения в версию 4 Bold for Delphi полной поддержки функций импорта и экспорта модели в формате XMI (XML Metadata Interchange - язык обмена метаданными XML) появилась возможность разрабатывать модели приложений для Borland MDA в любом UML-редакторе, поддерживающем этот формат (например, в PowerBuilder компании Sybase). Кроме того, в состав Delphi 7 Studio входит инструмент ModelMaker, в который также включены развитые средства UML-моделирования и некоторые средства интеграции с Bold. Тем не менее с большой долей вероятности можно утверждать, что на данный момент именно Rational Rose остается наиболее удобным средством разработки UML-моделей для Borland MDA. Дело в том, что в качестве инструмента создания модели для Bold CASE-система Rational Rose занимает особое место среди других программных средств, обладающих графическим UML-редактором. Взаимодействие с Rational Rose заложено в Borland MDA начиная с ранних версий продукта Bold for Delphi, причем сделано это довольно основательно. Такое взаимодействие реализуется посредством технологии COM (Component Object Model - модель компонентных объектов). Подробное описание COM приводится во многих источниках, например в [1]. С позиции COM Rational Rose является сервером автоматизации, выполняющим запросы клиента (контроллера) - среды разработки Borland MDA. Благодаря такому тесному механизму взаимодействия обеспечиваются следующие полезные функциональные возможности:
Перечисленные функции позволяют на практике объединить удобные выразительные средства графического интерфейса Rational Rose с возможностью реализации тонкой настройки модели приложения в среде Borland MDA. Настройка Rational RoseПеред созданием модели в редакторе Rational Rose необходимо обеспечить его предварительную настройку для работы с Borland MDA. Для начала следует убедиться в наличии Bold for Delphi в составе активных расширений (Add-In) Rational Rose. Для этого посредством меню Add-Ins->Add-In Manager… нужно вызвать окно менеджера расширений (рис. 1) и, при необходимости, активизировать пункт Bold for Delphi. Рис. 1 Для настройки под конкретную версию Bold for Delphi используется так называемый файл свойств (Properties Files), именуемый BfD.pty, который создается при инсталляции Bold for Delphi в папке <…\Program Files\Boldsoft\BfDR40D7Arch\Rose\>. Для его использования необходимо выбрать в Rational Rose пункты меню Tools->Model Properties->Update…, а затем - вышеуказанный файл. После этого необходимо перейти в окно настроек модели (Tools->Model Properties->Edit), выбрать закладку Bold, далее выбрать из ниспадающего списка параметр Project и установить его свойство (самое нижнее в списке параметров) с названием PTYVersion равным новому значению (на рис. 2 номер версии модели 6.4 соответствует последнему обновлению продукта). Рис. 2 На этом этап настройки Rational Rose закончен. При каждом обновлении версии Bold for Delphi эту настройку следует повторять. Создание модели в Rational Rose1 и ее импорт в Borland MDAВо второй части этой статьи2 было продемонстрировано создание модели приложения средствами встроенного в Bold текстового UML-редактора. На примере аналогичной модели посмотрим, как данная процедура реализуется с помощью UML-редактора Rational Rose. Для этого создадим простую диаграмму классов, состоящую из двух классов и одной ассоциации. Сохраним созданную модель в файле, например в lib.mdl (рис. 3). Рис. 3 Далее перейдем в среду Delphi и создадим простой проект, состоящий из одной формы. С закладки <BoldHandles> поместим на форму компоненты BoldModel1, BoldSystemHandle1, BoldSystemTypeInfoHandle1 и настроим их аналогично рассмотренному ранее простому приложению. С закладки <BoldMisc> поместим на форму компонент BoldUMLRoseLink (он предназначен для связи с моделью RationalRose) и установим в его свойстве FileName имя файла сохраненной нами модели - lib.mdl. Теперь все готово для импорта модели Rational Rose в среду Borland MDA. Для этого, кликнув дважды по компоненту BoldModel1, откроем встроенный UML-редактор Bold и запустим импорт, нажав на вторую справа иконку со стрелкой в панели инструментов (рис. 4). Рис. 4 После запроса о подтверждении будет произведен импорт в среду Borland MDA. Корректность импортированной модели можно проверить, задав из главного меню Tools->Consistency Check. Теперь самое время проиллюстрировать преимущества, которые дает взаимодействие Rational Rose и Borland MDA. На рис. 4 в дереве объектов выделены рамками два объекта: ассоциация и класс с названием writesbyAuthor, при этом класс был создан автоматически. Когда в предыдущем примере мы генерировали модель приложения в Bold-редакторе, мы были вынуждены создавать такой класс для нашей ассоциации «вручную». Теперь же можно убедиться, что взаимодействие Borland MDA и Rational Rose настолько интеллектуально, что не ограничивается собственно передачей информации об элементах модели (классах, атрибутах, ассоциациях). В нашем случае при импорте был автоматически добавлен указанный новый класс. Это объясняется тем, что оба конца нашей ассоциации имеют кратность ролей «1..n» (см. ниже). Если заменить в модели кратность хотя бы одной роли на «1» и снова произвести импорт, то можно легко убедиться, что промежуточный класс исчезнет. Таким образом, Borland MDA, как уже говорилось, в ряде случаев способен самостоятельно добавлять в модель необходимые элементы. Подобная операция носит название «болдификация модели» - boldification, а обратная ей - unboldification. При необходимости в Bold-редакторе можно увидеть как болдифицированную, так и исходную модель - для этого достаточно задать в меню Tools->Boldify Model или Tools->Unboldify Model соответственно. Чтобы понять, для чего нужна болдификация модели, вспомним, что объекты модели Borland MDA сохраняет в реляционных базах данных, где существуют определенные ограничения - в нашем случае два класса объединены отношением «многие-ко-многим», поэтому для сохранения объектов этих классов в реляционных СУБД необходимо наличие дополнительной связующей таблицы. И если представить модель, содержащую десятки и сотни классов, то станет понятно, что неоспоримым преимуществом использования программного взаимодействия Borland MDA и Rational Rose является то, что все подобные связующие таблицы (точнее, классы для ассоциаций), присутствующие в отношениях «многие-ко-многим», будут сгенерированы автоматически и при создании модели об этом заботиться не нужно. То есть при импорте автоматически производится болдификация модели. Отметим, что принудительно болдифицировать модель можно и из встроенного текстового UML-редактора. В этом легко убедиться, если произвести в нем следующие действия:
В результате удаленный нами дополнительный класс ассоциации writesbyAuthor создастся вновь и модель снова станет корректной. Настройка тэг-параметров модели в Rational RoseВернемся в Rational Rose и несколько видоизменим нашу модель, а именно - будем использовать русскоязычные названия классов, атрибутов и ролей (рис. 5). Рис. 5 Сохраним диаграмму классов в файле, например в librus.mdl. Теперь приступим к настройке модели. Для этого воспользуемся некоторыми тэг-параметрами модели, доступ к которым обеспечивается непосредственно из редактора Rational Rose. Кликнем дважды по классу «Автор», перейдем на закладку Bold и модифицируем следующие тэг-параметры (рис. 6): Рис. 6
По умолчанию три вышеуказанных тэг-параметра имели вид T<Name>, <Name>, <Name> соответственно, что означает подстановку вместо <Name> имени класса модели. При этом в нашем случае генерировались бы русскоязычные идентификаторы, что, например, для идентификатора класса в Delphi является недопустимым. Для решения проблемы автоматического преобразования имен модели из национальных кодировок в составе Bold имеются специальные средства, активизация которых управляется тэг-параметром проекта NationalCharConversion (рис. 2). Однако для их задействования в общем случае придется перекомпилировать исходные тексты Bold. Возможны и другие способы решения этой проблемы, например средствами Rational Rose - путем написания специального скрипта на языке BasicScript3. Естественно, в диаграмме классов можно также использовать только англоязычные имена, тогда редактирование вышеописанных тэг-параметров не потребуется. Аналогично настроим тэг-параметры в спецификации класса «Книга» и присвоим им следующие значения:
Теперь перейдем к настройке ассоциации. Вызовем ее спецификацию, перейдем на закладку BoldA и изменим значение тэг-параметров следующим образом (рис. 7): Рис. 7
Аналогично изменим значения тэг-параметров и для второй роли нашей ассоциации (рис. 8). Кроме того, в спецификации ассоциации перейдем на закладку Bold и изменим тэг-параметр LinkClassName на значение LinkNapisalNapisana для обозначения имени класса ассоциации. Рис. 8 Теперь сохраним модель, вернемся в наше приложение Delphi, изменим свойство FileName компонента BoldUMLRoseLink1 на имя файла новой модели librus.mdl и произведем импорт. После этого проверим корректность модели (меню Tools->Consistency Check) и убедимся (рис. 9), что среда Borland MDA восприняла все сделанные изменения. При этом названия всех классов и атрибутов остались русскоязычными, хотя на панели дополнительных параметров (она может быть вызвана в Bold-редакторе по нажатии Ctrl+A) мы увидим измененные нами значения. Рис. 9 Если повторить дальше действия по созданию простого приложения, описанные во второй части данной статьи, то можно легко увидеть, что в заголовках столбцов таблиц, а также на автоформах все обозначения станут русскоязычными, поскольку они берутся из названий классов, атрибутов и ролей модели приложения. Настройка тэг-параметров модели во встроенном UML-редактореДля настройки тэг-параметров модели во встроенном редакторе Borland MDA следует выделить в дереве модели необходимый элемент (класс, атрибут, ассоциацию, роль) и выбрать в меню <Tools->Edit tagged values> (или просто нажать комбинацию клавиш <Ctrl+T>). При этом появится окно редактора параметров, на закладке <Bold> которого представлены все тэг-параметры, относящиеся к выбранному элементу модели (рис. 10). Для редактирования конкретного параметра необходимо выделить его в списке параметров и ввести новое значение в правом окне тэг-редактора. Кроме того, в тэг-редакторе можно удалять тэг-параметры или добавлять новые (пользовательские) параметры. Значения тэг-параметров доступны как во время проектирования приложения, так и программно, во время его выполнения. Рис. 10 Как уже говорилось, наборы тэг-параметров привязаны к уровням иерархической структуры модели и для каждого уровня этой структуры имеется собственный набор таких параметров. В табл. 1 приведено краткое описание функционального назначения некоторых из них. Ряд параметров (DelphiName, ExpressionName и т.д.) был описан выше и в таблице не приводится. Таблица 1. Состав основных тэг-параметров и их назначение
Ряд тэг-параметров предназначен для настройки самого верхнего уровня иерархии - уровня модели. Некоторые из них представлены в табл. 2. Таблица 2. Состав основных тэг-параметров модели
Экспорт модели из встроенного редактора в Rational RoseПосле настройки модели во встроенном редакторе есть возможность экспортировать ее в Rational Rose. Для этого, как и при импорте, необходимо настроить компонент BoldUMLRoseLink на имя файла модели и экспортировать модель путем нажатия на крайнюю левую кнопку со стрелкой на панели инструментов (рис. 4) или задать в меню <File->Export via Link>. В результате при необходимости произойдет автоматический запуск приложения Rational Rose. Заметим, что Bold может сохранять и загружать информацию о модели не только в файлах формата Rational Rose (*.mdl), но и в собственном формате (*.bld), в формате XMI, а также в формате ModelMaker (*.mpb). Для использования этих возможностей необходимо из меню встроенного редактора задать File->Open File или File->Save File as… РезюмеВ данной статье мы ознакомились с основами создания модели приложения в графическом UML-редакторе Rational Rose. Вполне очевидно, что при создании больших моделей графическое представление, безусловно, будет более наглядным по сравнению с текстовым описанием. Кроме того, как мы убедились, при импорте модели автоматически происходит ее болдификация, что также позволяет не задумываться при проектировании о второстепенных элементах. И наконец, простота доступа к тэг-параметрам Borland MDA из Rational Rose обеспечивает необходимую гибкость при настройках модели приложения. Эти преимущества позволяют предположить, что в следующих версиях в состав Borland MDA войдут собственные графические средства для создания моделей приложений. А мы будем двигаться дальше, и в следующей части статьи перейдем к рассмотрению основного уровня функционирования Borland MDA - объектного пространства. Литература:
|