Вещная (объектная) онтология
Традиционным для современного человека – и в быту, и в науке, и в философии – является вещное мышление, для которого свойственно описание мира как множества пространственно локализованных объектов-вещей. Сами вещи определяются через совокупность предикатов. Взаимосвязь объектов описывается через отношения и классификации, что формально фиксируется в виде таблиц и графов. Современные методы описания/моделирования сложных систем придерживаются вещной онтологии: сначала декомпозиция – выделение объектов, затем их классификация с приписыванием объектам свойств и установлением между ними отношений («часть-целое», «род-вид», «зависит» и т.д.)
Событийная онтология
Однако в философии, помимо традиционной вещной онтологии, известен еще один, хотя пока еще и не столь распространенный, подход к описанию мира – событийный. Событийного взгляда на уровне логических, языковых систем придерживался Людвиг Витгенштейн. В начале своего знаменитого «Логико-философского трактата» он констатировал: «Мир – целокупность фактов, а не предметов.… Происходящее, факт — существование со-бытий». Предельно радикальный событийный подход, на уровне основ онтологии, впервые предложил Бертран Рассел, констатировав: «мир состоит из некоторого числа, возможно конечного, возможно бесконечного, сущностей… Каждая из этих сущностей может быть названа “событием”». Да, мы можем описать, скажем, биологический организм как пространственную структуру из молекул. Но, с другой стороны, можно представить его и как систему событий химических взаимодействий этих молекул, распределенных на некотором промежутке времени. При этом понятно, что событийное описание даст нам более полное понимание организма по сравнению с чисто структурным анализом. Двигаясь дальше вглубь вещей, можно и молекулы описать не как “шарики на палочках”, а как совокупность событий взаимодействия атомов – понятно же, что структура, пространственное положение элементов молекулы вторичны относительно событий электронных обменов. Ну и сами атомы следует описывать как системы актов-событий взаимодействия частиц. В конечном итоге Рассел, анализируя представления квантовой теории о строении материи, приходит к выводу: «материя – это просто удобные способы группирования событий». А на законный вопрос «событий чего? событий происходящих с чем?» отвечает: «событий, которые просто случаются, а не случаются “с” материей или “с” чем-то еще».
Компьютерная аналогия
Для понимания сути событийной онтологии нам может помочь компьютерная аналогия. Что такое «мир» компьютера на элементарном (процессорном) уровне? Непрерывный поток простых событий: 0100100100010010010… И ничего больше. Но на другом уровне – уровне интерфейса – некоторые последовательности этого потока выглядят как вполне себе вещи: элементы интерфейса, буквы, герои игры. Каждой «вещи», явленной нам на экране, соответствует некоторая, не обязательно непрерывная, последовательность потока процессорных событий (единичек и нулей). И что мы делаем, когда хотим изменить эти вещи? Правильно, добавляем в исходный поток новые события. Итак, перед нами только события: системы событий и события изменения систем событий, из которых на уровне интерфейса могут быть сформированы новые вещи. Особо зафиксируем: никаких вещей на уровне элементарного потока нет – они возникают только при приложении к этому потоку шаблонов. Которые, кстати, сами являются распределенными во времени структурами событий этого же потока, поскольку ничего другого в мире компьютера нет.
Из этого философского введения мы должны вынести простую мысль: наш мир можно рассматривать и как множество вещей, и как поток событий, при этом вещи определяются через множества этих событий.
Событийное описание сложных систем
Безусловно, когда мы обращаемся к прикладным проблемам описания сложной системы, скажем, большого современного предприятия, то нас не должна волновать глубинная (на уровне событий взаимодействия элементарных частиц) событийная онтология каждого болта. Нас, прежде всего, должно интересовать участие болта в функционировании системы, то есть события: «доставили на склад», «подвезли к месту сборки», «ввернули». Причем не просто факт участия, а содержательное его наполнение, с описанием тех свойств, которые были существенны для каждого события. К примеру, для реализации события «подвезли к месту сборки» важен вес болта – нужна ли тележка или можно в коробку болтов в кармане принести. Событие «ввернуть» осуществимо если резьба болта соответствует резьбе детали. И получается, если мы зафиксируем все события, в которых участвовал болт, то получим полное его описание. Причем не абстрактное, а конкретное и исчерпывающее описание того, как «выглядит» болт для конкретной системы, какими свойствами, в какие моменты и как он участвует в функционировании системы. Если нет события, в котором фиксировался бы цвет болта, то значит в описании болта (для этой системы) и не будет такого свойства, как «цвет». Таким образом, используя предложенный событийный подход, то есть фиксируя все события, в которых появлялись, измерялись, перемещались, применялись, изменялись и т.д. объекты, мы получим полное описание этих объектов в анализируемой системе.
На первый взгляд, может показаться, что речь идет лишь о некой разновидности формы учета, способе оптимизации записи параметров объектов. Однако давайте рассмотрим, что кроется за казалось бы простой фразой «фиксация события». Возьмем, к примеру, событие «ввернули болт». Здесь важно обратить внимание на то, что в этом событии участвует не один только болт (A), а еще такие объекты, как соединяемые детали (B и C) и субъект (S), который и реализует это событие. (Здесь обязательно следует сделать уточнение, что речь идет не об акте, не о процедуре, не о действии, а именно о событии «ввернули болт», то есть о фиксации факта достижения результата.) То есть полностью наше событие должно быть названо так «субъект S соединил болтом A детали B и C». Это значит, что запись каждого события системы содержит в себе не только информацию о задействованных объектах, но и данные об их отношениях (объекты A, B и C с момента указанного события образуют целое D) и плюс описание субъекта (S произвел объект D).
Итак, фиксация всех событий, реализованных в некоторой сложной системе, должна дать нам исчерпывающее (в рамках данной системы) описание каждого объекта, каждого субъекта и их отношений. По сути, полученный событийный поток содержит полную информацию о системе.
Принцип выделения событий
Понятно, что для анализа функционирования сложной системы, скажем, того же предприятия нет необходимости фиксировать каждое событие на уровне технологических процессов. Скажем, закручивание болта конкретным субъектом в событийном потоке должно быть представлено двумя событиями: «получение A, B и C», «сдача детали D», а не событиями каждого поворота ключа. Можно указать следующие формальные условия, выполнение которых определяет необходимость и достаточность включения некоего события в событийный поток:
- событие выполняется или регистрируется одним из субъектов системы;
- событие выполняется над одним из объектов системы;
- факт наличия (или отсутствия) события является условием для выполнения события другим субъектом или этим же субъектом, но с другим объектом.
Из приведенных условий следует, что событие определяется посредством указания объекта (объектов), с которым оно происходит, и субъекта, его выполнившего или зарегистрировавшего. В качестве субъекта может выступать конкретный человек, роль, коллектив, а так же программные агенты, датчики и пр. События, которые влияют на поведение системы, но не связны ни с одним из ее субъектов следует приписывать абсолютному субъекту. Именно потому, что любое событие в системе является таковым только при условия его связи с конкретным субъектом, описываемый подход называется не просто событийным, а субъектно-событийным.
Принцип унификации
Наиболее важным и интересным моментом субъектно-событийного подхода является принцип унификации описания: все субъекты и все объекты, входящие в предприятие, исчерпывающе описываются как множества событий. Если мы выделим из событийного потока системы все события, реализуемые некоторым субъектом, включая заполнение им каждого пункта анкеты при поступлении на работу, то получим полное описание субъекта. И, аналогично, если соберем все события, генерируемые всеми субъектами относительно некоторого объекта (события регистрации свойств, изменения свойств, включение в другие объекты), то получим исчерпывающее описание объекта – именно как объекта в конкретной сложной системе. Для соблюдения однородности описания объекта (как множества событий ) изначальное приписывания ему свойств также необходимо фиксировать как событие, отнесенное в прошлое, скажем, на момент включения объекта в систему (поставка материалов, оборудования, новый заказ и пр.). Приписываются такие события абсолютному субъекту. То есть в событийном подходе любое утверждение о любом объекте оформляется как утверждение о событии, фиксируемом или инициируемом конкретным субъектом.
Сказанное об объектах в рамках событийного подхода можно сформулировать и в терминах данных: любые данные в субъектно-событийном подходе порождаются событиями и записываются как события. Данные могут как поступать на вход системы (входящие ресурсы, условия заказа), так и генерироваться в системе (модификация ресурсов) – в любом случае они описываются как события приписывания предиката объекту, выполненные конкретным субъектом.
Итак, в субъектно-событийном подходе основным и единственным элементом описания систем является событие: предприятие представляется как поток событий, выполняемых субъектами над объектами, причем сами субъекты и объекты фиксируются в системе как множества связанных с ними событий, большинство из которых совершается в процессе функционирования предприятия, а часть фиксируется на момент включения объектов и субъектов в систему.
Принцип релятивности
Предложенный принцип фиксации субъектов и объектов (как множеств событий) устраняет абсолютизацию их описания, свойственную вещному подходу. Каждый объект включается в действия субъекта с тем набором параметров, которые различимы в этом действии (понятно, что объект «болт» для рабочего, инженера и бухгалтера имеет разные описания, а для директора вообще не существует). Аналогично и отношения между субъектами фиксируются только в той степени, насколько пересекаются их событийные множества: субъекты связаны с одним объектом, включены в одно действие.
Понятно, что и изменение состояния объектов носит относительный, субъектный характер. Если какой-либо субъект не различил событие изменения (или это изменение для него несущественно, к примеру, для дизайнера исправление грамматической ошибки в тексте буклета не является событием), то для него объект не изменил состояние.
Событийный подход снимает проблему однозначности классификации объектов: ресурсов, артефактов, документов, продуктов и пр. Поскольку все различаемые субъектами объекты мыслятся как множества событий, то и нет необходимости абсолютного закрепления их типов: в зависимости от уровня и роли субъекта из общего множества событий, связанных с некоторым объектом, могут быть выделены разные подмножества, которые будут фиксироваться как разные типы — к примеру, как продукт, документ или вообще мусор ( для уборщицы).
Отмеченный релятивный принцип в определении объектов и субъектов важен как для унификации и минимизации описания, так и для оптимизации отношений субъектов и объектов. А самое главное, он позволяет продуцировать и анализировать множество существенно не совпадающих, однако, согласованных на нижнем уровне (на уровне потока событий) описаний системы, выполненных с позиции различных субъектов.
Регистрация потока событий
На начальном этапе моделирования системы регистрация потока событий возможна посредством как составления списков всех событий, связанных с каждым субъектом, так и анализа изменений объектов. В конечном итоге массивы событий, выявленных указанными способами регистрации, должны совпасть. А их несовпадение следует воспринимать как указание на наличие проблем в организации системы: бессмысленные события, у которых нет никаких последствий, или события, выполнение которых строго не зафиксировано за конкретным субъектом.
При достаточном уровне информационного оснащения предприятия события могут фиксироваться автоматически посредством парсинга деятельности субъектов.
(Продолжение в следующей публикации.)
Литература
- Витгенштейн Л. Логико-философский трактат // Витгенштейн Л. Философские работы / Пер. с нем. М. С. Козловой. – М.: Гнозис, 1994. – Ч.1.
- Болдачев А. Темпоральность и философия абсолютного релятивизма – М.: Ленанд, 2011.
- Болдачев А. Введение в темпоральную онтологию. Кто сегодня делает философию в России. Том III / Автор составитель А. С. Нилогов. — М.: ООО «Сам Полиграфист», 2015
- Рассел, Б. История западной философии: в 2 т.– М.: МИФ, 1993
Комментарии (26)
vladob
24.04.2015 01:15Вот оно написано и опубликовано, теперь есть, о чем подискутировать.
Работая со сложными системами хотя бы изредка необходимо попробовать посмотреть на проблему сверху и описать, что что видишь человеческими словами.
Язык математики — это хорошо.
Но из числа прикладных специалистов больше владеет языком слов, чем языком математики.
Поэтому — спасибо автору!
По сути.
Как мне слышится из текста, автор выходит с некоторого рода манифестом некоего абстрактного субъекта АйТи (назовет его «Автоматизатор»), пришедшегодать волюрешить информационные проблемы некоторому абстрактному производству.
С некоторыми положениями этого манифеста я позволю себе не согласиться.
В частности, я не согласен с абсолютизацией позиции бесстрастного наблюдателя у «автоматизатора».
Безусловно, когда мы обращаемся к прикладным проблемам описания сложной системы, скажем, большого современного предприятия, то нас не должны волновать глубинная событийная онтология каждого болта.
В принципе, и количество болтов в системе — счетное, т.е., в принципе — все событийные онтологии учету поддаются.
Вопрос в целесообразности, т.е. — игра ресурсов и рисков.
Скрытый текстНу, может, потому я и остался в науке (очень прикладной), а не мигрировал в АйТи.
Видел красивые системы, не взлетевшие из-за ма-а-леьких болтиков-винтиковboldachev Автор
24.04.2015 16:31To vladob
Спасибо.
В частности, я не согласен с абсолютизацией позиции бесстрастного наблюдателя у «автоматизатора».
Цитируемое вами предложение просто разграничивает философскую онтологию (болт на уровне элементарных событий) от инженерной (учет болта в системе). Наверное, неудачно сформулировал.
kekekeks
24.04.2015 07:11+1Переизобрели Event Sourcing или что?
SBKarr
24.04.2015 09:17Ценность статьи в том, что она обобщает прикладные подходы одну схему. Это одна из задач науки — дать инженерам концепцию в стиле «бери и пользуйся», чтобы не придумывали каждый свой велосипед. А если вспоминать практические применения, то мне вот сразу в голову пришёл write-ahead log.
kekekeks
24.04.2015 14:17В общем, перед тем как писать «научные» статьи, рекомендуется для начала почтитать книжки Мартина Фаулера.
boldachev Автор
24.04.2015 16:14-1To kekekeks
Переизобрели Event Sourcing или что?
Или что. ))
Общее с Event Sourcing только слово «событие».
Event Sourcing про учет событий, а субъектно-событийный подход про моделирование сложных бизнес систем. Но даже без вникания в суть сразу видно формальное различие — в Event Sourcing нет субъекта.lair
24.04.2015 21:24Event Sourcing не про учет событий, Event Sourcing про хранение текущего состояния (агрегата) в виде потока событий (по
этому агрегату).boldachev Автор
24.04.2015 22:25Вполне возможно, это так и называется. Хотя фраза «хранение текущего состояния в виде потока событий» мне кажется предельно странной: «текущее», вроде, подразумевает «единомоментное», и как его сопоставить с «потоком событий», то есть с некоторым распределением событий на промежутке времени, я не знаю. Вроде для хранения текущего состояния достаточен просто перечень атрибутов и не нужны никакие события. Или я, действительно, чего-то не знаю ))
Хотя речь, конечно, не о содержании Event Sourcing, а о том, что он не имеет ни какого отношения к ССП.lair
24.04.2015 23:06Если вы все-таки ознакомитесь с паттерном, то поймете и то, как сопоставить состояние с потоком, и зачем нужно хранение событий вместо атрибутов (точнее, не вместо, а в дополнение к).
И да, после этого вы, я надеюсь, увидите связь между тем, что предлагаете вы, и тем, что озвучивают Янг и Фаулер.boldachev Автор
24.04.2015 23:16-1Если вы все-таки ознакомитесь с паттерном
Это круто. Пойду знакомиться с паттерном. )))
И да, после этого вы, я надеюсь, увидите связь между тем, что предлагаете вы, и тем, что озвучивают Янг и Фаулер.
Да, связь, конечно, есть — все это про события )
vtimashkov
24.04.2015 10:41Отлично!
Очень хотелось бы ещё увидеть такой событийный подход к онтологическому анализу в действие — на примере какого-нибудь гипотетического предприятия (вероятно — в последующих публикациях).
Спасибо!boldachev Автор
24.04.2015 16:19Спасибо.
Работа над проектом уже приближается к программной реализации и по мере получения результатов что-то, конечно, будет опубликовано. А пока лишь общие фразы с примерами на пальцах.
rfq
24.04.2015 14:25Пора застолбить за собой термин (пока не застолбили другие) — «потоково-структурный дуализм», по аналогии с корпускулярно-волновым. Само понятие давно используется программистами — например, база данных может быть представлена как снапшот, или как лог транзакций, или совместно. Поток событий формирует структуру, изменения структуры формируют поток событий. Этот дуализм просматривается везде — и в объектно ориентированном программировании, и в системах управления версиями исходного кода. Беда однако в том, что обычно упор делается на одно представление, а второе рассматривается как необходимое зло, которое пытаются замести под ковер. Но насколько бы логичнее, например, рассматривать службы очередей сообщений совместно с базами данных, объединеных единым управлением транзакциями, а не отрывать их друг от друга сначала, а потом пытаться склеивать.
boldachev Автор
24.04.2015 16:26Пора застолбить за собой термин (пока не застолбили другие) — «потоково-структурный дуализм»
Да, хороший термин )) В философской событийной онтлогии ему соответствует представление о преобразовании (редукции) темпоральной сложности в пространственную (структурную) — и обратно. И в описанном в тексте подходе подразумеваются операции переходов между событийным и объектным описанием.
vvagr
27.04.2015 02:39+1Кажется, принципиальной новацией по сравнению с философскими и онтологическими основами RDF является только ввод обязательного «субъекта» события, который превращает тройку в четвёрку? Да и то обязательность его относительна, ибо есть «абсолютный» субъект.
boldachev Автор
27.04.2015 10:37Давайте разбираться.
1-3. Да, основу события, его содержание составляет факт, который записывается триплетом RDF (хотя там есть некоторые нюансы).
4. Если речь идет не о механизме, а о сложной бизнес-системе, то наличие субъекта принципиально (с привлечением абсолютного субъекта описываются только внешние для системы события — в основном свойства поступающих на вход объектов). Привязка событий к субъектам дает: полное описание субъектов в системе, структуру взаимодействий субъектов, представление системы (и отдельных объектов) с точки зрения субъекта/роли того или иного уровня.
А теперь то, что еще дополняет имеющуюся четверку:
5. Метка времени. События в отличии от голого RDF последовательны во времени. По сути, отпадает необходимость в 4D онтологии — временные части описываются через события смены состояния объекта, фиксируемые/производимые субъектом. Упрощается запись регулярных списков.
6. Условная (логическая) связь событий. В тексте на эту позицию формата написано не было, только намек: «факт наличия (или отсутствия) события является условием для выполнения события другим субъектом или этим же субъектом, но с другим объектом». Так вот, запись события содержит еще и логическое условие его свершения — логическое выражение из других событий (в минимальном варианте просто предыдущее событие), при true значении которого событие должно выполнится.
Итак, формат события: [Subject][RDF][IF(e1,e2,e3..)][Time]
Iceg
Ну как-то так себе…
А потом:
То есть событие не просто происходит с чем-то, но и кем-то инициализировано! Только я здесь вижу противоречие?
vladob
Я с вами.
В том смысле, что противоречия есть.
Я бы «прицепился» к «полноте информации».
Полнота информации — это когда мы можем предсказать состояние каждого объекта (а не статистическое распределение состояний).
Могу ошибаться, но по моим ощущениям, именно здесь происзодит водораздел между «сложными» и «не очень» системами.
boldachev Автор
Да фраза «полученный событийный поток содержит полную информацию о системе» не о том, что мы имеем исчерпывающее описания всех элементов системы, включая субъектов, а утверждение, что их этого потока мы можем извлечь все данные о системе.
Наверное, слово «информация» тут не самое удачное.
Duduka
Как раз здесь нет противоречия: Есть система, она полна по построению (если вводите внешнее наблюдение или инициализацию, то это уже не система, а компонент модели). События происходят не с чем-то(кусками), а со всей системой, она из одного множества переходит в другое (можно считать ее множеством состояний переходов (событий) ), нет понятия одновременности, но есть череда событий.
Достаточно симпотяжная концепция, как мне кажется, но настаивать не буду. Мы так погрязли в проблеме организации одновременности события(атомарности), что возможно стоит «копать» в другую сторону.
Iceg
пиветру? То есть в бесконечно сложной системе любое бесконечно малое событие требует держать в памяти и всю систему?при спорности подхода (с моей т.з.), хотя бы в чём его преимущество? Не понимаю. Для каких задач выгоднее использовать именно такой подход? Не «можно попытаться притянуть за уши», как пример с болтом, а реально выгоднее. Возможно, я пытаюсь придумать как это использовать на своих задачах, куда оно не применимо, а есть другие, где такой подход ляжет идеально?
Duduka
///То есть в бесконечно сложной системе любое бесконечно малое событие требует держать в памяти и всю систему?
или использовать статистический подход, как Вам больше нравится.
///Для каких задач выгоднее использовать именно такой подход?
Так мы уже уперлись в «стену» объектной модели, если поведение регулярно, простая система минимальных отношений, и описывается быстро сходящимися рядами, то можно использовать объектные модели, выделяя базисы. А если базисов — континум, поверхность неустойчива… какой толк от объектов если их нельзя «развязать»(см. решения задач «трех тел» и подобных)?
boldachev Автор
To Duduka
Да, спасибо. Субъектно-событийный подход появился как побочный продукт сугубо философской онтологии, в которой основными являются концепт распределенной во времени (темпоральная) системы и представление о неточечности сейчас.
boldachev Автор
Конечно, противоречие. Поскольку первая фраза относится к философской онтологии самого высокого/глубокого уровня, да еще написана сто лет назад Бертраном Расселом. А вторая взята из описания прикладного метода описания сложных инженерных систем. Специально, чтобы разграничить эти две онтологии (между которыми есть связь только преемственная, а не логическая связь) в текст было вставлено замечание: "нас не должна волновать глубинная событийная онтология каждого болта".