Александр Болдачев, 2015

Вещная (объектная) онтология


Традиционным для современного человека – и в быту, и в науке, и в философии – является вещное мышление, для которого свойственно описание мира как множества пространственно локализованных объектов-вещей. Сами вещи определяются через совокупность предикатов. Взаимосвязь объектов описывается через отношения и классификации, что формально фиксируется в виде таблиц и графов. Современные методы описания/моделирования сложных систем придерживаются вещной онтологии: сначала декомпозиция – выделение объектов, затем их классификация с приписыванием объектам свойств и установлением между ними отношений («часть-целое», «род-вид», «зависит» и т.д.)

Событийная онтология


Однако в философии, помимо традиционной вещной онтологии, известен еще один, хотя пока еще и не столь распространенный, подход к описанию мира – событийный.  Событийного взгляда на уровне логических, языковых систем придерживался Людвиг Витгенштейн. В начале своего знаменитого «Логико-философского трактата» он констатировал: «Мир – целокупность фактов, а не предметов.… Происходящее, факт — существование со-бытий». Предельно радикальный событийный подход, на уровне основ онтологии, впервые предложил  Бертран Рассел, констатировав: «мир состоит из некоторого числа, возможно конечного, возможно бесконечного, сущностей… Каждая из этих сущностей может быть названа “событием”». Да, мы можем описать, скажем, биологический организм как пространственную структуру из молекул. Но, с другой стороны, можно представить его и как систему событий химических взаимодействий этих молекул, распределенных на некотором промежутке времени. При этом понятно, что событийное описание даст нам более полное понимание организма по сравнению с чисто структурным анализом. Двигаясь дальше вглубь вещей, можно и молекулы описать не как “шарики на палочках”, а как совокупность событий взаимодействия атомов – понятно же, что структура, пространственное положение элементов молекулы вторичны относительно событий электронных обменов. Ну и сами атомы следует описывать как системы актов-событий взаимодействия частиц. В конечном итоге Рассел, анализируя представления квантовой теории о строении материи, приходит к выводу: «материя – это просто удобные способы группирования событий». А на законный вопрос «событий чего? событий происходящих с чем?» отвечает: «событий, которые просто случаются, а не случаются “с” материей или “с” чем-то еще».

Компьютерная аналогия


Для понимания сути событийной онтологии нам может помочь компьютерная аналогия. Что такое «мир» компьютера на элементарном (процессорном) уровне? Непрерывный поток простых событий: 0100100100010010010… И ничего больше. Но на другом уровне – уровне интерфейса – некоторые последовательности этого потока выглядят как вполне себе вещи: элементы интерфейса, буквы, герои игры. Каждой «вещи», явленной нам на экране, соответствует некоторая, не обязательно непрерывная, последовательность потока процессорных событий (единичек и нулей). И что мы делаем, когда хотим изменить эти вещи? Правильно, добавляем в исходный поток новые события. Итак, перед нами только события: системы событий и события изменения систем событий, из которых на уровне интерфейса могут быть сформированы новые вещи. Особо зафиксируем:  никаких вещей на уровне элементарного потока нет – они возникают только при приложении к этому потоку шаблонов. Которые, кстати, сами являются распределенными во времени структурами событий этого же потока, поскольку ничего другого в мире компьютера нет.
Из этого философского введения мы должны вынести простую мысль: наш мир можно рассматривать и  как множество вещей, и как поток событий, при этом вещи определяются через множества этих событий.

Событийное описание сложных систем


