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

> Понятия: множество, тип, атрибут
> Как запутать аналитика. Часть первая
> Как запутать аналитика. Часть вторая: что такое моделирование предметной области?
> Как запутать аналитика. Часть третья. Глаголы и числительные

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

> Как запутать аналитика — 4. Вероятность и точность

Далее я начал рассмотрение моделирования операций, функций и объектов с единой точки зрения.

> Как запутать аналитика — 5. Понятийный аппарат

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

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

Эксперимент по описанию часов


Пусть есть часы. Приведем трех человек и попросим их описать увиденное.

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

Все трое будут описывать один четырехмерный пространственно-временной объект, но делать это будут разными способами.

  • В первом случае мы получим модель объекта,
  • во втором – модель функции,
  • в третьем – модель операции.

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

Объект, операция или функция присутствуют в сознании человека, но не существуют в реальности. Не в смысле солипсизма, как может подумать читатель (реальный мир существует), а в смысле интерпретации этого мира, потому что объект, операция и функция – это различные интерпретации одного и того же пространственно-временного объема.

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

Моделирование начинается с описания четырехмерного пространственно-временного объема, трактовкой которого потом занимается аналитик. Для этого строится модель границ этого объема – локация в пространстве и во времени. Например, для описания временных границ используются атрибуты «дата начала» и «дата завершения». После описания объема аналитик производит трактовку этого объема.

Представление реальности в виде объекта


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

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

Представление реальности в виде функции


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

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

Функции моделируются при помощи нотации IDEF0. Эта же нотация позволяет моделировать конструктивное деление функции на части – функциональные структуры. Это когда функция делится на части, каждая из которых трактуется как функция. Часто эту модель ошибочно называют моделью процесса.

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

Представление реальности в виде операции


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

Динамика в операции связана с возникновением и уничтожением четырехмерных объемов. Это могут быть объемы, трактуемые как состояния объектов, объекты и проч. Поэтому модель операции – множество дат начал и дат завершений каких-то четырехмерных объемов.

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

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

Сначала рассмотрим модель конструкции операции в виде ролей-участников. Для объяснения причинно-следственных связей подобным способом необходимо указать очевидных участников, которые объяснят происходящее. Например, если мы хотим объяснить, почему яблоко упало на Землю, то в качестве очевидных участников операции падения будут: темпоральная часть яблока, исполняющая роль тела 1, темпоральная часть Земли, исполняющая роль тела 2, и гравитационное взаимодействие между телами. Мы сослались на закон всемирного тяготения и, таким образом, объяснили падение предмета на Землю. Для моделирования такого рода объяснения необходимо на первом шаге перечислить объемы, которые далее будут трактоваться как темпоральные части объектов, для чего надо связать эти объемы с теми объемами, которые трактуются как Земля и яблоко. На втором шаге приписать этим объема роли – участников: роль тела 1 и тела 2 в законе о всемирном тяготении. Затем сослаться на закон и получить объяснение. В таком случае модель причинно-следственных связей – это модель ролей, модель участников – это модель исполнителей этих ролей. Очень часто можно встретить ситуацию, когда модель участников и модель ролей путают и сваливают все в одну кучу.

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

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

Смешению этих уровней также способствует язык и наследуемое нами от предков мифическое сознание. Когда я читаю, что лошадь скачет, я могу трактовать этот тезис тремя разными способами. Я могу представить себе движущийся объект в форме лошади, совершающий специфические движения, могу представить себе механическую систему, способную к производству такого рода движений, а могу рассмотреть психические функции лошади. Все три способа представления имеют один глагол – скакать и никакого намека на дифференциацию. Именно поэтому аналитики в одной модели часто путают все три уровня: факты, причины и следствия, а также намерения субъектов. К сожалению, в языке нет способа разделить эти три разных модели.

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

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

Мереологические отношения между объектами разного типа


Мы увидели, что один и тот же объем может быть представлен в виде объектов разного типа, мы увидели, что объект может быть представлен в виде конструкции объектов, функция – в виде конструкции, состоящей из функций, или объектов, операция – в виде конструкции, состоящей из объектов, или операций. Можно задаться вопросом: можно ли построить конструкцию объекта из функций и операций? Можно ли построить конструкцию функции из операций, или конструкцию операции из функций? Это довольно специфичные модели, но они также имеют место быть.

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

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

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

Как моделирование выглядит в реальности


Пока кажется, что все логично и просто. Однако, давайте добавим немного сложности. Вспомним, что будущее моделируется при помощи пространства вероятных исходов, а моделирование прошлого ограничено точностью нашего знания. Таким образом, когда мы говорим о дате начала существования некоторого объекта, например, фотонной ракеты, мы говорим, что эта дата лежит в будущем где-то после 2100 года. Когда наступит 2050-ый год мы уточним эту дату и скажем, что дата начала существования такой ракеты где-то после 2150-го года. Таким образом, значение атрибута «дата начала» будет иметь разброс и этот разброс будет меняться с течением времени. Поэтому значение атрибута «дата начала» не просто значение, а скорее, область значений и, поскольку эта область меняется во времени, она должна быть привязана к дате актуальности этой области.

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

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


  1. vvagr
    11.10.2017 14:58

    Разбиение объекта на части-объекты и разбиение функции этого объекта на части-функции практически никогда не соответствуют друг другу. В статье об этом ни слова :-(


    1. maxstroy Автор
      11.10.2017 15:25

      В статье я утверждаю, что функция и объект — это модель одной и той же реальности — четырехмерного объема пространства-времени. Возьмем часы. Это и объект и функция. При разбиении часов на циферблат со стрелками, корпус и привод мы получаем конструкцию, состоящую из объектов. Разбивая функцию демонстрации времени на функции демонстрация текущего времени, удержание механизма в устойчивом состоянии и обеспечение энергией для совершения демонстрации, мы получаем деление функции на функции. Каждой полученной под-функции соответствует подученный под-объект. Поэтому разбиение объекта на части и функции на части может соответствовать друг другу. Что и происходит в реальности, только, как правило, не на первом уровне разбиения, а на конечном. Иначе мы не смогли бы объяснить пользователю модели причинно-следственные связи, а именно, как это работает.


      1. vvagr
        11.10.2017 16:02

        Может, спору нет. Но вот только во всех интересных случаях сложных систем — не соответствует. Вот есть автомобиль с функциями разгона и торможения. Вот есть объект двигатель. На каком именно уровне разбиения функции и объекты начинают взамно однозначно соответствовать друг другу?


        1. maxstroy Автор
          11.10.2017 16:30

          Разгон — это не функция, это — операция. Функция двигателя — обеспечение привода энергией. Торможение — это функция. Этой функции соответствует тормозная система. Вообще в машине как раз все просто — каждый агрегат имеет конкретную функцию: фары светят, климат-контроль контролирует климат, навигатор — навигирует) и тд.


          1. vvagr
            11.10.2017 16:48

            То есть про торможение двигателем вы не слышали?


            1. maxstroy Автор
              11.10.2017 17:01

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