Как применять принципы проектирования, основанные на домене, при разработке общей системы?


1

Итак, скажем, нам нужно разработать систему управления библиотекой. Теперь это можно сделать с помощью принципов проектирования, основанных на доменах, путем написания вездесущего языка, затем выяснения ограниченных контекстов, создания корней Aggregate и, наконец, создания объектной модели с книгами, пользователями, авторами и т. Д.

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

Можем ли мы по-прежнему применять принципы управления доменными технологиями при разработке общей системы? Если, да, то в вездесущем Языке мы должны перечислить объекты домена, такие как Книги, Пользователи, Авторы, Сотрудники, Отделы и т. Д., Или просто перечислим партию Generic objects/Name Value/Hashtable. Поскольку эта общая система может быть использована для реализации любой другой системы, специфичной для домена.

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

2

Можем ли мы по-прежнему применять принципы проектирования доменных технологий при разработке общей системы?

Да, DDD может применяться к общей системе, которую вы описываете.

Если да, то в повсеместном языке мы должны перечислить домен объекты как книги, пользователи, авторы, сотрудники, отделы и т.д., или мы должны просто список родовых объектов/Имя Значения пару/Hashtable.

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

Можно сказать, что DDD состоит из двух компонентов - тактического и стратегического. Тактические шаблоны носят технический характер и включают такие вещи, как репозитории, объекты ценности и т. Д. Эти шаблоны обычно имеют конкретные проявления для каждого языка и платформы. Эти шаблоны также, скорее всего, будут меняться по мере изменения технологий. Например, если при использовании event-sourcing с DDD, тактические шаблоны несколько отличаются. При внедрении общей системы, такой, как описанная вами, тактические модели могут быть разными.

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

  0

Но вопрос в том, что в случае, если вы разрабатываете общую систему, что бы вы разместили на вездесущем языке. В вашем таргетинге нет домена. 11 дек. 122012-12-11 05:36:57

+1

Всегда есть домен, в данном случае это просто общий/абстрактный/технический. Вы можете вводить термины, которые могут быть обобщенными на вездесущем языке, но они не должны иметь технических последствий, например, термин hashtable. 11 дек. 122012-12-11 05:42:25

  0

Итак, вы имеете в виду, что вы можете использовать такие слова, как PrimaryEntity, ChildEntity или GenericResource, или что-то подобное, чтобы представлять общий объект. Но, не следует использовать Hashtable или Arraylist, поскольку они являются технологическими особенностями. 12 дек. 122012-12-12 16:29:20

  0

Да. Одной из целей DDD с вездесущим языком является устранение основных аспектов вашего домена как чистого знания с минимальной технической коннотацией, насколько это возможно. Это облегчает рассуждения о домене, а также облегчает общение. В целом, это тонкий сдвиг в мышлении, но он платит дивиденды. 12 дек. 122012-12-12 16:54:40