Безусловно, когда мы обращаемся к прикладным проблемам описания сложной системы, скажем, большого современного предприятия, то нас не должна волновать глубинная (на уровне событий взаимодействия элементарных частиц) событийная онтология каждого болта. Нас, прежде всего, должно интересовать участие болта в функционировании системы, то есть события: «доставили на склад», «подвезли к месту сборки», «ввернули». Причем не просто факт участия, а содержательное его наполнение, с описанием тех свойств, которые были существенны для каждого события. К примеру, для реализации события «подвезли к месту сборки» важен вес болта – нужна ли тележка или можно в коробку болтов в кармане принести. Событие «ввернуть»  осуществимо если резьба болта соответствует резьбе детали. И получается, если мы зафиксируем все события, в которых участвовал болт, то получим полное его описание. Причем не абстрактное, а конкретное и исчерпывающее описание того, как «выглядит» болт для конкретной системы, какими свойствами, в какие моменты и как он участвует в функционировании системы. Если нет события, в котором фиксировался бы цвет болта, то значит в описании болта (для этой системы) и не будет такого свойства, как «цвет». Таким образом, используя предложенный событийный подход, то есть фиксируя все события, в которых  появлялись, измерялись, перемещались, применялись, изменялись и т.д. объекты, мы получим полное описание этих объектов в анализируемой системе.
На первый взгляд, может показаться, что речь идет лишь о некой разновидности формы учета, способе оптимизации записи параметров объектов. Однако давайте рассмотрим, что кроется за казалось бы простой фразой «фиксация события». Возьмем, к примеру, событие «ввернули болт». Здесь важно обратить внимание на то, что в этом событии участвует не один только болт (A), а еще такие объекты, как соединяемые детали (B и C) и субъект (S), который и реализует это событие. (Здесь обязательно следует сделать уточнение, что речь идет не об акте, не о процедуре, не о действии, а именно о событии «ввернули болт», то есть о фиксации факта достижения результата.) То есть полностью наше событие должно быть названо так «субъект S соединил болтом A детали B и C».  Это значит, что запись каждого события системы содержит в себе не только информацию о задействованных объектах, но и данные об их отношениях (объекты A, B и C с момента указанного события образуют целое D) и плюс описание субъекта (S произвел объект  D).  
Итак, фиксация всех событий, реализованных в некоторой сложной системе, должна дать нам исчерпывающее (в рамках данной системы) описание каждого объекта, каждого субъекта и их отношений. По сути, полученный событийный поток содержит полную информацию о системе.

Принцип выделения событий


Понятно, что для анализа функционирования сложной системы, скажем, того же предприятия нет необходимости фиксировать каждое событие на уровне технологических процессов. Скажем, закручивание болта конкретным субъектом в событийном потоке должно быть  представлено двумя событиями: «получение A, B и C», «сдача детали D», а не событиями каждого поворота ключа. Можно указать следующие формальные  условия, выполнение которых определяет необходимость и достаточность включения некоего события в событийный поток:

  1. событие выполняется или регистрируется одним из субъектов системы;
  2. событие выполняется над одним из объектов системы;
  3. факт наличия (или отсутствия) события является условием для выполнения события другим субъектом или этим же субъектом, но с другим объектом.

Из приведенных условий следует, что событие определяется посредством  указания объекта (объектов), с которым оно происходит, и субъекта, его выполнившего или зарегистрировавшего. В качестве субъекта может выступать конкретный человек, роль, коллектив, а так же программные агенты, датчики и пр. События, которые влияют на поведение системы, но не связны ни с одним из ее субъектов следует приписывать абсолютному субъекту. Именно потому, что любое событие в системе является таковым только при условия его связи с конкретным субъектом, описываемый подход называется не просто событийным, а субъектно-событийным.

Принцип унификации


