В 1986 році Фред Брукс, автор книги «Міфічний людино-місяць», опублікував статтю під назвою "No Silver Bullet — Essence and Accident in Software Engineering".
У ній він навів переконливі аргументи на користь того, що:
«Не існує жодної технології чи управлінської методики, яка сама по собі могла б гарантувати десятикратне збільшення продуктивності, надійності чи простоти розробки протягом найближчого десятиліття».
Цей аргумент став центральною ідеєю його роботи.
Брукс розрізняв два типи складності: випадкову (accidental) і суттєву (essential).
З часом технологічні інструменти стали значно кращими, і випадкова складність зменшилася. Проте суттєва складність залишилася незмінною. На думку Брукса, "срібної кулі" не існує, тому що складність програмного забезпечення обумовлена складністю самої предметної області, а не інструментів.
Предметна область визначає основну сферу діяльності компанії. Простими словами, це той сервіс чи продукт, який компанія пропонує своїм клієнтам.
Наприклад:
Предметна область — це ядро бізнесу компанії, яке може змінюватися залежно від ринкових умов чи стратегії розвитку.
Піддомен — це чітко визначена сфера ділової діяльності компанії, яка є частиною її загальної предметної області. Усі піддомени разом утворюють ту предметну область, у якій працює компанія, тобто набір послуг або продуктів, які вона пропонує клієнтам.
Кава — це головний продукт, завдяки якому компанія відома. Але успішна мережа кав'ярень потребує:
Жоден з цих піддоменів окремо не перетворить компанію на прибуткову. Але їхня взаємодія створює умови для конкурентоздатності та успіху в предметній області.
Піддомени — це основні складові частини бізнесу, які разом забезпечують його ефективність у предметній області.
У предметно-орієнтованому проектуванні виділяють три основні типи піддоменів:
Ці піддомени відіграють різні ролі у досягненні стратегічних та бізнесових цілей компанії.
Основний піддомен — це те, що вирізняє діяльність компанії серед її конкурентів. Це може бути:
Uber
Алгоритм ранжування пошукових результатів є ключовим для Google. Функція пошуку навіть не є платною функцією! Хоча пошукова система не приносить прямий дохід, вона забезпечує великий трафік для Google Ads. Помилки у роботі алгоритму чи кращий сервіс від конкурентів могли б негативно вплинути на дохід компанії.
Примітка: Google Ads - не піддомен, а скоріше окрема предметна область зі складовими її піддоменами, серед яких служби хмарних обчислень (Google Cloud Platform), інструменти для підвищення продуктивності та спільної роботи (Google Workspaces) та інші галузі, в яких працює компанія Alphabet.
Основний піддомен — це частина предметної області, яка має ключове значення для конкурентоспроможності компанії.
У книзі Еріка Еванса терміни «основний піддомен» та «основна предметна область» часто використовуються як синоніми. Проте, поняття «основний піддомен» є точнішим, адже воно акцентує увагу на ієрархічній структурі.
Основний піддомен — це серце бізнесу компанії, її головний конкурентний козир. Розробка основних піддоменів вимагає складних рішень і забезпечує стійкість компанії на ринку.
Універсальні піддомени охоплюють бізнес-процеси, які всі компанії реалізують однаково. Це перевірені на практиці рішення, які не надають конкурентних переваг.
На відміну від основних піддоменів, універсальні:
У більшості систем користувачам потрібен доступ до своїх облікових записів. Реалізувати власну систему аутентифікації складно, а використання готових рішень (наприклад, OAuth2, JWT, або бібліотек) є більш раціональним. Це забезпечує надійність та безпеку, але не надає конкурентних переваг.
Якщо ювелірна компанія використовує готову платформу для онлайн-торгівлі, це буде універсальним піддоменом. Важливо лише те, що платформа відповідає базовим вимогам бізнесу.
Інтеграція з готовими сервісами для обробки платежів (Stripe, PayPal) також є типовим універсальним піддоменом. Компанії не вигадують власні системи, а користуються доступними рішеннями.
Універсальні піддомени дозволяють компаніям:
Універсальні піддомени — це основа функціонування компанії, але не її унікальність. Вони допомагають мінімізувати витрати і ризики, використовуючи перевірені рішення, які не впливають на конкурентні переваги.
Допоміжні піддомени підтримують основну бізнес-діяльність компанії, але:
Розглянемо, наприклад, роботу компанії, що займається онлайн-рекламою, основні піддомени якої охоплюють підбір реклами для відвідувачів, підвищення ефективності реклами та зведення до мінімуму вартості рекламного місця. Але для успіху в цих галузях компанії необхідно створити каталог своїх напрацювань. Порядок зберігання та індексації фізичних напрацювань, наприклад банерів і рекламних сторінок, що відкриваються за посиланням, не впливає на її прибуток. У цій галузі нічого винаходити або оптимізувати не потрібно. З іншого боку, каталог напрацювань необхідний для реалізації системи управління рекламою і допоміжних систем. Отже, рішення з каталогізації контенту стає одним із допоміжних піддоменів компанії.
Компанія онлайн-реклами:
Основні піддомени включають:
Для підтримки цих процесів компанії потрібен каталог наявного контенту: Банери, Рекламні сторінки, Посилання.
Цей каталог:
Таким чином, каталогізація контенту є допоміжним піддоменом.
Допоміжні піддомени важливі для підтримки бізнес-процесів, але вони не є джерелом унікальності чи конкурентних переваг. Компанії часто використовують перевірені підходи для їх реалізації, фокусуючись на розвитку своїх основних піддоменів.
Розглянувши три типи піддоменів, настав час звернути увагу на їх відмінності з різних точок зору та зрозуміти, як вони впливають на стратегічні рішення щодо розробки програмних продуктів.
Чим складніші задачі, які успішно вирішує компанія, тим більшу бізнес-цінність вона створює. Це можуть бути не лише послуги для споживачів, а й оптимізація та підвищення ефективності бізнесу. Наприклад, конкурентною перевагою є надання того ж рівня обслуговування, що й у конкурентів, але з меншими витратами на експлуатацію.
Визначення піддоменів має важливе значення і з технічної точки зору, оскільки різні типи піддоменів мають різний рівень складності. Для розробки програмних продуктів потрібно обирати інструменти та методи, що відповідають складності бізнес-вимог.
Допоміжні піддомени
Універсальні піддомени
Основні піддомени відрізняються особливою складністю. Їх копіювання конкурентами має бути ускладненим, оскільки це впливає на прибутковість компанії. Тому компанії прагнуть вирішувати складні задачі саме в основних піддоменах.
Основні піддомени
Універсальні піддомени
Допоміжні піддомени
Для ефективного розвитку та досягнення конкурентних переваг компанія повинна орієнтуватися на правильний вибір і реалізацію кожного типу піддомену, враховуючи його складність і роль у бізнес-стратегії.
| Піддомен | Конкурентна перевага | Складність | Частота змін | Стратегія реалізації | Тип проблеми |
|---|---|---|---|---|---|
| Основний (Core) | Так | Висока | Висока | Власна розробка | Складна / Унікальна |
| Універсальний (Generic) | Ні | Висока | Середня | Покупка / Відкрите ПЗ | Вирішена |
| Допоміжний (Supporting) | Ні | Низька | Низька | Самостійна | Банальна |
Визначення меж піддоменів — це процес, що починається з аналізу бізнес-стратегії компанії та її унікальних характеристик. Піддомен визначається через вивчення предметних областей, у яких компанія працює, а також через розуміння того, як вона вирізняється серед конкурентів у своїй галузі. Важливо пам’ятати, що піддоменами часто вже є елементи бізнесу, навіть якщо вони не були формалізовані.
Щоб визначити піддомени, можна почати з аналізу існуючих відділів компанії. Наприклад, інтернет-магазин може містити піддомени, як склад, обслуговування клієнтів, комплектація, відвантаження та інші, які можуть бути класифіковані за ступенем важливості або специфічності. Однак чи достатньо цих категорій для прийняття проектних рішень?
Грубе визначення піддоменів, наприклад, через ідентифікацію відділів компанії, може бути хорошою відправною точкою, але не дає повного розуміння меж піддоменів. Важливо не пропустити важливу інформацію, яка може бути прихована в дрібницях бізнес-функцій.
Приклад з відділом обслуговування клієнтів допомагає зрозуміти, що проста класифікація на один піддомен є недостатньою. Усередині відділу може бути кілька більш вузьких функцій, таких як довідкова служба, управління робочими змінами, телефонна станція та інші. Кожен з цих підрозділів може бути віднесений до різних типів піддоменів, наприклад:

