Вопрос

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

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

Идеи?Опровержения?Я совсем не в теме?

Это было полезно?

Решение

Нет, это абсолютно уместно.Эван в своей книге называет эти «перспективы» ограниченными контекстами.

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

Другие советы

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

Например, постройте часть системы с точки зрения сотрудника.Это может побудить вас создать такие сущности, как «Проект», «Задача» и «Клиент».Затем постройте часть с точки зрения сотрудника.Это может побудить вас создать новые сущности и повторно использовать «Проект» и «Задачу».Именно тогда я переместил «Проект» и «Задачу» в «основную библиотеку», общую для остальной части системы.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top