Наиболее важным и интересным моментом субъектно-событийного подхода является  принцип унификации описания: все субъекты и все объекты, входящие в предприятие, исчерпывающе описываются как множества событий. Если мы выделим из событийного потока системы все события, реализуемые некоторым субъектом, включая заполнение им каждого пункта анкеты при поступлении на работу, то получим полное описание субъекта. И, аналогично,  если соберем все события, генерируемые всеми субъектами относительно некоторого объекта (события регистрации свойств, изменения свойств, включение в другие объекты), то получим исчерпывающее описание объекта – именно как объекта в конкретной сложной системе. Для соблюдения однородности описания объекта (как множества событий ) изначальное приписывания ему свойств также необходимо фиксировать как событие, отнесенное в прошлое, скажем, на момент включения объекта в систему (поставка материалов, оборудования, новый заказ и пр.). Приписываются такие события абсолютному субъекту. То есть в событийном подходе любое утверждение о любом объекте оформляется как утверждение о событии, фиксируемом или инициируемом конкретным субъектом.
Сказанное об объектах в рамках событийного подхода можно сформулировать и в терминах данных: любые данные в субъектно-событийном подходе порождаются событиями и записываются как события. Данные могут как поступать на вход системы (входящие ресурсы, условия заказа), так и генерироваться в системе (модификация ресурсов) – в любом случае они описываются как события приписывания предиката объекту, выполненные конкретным субъектом.
Итак, в субъектно-событийном подходе основным и единственным элементом описания систем является событие: предприятие представляется как поток событий, выполняемых субъектами над объектами, причем сами субъекты и объекты фиксируются в системе как множества связанных с ними событий, большинство из которых совершается в процессе функционирования предприятия, а часть фиксируется на момент включения объектов и субъектов в систему.

Принцип релятивности


Предложенный принцип фиксации субъектов и объектов (как множеств событий) устраняет абсолютизацию их описания, свойственную вещному подходу. Каждый объект включается в действия субъекта с тем набором параметров, которые различимы в этом действии (понятно, что объект «болт» для рабочего, инженера и бухгалтера имеет разные описания, а для директора вообще не существует). Аналогично и отношения между субъектами фиксируются только в той степени, насколько пересекаются их событийные множества: субъекты связаны с одним объектом, включены в одно действие.
Понятно, что и изменение состояния объектов носит относительный, субъектный характер.  Если какой-либо субъект не различил событие изменения (или это изменение для него несущественно, к примеру, для дизайнера исправление грамматической ошибки в тексте буклета не является событием), то для него объект не изменил состояние.
Событийный подход снимает проблему однозначности классификации объектов: ресурсов, артефактов, документов, продуктов и пр. Поскольку все различаемые субъектами объекты  мыслятся как множества событий, то и нет необходимости абсолютного закрепления их типов: в зависимости от уровня и роли субъекта из общего множества событий, связанных с некоторым объектом, могут быть выделены разные подмножества, которые будут фиксироваться как разные типы — к примеру, как продукт,  документ или вообще мусор ( для уборщицы).
Отмеченный  релятивный принцип в определении объектов и субъектов важен как для унификации и минимизации описания, так и для оптимизации отношений субъектов и объектов. А самое главное, он позволяет продуцировать и анализировать множество существенно не совпадающих, однако, согласованных на нижнем уровне (на уровне потока событий) описаний системы, выполненных с позиции различных субъектов.

Регистрация потока событий


На начальном этапе моделирования системы регистрация потока событий возможна посредством как составления списков всех событий, связанных с каждым субъектом, так и анализа изменений объектов. В конечном итоге массивы событий, выявленных указанными способами регистрации, должны совпасть. А их несовпадение следует воспринимать как указание на наличие проблем в организации системы: бессмысленные события, у которых нет никаких последствий, или события, выполнение которых строго не зафиксировано за конкретным субъектом.

При достаточном уровне информационного оснащения предприятия события могут фиксироваться автоматически посредством парсинга деятельности субъектов.

(Продолжение в следующей публикации.)

Литература


  1. Витгенштейн Л. Логико-философский трактат // Витгенштейн Л. Философские работы / Пер. с нем. М. С. Козловой. – М.: Гнозис, 1994. – Ч.1.
  2. Болдачев А. Темпоральность и философия абсолютного релятивизма – М.: Ленанд, 2011.
  3. Болдачев А. Введение в темпоральную онтологию. Кто сегодня делает философию в России. Том III / Автор составитель А. С. Нилогов. — М.: ООО «Сам Полиграфист», 2015
  4. Рассел, Б. История западной философии: в 2 т.– М.: МИФ, 1993