Визначити, де закінчуються межі піддоменів, — це мистецтво, яке потребує балансу. З одного боку, важливо не занурюватися в деталі на занадто низькі рівні, щоб не втратити фокус на основній бізнес-цілі. З іншого боку, важливо не упустити важливі аспекти, що можуть вплинути на проектування рішення та його бізнес-цінність.
Зрештою, треба зупинитися на тому рівні деталізації, який дозволяє чітко зрозуміти, які функції є основними та конкурентними для компанії, а які — допоміжними чи універсальними. Це допомагає не тільки у проектуванні, але й у правильному розподілі ресурсів, спрощенні архітектури та підвищенні ефективності розробки програмного продукту.
З технічної точки зору, піддомен можна порівняти з набором взаємозв'язаних сценаріїв використання (use cases), які зазвичай мають однакових учасників, об'єкти господарювання та схожий набір використовуваних даних. Наприклад, розглянемо систему прийому платежів за кредитними картками. Всі сценарії цієї системи будуть тісно пов'язані з робочими даними та учасниками, що беруть участь у процесі. Всі варіанти дій, пов'язані з обробкою платежів, формують піддомен оплати кредитними картками.
Одним із принципів, що дозволяє визначити межі піддоменів, є твердження, що піддомен — це набір узгоджених сценаріїв використання. Такий підхід допомагає чітко визначити межі піддомену, зосереджуючи увагу на тих функціях, які дійсно відносяться до цього піддомену, і відокремлюючи їх від універсальних або допоміжних функцій.
Важливо не занурюватися в нескінченний пошук дрібніших піддоменів, оскільки це може призвести до втрати фокусу на основних бізнес-функціях.
Наприклад, коли ми аналізуємо довідкову службу, подальше її розбиття на піддомени навряд чи приведе до нової цінної інформації. Тут можна використовувати вже готові інструменти загального призначення, і такий піддомен не потребує надмірного розбиття.
При визначенні піддоменів важливо також задатися питанням, чи потрібні всі піддомени. Оскільки кожен піддомен — це інструмент для прийняття проектних рішень, потрібно зосередитися тільки на тих аспектах бізнесу, які безпосередньо пов'язані з розробкою програмного забезпечення.
Зверніть увагу: не всі бізнес-функції є частинами програмного забезпечення. Наприклад, виробник ювелірних виробів може мати бізнес-функції, які не стосуються програмних рішень, і в такому випадку ці функції не повинні впливати на проектування програмного продукту.


