Труднощі на шляху створення «універсальної» метамоделі для моделювання предметних областей

Труднощі на шляху створення «універсальної» метамоделі для моделювання предметних областей

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


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

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

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

Про одну з причин я писав раніше - ми прагнемо міфологізувати суще, одушовуючи неживе. І причина цього теж зрозуміла - мова, якою ми з вами спілкуємося, має в своїй основі міфічну свідомість, в якій за все, що відбувається в природі, обов'язково хтось відповідає. Річка - тече, верстат - точить, ніж - ріже тощо. Завжди є наділена свідомістю міфічна істота, яка щось робить. Наприклад, всі ми вважаємо, що яблуко падає на Землю. Але мало хто знає, що при цьому і Земля падає на яблуко. І ще менше знають, що рух яблука і Землі задовольняє принципу найменшої дії. Чому? Не тому що яблуко здатне падати на Землю, і не тому що Земля здатна падати на яблуко, а тому що так влаштований світ. Замість того, щоб сказати, як кажуть фізики, - рух тіл підкоряється принципу найменшої дії, ми, як у добрі старі часи наділяємо яблуко здатністю падати. Тому мова змушує нас у будь-якій дії шукати актора, який здійснює ці дії (згадайте «доріжки» в BPMN) і результат цих дій (згадайте визначення процесу). Чому це заважає нам будувати моделі? Тому що вибір актора свавільний. Ми можемо вважати, що машина їде дорогою, а можемо сказати, що котиться колісна пара, а мотор лише допомагає їй їхати. Спроба знайти актора призводить до того, що одне і те ж знання про предметну область можна змоделювати різними способами, що, в свою чергу, призводить до суперечностей всередині моделі.

Інша причина в тому, що аналітики мислять щоразу в різних мета-метамоделях. Більшість аналітиків мислять або в термінах типів і категорій, (інструмент аналізу, придуманий Арістотелем 2500 років тому і трохи застарілий на сьогоднішній день), або в термінах реляційної алгебри (що годиться для створення баз даних, але зовсім не годиться для моделювання предметних областей), або в термінах ОВП (що підходить для моделювання коду, написаного для ОВП мов, але зовсім не призначене для моделювання предметних областей). Але дуже небагато аналітиків здатне будувати моделі в термінах теорії безліч - інструменту, спеціально придуманого для моделювання предметних областей.

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

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

Є знання, які відносяться не до об'єктів, а до класів об'єктів. Наприклад, ми знаємо, що половина кроликів - білі, а половина - сірі. Поки в наших метамоделях не міститься способів моделювання цих знань.

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

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

Однобокість нашого мислення проявляється в тому, що ми добре вміємо робити аналіз і дуже погано - синтез. Наприклад, розібрати об'єкт на частини ми можемо, але уявити Сонячну систему у вигляді об'єкта - вже немає. Тому часто можна чути про моделі декомпозиції (декомпозиція процесу, наприклад), але ніколи ми не чуємо про композиції об'єктів, наприклад, про композицію процесів.

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

Image