Комментарии (26)


  1. Iceg
    24.04.2015 00:32
    +1

    Ну как-то так себе…

    событий, которые просто случаются, а не случаются “с” материей или “с” чем-то еще

    А потом:
    Итак, фиксация всех событий, реализованных в некоторой сложной системе, должна дать нам исчерпывающее (в рамках данной системы) описание каждого объекта, каждого субъекта и их отношений. По сути, полученный событийный поток содержит полную информацию о системе.

    То есть событие не просто происходит с чем-то, но и кем-то инициализировано! Только я здесь вижу противоречие?


    1. vladob
      24.04.2015 01:22
      +1

      Я с вами.

      В том смысле, что противоречия есть.
      Я бы «прицепился» к «полноте информации».
      Полнота информации — это когда мы можем предсказать состояние каждого объекта (а не статистическое распределение состояний).

      Могу ошибаться, но по моим ощущениям, именно здесь происзодит водораздел между «сложными» и «не очень» системами.


      1. boldachev Автор
        24.04.2015 15:52

        Полнота информации — это когда мы можем предсказать состояние каждого объекта (а не статистическое распределение состояний).
        Так ведь речь идет о полном потоке событий, а не множестве событий данных в некий момент времени. То есть задача «предсказать» и не ставится.

        Да фраза «полученный событийный поток содержит полную информацию о системе» не о том, что мы имеем исчерпывающее описания всех элементов системы, включая субъектов, а утверждение, что их этого потока мы можем извлечь все данные о системе.

        Наверное, слово «информация» тут не самое удачное.


    1. Duduka
      24.04.2015 13:43

      Как раз здесь нет противоречия: Есть система, она полна по построению (если вводите внешнее наблюдение или инициализацию, то это уже не система, а компонент модели). События происходят не с чем-то(кусками), а со всей системой, она из одного множества переходит в другое (можно считать ее множеством состояний переходов (событий) ), нет понятия одновременности, но есть череда событий.

      Достаточно симпотяжная концепция, как мне кажется, но настаивать не буду. Мы так погрязли в проблеме организации одновременности события(атомарности), что возможно стоит «копать» в другую сторону.


      1. Iceg
        24.04.2015 15:14

        События происходят не с чем-то(кусками), а со всей системой
        То есть замечательная инкапсуляция идёт по пи ветру? То есть в бесконечно сложной системе любое бесконечно малое событие требует держать в памяти и всю систему?

        она из одного множества переходит в другое (можно считать ее множеством состояний переходов (событий) )
        при спорности подхода (с моей т.з.), хотя бы в чём его преимущество? Не понимаю. Для каких задач выгоднее использовать именно такой подход? Не «можно попытаться притянуть за уши», как пример с болтом, а реально выгоднее. Возможно, я пытаюсь придумать как это использовать на своих задачах, куда оно не применимо, а есть другие, где такой подход ляжет идеально?


        1. Duduka
          25.04.2015 07:46

          ///То есть в бесконечно сложной системе любое бесконечно малое событие требует держать в памяти и всю систему?
          или использовать статистический подход, как Вам больше нравится.
          ///Для каких задач выгоднее использовать именно такой подход?
          Так мы уже уперлись в «стену» объектной модели, если поведение регулярно, простая система минимальных отношений, и описывается быстро сходящимися рядами, то можно использовать объектные модели, выделяя базисы. А если базисов — континум, поверхность неустойчива… какой толк от объектов если их нельзя «развязать»(см. решения задач «трех тел» и подобных)?


      1. boldachev Автор
        24.04.2015 15:58

        To Duduka

        Да, спасибо. Субъектно-событийный подход появился как побочный продукт сугубо философской онтологии, в которой основными являются концепт распределенной во времени (темпоральная) системы и представление о неточечности сейчас.


    1. boldachev Автор
      24.04.2015 15:42

      Конечно, противоречие. Поскольку первая фраза относится к философской онтологии самого высокого/глубокого уровня, да еще написана сто лет назад Бертраном Расселом. А вторая взята из описания прикладного метода описания сложных инженерных систем. Специально, чтобы разграничить эти две онтологии (между которыми есть связь только преемственная, а не логическая связь) в текст было вставлено замечание: "нас не должна волновать глубинная событийная онтология каждого болта".


  1. vladob
    24.04.2015 01:15

    Вот оно написано и опубликовано, теперь есть, о чем подискутировать.
    Работая со сложными системами хотя бы изредка необходимо попробовать посмотреть на проблему сверху и описать, что что видишь человеческими словами.
    Язык математики — это хорошо.
    Но из числа прикладных специалистов больше владеет языком слов, чем языком математики.
    Поэтому — спасибо автору!

    По сути.

    Как мне слышится из текста, автор выходит с некоторого рода манифестом некоего абстрактного субъекта АйТи (назовет его «Автоматизатор»), пришедшего дать волю решить информационные проблемы некоторому абстрактному производству.

    С некоторыми положениями этого манифеста я позволю себе не согласиться.

    В частности, я не согласен с абсолютизацией позиции бесстрастного наблюдателя у «автоматизатора».

    Безусловно, когда мы обращаемся к прикладным проблемам описания сложной системы, скажем, большого современного предприятия, то нас не должны волновать глубинная событийная онтология каждого болта.


    В принципе, и количество болтов в системе — счетное, т.е., в принципе — все событийные онтологии учету поддаются.
    Вопрос в целесообразности, т.е. — игра ресурсов и рисков.

    Скрытый текст
    Ну, может, потому я и остался в науке (очень прикладной), а не мигрировал в АйТи.
    Видел красивые системы, не взлетевшие из-за ма-а-леьких болтиков-винтиков


    1. boldachev Автор
      24.04.2015 16:31

      To vladob
      Спасибо.

      В частности, я не согласен с абсолютизацией позиции бесстрастного наблюдателя у «автоматизатора».
      Цитируемое вами предложение просто разграничивает философскую онтологию (болт на уровне элементарных событий) от инженерной (учет болта в системе). Наверное, неудачно сформулировал.


  1. kekekeks
    24.04.2015 07:11
    +1

    Переизобрели Event Sourcing или что?


    1. SBKarr
      24.04.2015 09:17

      Ценность статьи в том, что она обобщает прикладные подходы одну схему. Это одна из задач науки — дать инженерам концепцию в стиле «бери и пользуйся», чтобы не придумывали каждый свой велосипед. А если вспоминать практические применения, то мне вот сразу в голову пришёл write-ahead log.


      1. lair
        24.04.2015 09:32

        Все хорошо, но при чем здесь наука?


      1. kekekeks
        24.04.2015 14:17

        В общем, перед тем как писать «научные» статьи, рекомендуется для начала почтитать книжки Мартина Фаулера.


        1. vtimashkov
          24.04.2015 15:10

          Какие конкретно?


    1. boldachev Автор
      24.04.2015 16:14
      -1

      To kekekeks

      Переизобрели Event Sourcing или что?
      Или что. ))
      Общее с Event Sourcing только слово «событие».

      Event Sourcing про учет событий, а субъектно-событийный подход про моделирование сложных бизнес систем. Но даже без вникания в суть сразу видно формальное различие — в Event Sourcing нет субъекта.


      1. lair
        24.04.2015 21:24

        Event Sourcing не про учет событий, Event Sourcing про хранение текущего состояния (агрегата) в виде потока событий (по
        этому агрегату).


        1. boldachev Автор
          24.04.2015 22:25

          Вполне возможно, это так и называется. Хотя фраза «хранение текущего состояния в виде потока событий» мне кажется предельно странной: «текущее», вроде, подразумевает «единомоментное», и как его сопоставить с «потоком событий», то есть с некоторым распределением событий на промежутке времени, я не знаю. Вроде для хранения текущего состояния достаточен просто перечень атрибутов и не нужны никакие события. Или я, действительно, чего-то не знаю ))

          Хотя речь, конечно, не о содержании Event Sourcing, а о том, что он не имеет ни какого отношения к ССП.


          1. lair
            24.04.2015 23:06

            Если вы все-таки ознакомитесь с паттерном, то поймете и то, как сопоставить состояние с потоком, и зачем нужно хранение событий вместо атрибутов (точнее, не вместо, а в дополнение к).

            И да, после этого вы, я надеюсь, увидите связь между тем, что предлагаете вы, и тем, что озвучивают Янг и Фаулер.


            1. boldachev Автор
              24.04.2015 23:16
              -1

              Если вы все-таки ознакомитесь с паттерном
              Это круто. Пойду знакомиться с паттерном. )))
              И да, после этого вы, я надеюсь, увидите связь между тем, что предлагаете вы, и тем, что озвучивают Янг и Фаулер.
              Да, связь, конечно, есть — все это про события )


  1. vtimashkov
    24.04.2015 10:41

    Отлично!
    Очень хотелось бы ещё увидеть такой событийный подход к онтологическому анализу в действие — на примере какого-нибудь гипотетического предприятия (вероятно — в последующих публикациях).
    Спасибо!


    1. boldachev Автор
      24.04.2015 16:19

      Спасибо.
      Работа над проектом уже приближается к программной реализации и по мере получения результатов что-то, конечно, будет опубликовано. А пока лишь общие фразы с примерами на пальцах.


  1. rfq
    24.04.2015 14:25

    Пора застолбить за собой термин (пока не застолбили другие) — «потоково-структурный дуализм», по аналогии с корпускулярно-волновым. Само понятие давно используется программистами — например, база данных может быть представлена как снапшот, или как лог транзакций, или совместно. Поток событий формирует структуру, изменения структуры формируют поток событий. Этот дуализм просматривается везде — и в объектно ориентированном программировании, и в системах управления версиями исходного кода. Беда однако в том, что обычно упор делается на одно представление, а второе рассматривается как необходимое зло, которое пытаются замести под ковер. Но насколько бы логичнее, например, рассматривать службы очередей сообщений совместно с базами данных, объединеных единым управлением транзакциями, а не отрывать их друг от друга сначала, а потом пытаться склеивать.


    1. boldachev Автор
      24.04.2015 16:26

      Пора застолбить за собой термин (пока не застолбили другие) — «потоково-структурный дуализм»
      Да, хороший термин )) В философской событийной онтлогии ему соответствует представление о преобразовании (редукции) темпоральной сложности в пространственную (структурную) — и обратно. И в описанном в тексте подходе подразумеваются операции переходов между событийным и объектным описанием.


  1. vvagr
    27.04.2015 02:39
    +1

    Кажется, принципиальной новацией по сравнению с философскими и онтологическими основами RDF является только ввод обязательного «субъекта» события, который превращает тройку в четвёрку? Да и то обязательность его относительна, ибо есть «абсолютный» субъект.


    1. boldachev Автор
      27.04.2015 10:37

      Давайте разбираться.

      1-3. Да, основу события, его содержание составляет факт, который записывается триплетом RDF (хотя там есть некоторые нюансы).

      4. Если речь идет не о механизме, а о сложной бизнес-системе, то наличие субъекта принципиально (с привлечением абсолютного субъекта описываются только внешние для системы события — в основном свойства поступающих на вход объектов). Привязка событий к субъектам дает: полное описание субъектов в системе, структуру взаимодействий субъектов, представление системы (и отдельных объектов) с точки зрения субъекта/роли того или иного уровня.

      А теперь то, что еще дополняет имеющуюся четверку:

      5. Метка времени. События в отличии от голого RDF последовательны во времени. По сути, отпадает необходимость в 4D онтологии — временные части описываются через события смены состояния объекта, фиксируемые/производимые субъектом. Упрощается запись регулярных списков.

      6. Условная (логическая) связь событий. В тексте на эту позицию формата написано не было, только намек: «факт наличия (или отсутствия) события является условием для выполнения события другим субъектом или этим же субъектом, но с другим объектом». Так вот, запись события содержит еще и логическое условие его свершения — логическое выражение из других событий (в минимальном варианте просто предыдущее событие), при true значении которого событие должно выполнится.

      Итак, формат события: [Subject][RDF][IF(e1,e2,e3..)][Time]