Суворе визначення понять: об'єкт, стан, подія, бізнес-операція та бізнес- функція

Суворе визначення понять: об'єкт, стан, подія, бізнес-операція та бізнес- функція

У поточній статті я визначу такі терміни: об'єкт, стан, подія, операція, функція. Я розповім про те, як можна уявити собі їх. Як метамодель для моделювання ми візьмемо теорію безліч, а не MOF. Чому саме її? Тому що це єдиний на сьогоднішній день відомий спосіб моделювання, який має математичну основу, межі застосовності якого нам добре відомі, досить широкі і обґрунтовані.


Минулі статті викликали жваву дискусію серед тих, хто використовує для моделювання предметних областей інструменти ОВП: мови ОВП, нотацію UML. Незважаючи на те, що я постійно підкреслюю, що об'єкти обліку, про які я веду мову, не моделюються засобами UML, і пояснюю чому, тим не менш, питання про їх моделювання методами ОВП піднімається знову і знову. Напевно, мені треба ще раз розповісти, чим так поганий ОВП для моделювання предметних областей.

  1. ОВП переплутало класи і типи. Те, що називається типами у Арістотеля, в ОВП назвали класами, а те, що математики називають класами, в ОВП не має назви.
  2. В ОВП є термін спадкування. Це інструмент моделювання ієрархії тип-підтип. Це означає, що ОВП побудовано на логіці Арістотеля. Обмеження цієї логіки в застосуванні до моделювання предметних областей відомі і описані в книзі Business Objects: Re-Engineering for Re-Use, яку я згадав у минулій статті. Як приклад такого обмеження можна уявити собі моделювання висоти у об'єктів класу слон і об'єктів класу вагон. Ці два атрибути в ОВП ніяк не пов'язані між собою, тому зрозуміти, що слон поміститься у вагон можна тільки, звернувшись до програміста, який створив ці атрибути. Можна було б ввести спеціалізовані атрибути, наприклад, висота приміщення як спеціалізований атрибут висота об'єктів, але і цього також зробити неможливо.
  3. В ОВП методи належать об'єктам класу. Виникає питання - хто щастить машину: колеса чи двигун? Коректним було б інше питання: хто або що є учасником операції? Метод необхідно відокремити від класу, а трактування ступеня участі потрібно залишити читачеві моделі. Але навіть, якщо в ІС змоделювати трактування такої участі, вона ніяк не вплине на аналіз даних, оскільки на практиці нас абсолютно не цікавить хто і що робив, але цікавить, хто, коли і де був зайнятий і що сталося з ним, а це якраз і є відповідь на перше питання.

Крім проблем, пов'язаних з ОВП, існує ще одна проблема, пов'язана з модним нині процесним підходом. У процесному підході процес називають екземпляром процесу, а тип процесів, функцію і функціональну структуру - процесом. Якщо ООП переплутало клас об'єктів з типом об'єктів, процесний підхід в одному флаконі змішав тип об'єктів і об'єкти, назвавши одним словом різні за своєю природою об'єкти. Я не знаю, як програмісти виживають в цій термінологічній каші, але, судячи з того, що я читаю, вони намагаються ігнорувати цю проблему.

Рішення принаймні частини цих проблем надають методики онтологічного моделювання, зокрема - технології семантичної мережі, semantic web. Незважаючи на невдалу назву і складну долю, вони надають куди кращий інструментарій для втілення в електронній формі моделей частин реального світу, ніж ОВП або поширені нотації моделювання бізнес-процесів. Познайомитися з особливостями цих технологій можна тут.

Особливу увагу варто звернути на те, що за допомогою цих технологій можна досить просто моделювати різні точки зору на різні об'єкти, відображаючи і те спільне, в чому згодні кілька суб'єктів, і приватні погляди кожного з них. Можна навіть висловлювати в моделі факти, що суперечать один одному (з точки зору різних людей), і отримувати логічні висновки з урахуванням цих протиріч. З прикладом використання інструментарію онтологій для роботи з такими знаннями можна познайомитися тут.

