Что такое доменно-управляемый дизайн? - PullRequest
171 голосов
/ 16 марта 2011

Может кто-нибудь объяснить (в сжатой форме), что именно является доменным дизайном? Я вижу термин довольно часто, но на самом деле не понимаю, что это такое или как оно выглядит. Чем он отличается от не доменного дизайна?

Кроме того, кто-нибудь может объяснить, что такое доменный объект? Чем домен отличается от обычных объектов?

Ответы [ 6 ]

94 голосов
/ 16 марта 2011

EDIT:

Поскольку это, похоже, лучший результат в Google, а мой ответ ниже - нет, обратитесь к этому гораздо лучшему ответу:

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

СТАРЫЙ ОТВЕТ (не очень полный:))

Чтобы создать хорошее программное обеспечение, вы должны знать, что это за программное обеспечение это все о. Вы не можете создать банковскую систему программного обеспечения, если вы иметь хорошее представление о том, что такое банковское дело, нужно понять сферу банковского дела.

От: Домен, управляемый Эриком Эвансом.

Эта книга довольно хорошо описывает DDD.

Зарегистрируйтесь, чтобы скачать краткое изложение книги , или загрузите краткое изложение напрямую .

36 голосов
/ 14 февраля 2016

Domain Driven Design - методология и методическое задание для разработки сложных систем, целью которых является сопоставление действий, задач, событий и данных в проблемной области с технологическими артефактами в области решения.

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

Процессная сторона Domain Driven Design включает в себя сотрудничество между экспертами домена, людьми, которые знают проблемную область, и экспертами по дизайну / архитектуре, людьми, которые знают домен решений. Идея состоит в том, чтобы иметь общую модель с общим языком, чтобы, когда люди из этих двух разных областей со своими двумя разными взглядами обсуждали решение, они фактически обсуждают общую базу знаний с общими понятиями.

Отсутствие общего понимания проблемной области между людьми, которым нужна конкретная система, и людьми, которые проектируют и внедряют систему, кажется основным препятствием для успешных проектов. Домен-управляемый дизайн является методологией для устранения этого препятствия.

Это больше, чем объектная модель. На самом деле основное внимание уделяется общению и улучшению совместной работы, чтобы можно было выявить реальные потребности в проблемной области и создать соответствующее решение для удовлетворения этих потребностей.

Домен-управляемый дизайн: хорошее и сложное дает краткий обзор с этим комментарием:

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

См. Также эту статью. Архитектура, управляемая доменом, для архитектуры служб , в которой приведен краткий пример. В статье приводится следующее описание миниатюрного доменного дизайна.

Domain Driven Design поддерживает моделирование, основанное на реальности бизнес в соответствии с нашими вариантами использования. Как сейчас стареет и уровень обмана снижается, многие из нас забывают, что подход DDD действительно помогает в понимании проблемы и разработки программного обеспечения для общее понимание решения. При создании приложений, DDD говорит о проблемах как доменов, так и поддоменов. Он описывает независимые шаги / области проблем как ограниченные контексты, подчеркивает общий язык, чтобы говорить об этих проблемах, и добавляет много технических понятия, такие как сущности, объекты значения и агрегировать корневые правила для поддержать реализацию.

Мартин Фаулер написал несколько статей, в которых в качестве методологии упоминается доменно-управляемый дизайн. Например, эта статья, BoundedContext , предоставляет обзор концепции ограниченного контекста из разработки, управляемой доменом.

В те молодые годы нам посоветовали построить единую модель весь бизнес, но DDD признает, что мы узнали, что "всего унификация доменной модели для большой системы не будетосуществимый или экономически эффективный " 1 . Таким образом, вместо этого DDD разделяет большую систему на ограниченные контексты, каждый из которых может иметь унифицированную модель - по сути, способ структурирования MultipleCanonicalModels.

13 голосов
/ 13 сентября 2017

Вы МОЖЕТЕ ТОЛЬКО понять доменный дизайн, сначала поняв, что такое:

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

Поле, для которого построена система.Управление аэропортом, страховые продажи, кафе, орбитальный рейс, вы называете это.

Нет ничего необычного в том, что приложение охватывает несколько разных доменов.Например, система розничной торговли в Интернете может работать в областях доставки (выбор подходящих способов доставки, в зависимости от товаров и места назначения), ценообразования (включая рекламные акции и индивидуальные цены, скажем, по местоположению) и рекомендаций (вычисление связанныхпродукты по истории покупок).

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

«Полезное приближение к рассматриваемой проблеме».- Джерри Суссман

Класс Сотрудник не настоящий работник.Он моделирует настоящего сотрудника.Мы знаем, что модель не отражает все о реальных сотрудниках, и это не главное.Он предназначен только для того, чтобы охватить то, что нас интересует для текущего контекста.

Разные домены могут интересоваться разными способами для моделирования одной и той же вещи.Например, отдел оплаты труда и отдел кадров могут моделировать сотрудников по-разному.

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

Модель для домена.

Что такое Domain-Driven Design (DDD)?

Это подход к разработке, который глубоко ценит модель предметной области и связывает ее с реализацией.DDD был придуман и первоначально разработан Эриком Эвансом.

Culled от здесь

11 голосов
/ 17 марта 2011

Вот еще одна хорошая статья, которую вы можете проверить на Domain Driven Design .если ваше заявление является чем-то серьезным, чем назначение колледжа.Основная предпосылка - структурировать все вокруг ваших сущностей и иметь сильную модель предметной области.Различайте службы, предоставляющие услуги, связанные с инфраструктурой (такие как отправка электронной почты, постоянные данные), и службы, которые действительно выполняют функции, отвечающие вашим основным бизнес-требованиям.

1 голос
/ 01 ноября 2018

Как и в TDD и BDD, вы / команда больше внимания уделяете тестированию и поведению системы, чем реализации кода.

Подобным образом, когда системный аналитик, владелец продукта, команда разработчиков и, конечно, код - сущности / классы, переменные, функции, процессы пользовательских интерфейсов взаимодействуют на одном языке, его называют доменной структурой

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

Существует множество подходов к моделированию системы с использованием DDD *.1007 *

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

Объект домена:

Другими словами, у объекта, имя которого

  • основано на бизнес-процессе / потоке
  • , есть полный контроль над его внутреннимstate т.е. предоставляет методы для манипулирования состоянием.
  • всегда выполняет все бизнес-инварианты / бизнес-правила в контексте его использования.
  • следует принципу единой ответственности
0 голосов
/ 09 мая 2019

Я верю, что следующий PDF даст вам большую картину. Domain Driven Design от Эрика Эванса

ПРИМЕЧАНИЕ. Подумайте о проекте, над которым вы можете работать, примените все, что вы поняли, и ознакомьтесь с лучшими практиками.Это также поможет вам развить ваши способности к проектированию архитектуры микросервисов.

...