Трудности в моделировании операций стандартными способами. Моделирование 4-объектов, постановка задачи

При написании этой статьи я сделал все возможное, чтобы сделать ее простой для чтения. Однако, в ней содержится очень сложный и нетривиальный вывод — почему методы моделирования операций, которые мы встречаем почти в каждой нотации, не дают нам удовлетворения. Я не видел подобного анализа нигде, даже в книге Криса Партриджа, которую я очень люблю: Business Objects: Re-Engineering for Re-Use. Поэтому я надеюсь, что статья будет легка и полезна одновременно.

6273848b306f45c6a37e8b32a74524cc.jpg

Все модели, которые мы строим, должны так или иначе моделировать 4-х мерное пространство-время, потому что именно так мы представляем себе окружающий нас мир. Об этом рассказано в книге Криса Партриджа. Даже то, что кажется, не имеет отношения к 4-пространству, при внимательном рассмотрении оказывается оным. Правда, не всегда существующим в реальности, иногда — это воображаемый нами мир. Всем, кому интересно, как это происходит, рекомендую внимательно прочитать эту книгу. Однако, советую не обращать внимания на определение события в этой книге, — оно дано неверно.
Например, что такое болт? Это 4-х мерный объект, который ограничен в пространстве-времени определенными границами. Для моделирования болта существуют нотации, которые моделируют эти границы. Например, чертеж болта моделирует поверхность, которая ограничивает 3-х мерный объем. Добавив к этому чертежу еще 6 координат, зависящих от времени, мы получим модель поверхности 4-Д пространства — времени, которая моделирует болт.

Однако, что такое операция? Это — тоже 4-х мерный объект, который также, как и болт ограничен определенными границами в пространстве и во времени. Правда, представить себе операцию как 4-объект намного сложнее. Существуют три причины, по которым нам сложно это сделать.

Во-первых, в отличие от болта операция имеет менее плотное строение. Может ли болт пересекаться в пространстве-времени с другим болтом? Опыт подсказывает, что нет. Операции, в отличие от болтов, менее плотные. Поэтому операции могут пересекаться в одном пространстве — времени. Если бы операции были настолько же плотные, как и болт, то нам было бы проще их представить. Но, с другой стороны, ошибкой было бы думать, что болт не может пересекаться с другими объектами. Например, болт одновременно может существовать в одном пространстве с объектом, который состоит из темной материи. И, если бы мы воспринимали темную материю своими органами чувств, мы бы сказали, что болт не является плотным объектом, и тогда представить себе болт в качестве плотного объекта было бы затруднительно.

Во-вторых, восприятие нами операции как четырехмерного объекта затруднено тем, что в нашем языке разделены описания трехмерного пространства и времени. Поскольку мы не можем перемещаться во времени назад, эта четвертая координата нашего мира выглядит для нас иначе, чем пространственные координаты. Поэтому в языке представление трех координат пространства отличается от представления четвертой координаты — времени, и те объекты, форма и состав которых меняется во времени, воспринимаются нами иначе, чем те объекты, форма и состав которых во времени не меняются. Например, форма и состав болта во времени неизменны. Поэтому мы можем представить себе болт как 3-объект. Представить себе операцию так же просто уже не получается, потому что ее форма и состав меняются со временем. Однако, и болт с точки зрения микронаблюдателя, который мог бы видеть квантовые скачки, выглядел бы не менее странно: как объект, чья форма и состав постоянно меняются. Такому микронаблюдателю представить себе болт в качестве статичного объекта было бы также трудно.

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

Как я уже сказал ранее, болт и операция — это четырехмерные объекты в пространственно-временном континууме. Чем же тогда отличаются болт и операция? Не более, чем способами описания одного и второго. Мне давно хотелось поставить общую задачу и понять, какие способы описания 4-объектов существуют вообще, и с какими типами объектов они обычно ассоциируются. Для этого надо было сделать два шага: сначала сделать равноправными время и пространство, создать язык описания такого мира и классифицировать способы описания этого мира, а затем полученные результаты отмаппить обратно в стандартные языковые паттерны. Я сделал это, и в следующих статьях постараюсь изложить.