Основний потік:
Результат: Замовлення створено, система надсилає підтвердження на електронну пошту клієнта.
Основний потік:
Результат: Інформація про робочі години співробітника оновлюється в базі даних.
Основний потік:
Результат: Кошти успішно переказані на вказаний рахунок.
Основний потік:
Результат: Пацієнт успішно записаний на прийом до лікаря.
Основний потік:
Результат: Студент записаний на курс і має доступ до навчальних матеріалів.
Розглянемо, як можна застосувати концепцію піддоменів на практиці та використовувати їх для прийняття стратегічних рішень. Візьмемо дві вигадані компанії: Gigmaster та BusVNext. Під час читання спробуйте проаналізувати сфери бізнесу цих компаній та визначити три типи піддоменів для кожної. Пам'ятайте, що деякі бізнес-вимоги можуть бути явними або не зовсім очевидними.
Gigmaster — компанія, що займається продажем та розповсюдженням квитків. У їх мобільному додатку для визначення найближчих шоу, які користувачі хотіли б відвідати, аналізуються музичні бібліотеки, акаунти потокових сервісів та профілі в соціальних мережах.
Користувачі Gigmaster прагнуть зберегти свою конфіденційність. Тому вся особиста інформація шифрується, а алгоритм рекомендацій працює тільки з анонімізованими даними. Для покращення рекомендацій користувачам дається змога реєструвати концерти, які вони відвідували раніше, навіть якщо квитки були придбані не через Gigmaster.
Сфера діяльності: Продаж квитків. Це основна послуга, що надається компанією своїм клієнтам.
Основні піддомени
Універсальні піддомени
Допоміжні піддомени
Система рекомендацій, анонімізація даних та мобільний додаток повинні бути розроблені власноруч за допомогою новітніх технологій. Шифрування даних, облік, безготівкові розрахунки та аутентифікація — можна використовувати готові рішення або відкритий код. Інтеграція з потоковими сервісами та соціальними мережами, а також модуль відвіданих концертів можна передати на аутсорсинг.
BusVNext — компанія, що займається громадським транспортом, зокрема, організацією комфортних поїздок на автобусах. Компанія керує автобусними парками в великих містах.
Клієнти BusVNext можуть замовити поїздку через мобільний додаток, і у разі необхідності маршрут автобуса буде миттєво скоригований для точного часу прибуття. Основним завданням компанії було впровадження алгоритму маршрутизації, який оптимізує розподіл автобусів з урахуванням різних бізнес-цілей, таких як скорочення часу посадки, навіть якщо це збільшує загальну тривалість поїздки. Для покращення маршрутизації BusVNext інтегрується з постачальниками трафіку для отримання інформації в реальному часі.
Компанія також регулярно пропонує знижки, щоб залучити нових клієнтів і вирівняти попит у години пік.
Сфера діяльності: Громадський транспорт — надання пасажирських перевезень на автобусах.
Основні піддомени
Універсальні піддомени
Допоміжні піддомени
Алгоритм маршрутизації, аналіз даних, управління автопарком та зручність користування додатком повинні бути розроблені власноруч із використанням складних технічних інструментів. Управління рекламними акціями та знижками може бути передано на аутсорсинг. Умови трафіку, авторизація та фінансові операції можуть бути делеговані зовнішнім постачальникам послуг.
Аналіз предметної області дозволяє чітко визначити ключові піддомени компанії, що має вирішальне значення для стратегічних архітектурних рішень. Знаючи різницю між основними, універсальними та вспомогальними піддоменами, можна приймати обґрунтовані рішення щодо розвитку та оптимізації системи.
Фахівці у предметній області (Domain Experts) — це люди, які глибоко розбираються в бізнес-процесах та специфіці предметної області, яку планується моделювати і реалізовувати у програмному забезпеченні. Їхня основна роль полягає у формулюванні та роз'ясненні бізнес-завдань, які потрібно вирішити за допомогою системи.
Основні риси фахівців у предметній області:
Ключова ідея: Фахівці у предметній області — це ті, хто створює основу для побудови ефективного програмного забезпечення. Їхні знання є базою для аналітиків та розробників, які працюють над трансформацією цих знань у програмний код.
У першій частині лекції розглядалися інструменти проєктування, орієнтовані на предметну область, які дозволяють глибше зрозуміти ділову активність компанії. Основні тези глави:
Успішне проєктування програмного забезпечення неможливе без розуміння предметної області, структури її піддоменів та залучення фахівців, які допоможуть трансформувати бізнес-знання у технічні рішення.
WolfDesk надає як послугу систему управління заявками служби підтримки. Якщо вашій компанії, що тільки розпочинає діяльність, необхідно підтримувати клієнтів, то за допомогою рішення WolfDesk можна буде розпочати роботу у найкоротші терміни.
Компанія WolfDesk використовує не таку модель оплати, як її конкуренти. Вона стягує плату не за кожного користувача, а дозволяє орендарям мати скільки завгодно користувачів і стягує з них плату за кількість звернень до служби підтримки за оплачуваний період. Мінімальна плата відсутня, і до того ж компанія застосовує автоматичні оптові знижки для певних порогів щомісячних заявок: 10% при відкритті понад 500 заявок, 20% при відкритті понад 750 заявок та 30% при відкритті понад 1000 заявок на місяць.
Щоб орендарі не зловживали бізнес-моделлю, алгоритмом життєвого циклу заявок WolfDesk забезпечується автоматичне закриття неактивних заявок, що стимулює клієнтів відкривати нові заявки, коли буде потрібна додаткова підтримка. Більше того, WolfDesk впровадила систему виявлення випадків шахрайства, яка проводить аналіз повідомлень і виявляє випадки розгляду несумісних між собою тем в одній і тій самій заявці.
Щоб допомогти своїм орендарям оптимізувати роботу, пов’язану з підтримкою, WolfDesk впровадила функцію автопілота підтримки. Цей автопілот аналізує нові заявки і намагається автоматично знайти відповідне рішення з історії заявок орендаря. Його функціонування дозволяє ще більше скоротити строк життя заявок, стимулюючи клієнтів відкривати нові заявки для наступних питань.
У WolfDesk впроваджені всі стандарти і заходи безпеки для автентифікації та авторизації користувачів своїх орендарів, а також орендарям дозволено налаштовувати наскрізну реєстрацію (single sign-on, SSO) з наявними у них системами управління користувачами.
Інтерфейс адміністрування дозволяє орендарям налаштовувати можливі значення категорій заявок, а також список тих продуктів орендаря, які ними підтримуються.
Щоб мати змогу спрямовувати нові заявки агентам підтримки орендаря лише у їхній робочий час, WolfDesk дозволяє вводити графік змін кожного агента.
Оскільки WolfDesk надає свої послуги без мінімальної плати, компанія повинна оптимізувати свою інфраструктуру таким чином, щоб звести до мінімуму витрати на підключення нового орендаря. Для цього у WolfDesk використовуються безсерверні обчислення, що дозволяють проводити гнучке масштабування обчислювальних ресурсів залежно від кількості операцій з активними заявками.
Г) І універсальний, і допоміжний.
_Ці піддомени не додають конкурентної переваги, оскільки включають завдання з очевидними рішеннями та функції, які виконуються однаково в різних компаніях._
Б) Для універсального (Generic).
_Універсальні піддомени можуть використовувати однакові рішення, оскільки вони не залежать від специфіки бізнесу._
А) Основний (Core).
_Основний піддомен зазвичай зазнає найчастіших змін, оскільки саме він забезпечує конкурентні переваги і постійно адаптується до ринку._
Основним піддоменом є:
- Унікальна бізнес-модель WolfDesk (стягнення плати за кількість заявок замість кількості користувачів), яка забезпечує конкурентну перевагу.
- Система автоматичного закриття неактивних заявок та виявлення шахрайства, що додає унікальності та ефективності послузі.
- Автопілот підтримки, що аналізує заявки та пропонує рішення на основі історичних даних.
Допоміжними піддоменами є:
- Адміністративний інтерфейс для налаштування категорій заявок та списків продуктів.
- Механізм введення графіків роботи агентів підтримки, що дозволяє адаптувати систему під потреби орендарів.
Універсальними піддоменами є:
- Системи автентифікації та авторизації користувачів, які дотримуються загальноприйнятих стандартів безпеки.
- Налаштування наскрізної реєстрації (SSO), що є стандартною функцією для інтеграції з іншими системами управління користувачами.
- Використання безсерверних обчислень для масштабування інфраструктури, що є типовим рішенням для багатьох сучасних SaaS-платформ.
Програмні системи створюються для вирішення бізнес-завдань, які значно відрізняються від математичних задач чи загадок. Бізнес-завдання не завжди мають єдине, остаточне рішення. Це комплексні проблеми, які вимагають оптимізації процесів, автоматизації, управління даними та підтримки прийняття рішень.
Приклад: Для компанії FedEx бізнес-завданням є забезпечення швидкої доставки посилок, тому оптимізація процесу доставки — це ключовий аспект їхньої діяльності.
Приклад піддоменів і їх задач:
Кожна компанія має свої завдання, наприклад, як зробити процес доставки швидшим або як автоматизувати фінансові операції. Для цього бізнес розділяється на менші частини — піддомени, кожен із яких вирішує конкретну задачу. Як результат, програма стає ефективним інструментом для бізнесу.
Процес розробки — це не просто написання коду. Це навчання. Ми (розробники) вчимося у експертів предметної області.
Ефективна розробка програмного забезпечення залежить від розуміння предметної області. Експертами в предметній області є фахівці, які мають глибокі знання та розуміють тонкощі сфери. Розробники не повинні ставати експертами, але повинні розуміти їхній спосіб мислення та використовувати відповідну термінологію.
Основні проблеми:
Ключова думка Альберто Брандоліні: Розробка програмного забезпечення — це процес навчання, а робочий код є побічним ефектом.
Для успіху проекту:
Більшість програмних проектів вимагають співпраці між різними ролями:
Продуктивне спілкування — ключ до успіху, але воно часто ускладнюється:
Результат: Невдалий програмний проект: або неправильно вирішено задачу, або вирішено іншу задачу.
Предметно-орієнтоване програмування (DDD) пропонує ефективний підхід:

