Моделирование данных с использованием модуля Rational Rose - Data ModelerР.В. Алфимов, Е.Б. Золотухина
Моделирование данных является важнейшим процессом при проектировании программного обеспечения (ПО). По этой причине, разработчики CASE-средств в своих продуктах вынуждены уделять моделированию данных повышенное внимание. Являясь признанным лидером в области объектных методологий, фирма Rational Software Corporation, тем не менее, до недавнего времени такого средства не имела. Основной причиной этого, по-видимому, является ориентация на язык Unified Modeling Language (UML), как универсальный инструмент моделирования. UML полностью покрывает потребности моделирования данных. Сложившаяся на протяжении десятилетий технология моделирования данных, традиции, система понятий и колоссальный опыт разработчиков не могли далее игнорироваться. Немаловажную роль здесь сыграла и необходимость формального контроля моделей данных, что является абсолютно необходимым при проектировании мало-мальски больших схем баз данных и что UML не обеспечивает в достаточной степени. И, наконец, последней причиной, побудившей специалистов Rational Software Corporation к созданию собственного средства моделирования данных, является требование построения эффективных физических моделей, прежде всего для конкретных СУБД - лидеров рынка. В начале 2000 года фирма Rational Software Corpоration анонсировала появление собственного средства моделирования данных - Data Modeler, и в настоящее время оно доступно специалистам, например, использующим в своей работе Rational Rose 2000e. Целью данной статьи является знакомство специалистов с основными возможностями этого нового средства и сравнение их с аналогичными функциями структурных CASE-средств. Сразу стоит отметить, что модуль Data Modeler произвел на нас положительное впечатление. Авторы Data Modeler прежде всего ориентировались на создание инструмента проектирования физической модели данных. При этом не произошло отказа от UML как от средства моделирования данных, а некоторым образом были смещены акценты: теперь UML предполагается использовать для построения логической модели. По сути, логическая модель - это та же объектная модель, состоящая из объектов - сущностей. Переход от логической модели к физической и наоборот в части моделирования данных обеспечивается Rational Rose автоматически. Для этого введено соответствие элементов моделей.
Заметим, что для специфических элементов физической модели - триггеров и индексов - не нашлось достойного аналога UML, но в общем-то это не проблема. Таким образом, концептуально модуль Data Modeler не является заменой UML в некотором его подмножестве (как же можно покуситься на святое!), а всего лишь дает приверженцам объектных технологий мощное средство эффективного построения физических схем БД. С этой точки зрения он нас и будет в дальнейшем интересовать. При создании нового модуля специалисты Rational Software Corporation пошли по традиционной схеме расширения функциональных возможностей Rational Rose, а именно, создали подключаемый компонент (AddIns). После установки Rational Rose в специальной редакции (Rational Rose Professional Data Modeler Edition) в разделе главного меню Tools появляется новый раздел Data Modeler. В разделе Data Modeler имеются два пункта: "Add Schema" и "Reverse Engeneer…". Пункт "Add Schema" используется для создания новых схем БД, а пункт "Reverse Engeneer" - для построения модели на основе существующей схемы БД. Для того чтобы познакомиться с возможностями Data Modeler, мы воспользовались пунктом "Reverse Engeneer" и импортировали в Rational Rose реальную схему БД (180 таблиц в Oracle 8). Эта схема БД была создана с использованием CASE-средства ERWin. При ее проектировании применялось большинство основных приемов, используемых при моделировании данных в структурных CASE-средствах. Утилита импорта схемы БД организована удобно в виде мастера (Wizard). Для импорта нам потребовалось всего лишь указать данные для соединения с БД, все остальное система сделала за нас автоматически. В разделе "Logical View" дерева проекта образовался пункт "Schemas" со схемой "Poskeeper" и набором таблиц. В контекстном меню схемы имеется возможность создать новую для Rational Rose диаграмму - Data Model. Для демонстрации основных приемов работы Data Modeler мы создали такую диаграмму и перенесли в нее несколько таблиц, в результате получили следующее. То, что получилось, очень напоминает представление схемы в традиционном CASE-средстве. Однако, существенно, что были импортированы триггеры и индексы (они попали в поле, где обычно при визуальном представлении класса показываются операции). Диаграмма Data Model предоставляет следующие возможности:
Основные возможности по работе с таблицей доступны, если войти в контекстном меню в пункт "Open Specification". Появляющееся на экране окно включает следующую информацию. При редактировании спецификации таблицы обеспечиваются следующие возможности.
Содержащиеся в спецификации возможности, на наш взгляд, представляют практически полный набор действий с таблицей, необходимых для построения физической модели. В нашей импортированной модели мы ограничились лишь добавлением первичных ключей. После чего первичные ключи на экране отобразились красным флажком "PK". В любой схеме БД важнейшую роль играют связи между таблицами. Мы внесли на диаграмму Data Model недостающие связи. При этом у нас получилось следующее. Между таблицами CURRENCY и HOLIDAYS существует идентифицирующая связь. Обратите внимание, что на картинке для ее представления использована нотация UML для ассоциации типа "композиция"), между таблицами CURRENCY и CURRACCDEFAULT - не идентифицирующая, а для таблицы DICTIONARY определена рекурсивная связь. Концы связей помечены кардинальностью (1, 0..*), а также именем роли. В соответствующих таблицах образовались внешние ключи (поля, помеченные красным флажком "FK"). Там, где внешний ключ вошел в состав первичного ключа (идентифицирующая связь), поле помечено двумя флажками "PK", "FK". Для редактирования свойств связи требуется войти в пункт контекстного меню "Open specification". При редактировании спецификации связи обеспечиваются следующие возможности.
Приведенные в табл. 3 возможности вполне покрывают потребности моделирования данных, связанные с определением связи. Последний вопрос, который нас интересовал, - согласование объектной модели и модели данных. Для проверки данного свойства мы изменили название одного из атрибутов класса. Увы, это изменение не отразилось в модели данных. Вполне возможно, что такое решение принято сознательно (в силу определенных алгоритмических сложностей), но на наш взгляд наличие функции автоматического согласования было бы не лишним. Однако способ согласования моделей все-таки существует. После того как мы внесли изменение в модель данных и выполнили повторную генерацию объектной модели, изменения, внесенные в таблицы, отразились в соответствующих объектах.
|