Перечитывая Криса Партриджа - BORO

Перечитал книгу Криса Партриджа «Business Objects: Re-Engineering for Re-Use». Как и первый раз получил большое удовольствие. Эту книгу иногда называют библией для тех, кто занимается моделированием бизнес-деятельности, построением онтологий какой-либо предметной области. Заслуженно. Рекомендую. Но страниц много (больше 400) и темы не самые простые для понимания. Книга есть в сети. Русского перевода нет.

О чем книга:

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

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

  3. Логическая парадигма – это логика и теория множеств: классы, кортежи, индивидуальные логические объекты, а также философский анализ Фреге проблем референции – как смысл соотносится с обозначением.

  4. Логическая парадигма более совершенна чем сущностная. Однако происходит неизбежный переход от логической к объектной парадигме, когда возникает проблема четырехмерного моделирования реальности – необходимо учитывать мгновенные и продолжительные изменения физических объектов во времени. Кроме наличия объекта и его отношений нужно построить модель его состояний и событий. Т.е. для объектов необходимо строить 4D-модель. Этот подход позже (или раньше?) назвали «4D-экстенсионализм».

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

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

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

4 лайка

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

1 лайк