Простими словами: Щоб створити якісний продукт, розробникам потрібно говорити з бізнесом "однією мовою". Це зменшить помилки та спростить розуміння задач.

Єдина мова (англ. Ubiquitous Language) – це наріжний камінь предметно-орієнтованого проєктування.
Якщо всі зацікавлені сторони хочуть ефективно спілкуватися без перекладів, вони мають використовувати єдину мову для опису предметної області.
Хоча ця ідея здається очевидною, як казав Вольтер: «Здоровий глузд – це не таке вже й поширене явище». У традиційному процесі розробки програмного забезпечення знання предметної області проходять кілька перетворень:
Предметно-орієнтоване проєктування пропонує створити єдину мову для опису предметної області, щоб уникнути цих численних перекладів.
Хто повинен використовувати єдину мову? Усі зацікавлені сторони проєкту:
Мета: забезпечити, щоб експертам предметної області було комфортно використовувати цю мову, яка відображає їхні знання та ментальні моделі.
Важливо підкреслити, що єдина мова - це мова бізнесу. Тобто вона має складатися тільки з понять, пов'язаних із предметною областю. У ній не має бути жодного технічного жаргону! Навчати експертів у сфері бізнесу синглтонам і абстрактним фабрикам - не ваша мета. Єдина мова націлена на введення розуміння експертами предметної області та ментальних моделей предметної області в рамки легко сприйманих понять.
Приклад: Система управління рекламними кампаніями
Уявімо, що ми працюємо над системою управління рекламними кампаніями. Ось кілька тверджень:
title: ✅ Хороші (Бізнес) формулювання
Ці твердження сформульовані на бізнес-мові. Вони зрозумілі бізнес-експертам і відображають їхній підхід до роботи.
title: ❌ Неприйнятні технічні формулювання
Ці твердження є суто технічними й незрозумілими бізнес-експертам. Якщо програмісти орієнтуються лише на такі формулювання, вони можуть не зрозуміти повністю бізнес-логіку, що призведе до складнощів у моделюванні ефективного рішення.
Єдина мова має бути чітко вираженою та узгодженою. Логіка предметної області повинна бути відображена явно, щоб уникнути двозначностей. Кожне поняття в єдиній мові має мати однозначне значення.
Наприклад, у деякій предметній області слово policy може мати кілька значень:
Визначити, що саме мається на увазі, можна лише за контекстом. Проте програми не працюють із двозначностями, і моделювання такого поняття в коді стає складним.
Рішення: Розділити поняття policy на два окремі терміни: «політика» та «страховий договір».
У єдиній мові не можна використовувати синоніми для позначення одного поняття.
Наприклад: У системах часто використовують поняття user (користувач). Але в жаргоні предметної області user може бути замінений словами visitor (відвідувач), administrator (адміністратор), account (обліковий запис).
Спочатку це може здатися незначною проблемою, але насправді кожне з цих понять має різне значення:
Рішення: Для кожного поняття використовувати чітко визначений термін, який відповідає його ролі.
Модель — це спрощене уявлення об’єкта або явища, в якому свідомо виділяються певні аспекти та ігноруються інші. Це абстракція, створена для конкретного використання.
Ребекка Вірфс-Брок (Rebecca Wirfs-Brock):
Модель — це не копія реального світу, а конструкція, створена людиною, що допомагає зрозуміти системи реального світу.
Класичним прикладом моделі є карта. Наприклад, навігаційна карта, карта місцевості, карта метро — кожна з них показує лише ту інформацію, яка необхідна для її конкретного завдання.