Розгляньмо моделювання об'єкта. Прийнято вважати, що об'єкт у просторі має ясно виражені межі. Однак, нам треба звикнути до того, що не всі об'єкти обліку мають такі межі. Наприклад, операція. Уявіть собі кульку з газом. Його просторові межі ясні і зрозумілі - це стінки кульки. Припустимо, що кулька луснула і газ, укладений у ній, почав розширюватися. Після цього ми не можемо точно описати поверхню, яка обмежує обсяг області, в якій знаходиться поширюється газ, але можемо описати межі, за які цей газ точно не вийшов (поки не вийшов). Точно також ми не можемо описати точні межі операції, але дуже легко можемо описати ті межі, за які операція не виходить. Наприклад, операція з точення болту на виходить за межі цеху. Таким чином, ми можемо сказати, що операція відбувається (знаходиться) в цеху. Крім того, прийнято вважати об'єкт щільним об'єктом, який не може одночасно перетинатися з іншими об'єктами. Однак, про операцію так сказати не вийде. Дві операції можуть відбуватися в одному цеху одночасно. Якщо продовжити порівняння з кулькою, то після того, як кулька луснула, газ став займати обсяг, що перетинається з іншими газами. Про операцію можна сказати, у скільки вона почалася і у скільки вона закінчилася. Це - опис меж об'єкта в часі. Точно також можна позначити часові межі не тільки операції, а й будь-якого об'єкта. Наприклад, болт існує з 1-го вересня 2016 року по 23 листопада 2017 року, коли він був переплавлений.

Для опису меж болту ми використовуємо терміни: у просторі: де знаходиться? У часі: коли існує? Для опису меж операції ми використовуємо терміни: у просторі: де сталося? У часі: коли сталося? Нам незвично було б запитати про болт: стався коли? А про операцію: існує де? Проблема в мові. Одне і те ж питання для різних типів об'єктів обліку формулюється по-різному. Це ще одна причина, через яку нам складно уявити собі операцію як 4-х мірний об'єкт.

Тому для моделювання 4-х мірного об'єкта треба відокремити опис його меж у 4-мірному просторі-часі від трактування цього опису. У подальших міркуваннях я розповім, які прийоми ми використовуємо для моделювання 4-х мірних об'єктів і з якими трактуваннями пов'язані ці способи опису.

