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

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

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

Ответ 1

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

Ответ 2

В InfoQ есть бесплатная электронная книга:

Домен Driven Design быстро

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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