Кожна модель має свою мету, і ефективна модель включає лише ті деталі, які потрібні для її досягнення.
Наприклад:
Корисна модель — це не копія реального світу, а інструмент для вирішення конкретної задачі. Як сказав статистик Джордж Бокс:
«Усі моделі є хибними, але деякі корисними».
Моделі допомагають зменшувати складність, опускаючи зайві деталі й залишаючи лише те, що необхідно. Проте погана абстракція може упустити важливі деталі або додати зайве, що створить проблеми.
Як зазначив Едсгер Дейкстра:
«Мета абстрагування — створення нового рівня семантики, де можна бути абсолютно точним».
Створюючи єдину мову, ми фактично будуємо модель предметної області, яка повинна:
Модель не повинна охоплювати всі деталі. Вона має включати лише ті аспекти, які потрібні для реалізації конкретного програмного продукту. Комунікація між розробниками та експертами є критично важливою. Недопрацювання у спілкуванні можуть призвести до серйозних помилок у продукті.
Створення єдиної мови вимагає постійної взаємодії з експертами.
Зміни у предметній області вимагають оновлення мови. Постійне використання мови дозволяє глибше зрозуміти суть предметної області.
Для управління та зберігання єдиної мови можна використовувати:
Сценарій: Повідомити агента про новий запит
Дано: Користувач подає запит з текстом:
«Мені потрібна допомога в налаштуванні AWS»
Коли: Запит призначено містеру Вольфу
Тоді: Агент отримує повідомлення про новий запит.
Незважаючи на важливість інструментів, вони не замінять реального використання мови у повсякденній роботі.
Розробка єдиного мови (ubiquitous language) виглядає простою в теорії, але на практиці це може бути складніше. Успіх залежить від:
Згодом, ви зрозумієте, що процес збору знань часто полягає не тільки в ідентифікації вже існуючих фактів, а й у спільному створенні моделі разом з експертами.
Процес навчання в таких умовах є взаємним — ви допомагаєте експертам краще розуміти їхню предметну область. Це дозволяє:
Іноді предметна область вже описана наявним мовним апаратом в організації. Але цей мова може бути:
На питання, яку мову вибрати в неангломовній країні, моя порада:
Єдиний мова — це не просто термінологія. Це основа для ефективного спілкування та взаємодії на всіх етапах проекту.
Приклад: телемаркетингова компанія Розглянемо ситуацію з телемаркетинговою компанією:
На рис. показано послідовність процесу.
Проблема При аналізі мови експертів предметної області з'являється дивна особливість: термін «лід» (lead) в маркетинговому відділі та відділі продажів має різні значення:
Маркетинговий відділ
Відділ продажів
Виникає питання: як створити єдину мову для компанії?
На практиці:
Спроби вирішення:
У першому випадку виникає зайва складність, а в другому — втрата важливої інформації.

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