Что такое дизайн, управляемый доменом?


46

Итак, я получил этот вопрос от одного из разработчиков моей команды: что такое доменный дизайн? Я мог бы, конечно, указать на книгу от Эванса, но на самом деле это ответ?

Как вы объясните DDD в нескольких предложениях младшим разработчикам программного обеспечения в вашей команде?

  0

> Модератор Примечание: Ссылка больше не может иметь значение посещения [http://dddcommunity.org] (http://dddcommunity.org/)/ 19 сен. 082008-09-19 10:53:06

42

Я бы сказал, что эта практика способствует концентрации ваших усилий на «проблемном пространстве», а не на «пространстве решений». Вождение развивающегося решения (дизайн), изучая и действительно узнавая и понимая домен. Один из методов (взятых из XP) - это запись историй, которые происходят в проблемной области. Из них вы можете определить свои варианты использования и объекты для вашего дизайна. Они «появляются» и сообщают вам, что должно быть в решении, и как им нужно будет взаимодействовать друг с другом.


3

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

+3

Aas, насколько я понимаю, это не программисты, говорящие на языке экспертов, но разрабатывают общий язык. 19 сен. 082008-09-19 10:52:20

  0

@sumek пытается заставить людей согласиться на * общий язык *, вероятно, не стоит усилий. Требуется много времени, чтобы заставить бизнес согласиться на ** все **. По моему опыту, обычно лучше всего соответствовать существующему языку, то есть, если вы хотите отправить его вовремя ... 25 июн. 132013-06-25 11:54:52


9

В процессе обнаружения «домена» вы формируете общий язык, который понимают как разработчики, так и все остальные заинтересованные стороны проекта.

Модель домена и его «лингво» вполне заметны в исходном коде для готового продукта. Это, по крайней мере, мой опыт.


4

Попытка понять, о чем вы пишете программное обеспечение, и отражать это понимание в модели.


17

InfoQ имеет бесплатную электронную книгу:

Domain Driven Design Quickly

Это хорошо читать с большим количеством примеров.

  0

Это очень хорошо и лаконично. Новые разработчики нашей команды должны прочитать это сейчас. 08 фев. 142014-02-08 10:05:28


2

Domain Driven Design - это управление сложностью приложения в модели домена, где его легче всего перегонять.

Это очень трудно описать в нескольких предложениях, но я бы рекомендовал книгу InfoQ как хорошее введение. Я также слышал о том, что многие люди занимаются книжным клубом с помощью книги DDD от Evans, которая многое помогла понять.

+1

DDD переехал много, так как синяя книга была написана 10 лет назад. Тогда богатая доменная модель была единственным способом свести деловую сложность в связном ключе. В наши дни у нас есть еще несколько вариантов, таких как CQRS и источники событий, поэтому старое представление о том, что 'DDD == rich domain model 'не выполняется. Я ценю, что этот ответ был написан 5 лет назад. 25 июн. 132013-06-25 11:59:23


1

Для меня это следующий уровень OOD/OOP, где инкапсуляция - это проблема проблемного пространства, как описано и понята пользователями, и не столько о технической реализации.


1

Read "An Introduction to Domain Driven Design" для быстрого, но подробное введение в DDD