Базовые типы элементов BORO

Встретив в курсе “Моделирование и собранность” упоминание BORO, решил ознакомиться с первоисточником: книгой Business Objects - Re-Engineering for Re-Use, где описан подход к построению бизнес-модели с использованием BORO - Business Objects Reference Ontology.

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

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

Объекты физического мира

Физическое тело как четырехмерный объект

Физические тела (body) рассматриваются как четырехмерные объекты и определяются объемом (extension), занимаемым ими в пространстве-времени. Например, яблоко, которое лежит у меня на столе, - это не просто яблоко в текущий момент времени, а яблоко на протяжении всего времени существования, начиная с момента, когда оно появилось на яблоне и заканчивая моментом, когда его съедят. Рассмотрение физических тел как четырехмерных объектов решает проблему определения идентичности объекта в разные моменты времени (я 25 лет назад и я сейчас - это один и тот же человек, если все атомы в моем теле заменились на новые?). В подходе BORO объект сейчас и объект в прошлом - это просто срезы одного четырехмерного объекта во времени.

Состояния

Подобно тому, как объект можно разделить (мысленно) на части в пространстве (выделить у яблока мякоть, кожуру, хвостик), его можно разделить на части по временной координате. В этом случае получаются стадии существования, состояния объекта (state), например, “незрелое яблоко” и “зрелое яблоко”. Как привычные части с разделением в пространстве, так и временны́е (temporal) части, состояния исходного четырехмерного физического тела также являются четырехмерными телами.

Вещества

Интересный частный случай возникает, когда мы говорим о неисчисляемых объектах (каких-нибудь веществах, например молоко, вода, медь). Мы можем сослаться на конкретный стакан молока, который стоит у нас на столе. Но есть ли объект в пространстве-времени, соответствующий в целом слову “молоко”? В книге предлагается рассматривать такие объекты как совокупность всех объемов данного вещества, существующих во всем мире (и на протяжении всего времени существования Вселенной), то есть молоко в стакане на столе + молоко в пакетах в магазине + молоко в цистерне фургона… и т.д.

Временны́е промежутки

Временны́е промежутки также рассматриваются как четырехмерные объекты. Например, объект “27 октября 2023 г.” - это срез всего четырехмерного пространства-времени, который занимает весь объем Вселенной между 0:00:00 27 октября 2023 г. и 23:59:59(9) 27 октября 2023 г.

События

Отдельно выделяются события (event) - трехмерные срезы четырехмерного объекта. Например, событие “автомобиль разбился” - это трехмерный срез четырехмерного объекта “автомобиль” в момент времени 12:43:15 27 октября 2023 г. События часто являются границей между двумя четырехмерными временны́ми частями, состояниями объекта - в данном случае это “целый автомобиль” (автомобиль с момента производства до момента до момента аварии) и “поврежденный автомобиль” (автомобиль с момента аварии до момента утилизации).

Процессы

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

Классы

Атрибуты

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

В BORO предлагается интересное, в чем-то контринтуитивное решение: объекты не содержат где-то “внутри” себя информации об атрибутах. Здесь на сцену выходят классы. Класс - набор объектов, объединенных по какому-то признаку. Например, класс “автомобили” содержит все автомобили (помним, что это четырехмерные пространство-временные объекты), которые когда-либо были или будут произведены.

Класс “люди, родившиеся в Германии” содержит Ганса, Фридриха, и еще миллионы людей.

Таким образом, атрибуты объекта можно выразить как принадлежность данного объекта к определенным классам, например, конкретный синий автомобиль “Лада Гранта” является членом (экземпляром) классов “автомобили”, “синие вещи”, “четырехколесные транспортные средства”, “вещи, произведенные на территории России”, “вещи массой более 500 кг”.

Члены класса

Членом класса может быть любой объект: не только физические тела, но и пространственные части тел (члены класса “автомобильные колеса”), временны́е части, состояния (члены класса “разбитые автомобили”), события (члены класса “автомобильные аварии”) и даже другие классы и кортежи (о них позже).

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

Классы классов

В класс объединяются объекты, имеющие какой-то общий признак (или набор признаков). Например в класс “исправные автомобили” попадают все объекты, обладающие признаком “исправный автомобиль”). В класс “неисправные автомобили” попадают все объекты, обладающие признаком “неисправный автомобиль”).

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

Подклассы и надклассы

Иногда все члены одного класса (например, класс “красные автомобили”) являются также членами другого, более крупного класса (класс “автомобили”). В этом случае имеет место отношение подкласса. Класс “красные автомобили” является подклассом класса “автомобили”. Класс “автомобили” является надклассом для класса “красные автомобили”.

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

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

Отношение “подкласс - класс” не следует путать с отношением “член класса - класс”.

