Сводная таблица алгоритмов хранения и обработки
Если после выборки из базы дерево заносится в массив, а после рекурсивно сортируется, то теряются преимущества вложенных множеств для быстрой генерации дерева.
Для сохранения целостности при добавлении, удалении и перемещении элементов дерева необходимо пересчитать его левые и правые значения.
Пример SQL-запроса для добавления новой ветки:
BEGIN;
SELECT @treeRight := rgt FROM ns_tree
WHERE id=2; /*справа от ветки, у которой id, например, равен двум */
UPDATE ns_tree SET rgt=rgt+2 WHERE rgt>@treeRight; UPDATE ns_tree SET lft=lft+2 WHERE lft>@treeRight; INSERT INTO ns_tree VALUES(0, 'value', @treeRight+1, @treeRight+2,1); COMMIT;
Для того чтобы сократить процессорное время на вставку элементов в дерево, можно нумеровать входы и выходы из узлов (left и right) с некоторым интервалом, например, 100 или 1 000, что в значительной степени зависит от предварительных оценок количества хранимых элементов.
Материализованные пути. Идея метода заключается в хранении пути от вершины до данного узла в явном виде и в качестве ключа. Метод является наиболее наглядным с точки зрения кодификации элементов: каждый узел интуитивно получает понятное значение, код и его части несут смысловую нагрузку. Данные свойства важны в классификаторах, предназначенных для широкого использования, например, в стандартизованных справочниках территорий (ОКАТО), отраслей экономики (ОКВЭД) и во многих других областях.
Организация хранения информации о независимых друг от друга экземплярах сущностей не вызывает никаких затруднений. Однако наряду с плоскими данными при построении даже простых информационных систем приходится хранить в БД и информацию о вложенных друг в друга сущностях, то есть иерархические данные.
Организация хранения такой информации в реляционных БД проста, но не всегда очевидна. При выборе того или иного подхода для реализации хранения древовидной структуры можно использовать таблицу, полученную путем анализа существующих методов организации хранения древовидных структур.
Литература
1. Joe Celko. Trees in SQL. Some answers to some common questions about SQL trees and hierarchies, 2004 (http://www.mtel-ligententerprise.com/001020/celko.jhtml?_requestid=1266295).
2. Vadim Tropashko. Trees in SQL: Nested Sets and Materialized Path, ACM New York, NY, USA, 2005 (http://portal.acm. org/citation.cfm?id=1083793).
3. Джо Селко. Стиль программирования Джо Селко на SQL. / Пер. с англ. - СПб.: Питер, 2006.
древовидных структур
Списки Под- Вложен- Материали-
Критерии смежно- множе- ное мно- зованные
сти ства жество пути
Простота струк-
туры: таблиц, 1 2 1 1
ссылок, 1 2 0 0
минимального
количества полей 3 5 4 2
Прямая выборка
всех потомков + + + +
узла
Прямая выборка -
поддерева(всех (рекур- + + +
потомков узла) сия)
Прямая выборка - (рекур-
пути от узла до сия) + + +
корня (всех предков узла)
Быстрое опреде- - (рекур-
ление количества сия) + + +
всех потомков
узла
Быстрое определение уровня - (рекурсия) + + +
Порядок следо-
вания узлов при - - + +
сортировке
Быстрая вставка +
новых узлов
Быстрое переме- +
щение поддерева
Быстрое удале- + + +
ние поддерева
Каскадное удале- + +
ние поддерева
Нет избыточно- +
сти хранения - - -
Неограниченное
количество уров- + + + -
ней дерева
Не требуется до-
полнительная
поддержка цело- + - - -
стности (кроме
ссылочной)
НЕИЗБЕЖНОСТЬ СЕТЕВОГО МЫШЛЕНИЯ
С.В. Лещев, д.филос.н. (МИФИ (ГУ), г. Москва); В.А. Лещев; С.В. Семенов, к.т.н. (НИИ «Центрпрограммсистем», г. Тверь, [email protected])
Ключевые слова: коммуникационная сфера, информационный обмен, информационное пространство, распределенные ресурсы, агенты.
Рост знаний вынуждает человечество по-иному бежно утрачивается. Искусство сохранения инфор-отнестись к своей информационной природе и по- мации заключается в умении грамотно выстраивать нять непреложный факт: хранимое локально неиз- гармонию между глобальным информационным про-
странством и локальными ресурсами данных. Состояние информационной инфраструктуры побуждает переосмыслить феномены коммуникации и технологии.
В информационном обществе техника перестает играть роль индустриального рычага прогресса, поскольку прогресс все более движим постиндустриальным ресурсом - информацией. Потребляя и порождая информацию, общество вырабатывает новые формы социально-информационного метаболизма: управление знаниями, распределение интеллектуальной обработки информации, формирование новой сервисно-пользовательской культуры и соответствующих им технологических архитектур и интерфейсов, мультиагентные системы и их взаимодействие. Общество пронизывается электронной культурой, которая, в свою очередь, во многом строится на новых знаковых и символических образованиях. Культуры созданы из коммуникационных процессов. А все формы коммуникации основаны на производстве и потреблении знаков [1].
Социальная реальность все более трансформируется информационными технологиями, в свою очередь, преобразующими представления современного общества о коммуникации. Коммуникационная сфера претерпевает парадигмальный сдвиг в сторону модульности и распределенности информационного ресурса, кластеризации и расщепленности в технологических реализациях системно-компьютерных архитектур. Коммуникация есть связь распределенного, в программировании же переход от монолитных программ и систем к раздробленным, затем к распределенным становится естественной инфраструктурной фактурой.
Однако, вытесняя технологическую составляющую коммуникации на второй план, новейшие технические решения порождают проблемы иного рода. Развитие семантических методов (волна распределенного интеллекта) вскрывает здесь проблему философского уровня: что есть понимание?
Понимание перестает быть прерогативой человека, появляются новые типы субъекта, с которым необходимо уметь коммуницировать, - программный агент, интеллектуальное хранилище, система искусственного интеллекта. Социальность виртуали-зируется все в большей степени, от персональных страниц, сайтов до сетевых блогов и социальных сетей. Индивидуальность растворяется в новых формах информационных интеракций, этой же эволюцией затронута и сама компьютерная реальность: от программы, программных комплексов и АСУ до корпоративных интранет-решений, распределенных информационных систем и сервис-ориентированной архитектуры.
Мануэль Кастельс подчеркивает, что телекоммуникации являются ныне только одной из форм обработки информации; технологии передачи и связи одновременно все шире диверсифицируются и интегрируются в одной и той же сети, где оперируют компьютеры. Основной динамикой и контекстом этой эволюции становится инфообмен. Подобный вывод неудивителен и эволюционно логичен. По
своей сути интеллект, как первичная информационная система, зарождается на биологическом носителе. И если биология долгое время оставалась определяющим природным форматом интеракции с окружающей средой, использующим «твердые носители» ДНК и РНК, то только современные технологии твердых копий позволили организовать социальную память в нечто большее, нежели данные и информация, - в знания.
Разум как продуцент и потребитель знания является новой ступенью интеллектуальной эволюции, в которой знания выступают как продуктивная формула освоения и владения информацией. Однако одна единица знания требует колоссального объема данных, которые уже не могут быть гарантированно сохранены единичным носителем, будь то одно человеческое сознание, один сервер, одна информационная система.
Таким образом, инфообмен порождает не только проблему адекватной интерпретации и гарантированной сохранности информации. Среди прочего трагическим следствием информационной эпохи является утеря информации не по вине носителя, а вследствие невозможности разыскать необходимую порцию знания. Знание утрачивается несмотря на то, что оно зафиксировано [2].
Парадигмальный сдвиг от индустрии данных к индустрии информации и знаний [3] диктует информационному обществу новый коммуникационный подход к сохранению знаний: распределенные системы предоставления информации и знаний. Следствием этого сдвига должна являться естественная переквалификация информационных систем - коммуникационный ландшафт подобных систем должен инкорпорировать все большую адаптацию технического профиля систем к макроструктурам данных, к интерпретированной информации, то есть к знаниям, что, в свою очередь, вовлекает в архитектурное планирование возможных систем семантический уровень информационного ресурса. Представление информации с точки зрения не ее синтеза из данных, а планируемого понимания ее целевой аудиторией представляет собой технический аспект новой информационной парадигмы. Воссоздание знания из данных при помощи метаданных и онтологий является продолжением общей динамики разделения контента и структуры информации, однако сама эта тенденция тормозится в своем развитии не только техническими, но и понятийными сложностями: представления специалистов из сферы информационных технологий еще активно коренятся в уходящих реалиях досетевой эпохи.
Отставание понятийного каркаса от технологий
Сетевые тенденции в реализации тех или иных программных решений легко увидеть даже на уровне интерфейса. Тем не менее, проблема принятия стандартов, протоколов, спецификаций оттеняет одну важную особенность технологического прорыва: понятия, модели, схемы, критерии (хотя и заимствуются специалистами из предшествующих ярусов про-
граммистского опыта) не успевают эволюционировать вслед за революцией методов и решений. Иначе: терминологическая эволюция отстает от методологической революции, понятия отстают от обозначаемых ими предметных онтологий, и тем самым порождается определенный фронт некорректностей, исключений, дефицитов в покрытии понятийным аппаратом данной предметной области.
Характерным примером такого понятия могут служить даже базовые понятия информационных технологий, например, информационное пространство (ИП). Будучи тесно связанным с понятием информационный ресурс (ИР), оно определяет направление развития. Современным веб-технологиям в большей степени отвечает линия развития в духе семантического веба, а это дает возможность трактовать ИП не как совокупность ИР, понимаемых как наборы БД, сайтов, средств СМИ и т.п., а на базе ИР, понимаемых как сущности, имеющие URI - Uniform Resource Identifier, то есть единообразный идентификатор ресурса либо, в перспективе, IRI - Internationalized Resource Identifier, то есть интернационализированный идентификатор ресурса. URI - строка, идентифицирующая абстрактный или физический ресурс. Отсюда происходят основные различия в подходах к представлению ИР, их организации, способам хранения и пр.
Если раньше ресурсы были локальными в создании и использовании, то в описанном подходе они становятся распределенными, длительно сохраняемыми и доступными независимо от времени и места создания, эти свойства позволяют внести новое понимание старого термина, наполняя его конкретным смыслом именно как пространство, как новую сущность с новыми полезными свойствами.
Информационный интерьер программного обеспечения, до недавнего времени состоящий из объектов и компонентов на высшем уровне абстракции, претерпевает качественную трансформацию в связи с внедрением распределенных систем. В технологиях, ориентируемых на подобные системы, ограничения в мобильности доступа, вариабельности поведения, флексичности принятия решений порождают недостаточность программного продукта с точки зрения излишнего вовлечения пользователя либо программиста в процессы гибкого реагирования, креативных изменений, активных воздействий. Эта задача, в свою очередь, требует введения новых понятий, что, однако, не всегда возможно в силу тесной кооперации различных направлений программирования. Стагнация понятий тем самым тормозит развитие и выработку общих концептуальных механизмов и схем.
Такое положение дел усугубляет известную проблему взаимодействия специалистов из разных предметных областей, которым, например, одна и та же деталь или термин известны под разными наименованиями или обозначениями. Выходом из этого положения является разработка онтологий как формализованной системы понятий и связей между ними. Онтологии могут играть роль интердисциплинарного клея, который связывает разные предметные
области, давая специалистам основу для взаимодействия и разработок. На метауровне онтология является разновидностью сетевой модели знаний о предметной области. Эта модель может быть статической или динамической. В другом случае говорят об онтологии как о модели мира, которая может представлять состояния моделируемой предметной области во времени.
Здесь также имеет место отставание понятийно -го каркаса от технологий, потому что примеров реальных хорошо развитых и проработанных онтоло-гий мало. Развитие технологий сдерживается сложностью проблемы и отсутствием удобных инструментальных средств, при том что принципиальные вопросы уже имеют решение на уровне стандартизованных спецификаций и технологических подходов. Образуя понятийный каркас предметных областей, онтологии должны представлять собой основу сетевого мышления, что существенно при решении распределенных задач.
Атомизация информационных ресурсов (хорошо видимая на примере RDF), характерная для представления информации в стиле семантического веба, ведет к адекватному стилю их обработки и потребления. На смену десктопным приложениям приходят веб-ориентированные приложения и такие, как SaaS - Software as a service и их многочисленные варианты, которые обозначают как XaaS - все что угодно как сервис. Конечный пользователь представляется как сверхтонкий клиент, нуждающийся лишь в доступе к сети, в которой есть все, с чем он работает, -личные и рабочие файлы, поисковые системы, инструменты, средства организации труда, проекта, взаимодействия, представленные в виде сервисов. Поскольку все это находится в сети, то и мышление пользователя постепенно становится сетевым. Технологии уже созрели, и реализацию сдерживают лишь медленное развитие новых систем понятий в виде всевозможных онтологий и развитие старых понятий применительно к новым реалиям.
Агенты как средство расширения динамики абстрактных объектов
Подобного рода ограничения могли бы быть преодолены, если бы логический базис программных спецификаций вышел за пределы константных, инвариантных, стабильных моделей и структур, предоставляя определенным внутрипрограммным образованиям (агентам) свободу в адаптации и коммуникации в некоторой среде и, что важнее, самостоятельное приведение объектов и событий в операбельное (вычислимое, нормализованное) состояние, особенно в нештатных ситуациях.
Тем самым вопрос об отчуждении логики программиста в пользу динамического порождения состояний системы и их разрешения агентами переводится в следующую плоскость: каким образом можно активировать рецептивную (пассивную) среду исполнения продукта и какого рода события, коммуникации, исключения в ней допустимы, прогнозируемы, возможны.
Безусловно, описанная выше проблематика не является центральной в содержательном описании
мультиагентных систем. На примере понятия алгоритма становятся очевидны не содержательные, а формальные сложности, возникающие в новой предметной области в связи с наследованием ею понятийного аппарата предшествующего этапа информационной эволюции программирования. Подобный подход позволяет показать, что дискурсивные (понятийные) сложности, являясь формальными по характеру происхождения, значительно задействуют семантический и прагматический уровни программного кода (помимо синтаксиса). По сути, программист вынужден решать семиотические задачи о коллизии новых и уже бытующих знаковых систем. Наибольшим флуктуациям и сомнениям понятие алгоритма подвергается в программных отраслях, связанных с искусственным интеллектом, ассоциативными и семантическими сетями, нечеткими множествами: именно здесь проблема формализации задачи, ее разрешимости и хотя бы теоретической вычислимости встает на первый план. Всякое ли содержание может быть сведено к набору знаний, представленному совокупностью формул и пропозициональных форм? Алгоритмизация решения сводится, в кибернетическом плане, к проблеме останова машины Тьюринга для соответствующей задачи или, в математическом плане, к теореме Геделя о неполноте всякой формальной системы. Адаптация термина непроста и в случае мультиагентных систем, где требуется иное понимание последовательности шагов.
Данный пример демонстрирует, насколько важна теоретическая чуткость при описаниях новой техно-
логической платформы. Сегодня становятся невозможными грамотная концептуализация производственного замысла и постановка технического задания с использованием унифицированного жаргона индустриальной эры.
Информационная эпоха порождает новые представления, новые представления формируют новые понятия, новые понятия корродируют имеющийся символический порядок. Рождающаяся информационная парадигма сталкивает уютный мир уже обжитых значений с новой, тревожащей символической платформой, где информация определяет всякую возможную содержательность человеческого измерения жизни, а сетевая фактура наилучшим образом материализует дух информации. Сегодняшней социальности уже недостаточно быть воплощенной в информации - важно научиться транслировать себя в будущее, защищать себя от развоплощения нестойким носителем, запечатлевать себя в дисперсной, распределенной среде сетевых систем, буквально ин-формировать себя.
Литература
1. Кастельс М. Информационная эпоха: экономика, общество и культура. - М.: ГУ ВШЭ. - 608 с.
2. Коротков А. Послесловие к матрице: виртуальные миры и искусственная жизнь. - М.: Деловая культура, Альпина Бизнес Букс, 2005. - 312 с.
3. Семенов С.В., Лещев В.А., Лещев С.В., Александров А.В. Развитие идеи корпоративных информационных пространств как ответ на новую информационную парадигму // Программные продукты и системы. - 2008. - № 1. - С. 35.
КАРКАСНАЯ БИБЛИОТЕКА КЛАССОВ ДЛЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ
М.С. Кочеров, к.т.н. (НИИ «Центрпрограммсистем», г. Тверь, [email protected])
Ключевые слова: объектно-ориентированное программирование ние знаний.
Применение объектно-ориентированного подхода (ООП) к проектированию программного обеспечения (ПО) автоматизированных систем организационного управления (АСОУ) означает построение описания предметной области в виде объектной модели, состоящей из системы классов, основанных на принципах инкапсуляции, полиморфизма и наследования. Таким образом, объектная модель предметной области становится важным артефактом проектирования АСОУ наряду с реляционной, поддерживаемой БД.
Рассмотрим стратегию проектирования ПО АСОУ, характеризующуюся: а) наличием объектной модели, полностью описывающей всю предметную область, причем прикладная обработка данных реализуется только на базе этой модели; б) полной изоляцией объектной модели от реляционной (в реализации классов исключены все операции работы с БД). Данная стратегия позволяет в полной мере реализовать все достоинства ООП [1,2] (многократное
, объектная модель, каркасная библиотека классов, представле-
использование кода, распределение разработки, обеспечение эволюционного метода разработки и т.д.), а также обеспечить независимость ПО от используемой БД [3].
Придание объектной модели ключевой роли в проектировании ПО в условиях промышленного производства обусловливает требование унификации процесса построения этой модели, введения в практику программирования четко обозначенных этапов с регламентированной методикой их выполнения. Данную задачу решает каркасная библиотека классов. В качестве теоретической базы реализации библиотеки принят аппарат многосортного исчисления предикатов первой ступени, используемый для синтеза логических моделей представления знаний [4]. Концептуальное представление библиотеки приведено в виде иМЬ-диаграммы классов на рисунке.
Рассмотрим основные моменты, связанные с использованием этой библиотеки. Ключевым элементом библиотеки является класс ТВа$еОЪ]ес1. При по-