Знайомство з парадигмами побудови моделей предметної області

Знайомство з парадигмами побудови моделей предметної області

Введення

Можливо, хтось поставить питання, а причому тут математика? Відповім відразу: все, що тут викладено, відноситься безпосередньо до математики.

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

Давайте поставимо аналітикам просте питання.

Ті, хто моделював процеси, напевно, знайомі з нотацією BPMN. Дуже часто при моделюванні операції з укладення договору я зустрічаю такий фрагмент діаграми:

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

Варіанти відповідей, які я чув, такі:

  • Папірець друку
  • Папірці з друком
  • Клас папірців з друком
  • Договір
  • Домовленість
  • Інформація про домовленість
  • Файл MS Word з назвою договір
  • Запис у базі даних
  • Потік якихось об'єктів

Поки я спостерігаю відсутність згоди між аналітиками на предмет того, що ж все-таки передається, і що значать терміни «договір», «потік», «домовленість», «інформація», «дані». Щоб відповісти на це питання, мені довелося копати глибоко і в бік парадигм. Причому, відповідь зажадала розбиття питання на два. Перше питання було: «Як коректно сформулювати питання?» А другий був: «Як на нього відповісти?». Для правильного формулювання потрібно було вибрати відповідну парадигму. Ця стаття присвячена розповіді про два парадигми: Аристотелівської і логічної, і чому я вибрав логічну в якості робочої. Відповіді на поставлене запитання в цій статті я не дам. Відповідь я дам в іншій статті.

Як ми будуємо модель сущого?

Подивіться на малюнок. На ньому схематично зображено процес побудови моделі сутнього.

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

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

Якщо ми робимо ПРИПУЩЕННЯ, що світ ДІЙСНО складається з 4-Д простору-часу і об'єктів в ньому розташованих, то картинку можна перерисувати так:

Особливості парадигм

Для опису світу ми зазвичай використовуємо дві парадигми: парадигму Арістотеля і логічну парадигму. Обидві вони покояться на припущенні про те, що світ предметний і представляє з себе 4-Д простір-час. Але між парадигмами є відмінності, які я повинен підкреслити.

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

Добре, коли парадигма і нотація узгоджені. Тоді можливості парадигми будуть повністю використані. І тоді стає можливим «мислення за допомогою записів». Тобто, можна буде малювати уявлення моделі одночасно з її створенням. Так думають багато, коли, наприклад, пишуть статті, малюють картини, або креслять креслення.

З парадигмою Арістотеля узгоджується моделювання у вигляді таблиць. Однак зв'язки між таблицями - це те, що Арістотель не планував. Тому нотація ER-діаграм, хоч і заснована на парадигмі Арістотеля, але виходить за її межі. Нотація діаграма класів також йде за межі парадигми Арістотеля і не узгоджується з нею. Вона служить для моделювання програмного коду. У предметному світі ви не знайдете ні спадкування, ні інкапсуляції. Всі ці терміни програмування, а не предметної області. Для опису предметної області діаграми класів і ER-діаграми підходять, як сказав Левенчук одній зі своїх статей, між погано і дуже погано. Багато хто не знає цих обмежень, і тому вважає, що обмежень немає взагалі. Ця омана лікується тільки одним способом - вивченням логічної парадигми. Для логічної парадигми використовується дві нотації, описані в стандарті ІСО 15926.