Для опису об'єкта будуються межі, які обмежують модельований об'єкт. Якщо не заганятися на тему математичних витратів, то кордоном 4-х мірного об'єкта буде 3-х мірний об'єкт. Знати цю 3-х мірного кордон хочеться максимально точно. Наприклад, якщо сказати, що молоток (4-х мірний об'єкт) знаходиться на складі з 1-го грудня 2016 року по 1-го березня 2017, - це буде погана модель молотка. Хочеться знати про молоток трохи більше. Наприклад, ви можете встановити точні координати куба, в якому він знаходиться. Точні межі куба могли б виглядати так: по осі X: з 10 до 20 см, по осі Y: з 30 до 35 см, по осі Z: з 120 по 135 см, по осі часу з 1-го грудня 2016 року по 1-го березня 2017 року. Тепер візьмемо 4-х мірний об'єкт, що трактується як операція. Опис цього 4-х мірного об'єкта виглядає також, як і опис 4-х мірного об'єкта, що трактується як молоток. Для цього 3-кордон описується за допомогою місця, де відбувається подія, часу початку і часу завершення операції. Поки ніщо не відрізняє опис операції від опису молотка. Що реально відрізняє операцію від молотка - так це наше уявлення про нем. молоток у нашому уявленні - щільний об'єкт, що не змінює свою форму в часі. Операція ж навпаки - пухка за складом і не має постійної вираженої форми. Але це знання не міститься в моделі, а міститься в тих домовленостях, які супроводжують ці моделі. Щоб підкреслити різницю між молотком і операцією використовується мовні патерни: операція відбувається, молоток існує. Ці патерни підкреслюють незмінність молотка і мінливість операції.

Припустимо, що ми вивчаємо молоток і рухаємося по його ручці. При такому русі фактура поверхні не змінюється. Щоб уявити собі аналог такого руху по осі часу, треба зрозуміти, що поверхня 4-х мірного об'єкта при русі по осі часу описується станами. Це означає, що, для проведення аналогії, необхідно, щоб рух по вісі часу не змінював стан об'єкта обліку. Наприклад, молоток лежить на столі і ним ніхто не користується. Стан молотка не змінюється.

Тепер уявімо, що ручка молотка пофарбована фарбою і ця фарба градієнтна від червоного до синього. Рухаючись по ручці, ми спостерігаємо невеликі зміни в кольорі. Аналогом такого руху за часом буде спостереження зміни станів об'єкта, кожен з яких (станів) мізерно мало відрізняється від сусіднього за часом стану. Прикладом такої зміни станів може бути рух матеріального молотка в просторі. Стан тіла змінюється безперервно і плавно. При цьому зміни, накопичені за кінцевий час, можуть бути досить сильними для їх діагностики та спостереження. Така зміна за кінцевий час називається операцією.

Тепер уявімо, що, рухаючись уздовж ручці молотка, ми натрапили на боєк. Це - стрибкоподібна зміна фактури поверхні. Аналогом такого стрибка при русі вздовж осі часу буде різка зміна стану об'єкта обліку, або подія. Якщо розглядати рух молотка в просторі, то це був би несподіваний стрибок його положення в просторі. Для матеріального тіла уявити це складно, тому що воно має інерцію, що перешкоджає такому стрибку. Однак, якщо розглядати класичну бізнес-операцію, то ця подія могла бути поглинанням ресурсів в операції, інтеграцією двох функціональних об'єктів в один: токар став на робоче місце, випуском продукції. Так чи інакше, подія - це зміна стану об'єкта обліку за такий короткий час, що спостерігач вважає цей час рівним нулю. Зрозуміло, що інший спостерігач може більш уважно підійти до вивчення станів і знайти, що зміни відбулися не миттєво, а поступово. Тому подія - це суб'єктивне сприйняття зміни стану об'єкта. Дуже часто можна почути, що об'єкти є частиною об'єктивної реальності, модель якої ми будуємо. Однак, як ми недавно бачили, самі об'єкти - це теж суб'єктивне подання деякого 4-обсягу в 4-просторі. Тому, що об'єкти, що події, що операції - це моделі реальності, - результат суб'єктивного сприйняття.

Коли скоро ми визначили об'єкт як модель 4-об'єму в 4-просторі, ми можемо визначити, що таке тип об'єктів. Припустимо, що є безліч моделей 4-обсягів, або безліч об'єктів. Ці моделі зберігаються у суб'єкта у свідомості. Якщо ці моделі схожі одна на одну, то суб'єкт може створити модель цих моделей. Ця модель також зберігається у свідомості суб'єкта. Ця модель моделей і є типом об'єктів. Модель моделей - це другий рівень абстракції. Першим рівнем абстракції були моделі 4-просторів, які ми називаємо об'єктами.

Для моделювання 4-х мірного об'єктів через моделювання їх поверхні потрібен великий обсяг даних. Є способи скоротити цей обсяг, зробивши певні допущення.

Наприклад, для опису операції можна зробити припущення, що в операції всі події з поглинання ресурсів та інтеграції функціональних об'єктів відбуваються в момент початку операції, а випуск готового продукту - по закінченню операції. Зрозуміло, що загалом це неправильно, однак такий спосіб опису дозволяє всі події звести або до початку операції, або до її завершення.

Припустимо, що потрібно змоделювати болт, різьба якого має багато витків. Для його моделювання достатньо вказати крок і довжину різьблення. Це означає, що, якщо поверхню можна розділити на елементи, кожен з яких схожий один на одного, то для моделей всіх цих елементів можна зробити одну модель (тип витка). Якщо потім вказати кількість цих елементів і спосіб їх стикування, то кількість інформації, необхідної для моделювання такої поверхні можна сильно скоротити. Такий опис дозволяє скоротити обсяг моделі за допомогою класифікації елементів поверхні.

Якщо потрібно змоделювати операцію, в якій події з випуску віників, як витки різьблення біля болту, йдуть регулярно (але тепер вже не в просторі, а в часі), то можна створити одну модель для всіх цих подій (тип подій) і вказати час, протягом якого випускалися віники. Це дозволяє скоротити обсяг моделі операції за допомогою класифікації подій.

Тепер припустимо, що моделюється різьблення, довжина якого в рамках розглянутої моделі свідомо невідома, але більше, ніж модельована область. Ця довга нескінченна різьба. Для її моделювання ми можемо також створити модель моделей витків (тип витків), але вказати їх кількість ми не можемо, тому що їх кількість в рамках нашої моделі нескінченно. Єдине, що ми можемо сказати - це крок різьблення, або кількість витків на одиницю довжини. Таким чином, описом такої нескінченної різьблення буде тип витків.

Аналогом опису нескінченної різьблення, при якому повторюються не геометричні об'єкти в просторі, а події в часі, є опис, в якому через певні проміжки часу трапляються схожі події, наприклад, випускається черговий віник. Оскільки ми не знаємо кількість таких подій, можна сказати лише про їх частоту: наприклад, один віник на годину. Такий опис об'єкта відповідає опису бізнес-функції, і кажуть, що це функція з випуску віників. Тобто, описом функції буде тип подій.

Ми підійшли до мого визначення поняття бізнес-функція. Бізнес-функція - це 4-х мірний об'єкт, який має опис у вигляді набору типів подій із зазначенням щільності цих подій у часі (у виродженому випадку може містити всього один тип, наприклад, тип подій з випуску віників). Зауважу, що це визначення сильно відрізняється від загальноприйнятого, в якому функція визначена як перетворення вхідних потоків на вихідні. Але тут немає ніякого протиріччя. Просто звичайне визначення функції є приватним випадком мого. Вся справа в тому, що кожному безлічі однотипних подій (класу подій), які моделюють функцію, можна приписати потік матеріальних об'єктів обліку. І тоді кожному типу подій можна буде приписати потік об'єктів і напрямок цього потоку. Однак, таке розуміння функції страждає тим же, що й опис операції за допомогою акторів, що здійснюють дію. Це - неможливість подивитися на модель з іншої точки зору. Якщо в моєму визначенні кожному типу подій аналітик може приписати свої тільки йому необхідні об'єкти обліку, то в класичній моделі зробити це не вдасться. А це, в свою чергу, не дозволить побудувати модель з урахуванням вимог Трейсабіліті. Крім того, моделюючи типи подій, я взагалі не прив'язаний до моделювання потоків. Бувають випадки, коли описати потік об'єктів неможливо, тому що важко знайти об'єкти обліку, які приходять, або залишають функцію. Наприклад, якщо моделюється функція утримання м'ячика на пальці клоуна, то змоделювати потік об'єктів у такій функції неможливо - ніщо не залишає систему «клоун-куля» і ніщо туди не втікає, а функція - ось вона! Правда в системі «клоун-куля» події, які відбуваються, носять не дискретний характер, а безперервний.

Для розуміння, що таке безперервний потік подій, звернемося до електромотору. З одного боку, електромотор легко уявити собі у вигляді об'єкта. Дуже часто так і робиться. Якщо не потрібно моделювати рух валу електромотора, аналітик просто пише: електромотор такий-то. Це моделювання 4-х мірного об'єкта у вигляді 3-х мірного об'єкта. З іншого боку, можна спробувати змоделювати обертання валу електромотора. Вал електромотора обертається рівномірно. Кожне положення валу в будь-який момент часу - це стан. Всі подібні стани є однотипними. Кількість таких станів залежить від дискрети, з якої проводиться замір. Це може бути дискрету тимчасову, а може - кутову. Для цілей моделювання зручно взяти кутову дискрету, тобто, вважати однотипними такі стани, які збігаються з поворотом валу на певний кут, наприклад, один оборот. Тоді щільність таких станів на осі часу - кількість обертів на хвилину, буде говорити про швидкість обертання валу. Таким чином, обертова куля на пальці у клоуна буде описуватися кутовою швидкістю обертання цієї кулі. Щільність станів, розподілених по вісі часу, говорить нам про швидкість, з якою відбуваються переходи з одного однотипного стану в інший. Там, де людська свідомість стикається з величезною безліччю однотипних станів, аналітик змушений переходити від моделювання станів до моделювання щільності станів, а це і є опис об'єкта у вигляді функції. У випадку з обертанням валу електродвигуна - це функція обертання валу.

Зауважу, що 4-х мірний об'єкт може бути одночасно змодельований:

  1. Як 3-об'єкт - мотор.
  2. Як функція обертання валу.

Що вкотре підтверджує тезу про те, що об'єкти обліку - це моделі реальності, а не реальність. Однак, можливість моделювати 4-х мірний об'єкт як функцію і об'єкт одночасно - це не випадковість. Це, як якщо б ми дивилися на потік води і бачили спочатку пропливаючі повз тріски, а потім очі перестали б розрізняти окремі тріски, але стали б сприймати їх потік. Відбувається це тому що свідомість людини не здатна переробляти великий обсяг інформації і переходить від сприйняття об'єктів до сприйняття потоку об'єктів. Цей перехід і означає перехід від сприйняття 4-х мірного об'єкта як динамічної системи до сприйняття її як статичного об'єкта. Тому функція - це статичний об'єкт, що породжує однотипні події.

У наступній статті ми розглянемо стосунки «частина-ціле» між 4-х мірними об'єктами і розповім, які поняття це дозволить нам визначити.

Image