Що таке дизайн, керований доменом?


198

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

Також чи може хтось пояснити, що таке об’єкт домену? Чим домен відрізняється від звичайних об'єктів?




Чи відповідає це на ваше запитання? Що таке дизайн, керований доменом (DDD)?
Сатпал

Відповіді:


112

Редагувати:

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

https://stackoverflow.com/a/1222488/1240557

СТАРИЙ ВІДПОВІДЬ (не так повно :))

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

Від: Дизайн, керований доменом Еріка Еванса.

Ця книга робить досить непогану роботу з опису DDD.

Зареєструйтесь, щоб завантажити підсумок книги або завантажити його .


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

15
Тож я беру з цієї «прочитайте цю книгу» відповідь про те, що неможливо узагальнити DDD просто за кілька абзаців? Як філософія дизайну може бути такою складною?
Робін Уінслоу

Я б не сказав, що це неможливо, але я подумав, що є кращі місця для того, щоб прочитати про це, і книга Еріка Еванса - найкраще джерело для цього imo, так навіщо дублювати це тут?
Mikael Östberg

6
Шановний читачу: якщо ви, як і я, приїхали сюди з найкращого результату Google і були розчаровані, знайшовши прийняту відповідь, так що побоюючись (вибачте, Мікаел) не бійтеся, тут є більш задовольняючих пояснень на ТАК: stackoverflow.com/a/1222488 / 1240557
кригер

3
Там я оновив свою відповідь за посиланням. Це була набагато краща відповідь. Дякую!
Mikael Östberg

41

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

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

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

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

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

Дизайн, керований доменом: добро та виклик пропонує короткий огляд цього коментаря:

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

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

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

Мартін Фаулер написав ряд статей, в яких згадується дизайн, керований доменом як методологія. Наприклад, ця стаття, BoundedContext , пропонує огляд обмеженої концепції контексту від доменної розробки.

У ті молодші дні нам рекомендували побудувати єдину модель всього бізнесу, але DDD визнає, що ми дізналися, що "повне об'єднання доменної моделі для великої системи не буде здійсненим чи економічно ефективним" 1 . Отже, натомість DDD розбиває велику систему на обмежені контексти, кожен з яких може мати єдину модель - по суті спосіб структурування MultipleCanonicalModels.


20

Ви МОЖЕТЕ ТОЛЬКО зрозуміти дизайн, керований доменом, спочатку зрозумівши, що таке:

Що таке домен?

Поле, для якого побудована система. Управління аеропортом, страховий продаж, кав’ярні, орбітальний політ, ви його називаєте.

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

Що таке модель?

"Корисне наближення до існуючої проблеми." - Геррі Суссман

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

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

Що таке доменна модель?

Модель домену.

Що таке дизайн, керований доменом (DDD)?

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

Покинувся звідси


12

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

Сподіваюся, що це допомагає.


4

Як і в TDD & BDD, ви / команда більше зосереджуєтесь на тесті та поведінці системи, ніж на впровадженні коду.

Аналогічним чином, коли системний аналітик, власник продукту, команда розробників і звичайно код - сутності / класи, змінні, функції, користувацькі інтерфейси, процеси спілкуються за допомогою однієї і тієї ж мови, її називають Design Driven Design

DDD - це процес мислення. При моделюванні дизайну програмного забезпечення потрібно тримати домен / процес бізнесу в центрі уваги, а не структури даних, потоки даних, технології, внутрішні та зовнішні залежності.

Існує багато підходів до моделювання систематики за допомогою DDD

  • пошук подій (використання подій як єдиного джерела істини)
  • реляційні бази даних
  • графіки баз даних
  • з використанням функціональних мов

Об'єкт домену:

Дуже наївними словами, предмет який

  • має назву на основі бізнес-процесу / потоку
  • має повний контроль над своїм внутрішнім станом, тобто розкриває методи маніпулювання державою.
  • завжди виконувати всі бізнес-інваріанти / правила ведення бізнесу в контексті його використання.
  • дотримується єдиного принципу відповідальності

TDD - Тестова розробка
Nitin babariya

BDD - Розвиток поведінки
Нітін бабарія

DDD - розробка домену
Nitin babariya

DDD -> Дизайн, керований доменом ~ Розробка ~
psaxton

4

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

  • У великих проектах зі складними вимогами це не корисно, хоча це чудовий спосіб оформлення невеликих проектів.

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

Тож DDD вирішує першу проблему, розглядаючи головний проект як Домен і розбиваючи кожну частину цього проекту на невеликі шматки, якими ми відомі Bounded Context, і кожен з них не впливає на інші твори. А друга проблема була вирішена повсюдною мовою, яка є загальною мовою між членами технічної групи та власниками продуктів, які не є технічними, але мають достатньо знань про їхні вимоги

Взагалі просте визначення домену є головним проектом, який заробляє гроші власникам та іншим командам.


1

Я вірю, що наступний pdf дасть вам більшу картину. Дизайн, керований доменом Еріка Еванса

ПРИМІТКА. Придумайте проект, над яким ви можете працювати, застосуйте зрозумілі вами дрібниці та перегляньте найкращі практики. Це допоможе вам розширити свою здатність і до підходу до дизайну архітектури мікро сервісу.


0

Я не хочу повторювати відповіді інших, тому, коротко кажучи, пояснюю деякі поширені непорозуміння

  • Практичний ресурс: ВИМОГИ, ПРИНЦИПИ ТА ПРАКТИКИ ДИЗАЙНОВОГО ДИЗАЙНА від Скотта Міллетта
  • Це методологія складних бізнес-систем. Це стосується всіх технічних питань під час спілкування з бізнес-експертами
  • Він забезпечує широке розуміння (спрощеної та дистильованої моделі) бізнесу для всієї команди розробників.
  • вона підтримує бізнес-модель у синхронізації з кодовою моделлю, використовуючи всюдисущу мову (мова, яку розуміє вся команда розробників, бізнес-експерти, бізнес-аналітики, ...), яка використовується для спілкування в команді розробників або розробника з іншими командами
  • Це не має нічого спільного з управлінням проектами . Хоча він може бути ідеально використаний у таких методах управління проектами, як Agile.
  • Вам слід уникати використання всього проекту

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

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

  • Це не об'єктно-орієнтоване програмування. Це здебільшого підхід до вирішення проблем, і ( іноді ) вам не потрібно використовувати схеми ОО (наприклад, Банда з чотирьох) у ваших моделях домену. Просто тому, що це не можуть зрозуміти бізнес-експерти (вони не багато знають про Фабрику, Декоратор, ...). У DDD є навіть деякі структури (наприклад, сценарій транзакцій, табличний модуль), які не на 100% відповідають поняттям OO.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.