Отношение “член класса - класс” возникает когда мы объединяем элементы по какому-то признаку, и в итоге у нас получается группа объектов - класс. В роли члена класса может выступать объект любого типа. В роли класса, естественно, только класс.

Отношение “подкласс - класс” возникает когда мы объединили объекты по какому-то признаку в маленькую группу - подкласс, и абсолютно все объекты этой маленькой группы входят в состав более широкой группы - класса, в которую объекты добавляются по более общему признаку. Отношение “подкласс - класс” возможно только между классами.

Кортежи

Кортеж - это упорядоченный набор объектов.

Кортеж обозначается записью с треугольными скобками:

<Объект 1, Объект 2, Объект 3…>

Для кортежа важен порядок объектов (в то время как для классов порядок членов не важен).

Кортеж может содержать произвольное число объектов, начиная с двух, но во множестве продемонстрированных в книге примерах бизнес-моделей используются только кортежи из 2-х объектов: <Объект 1, Объект 2>.

Элементами кортежа могут быть физические тела, классы и другие кортежи.

Отношения

Кортежи используются для того, чтобы показать отношения между объектами.

Допустим, мы хотим показать отношение отцовства.

У нас есть два человека, Василий Иванович Пупкин и Петр Васильевич Пупкин. Мы создаем кортеж <Пупкин В.И., Пупкин П.В.>.

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

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

Мы создаем кортеж <Пупкин В.И., Пупкин П.В.>, и говорим, что этот кортеж является членом класса “A является отцом B” (чаще классы кортежей называются короче, например просто “является отцом”). Теперь у нас достаточно информации, чтобы сказать, что Пупкин В.И. является отцом Пупкина П.В.

Если мы переставим объекты в кортеже, то это перестанет быть истинным, поэтому порядок объектов в кортеже важен. (При перестановке объектов местами получившийся кортеж <Пупкин П.В., Пупкин В.И.> будет принадлежать классу “A является ребенком B”).

В класс “A является отцом B”, помимо нашего кортежа, входят еще миллиарды других кортежей, в которых люди связаны отношением отцовства.

В то же время наш кортеж <Пупкин В.И., Пупкин П.В.> может быть членом и других классов, например, членом класса “A выше, чем B”.

Классы, составленные из кортежей (классы кортежей), также могут быть подклассами других классов (тоже содержащих кортежи). Например, класс “A является отцом B” является подклассом класса “A является родителем B” (еще одним подклассом этого класса является “A является матерью B”).

Рассмотренные раньше отношения “часть - целое”, “член класса - класс” и “подкласс - класс” точно также выражаются через кортежи и классы кортежей:

Кортеж <”правое переднее колесо”, “мой красный автомобиль Lada Granta”> является членом класса кортежей “А является физической частью B”.

Кортеж <”мой красный автомобиль Lada Granta”, “красные автомобили”> является членом класса кортежей “А является членом класса B”.

Кортеж <”красные автомобили”, “автомобили”> является членом класса кортежей “А является подклассом B”.

Итого, в подходе BORO мне показались интересными следующие вещи:

Всего три базовых типа элементов позволяют строить бизнес-модели любой сложности.

Статичность модели за счет работы с четырехмерными объектами.

Одинаковость рассмотрения временно́го и пространственных измерений физических объектов.

Заземленность модели на объектах физического мира (то есть если двигаться вниз по цепочке кортежей/классов, то в конце цепочки придешь к физическому объекту).

23 лайка

Потрясающе! Благодаря вашей заметке я бросаю читать BORO и перехожу к TameFlow)
Работа проделана невероятная. Возник только один вопрос: в случае рассмотрения процесса как совокупности всех участвующих объектов это будет отдельный объект? Или, например, 4Д объект “дверь” включает в себя все инструменты которые были использованы при изготовлении и ремонте двери?

3 лайка

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

7 лайков

Благодарю за отзыв!
Если Вы хотите разобраться с построением бизнес-моделей, то бросать книгу не стоит, т.к. физические тела, классы, кортежи - это всего инструментарий для раскрытия содержания книги.
Я решил ознакомиться с ней чтобы лучше понять содержание курса Моделирование и Собранность (часть про кортежи и классы), поэтому в заметке написал только об этом. А в книге ещё много чего интересного есть, и даже не на одно прочтение.

Если интересен сам процесс ремонта двери, то будут отдельные объекты, участвующие в процессе, даже иногда их пространственные или временные (состояния) части: дверь в состоянии “сломана”, дверь в состоянии “отремонтирована”. В книге есть пример с созданием статуи из куска мрамора, думаю, будет похоже.
Если интересен сам факт, то весь процесс может быть “сжат” до события (event) - трехмерного среза. Аналогично, есть пример, где объединение стран для удобства рассматривается как мгновенное событие.

3 лайка