Існує суперечка між інженерами і філософами. Інженери часто дорікають філософам, що ті, мовляв, займаються словоблуддям. Філософи говорять про те, що якби не їхнє словоблуддя, не було б інженерів. А математики мовчать. Але фокус у тому, що математика і філософія до 20-го століття були злиті разом. Декарт і Кантор - великі філософи - математики. Завдання було просте. Мало було придумати парадигму, треба було придумати нотацію для передачі моделей у цій парадигмі іншим громадянам, а також треба було вміти перевірити парадигму на непротиворечивість. Вирішенням цього завдання займалася найманка філософії - математика. Але в 20-му столітті Рассел припустив, що треба відокремити математику від філософії. Просто тому що математика давала результати занадто далекі від нашого емпіричного досвіду. І замість того, щоб постулювати обмеженість нашого досвіду, Рассел вчинив у дусі антропоцентризму, - він запропонував більше не думати над сенсом математичних відкриттів. Молодець! Ми пожинаємо плоди цього поділу зараз. Тепер мало, кому відомі парадигми і для чого вони існують. Плодяться безліч нотацій, відірваних від парадигм, завдання яких задовольнити потреби тут і зараз. А те, що вони суперечливі і межі їх можливостей не описані, - це мало кого хвилює. Шкода, тому що в результаті нотації масово використовується для побудови моделей предметних областей людьми, які не знають обмежень цих нотацій. Однак, не все так погано. Є ті, кому це відомо. У книзі на сторінці 36-37 написано:

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

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

Побудова однієї моделі більш ніж одного об'єкта

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

Як робить сценарист, який пише сценарій? Він робить сценарій, а чи буде поставлений по ньому спектакль і скільки буде в результаті вистав, - він не знає. Сценарій може бути моделлю одного виступу, наприклад, святкування Нового 2015 року. Або він може моделювати багато виступів, як, наприклад, сценарій балету Клацнути. Зрозуміло, що сценарій - один, а виступів - багато. У логічній парадигмі цей опис виглядав би так: є безліч всіх виступів, підмножина цієї безлічі - є виступи, зроблені на основі сценарію «Балет Лускунчик».

Те ж саме в парадигмі Арістотеля виглядало б так. Є об'єкти - виступи. Будь-який виступ - є екземпляр виступу. Є об'єкти іншого типу - це виступи, зроблені за одним сценарієм «Балет Клацнути». Будь-який виступ за цим сценарієм - це екземпляр виступу «Балет Лускунчик». Один і той же виступ одночасно є примірником виступу і примірником виступу «Балет Лускунчик». При цьому Арістотель зараз повинен трохи захвилюватися, тому що він такого не говорив! У нього немає того, що один об'єкт може належати різним типам! Це вже наша інтерпретація, заснована на моделюванні у вигляді ER-діаграм. Це і ще багато чого не дозволяють побудувати непротиворечивую модель предметної області на основі парадигми Арістотеля.

Модель інформаційних об'єктів

Таким чином, у логічній парадигмі об'єктам однієї безлічі може бути поставлена у відповідність одна модель:

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

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

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

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

Договір

Якщо застосувати побудовану конструкцію до намальованої на самому початку статті діаграми, то у нас виникають питання: що таке домовленість? Це реальність, або модель реальності? Що таке договір? Що таке листочки з печатками? Що таке файл у форматі MS Word? Що таке запис в БД? І що вона фіксує: договір, домовленість, реальність?

Я намалював шматок моделі, починаючи з домовленості, але не розшифровував, що таке сама домовленість.

Ми бачимо, що реальна модель предметної області досить складна. При цьому ми не намалювали всіх подробиць і не намалювали всіх рівнів моделі, тому що вміння працювати з MS Word не передбачає знання формату зберігання даних. А знання формату зберігання даних не означає знання правил управління друкованою головкою. І так далі. Є фізичні об'єкти і суб'єкти, є інформаційні об'єкти і функціональні, і пов'язані вони часом досить складними ієрархічними зв'язками. Треба вчитися ці зв'язки моделювати і передавати іншим як знання.

Наприклад, 7-ми рівнева мережева модель OSI - є ієрархічна модель фізичних та інформаційних об'єктів.

У скороченому варіанті наведена модель виглядає так:

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

Лірична замальовка

Ми дальтоніки. Тільки не в сенсі: кольори не розрізняємо, ні. Ми не розрізняємо зміст слів, що вживаються в різному контексті.

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

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

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

Повернімося до запитання, поставленого на початку статті. Я запитав, що моделює той елемент з відігнутим куточком? Я залишу це питання відкритим. Спробуйте самі коректно поставити питання і подумати над відповіддю.

Image