ОПЫТ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ
А.Ф. Кеменов, Т.Н. Кошелева
В настоящее время большое влияние на проектирование информационных систем оказывает концепция MDA (Model driven architecture, дословно: архитектура, управляемая моделью). Суть этой концепции - подход к спецификации информационных систем (ИС), который отделяет спецификацию функциональности ИС от реализации этой функциональности на определенной технологической платформе [1]. Независимая спецификация составляет основу PIM (Platform independent model - модели, независимой от платформы). На последующих этапах разработки PIM трансформируется в PSM (Platform specific model - модель, специфическую для целевой платформы). Далее на основе PSM формируется реализация ИС для целевой платформы.
Для описания PIM и PSM консорциум OMG (Object management group), развивающий концепцию MDA, предлагает использовать язык UML (Unified modelling language - унифицированный язык моделирования [2]). Язык UML хорошо подходит для моделирования программных средств, поскольку поддерживает объектно-ориентированный подход - ведущую парадигму разработки программного обеспечения. Однако при описании предметной области для построения баз данных (БД) язык UML - не самый лучший вариант: его графическая нотация громоздка и невыразительна.
На наш взгляд, для объектно-ориентированного описания предметной области больше подходит онтологическое моделирование, которое состоит в описании иерархии классов предметной области и связей между ним (в этом плане онтологическая модель весьма близка к диаграмме классов UML). Наиболее популярным средством онтологического моделиро-
Рис. 1. Редактор онтологий Protégé с .загруженной моделью PIM
вания является свободно распространяемый редактор онтологий Protégé [3] разработки Стенфордского университета (http://protege.stanford.edu/index.html, текущая версия 3.1).
Общий вид Protégé с загруженной моделью PIM представлен на рисунке 1. При моделировании классов слева располагается дерево классов, а справа -панель описания слотов текущего класса. Классы верхнего уровня иерархии наследуются от абстрактного базового класса THING, от которого наследуют также служебные классы Protégé.
Понятие «слот» объединяет в себе атрибуты и связи классов. Перечень допустимых типов атрибутов ограничивается строковыми (String), числовыми (Integer, Float), логическими (Boolean), перечислениями (Symbol) и произвольными (Any). Связи характеризуются слотами с типами Instance (экземпляр) и Class. Двухсторонние связи характеризуются также инверсными слотами. Кроме того, слоты могут характеризоваться признаком кардинальности (Cardinality), отражающим их множественный характер (multiple) и обязательность (required). При создании класса, унаследованного от уже существующего, унаследованные слоты маркируются прямоугольником в скобках (например, слот «регистрационный номер» на рисунке 1).
Однако Protégé позволяет описывать не только классы, но и их экземпляры (объекты), что позволяет тут же проверять проектные решения и при необходимости исправлять их.
В соответствии с концепцией MDA следующий шаг в проектировании БД - трансформация подготовленной с помощью Protégé онтологической модели (PIM) в модель PSM, удобную для формирования схемы реляционной БД. Инструментальные средства для такой трансформации отсутствуют, поэтому авторами изготовлена несложная утилита, позволяющая вручную перенести онтологическую модель в модель PSM, для хранения которой используется целевая БД.
Совокупность таблиц БД для хранения модели показана на рисунке 2. Назначение таблиц соответствует их названию: в таблице CLASSES хранятся описание классов, в таблицах ATRDEF и LINKDEF - описание их атрибутов и связей. Значками <pk> и <fk> на схеме маркированы поля таблиц, являющиеся первичными или вторичными ключами, а стрелками обозначены ссылки между таблицами (от вторичного ключа к первичному). Поля name и code, присутствующие в каждой таблице, позволяют одновременно хранить как полные наименования элементов модели, так и специальные, формируемые с учетом
ограничений целевой платформы. В поле inherits таблицы CLASSES помещается код наследуемого класса.
На основании модели PSM вышеупомянутой утилитой генерируются скрипты DDL (Data definition language - язык определения данных) для создания структур хранения объектов. Для отображения объектной структуры на реляционную избрана схе-мозависимая стратегия [4], при которой каждый класс (или иерархия классов) объектов отображаются в отдельную таблицу БД, атрибуты отображаются в поля таблицы, связи между классами типа «один-к-одному» и «один-ко-многим» реализуются соответствующими ссылками между таблицами, а для связей «многие-ко-многим» создаются специальные связующие таблицы. Схемозависимая стратегия позволяет сформировать схему БД, для которой легко настраивается библиотека объектно-реляционного отображения Hibernate.
После создания структур для хранения данных модель PSM может использоваться в качестве классификатора хранящихся в БД объектов, что облегчает эксплуатацию и сопровождение БД. Подобный классификатор может использоваться и как связующее звено, объединяющее схемозависимый и схемо-независимый фрагменты БД (в частности, схемоне-зависимый фрагмент может быть построен по схеме Тенцера [5]).
Заключительный этап проектирования БД - настройка объектно-ориентированного доступа к данным. Для этого авторами использована библиотека объектно-реляционного отображения Hibernate (http://www.hibernate.org, текущая версия 3.1).
В основе долгосрочного реляционного хранения объектов, поддержку которого обеспечивает Hibernate, лежит декларативное описание отображения между классами JavaBean и таблицами БД (файлы маппинга). На основе такого отображения Hibernate может создавать объекты Java, которые предоставляют объектный интерфейс к БД [6]. Среди СУБД, поддерживаемых Hibernate, присутствуют все основные БД.
id INT4 <pk>
code VARCHAR(128)
name VARCHAR(255)
table VARCHAR(128)
inherits VARCHAR(128)
CLASS
ATRDEF
id INT4 <pk>
class id INT4 <fk>
code VARCHAR(128)
name VARCHAR(255)
type VARCHAR(32)
table_ VARCHAR(128)
LINKDEF
id
parent_id childjd code name
INT4 INT4 INT4
VARCHAR(128) VARCHAR(255)
<pk> <fk1> <fk2>
multiple_parent BOOL multiple_child BOOL required BOOL
Рис. 2. Таблицы для хранения модели PSM
Для формирования и отладки файлов маппинга и классов JavaBean использовалось специальное инструментальное средство - консоль Hibernate, функционирующая в среде Eclipse. Результирующие файлы маппинга и классы JavaBean объединялись в пакет, который передавался разработчикам приложений.
Таким образом, концепция MDA может быть успешно использована при объектно-ориентированном проектировании БД на основе онтологического моделирования предметной области. Выявленный разрыв в технологической цепочке стимулирует дальнейшее развитие инструментов MDA.
Список литературы
1. MDA Guide Version 1.0.1. - OMG, 2003 (http:// www.omg.org/docs/omg/03-06-01.pdf).
2. Буч Г., Рамбо Дж., Джекобсон А. Язык UML. Руководство пользователя. - М.: ДМК, 2000.
3. Natalya F. Noy and Deborah L. McGuinness, Ontology Development 101: A Guide to Creating Your First Ontology. Stanford Knowledge Systems Laboratory Technical Report KSL-01-05 and Stanford Medical Informatics Technical Report SMI-2001-0880, March 2001. (http ://protege. stanford.edu/publications/ontology_development/ ontology 101 .html).
4. Семенов В.А. и др. Стратегии объектно-реляционного отображения: систематизация и анализ на основе паттернов. // Тр. Инта системного программирования РАН. - 2004.
5. Тенцер А. База данных - хранилище объектов. // КомпьютерПресс. - 2001. - № 8.
6. Bauer Christian, King Gavin. Hibernate in Action. - Manning Publications Co., 2005.
МОДЕЛЬ СПЕЦИАЛЬНОГО ПРЕОБРАЗОВАНИЯ ИНФОРМАЦИИ В ЗАЩИЩЕННЫХ ИНФОКОММУНИКАЦИОННЫХ СИСТЕМАХ
В.В. Голод, В.И. Чернышов, В.Д. Шулика
Несмотря на значительное разнообразие современных средств и построенных на их основе подсистем защиты информации в инфокоммуникационных системах, их неизменным общим свойством является некоторое специальное преобразование, выполняемое над защищаемой информацией при ее хранении и передаче. Задачей такого преобразования является, в первую очередь, обратимое устранение семантической (и, соответственно, прагматической) составляющей информации (здесь не рассматривается за-
дача удаления информации или уничтожения собственно сигнала) [1,2].
Очевидный пример - криптографическое преобразование, результатом применения которого является последовательность унитарных кодов, не поддающаяся непосредственно (то есть в данном случае без применения методов криптоанализа) ни семантической, ни прагматической интерпретации.
Другим примером может выступать стеганография - особый вариант распределения исходной по-