Пакет Sybase PowerDesigner. Объектно-реляционное моделирование.Николай Птицын, МГТУ им. Н. Э. Баумана, каф. ИУ5
Вступление Современные CASE-средства являются неотъемлемой частью инструментария разработчика информационной системы. Помимо специализированных CASE-пакетов, решающих задачи на определенной фазе проекта, на рынке появились, так называемые интегрированные комплексы программного обеспечения, позволяющие автоматизировать весь цикл жизни проекта от исследования предметной области до внедрения и поддержки информационной системы. В литературе выделяют следующие средства интегрированных CASE-пакетов:
Американская компания Sybase, наряду с Oracle, Rational Software и рядом других, предлагает интегрированные инструменты, решающие перечисленные задачи. Продукт Sybase PowerDesigner является средством моделирования, проектирования, документирования и управления проектом. Пакет Enterprise Application Studio (включает Application Server , PowerBuilder и PowerJ ) дополнят PowerDesigner и содержит RAD-инструменты для разработки распределенных клиент-серверных приложений. Разумеется, PowerDesigner успешно взаимодействует с СУБД и средствами разработки приложений других производителей. В этом обзоре мы рассмотрим объектно-реляционную методологию, реализованную в CASE-пакете Sybase PowerDesigner. Более подробно остановимся на модели "сущность-связь", так как, по мнению автора, компонент проектирования баз данных в PowerBuilder заслуживает особого внимания и может быть использован независимо от всего остального (не менее успешно, чем ERwin - популярный продукт Computer Associates ). Объектно-реляционная парадигма Реляционная модель данных изначально проектировалась для эффективной обработки запросов и транзакций, манипулирующих записями и полями. Модель получила широчайшее распространение среди производителей программного обеспечения. Был стандартизирован язык запросов к реляционной базе данных (SQL). Реляционная СУБД с поддержкой языка SQL обеспечила практически универсальное решение для хранения и обработки динамических данных. Однако с развитием объектно-ориентированного подхода (ООП) в разработке клиент-серверных приложений проявились трудности, связанные с интеграцией объектной и реляционной моделей. Наиболее актуальной задачей является сохранение объекта (serialization) из кучи оперативной памяти (heap), доступной приложению, в базу данных с последующим восстановлением (deserialization). Объекты, которые должны "запоминаться", будем называть постоянными (persistent). Примерами из финансовой области могут быть объекты Банковский Счет , Держатель Счета. С одной стороны эти объекты создаются и обрабатываются в приложение на рабочем месте оператора, а с другой стороны, они должны надежно храниться в распределенной БД банковской системы. Одновременно с хранением объектов желательно обеспечить выполнение запросов на выборку на основе заданного условия (значения атрибута), а так же другие манипуляции с объектами - обновление и удаление. То есть речь идет о переходе от уровня работы с записями на уровень работы с объектами . Одним из решений этой задачи является адаптация реляционной СУБД к объектной модели. (Альтернативным подходом является полный переход на объектно-ориентированную СУБД.) Рассмотрим механизм преобразования, который, мог бы обеспечить хранение объектов в реляционной таблице и, следовательно, работу с атрибутами объекта как с полями записи рис. 1 Преобразование ООМ в РМ Сопоставим каждому классу ООМ реляционное отношение (таблицу) следующего вида:
Возвращаясь к примеру из банковской сфере, поясним это преобразование. Пусть имеется абстрактный класс Базовый счет ( General Account ), который наследуется двумя другими: Карточный Счет ( Card Account ) и Сберегательный Счет ( Saving Account ). Класс Держатель ( Holder ) связан отношением Держатель счета ( Account Holder ) со структурой Базовый счет (и следовательно с двумя дочерними классами), а так же со структурой Адрес ( Address ) отношением Адрес Держателя ( Holder Address ) типа 1:М. На рис. 2 представлена диаграмма классов и связей между ними в нотации UML. рис. 2 Диаграмма классов Держатель и Счета Здесь в свойствах связи Держатель Счета ( Account Holder ) и Адрес Держателя ( Holder Address ) был определен класс Holder как контейнер для классов Account и Address . В результате в атрибутах Holder появились массивы ссылок accounts и addresses . Скелет класса, который выдает кодогенератор на основе модели UML имеет следующие вид (рис. 3). рис. 3 Генерируемый код класса Holder на языке Java С учетом того, что все классы объектов должны "запоминаться" в базе данных, преобразуем эту ООМ в реляционную модель физического уровня. Как видно на рис. 4 ассоциативные (association/composition, в терминологии RUP - aggregation) и наследственные (generalization) связи ООМ заменяются на реляционные отношения между таблицами, устанавливаемые с помощью внешних ключей (<fk>). рис. 4 Диаграмма "сущность связь" Держатель и Счета Таким образом, интеграция двух моделей с помощью рассмотренного механизма приводит к возникновению понятия объектно-реляционной модели (ОРМ) . Отметим, что в таком понимании объектно-реляционная СУБД существенно отличается от объектно-ориентированной СУБД . Первая представляет собой традиционную реляционную СУБД дополненной схемой преобразования классов в таблицы (mapping layer). Это позволяет сохранять данные объектно-ориентрованного приложения в "обычной" базе данных. Более серьезное разногласие объектно-ориентированного и реляционного подходов заключается в концепции хранения данных и программирования. Так, в ООМ используется процедурный язык программирования, ориентированный на работу со скалярными значениями, в то время как SQL представляет собой декларативный язык запросов и предназначен для работы со множествами. Эта явление принято называть потерей соответствия (impedance mismatch). В индустрии распространенны два подхода к реализации ОРМ:
Подход имеет преимущества - исключается "промежуточное" программное обеспечение, выполняющие преобразования, что повышает быстродействие и гибкость приложения. Структура базы данных контролируется разработчиком, поэтому может быть адаптирована для решения каких-либо задач (например, для организации SQL-взаимодействия с другими СУБД). Именно такой вариант объектно-реляционного проектирования мы рассмотрим подробнее в пакете Sybase PowerDesigner. Следующая схема иллюстрирует процесс проектирования приложения с использованием CASE-средств, обеспечивающих автоматизацию перехода от одной модели к другой, а так же генерацию программного кода из моделей физического уровня. рис. 5 Уровни проектирования объектно-реляционного ПО На схеме выделены 4 уровня приложения, на которых ведутся его разработка и тестирование:
Архитектура PowerDesigner Как уже было отмечено во вступлении, PowerDesigner относится к классу интегрированных CASЕ-пакетов и может применяться на этапах от концептуального проектирования до генерации программного кода. Основное назначение PowerDesigner состоит в объектно-реляционном моделировании информационной системы. Пользователями пакета могут быть различные участники проекта - системные аналитики, бизнес-аналитики, администраторы БД, разработчики приложения, менеджеры проекта и др. Пакет PowerDesigner содержит набор тесно интегрированных модулей, обеспечивающих работу с различными моделями:
включающая диаграммы классов, сценариев и прецедентов; Таким образом, в продукте объединены средства ООМ с традиционной двухуровневой схемой проектирования БД. Все три компоненты встроены в одно приложение и взаимодействуют с пользователем через единый интерфейс (common shell). Дополнительными компонентами PowerDesigner являются:
Благодаря модульной архитектуре PowerDesigner (рис. 6) могут быть выбраны различные комплектации продукта [5]. рис. 6 Архитектура PowerDesigner
Методология проектирования В PowerDesigner реализованы концепции итерационного и структурного проектирования информационной системы:
рис. 7 Средства итерационного проектирования для PDM
На рис. 8 представлена схема возможных преобразований моделей и генерации программного кода. Последовательность проектирования и разработки проекта описана ниже в таблице. Номера операций соответствуют числам в кружочке на схеме. рис. 8 Схема возможных преобразований моделей
Модель данных PowerDesigner В пакете используется двухуровневая модель данных:
Как уже было отмечено выше, двухуровневая модель данных с возможностью прямого и обратного инжиниринга, а так же слияния моделей (merge) позволяет вести итерационную разработку структуры данных. К примеру, системный аналитик формирует концептуальную модель (CDM), которая преобразуется в физическую (PDM). Последняя дорабатывается программистом, отлаживается на СУБД. Затем проводится обратный инжиниринг для обновления CDM. Системный аналитик продолжает доработку модели на следующей итерации… Основы проектирования реляционной БД достаточно хорошо описаны в литературе (например, в учебном курсе С. Д. Кузнецева [3]), поэтому в этом обзоре дополним несколько слов о наследовании. Наследование Вообще говоря, схема реляционных отношений не является иерархической структурой, и понятие наследование вводится только на концептуальном уровне для удобства проектирования. При переходе на физический уровень базовые и дочерние сущности преобразуются тем или иным образом во множество таблиц одного уровня и связей между ними. Нотация IE поддерживает только одинарное наследование (то есть одна базовая сущность-родитель передает атрибуты дочерним сущностям), в то время как IDEF1X допускает так же и множественное наследование (то есть когда дочерняя сущность наследует атрибуты нескольких родителей). PowerDesigner поддерживает одинарное наследование двух типов:
рис. 9 Обычное наследование (а-CDM, б-PDM) рис. 10 Исключающие наследование (а-CDM, б-PDM) Физическая реализация этих двух типов наследования может выглядеть по-разному (несколько таблиц, связанных отношением "один-к-одному" или одна таблица, содержащая атрибуты базовой и дочерней сущностей). Настройка параметров наследования в PowerDesigner производится на концептуальном уровне (рис. 11). рис. 11 Диалог настройки наследования Заключение Завершая обзор, отметим сильные и слабые стороны объектно-реляционной модели. Рассмотренный подход наследует все преимущества реляционной модели, дополняя их совместимостью с приложениями объектно-ориентированной архитектуры:
Среди недостатков модели можно выделить следующие:
(В частности, невозможно использовать объектно-ориентированный язык запросов). Впрочем, перечисленные недостатки часто не актуальны для реальных приложений. |