В чём отличие ПОДОБЛАСТИ от ОГРАНИЧЕННОГО КОНТЕКСТА?
Читаю книгу "Реализация методов предметно-ориентированного проектирования" Вон Вернон и не понимаю чем отличаются понятия подобласть и ограниченный контекст?
Сначала автор рисует запутанную схему, в которой одновременно фигурируют и ограниченные контексты и подобласти, при этом они ещё и взаимодействуют друг с другом, мало того, некоторые ограниченные контексты вмещают в себя несколько подобластей, и наоборот.
Дальше автор говорит, что вообще-то подобласть относится к пространству задач, а ограниченный контекст к пространству решений (реализации в коде) и упоминает, что хорошо когда
1 подобласть = 1 ограниченный контекст
но бывает иначе (как я описал выше).
Но как эти 2 понятия вообще могут пересекаться в контексте одного примера (схемы/диаграммы), если они из разных пространств?
Такое чувство, что автор сам не до конца понимает разницу. Прошу помочь разобраться, если можно на каком-нибудь простом примере, в чем концептуальная разница между этими двумя понятиями, и почему, со слов автора, они вообще могут взаимодействовать, если они в разных плоскостях лежат?
Ответы (2 шт):
Ответ на основе написанного в вопросе. Книгу не читал.
и почему, со слов автора, они вообще могут взаимодействовать, если они в разных плоскостях лежат?
Обратим внимание на определение данных понятий:
подобласть относится к пространству задач, а ограниченный контекст к пространству решений (реализации в коде)
Отсюда получаем ответ про возможность их взаимодействия: у задач (подобласть) есть решения (ограниченный контекст).
Теперь по поводу того, кто что может в себя вмещать.
Одно и тоже решение, можно применять для разного рода задач, например способом грубой силы (подбор), и наоборот, разными способами можно решить одну задачу (привет Perl подход).
Подобласть это термин описывающий единицу деления предметной области в моделировании. И используется для разбиения вашей предметной области.
Ограниченный контекст эта техническая реализация подоблости. Например как отдельного приложения в проекте или как микросервиса. То есть по большому счету это одно и тоже только в разных предметных областях свои термин.
В моделирование говорим подобласть. В кодирование говорим ограниченный контекст.
Что касательно сотвествия подобластей и ограниченных контекстов. Тут как всегда нет серебрянной пули и поэтому автор дает рекомендацию 1 к 1, но бывают случаи когда конкретный заказчик в своем бизнесе требует сильной согласованности между данными и система должна следить за инвариантами между сущностями из двух разных подобластей. Тогда мы можем объеденить эти подобласти в один ограниченный контекст. Но в такой ситуации стоит внимательно проверять согласованность и конфлиты терминов единого языка для этих подобластей.