Интересная идея про вещества, как совокупность всех объемов данного вещества существующих на протяжении всего времени существования Вселенной. Есть над чем подумать. Спасибо ещё за описания состояния - я на нём внимание не особо заострял, а ведь под состоянием можно и какие-то эмоциональные состояния представить или воспоминания человека. Верно ? Хоть мы их и не можем “потрогать”.

1 лайк

С эмоциональными состояниями просто: делим человека на временны́е части “человек в состоянии гнева”, “человек в состоянии радости” - это все полноценные 4D-объекты, человек в тот промежуток времени, когда он данное состояние испытывает.
А воспоминания - это уже не реальный 4D-мир, а его модель, у нее нет состояний (state) в смысле 4D-объектов. Есть носитель, на котором “записана” модель - мозг, это 4D-объект, и у него могут быть state в том смысле, в котором дается в книге.

2 лайка

Про то, чтобы бросить книгу это была гипербола)) Продолжаю изучать.
Во-первых, входит в домашнее задание.
Но что более важно, задаёт метод описания, который я ещё не до конца “гроккнул”, а идеи Партриджа торчат за кулисами почти всех материалов ШСМ.

2 лайка

Спасибо, у меня похожий интерес. С повторным упоминанием стадий про дверь стало понятно))

1 лайк

Спасибо, отличное краткое изложение BORO!

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

Кстати, я встречал применение идей BORO в enterprise software, например в SAP HR. Там реально можно в настройках определить произвольные отношения между сотрудниками, группами сотрудников, да и в принципе произвольными объектами и получить из коробки интерфейс ведения отношений между объектами с учётом временной зависимости.

На практике почти никто из консультантов не понимает как эту штуку настраивать (ибо BORO не читали, теорию множеств не изучали и дисциплины в голове нет).

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

За универсальность приходится платить высокую цену.

3 лайка

Константин, спасибо за комментарий.

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

Потому что после ознакомления с примерами понимаешь, что построение бизнес-модели - далеко не самая простая задача, человеку без опыта очень легко допустить ошибку или не учесть что-то важное. Требуется поддержка со стороны человека, уже составлявшего модели реальных бизнес-систем в рамках концепции BORO, а такого ещё поискать нужно.

Это всё очень напоминает моделирование витрин данных по Кимбаллу.
Просто объект = измерение
Кортеж <объект, класс атрибутов1, …, класс атрибутовN, временной интервал> = медленно меняющееся измерение
Кортеж <объект1, …, объектN [, классы атрибутов][, временной интервал]> = мост

И тогда по аналогии возникает вопрос с числовыми аддитивными атрибутами. У Кимбалла есть таблицы фактов, а что предлагает BORO?
“вещи массой более 500 кг” - как класс подойдёт.
А как выражать массу числом? Не заводить же класс на каждый вариант 500 кг, 500.001 кг и т.д.

И ещё отсюда как раз следуют уже упомянутые проблемы с производительностью. Модели витрин предназначены для анализа, а для ввода нужны более нормализованные структуры.

2 лайка

В книге числовые атрибуты встречаются крайне редко.
Есть пример где объект “Автомобиль” обменивается на объект “10 000 долларов”, но какой-то общей схемы для моделирования числовых атрибутов не дается.

Возможно, подразумевается, что числовые значения в конечном итоге сводятся к (или, скорее, наоборот, выводятся из) extension - объем+положение в пространстве-времени.

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

1 лайк

Я нашёл решение для чисел, в рамках этой модели:
Число это тоже объект. Просто список таких объектов мы явно не строим.
А “x кг” делим на два объекта, получаем кортеж <Объект, кг, x>.

И ещё, кортеж — это то же самый кортеж, что в реляционной алгебре (≈ строка в реляционной БД).
В общем, непонятно, что тут такого революционного…

Вы создаете такой класс, который необходим для Вашей модели, если необходим класс - вещи 500.034 кг и вещи 499.34 кг, Вы их и создаете.
В других моделях будут другие классы.

2 лайка

Как бы в таком случае выглядела покупка 2 кг яблок за 200 рублей ?

Вероятно, так же как и покупка автомобиля (на картинке, правда, продажа):

2 кг яблок - физический объект и 200 рублей - физический объект

1 лайк

Приветствую, пост крутой.А можно для тех, кто в танке Расшифровать. Эту
абра кадабру.
Я про покупку автомобиля и яблок за деньги.
Что там за язык непонятный, что за квадратики, что за Овалы.

Прямоугольник - объект, овал - событие, линия с чёрным ромбиком - обозначение кортежа, куда входят два соединяемых объекта

Это уже, практически, конец книги. К этим обозначениям в ней идут долго, но доходчиво. От одного абзаца с легендой к схеме понятнее не станет.

На картинке и продажа тоже - только не для “ME”, а для другого агента.