переменная out: файл #p7 входной;;
пока не in-конецО in.ввод(xi);
#p9
out.вывод(xi); конец;
конец Обработать; функция Главная(параметры)
переменная К: целое; хн, хк: #p3;
#p6;
вызвать функцию Создать(имя файла 1, К, хн, хк);
#p8;
вызвать функцию Обработать(имя файла 1, имя файла 2); выход;
конец Главная;
</template>
</code>
</task>
Выводы
Таким образом, представляется вполне возможным реализовать в обучающей системе по программированию генерацию вариантов однотипных заданий на основе представления заданий в виде шаблонов. Это, как было сказано выше, решит проблему создания конкретного варианта задания для каждого студента и повысит устойчивость выработанных навыков написания программ по заданным темам.
Литература
1. Лаптев В.В. Требования к современной обучающей среде по программированию // Объектные
системы-2010 (Зимняя сессия): материалы II Международной научно-практической
конференции. Россия, Ростов-на-Дону, 10-12 ноября 2010 г. / Под общ. Ред. П.П. Олейника. -Ростов-на-Дону, 2010. - с. 104-110.
2. Sergey Sosnovsky, Olena Shcherbinina, Peter Brusilovsky, Web-based Parameterized Question as a Tool for Learning, in Allison Rossett (ed): Proceedings of E-Learn 2003, Phoenix, Arizona USA, November 7-11, 2003, p. 2151-2154.
3. Лаптев В.В., Морозов А.В., Бокова А.В. C++. Объектно-ориентированное программирование. Задачи и упражнения. - СПб.: Питер, 2007. - 288 с.: ил.
УДК 004.4, 005
XML-СУБД КАК ВОЗМОЖНАЯ ОСНОВА ДЛЯ ОБЪЕКТНЫХ ТЕХНОЛОГИЙ ИС.
ТЕХНОЛОГИЯ MULTYF
Ермаков Илья Евгеньевич, преподаватель, Технологический институт им. Н.Н. Поликарпова "Государственный университет - учебно-научно-производственный комплекс", технический директор, НПО "Тесла", Россия, Орёл, ermakov@,metasvstems.ru
1. Проблемы прирождённых (native) ООСУБД
Несмотря на успешные применения, которые находит каждая из известных ООСУБД, их массовое применение в АСУ и ИС так и не сложилось.
Представляется, что тому причиной слишком прямолинейное понимание и реализация объектности, непосредственный перенос в СУБД представлений, сложившихся в области языков программирования.
Во-первых, плотно сопряжены между собой хранимые данные и программная логика, что ведёт к ориентации на конкретный язык или семейство языков и, кроме того, нагружает
145
СУБД новыми нехарактерными им функциями - быть платформой выполнения для программных компонентов.
Во-вторых, такая прямолинейная реализация ООП влечёт за собой отсутствие единой статической модели хранимых данных и языка запросов к ним, которые работали бы независимо от объектной инкапсуляции и программной логики классов.
Почему объединение СУБД и платформы выполнения приводит к проблемам? Вероятно, потому, что разработка языка программирования и его платформы, как и разработка СУБД, являются сложными научно-техническими задачами, и выполнить удачно их проектирование и разработку в виде единого целого гораздо сложнее, чем по отдельности - велик риск получить целый набор дефектов и в одной, и в другой составляющей.
2. Объектная ориентированность: базовые качества и их поддержка
Возможный путь развития объектных технологий в области ИС связан с реализацией иного, более базисного содержания объектной ориентированности, чем это обычно практиковалось. Вообще говоря, смысл у ООП один - обеспечение безболезненного развития системы, за счёт того, что она может быть расширена новыми компонентами без переписывания существующих.
Можно назвать только два существенных свойства, которые требуются от объектной технологии:
• Непосредственная поддержка иерархической структуры данных и возможность обеспечения её соответствия структуре информационной модели ИС;
• Безболезненная расширяемость структуры данных. Во-первых, расширяемость данных облегчает внесение изменений в ИС. Во-вторых, она является основой для моделирования иерархии расширения типов информационных объектов («наследование», иерархия «род-вид»). Этим обеспечивается полиморфизм для хранимых данных и передаваемых сообщений. Полиморфизм - это возможность применять с одной и той же функцией ИС как базовую структуру данных, так и расширенные от неё.
В области языков программирования принцип «ООП = модульность + расширяемые типы данных» был в чистом и ясном виде воплощён Н. Виртом в языках Oberon, а затем ИТ-индустрией - в языке Ada-95 [1].
В области СУБД примером успеха такого подхода являются системы MUMPS-семейства с их разрежёнными многомерными массивами (глобалями) и последующая надстройка в СУБД Cache как объектно-ориентированных, так и реляционных, и XML-интерфейсов к многомерному ядру. Cache является одним из немногих примеров массового успеха объектной технологии СУБД, и нам представляется, что этот успех связан именно со следованием идее, что базовое ядро, обеспечивающее расширяемые структуры данных, является основой для практичной объектной ориентированности.
3. Прирождённые XML-СУБД и их перспективы
Неожиданный тезис, который мы предлагаем вниманию читателей, заключается в том, что набирающие в последнее время популярность прирождённые XML-СУБД, на самом деле, могут являться реальной базой для объектно-ориентированной разработки информационных систем. Концептуальным подтверждением тому является, что два названных в предыдущем разделе существенных объектных свойства как раз являются характерными сильными сторонами XML-модели данных. Эмпирически же ободряющим аргументом являются аналогии с MUMPS-технологиями, которые мы не будем здесь перечислять, но они ощущаются на практике - кроме автора данной статьи, их отмечали некоторые разработчики, имеющие опыт использования обоих подходов.
У текстового формата XML есть существенные недостатки, однако полноценные XML-СУБД (примером которых является отечественная «Седна», разработка ИСП РАН[2]) используют XML, фактически, как формат ввода-вывода, а внутреннее хранение
146
осуществляется иерархическим бинарным образом, в соответствии с моделью XML-Infoset[3].
Разработка ИС на основе XML-СУБД предполагает привычную для реляционных СУБД схему с отдельным слоем программной логики, который взаимодействует с БД посредством языка запросов XQuery. XQuery, по сути, обладает всеми свойствами, привычными разработчикам на SQL (что неудивительно, если учесть наличие в комитете XQuery ведущих разработчиков SQL), но дополняет их новыми, являясь почти полноценным языком программирования, на котором можно разрабатывать хранимые на сервере БД модули.
Нам представляется, что для раскрытия потенциала XML-СУБД необходимо, во-первых, осознанно эксплуатировать их объектно-ориентированные свойства, во-вторых, разрабатывать на их основе мини-технологии для объектно-ориентированного проектирования и реализации информационных систем.
4. MULTYF как пример мини-технологии на базе XML-СУБД
На базе XML-СУБД «Седна» автором статьи разработано и используется несколько мини-технологий объектного характера. Одна из них - информационная технология MULTYF (multi-typed frames), которая предназначена для моделирования неоднородных данных о сложных объектах, их ортогональной классификации и выполнения запросов.
База данных MULTYF состоит из одноуровневого множества фреймов. Каждый фрейм может быть связан с типами, а также может хранить поля со значениями. Типы MULTYF могут образовывать иерархии «тип-подтипы». Фрейм, связанный с подтипом, связан также со всеми базовыми типами. Связь с типами устанавливается наличием внутри фрейма соответствующих типизирующих секций (в случае подтипов - вложенных). Поля данных могут находиться внутри типизирующих секций, если фрейм обладает ими в силу связи с некоторым типом.
<frame id="124">
<type name="T1">
field name="a" format="real">0.15</field>
<type name="Subtype-Of-T1">
field name="b" format="string"></field>
</type>
</type>
<type name="T2">...</type>
</frame>
Семантическое моделирование начинают выполнять следующим образом: разрабатываются две независимых иерархии типов - для сущностей предметной области и для сущностей информационной системы.
Например, для ИС сферы торговли автомобильными комплектующими в иерархии типов предметной области будут такие ветви типов, как: Модель_Авто.Лиё1.Л6, Модель_Авто.Лий1.Л8, Производитель_комплектующих.Нашапп_МоОро^ и т.д. Как видим, типизация предметной области доводится даже до уровня понятий единичного объёма (имён собственных). Соответственно, типизация сущностей ИС будет включать в себя такие ветви типов, как: ИС.Карточка_Модели, ИС.КарточкаПроизводителя.
Как правило, фрейм типизируется одним из типов сущностей ИС - и одним или многими типами предметной области, с которыми имеется связь:
frame id="...">
<type name="Модель Авто">
<type name="Audi"><type name="A6"/></type>
</type>
<type name="Тип Кузова">
<!-- перечисляем все возможные типы для данной модели -->
<type name="Седан"/>
<type name="Хэтчбэк"/>
</type>
147
<type паше="ИС">
<type паше="Карточка Модели">
<filed .... >
<field ... >
</type>
</type>
</frame>
<frame id="...">
<type пaшe="Артикул">
<type name="^1034"/>
</type>
<type пaшe="Товар">
<type name="Подвеска"><type пaшe="Амортизаторы">...</type> </type>
<type пaшe="Модель Авто">
<type name="Audi">
<type name="A6">
<!-- может быть и для нескольких моделей -->
</type>
</type>
<type пaшe="Производитель Комплектующих">
<type name="Hamann Motosport"/>
</type>
<type пaшe="ИС">
<type name="Карточка Артикула">
<field пaшe="описание">
<field пaшe="русский" format="text">
</type>
</type>
</frame>
Фреймы имеют идентификаторы, однако они используются только в технических целях (например, для удаления фрейма из базы). Все связи между фреймами устанавливаются ассоциативно через типизирующие секции. Например, фрейм артикула А1034 из примера ассоциирован с производителем Hamann_Motosport, производителям в ИС соответствуют фреймы типа ИС.Карточка_Производителя. Таким образом, карточка данного производителя выбирается по паре типов Протводитель_Комплектующих.Иашапп_МоОро^ и ИС.КарточкаПроизводителя.
Определён специальный XML-язык запросов MULTYF/QL, который позволяет записать образец для отбора фреймов по наличию типизирующих секций и условиям на значения полей. Также имеются специальные унифицированные компоненты интерфейса пользователя для навигации по ортогонально типизированным данным.
Заметим, что, по сути, технология MULTYF является независимой от языка XQuery и XML-СУБД, она всего лишь быстро реализуется на их основе. Модель данных MULTYF является более специализированной и более семантически нагруженной, чем модель XML-Infoset и может быть реализована непосредственно, с использованием XML всего лишь как формата входного-выходного представления данных.
Видимо, путь семантического нагружения и специализации (уменьшения многообразия) модели данных XML-Infoset представляет интерес для развития объектных технологий ИС.
Выводы
В статье выдвинут тезис о возможности примения XML-СУБД в качестве основы для объектно-ориентированной разработки ИС. Предложен путь создании мини-технологий над XML-СУБД и семантического нагружения и специализации модели данных XML-Infoset. Представлен конкретный пример мини-технологии над XML-СУБД - информационная технология типизированных фреймов MULTYF.
148
Литература
1. Ермаков, И. Е. Объектно-ориентированное программирование: прояснение принципов? / И.Е. Ермаков // Объектные системы - 2010: Материалы I Международной научно-практической конференции. Россия, Ростов-на-Дону, 10-12 мая 2010 г - Ростов-на-Дону, 2010. С. 130-135.
2. Сайт XML-СУБД «Седна» (ИСП РАН) [Электронный ресурс] Режим доступа: http://modis.ispras.ru/sedna/
2. XML Information Set (Second Edition). W3C Recommendation [Электронный ресурс] Режим доступа: http://www.w3.org/TR/xml-infoset/
149