Замечу, что для физики равноправие между пространственными координатами и временем давно является нормой. Недавно это равноправие для себя открыли и философы, но до сих пор это знание недоступно инженерам-онтологам. Давайте же попробуем воспользоваться этим представлением и посмотреть, к каким открытиям это нас приведет.

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

  • 6 января 2017 в 16:55

    0

    Все модели, которые мы строим, должны так или иначе моделировать 4-х мерное пространство-время, потому что именно так мы представляем себе окружающий нас мир.

    Серьезно?


    Любимое всеми разработчиками abstract syntax tree: модель синтаксической структуры кода, не имеющая ни пространственных, ни временных измерений.


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


    Модели нотного текста (не путать с версткой) тоже не имеют пространственных измерений, да и время там, прямо скажем, весьма условное.


    Модель зрительских предпочтений (и вообще рекомендательные системы): никаких пространственных измерений. Зато там может быть n-мерное пространство, моделирующее признаки.


    Продолжать, или и так уже понятно?


    Иначе, если мы скажем, что что-то неживое совершает операцию, мы, тем самым, наделяем неживое способностью к разумной деятельности, то есть, одушевляем предметы.

    Опять? Вы придумали какое-то свое определение операции, требующее от актора разумности, а теперь на его основании говорите, что нельзя говорить, что неразумное не может совершать операции? Но почему вы думаете, что ваше определение операции верно?

    • 6 января 2017 в 18:20

      +1

      Банковский счет (точнее, приход-уход): модель денежных сумм, не имеющая пространственных измерений.
      Я читал эту книгу (про Business Objects), но честно говоря, многие вещи в ней не понимаю. Слишком много информации, сложная нотация на диаграммах.

      На 51-ой странице как-раз немного говориться про счета:

      The problem arises because data does not
      necessarily map onto things (or process, changes). To see how this causes a problem consider
      the account movements again. Ask yourself whether the individual account movement
      records represent a thing or a change in the business? The correct answer is they
      represent changes. For example, if I pay £100 into my bank account, my paying in is not a
      thing but a change. And the change is recorded (represented) by data in the form of an
      account movement record. Once we understand this, we no longer draw the account
      movement in our business models as data, but as a change.

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

      Аналогично, AST и т.п. — это сугубо информационные сущности, которые с помощью данного подхода не моделируются. В книге очень часто встречается слово «physical». На сколько я понимаю, авторы материалисты :) У них на первом месте физический мир, а на втором — его отображение в информационных системах.

      • 6 января 2017 в 18:28

        0

        Я не могу сказать, что книга понятная. Ее можно прочитать, чтобы потом сделать свои выводы самостоятельно. Мне на это понадобился не один год. Однако, счет — это довольно простая вещь — это запись в договоре на обслуживание, не более того. То есть, это информационный объект, ярлык, который вешается на каждую транзакцию, моделируя контрагента, к которому относится транзакция. То есть, это модель предприятия с точки зрения банка.
      • 6 января 2017 в 18:37

        0

        На сколько я понимаю, банковский счет не является «бизнес-объектом» или объектом реального мира.

        Мне не интересны «объекты реального мира», мне интересен бизнес, с которым пришел клиент. И в его терминологии, в его бизнесе — банковский счет является бизнес-объектом.


        Иными словами, при использовании такого подхода мы моделируем владельца счета, события, связанные с изменением счета.

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


        А сам счет в реальности не существует и в «бизнес-модели» мы его вообще не моделируем.

        Это, опять-таки, ошибка — счет есть (потому что приход-уход происходит по счету), и в модели он, как следствие, тоже есть.


        Аналогично, AST и т.п. — это сугубо информационные сущности, которые с помощью данного подхода не моделируются.

        Это значит, что подход из BORO — как вы его описываете, я не уверен, что это полностью верно — не применим для описания чисто информационных сущностей, но подход из BORO, опять-таки, не единственный. Поэтому утверждение »все модели, которые мы строим, должны так или иначе моделировать 4-х мерное пространство-время» — неверно.

        • 6 января 2017 в 19:20

          +2

          Да, так и есть. Клиенты часто мыслят информационными сущностями. Например, документами: платежка, чек, кассовый ордер, паспорт, свидетельство о регистрации и т.п. Если вы начнёте им что-то рассказывать о том, что документы — это всего-навсего набор сведений о неких объектах реального мира, то вас не поймут. Например, в реальности есть человек. Сведения о нём могут указываться в свидетельстве о рождении, паспорте, военном билете, страховом свидетельстве, водительских правах и т.д.

          Для «клиента» существуют только эти документы. Если нет документа, то для них нет и человека. Авторы же BORO говорят, что это неправильный подход. В первую очередь должны моделироваться реальные объекты. При этом человека они представляют в виде такого 4-мерного червяка, растянутого во времени от рождения до смерти. А затем уже можно моделировать документы, структуру записей в БД и т.п. В этом и заключается «Re-Engineering»: забудьте о документах и прочих частностях, думайте о реальных объектах. А «Re-Use» заключается в том, что такие модели меньше подвержены изменениям, их проще повторно использовать при разработке разных информационных систем.

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

          На сколько я понимаю BORO, они претендуют на создание совершенно новой парадигмы моделирования. Типа со времен Аристотеля человечество сформировало какую-то не очень правильную парадигму моделирования, из-за которой модели получаются «плохие» (в книге это детально описано, долго приводить примеры). А они предлагают лучшую парадигму. Т.е. они замахиваются не на какие-нибудь RUP, ARIS и иже с ними, а на парадигму моделирования, которая формировалась тысячелетия. В этом отношении они наверное единственные.

          • 6 января 2017 в 19:24

            0

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

            Почему же, прекрасно поймут. Но заодно они очень удивятся, почему вы не понимаете, что их интересуют не объекты реального мира, а сведения о них.


            В первую очередь должны моделироваться реальные объекты.

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


            Возможно это звучит как бред :) Но там так написано, можете сами убедиться.

            Да мне, по большому счету, все равно, что там написано — меня не устраивает утверждение в посте о том, что все модели обязаны быть привязаны к четырехмерному пространству.

            • 6 января 2017 в 20:12

              0

              Мне самому интересно узнать как согласно BORO моделировать тот же Хабр. Он, очевидно, существует в реальности. На BORO основан ISO 15926, вот классы верхнего уровня. Там есть класс Thing, включающий в себя всё, что угодно. Есть класс AbstractObject, экземпляры которого как-раз не существуют в пространстве-времени. И, видимо, Хабр, литературные объекты и т.п. — это AbstractObject. Но в книге BORO я не помню, чтобы где-то шла речь о таких объектах.

              Я бы не стал рассматривать BORO как какой-нибудь очередной UML, BPMN, ARIS, модель Захмана или что-то подобное. Они говорят об изменении парадигмы, о том, что нужно иначе мыслить, и эта идея вполне понятна. Но когда копаешь глубже, то возникает много вопросов. К слову, зря вы так плохо думаете о «клиентах». Они в последнее время всё чаще говорят об уходе от моделирования сведений об объектах к моделированию самих объектов, к чему и призывает BORO. Правда, в основном в крупных интеграционных проектах. Та же единая информационная среда госданных.

              • 6 января 2017 в 20:14

                0

                К слову, зря вы так плохо думаете о «клиентах».

                Я как раз хорошо думаю о клиентах — они представляют себе, что именно им нужно, а не идут к обобщенному моделированию всего без особой необходимости.

                • 6 января 2017 в 20:30

                  0

                  Я и не спорю. Проекты бывают разные от написания shell-скрипта, где вообще не нужно никакое моделирование, до каких-нибудь крупных интеграционных проектов, где 99% времени уходит на моделирование. Причём, бывают проекты, где до создания модели нужно ещё запилить язык моделирования и методику моделирования, потому что существующие не подходят. Тогда приходится вникать в BORO и т.п. Таких проектов относительно мало, но они есть.
                  • 6 января 2017 в 20:31 (комментарий был изменён)

                    0

                    Таких проектов относительно мало

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

                    • 6 января 2017 в 21:07 (комментарий был изменён)

                      0

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

                      Вы глянули бы в CAD/CAM/CAE/PLM/BIM/… системы, как там мэпятся объекты между несколькими слоями, сразу бы на философию потянуло. Даже сегодня многим вручную приходится редактировать объекты сразу в нескольких слоях (view, view-model, model, DB).

                      Поднятая тема как кубик-Рубика, головоломка, для одних удовольствие, а для других пустая трата времени.

                      PS: Автор интригует. Всё обещает, обещает самое интересное. А пока метафорично про плотные болты и рыхлые операции…
                      Посмотрим что дальше будет :)

                      • 6 января 2017 в 21:10

                        0

                        Вы чрезмерно категоричны

                        Мне почему-то кажется, что чрезмерно категорично как раз утверждение «Все модели, которые мы строим, должны так или иначе моделировать 4-х мерное пространство-время». А вот утверждение «некоторые модели не обязаны моделировать пространство-время» — не категорично.

                        • 6 января 2017 в 21:15

                          0

                          Слово «модель» очень многозначное. Вот я дочке объяснял лет в пять про зиму и осень. Взял яблоко (модель Земли) и лампу (модель Солнца) и вращая яблоко по орбите вокруг лампы (урезанная модель солнечной системы) показывал, где зима/лето, где день/ночь. Модель? Модель. А какие картинки гугл выдаст на слово модель? :)

                          Собственно, отсюда и разные интерпретации утверждений автора. У вас своё представление модели, а автора своё. Посмотрим, что дальше будет.

                          • 6 января 2017 в 21:22

                            –1

                            У вас своё представление модели, а автора своё.

                            … что является лишним аргументом против всеохватывающих утверждений.

  • 6 января 2017 в 17:54

    +1

    прежде чем вывалить этот поток сознания все ж надо дать определение — что такое «болт» и «операция», почему болт «плотный», а операция «рыхлая» и т.д.
    возможно, что неправильное понимание простых вещей приводит к сложным построениям и парадоксам
    • 6 января 2017 в 17:55

      –1

      Болт и операция — это способ интерпретации 4-объекта
  • 6 января 2017 в 19:46

    –1

    вощем, когда начинаешь с «объекта» всегда заканчиваешь кашей в башке
    если ты уже ввел »4 мерность», то у тебя уже есть «способ интерпретации»
    , а «болт и операция» не «способ интерпретации», а результат интерпретации
    ты сам то себя хорошо понимаешь?
  • 6 января 2017 в 21:26

    +3

    Ход рассуждений интересен, как и сама тема, но я не согласен с базовыми аксиомами, а поэтому и со всем последующим выводом. Да и вообще очень много не доказанных тезисов. Такое количество аксиом намекает на ошибочность теории.
    Во-первых, в отличие от болта операция имеет менее плотное строение. Может ли болт пересекаться в пространстве-времени с другим болтом? Опыт подсказывает, что нет.
    Может, если сильно ударить кувалдой или положить под хороший пресс, или расплавить. Но вот зачем нам это моделировать? Для какой практической задачи?

    Если пытаетесь построить модель реального мира, то вам к физикам. Они пытаются это сделать: уже дошли до кварков и продолжают копать глубже. А корпускулярно-волновой дуализм всегда все портит и не позволяет смотреть на объекты только как на объекты — приходится еще и о волнах думать. Да еще эта теория струн…

    Я это к чему, моделировать надо только минимально и достаточную для вашего проекта часть бизнеса. Тогда и только тогда можно получить задачу с приемлемой сложностью и решить ее. Эрик Эванс давно об этом говорил, но вот на практике его подход мало где применяют.

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

    И да, как выше в комментариях уже просили — дайте определение понятию «операция», а то возможно мы за этим словом видим совершенно разные смыслы.

    • 6 января 2017 в 21:41

      0

      Может, если сильно ударить кувалдой или положить под хороший пресс, или расплавить. Но вот зачем нам это моделировать? Для какой практической задачи?

      Потому что две разные операции одновременно могут находиться в одном 4-пространстве, или пересекаться. Это как щебень в бочке и песок в той же бочке занимают одно пространство: бочку. На практике такое приходится моделировать очень часто, потому что один ресурс одновременно участвует в двух операциях — это нормально.
      Я это к чему, моделировать надо только минимально и достаточную для вашего проекта часть бизнеса. Тогда и только тогда можно получить задачу с приемлемой сложностью и решить ее

      Минимально достаточную для чего? Если мы решаем задачу интеграции разных ИС, структура данных которых заранее предполагается разнообразной, то мы хотим того или нет, приходим к необходимости моделировать все возможности.
      Вот это самый спорный момент. Здесь несколько недоказанных высказываний, на основании которых делается, на мой взгляд, ошибочный вывод

      Или используем метонимию для моделирования участия объекта в операции. То есть «делает» — это в данном контексте метонимия, а не факт. Если сказать, что трансформатор «преобразует» напряжение, то это — метонимия, которая раскрывается так: трансформатор, исполняет роль преобразователя напряжения, который (преобразователь) участвует в процессе преобразования напряжения. О метонимии можно прочитать в книге «Метафоры, которыми мы живем», авторы: Джордж Лакофф, Марк Джонсон. Другой распространенной метонимией будет высказывание: «компьютер решает задачи».

© Habrahabr.ru