Домен-управляемый дизайн против модели-управляемой архитектуры - PullRequest
38 голосов
/ 12 ноября 2010

Мне любопытно, каковы различия между доменно-управляемым дизайном и модельно-управляемой архитектурой?У меня сложилось впечатление, что у них есть определенные сходства.

Не могли бы вы просветить меня?

Спасибо

Ответы [ 3 ]

34 голосов
/ 13 ноября 2010

Не соглашайтесь с большинством вышеперечисленных, хотя, возможно, стоит немного расширить.

Единственная самая важная концепция в DDD - сосредоточиться на проблемной области. Отложить технологическую одержимость в сторону и сконцентрироваться в первую очередь на моделировании проблемы, которую вы пытаетесь решить. Поэтому поместите ajax, ORM, базы данных, фреймворки и т. Д. В фоновый режим и вместо этого убедитесь, что у вас есть полная и точная модель проблемы в первую очередь. (Конечно, вам все еще нужны архитектурные компоненты - но они явно подчинены модели). DDD называет это «вездесущим языком» - модель, выраженная в терминах, которые используют и понимают как эксперты в области предметной области, так и разработчики. Модель, в которой имена классов, методов и т. Д. Взяты из проблемной области.

DDD не предписывает / как / вы фиксируете эту модель, хотя книга подразумевает использование языка OO для этого.

MDA разделяет ту же концепцию моделирования проблемной области в первую очередь (PIM, Платформо-независимая модель). В отличие от DDD, он рекомендует создавать эту модель с UML. Но цель та же: понять проблемную область, не затрагивая ее (программные) архитектурные проблемы.

PSA (модель для платформы) MDA в некоторой степени аналогична применению архитектурных шаблонов в DDD (например, агрегат, репозиторий и т. Д.). Опять же - хотя они и различаются по специфике - оба стремятся решить проблему преобразования «чистой» модели предметной области в полноценную программную систему.

Подводя итог, я бы сказал, что они похожи в двух отношениях:

  1. Центральность модели (как говорит @Rui), в частности / Domain / model.
  2. Применение архитектурных моделей к модели для реализации целевой системы.

НТН.

5 голосов
/ 12 ноября 2010

Корнем как доменно-ориентированного проектирования (DDD), так и модельно-управляемой архитектуры (MDA) является модельно-управляемое проектирование (MDE), также известное как разработка программного обеспечения на основе моделей (MDSD), если оно ограничено областью разработки программного обеспечения. Смотрите Википедию: http://en.wikipedia.org/wiki/Model-driven_development

Все подходы, попадающие под зонтик MDE, имеют одну общую черту: модель. То, как эта модель материализуется, зависит от конкретного аромата MDE.

MDA считается слишком сложным. Некоторые считают ДДД слишком абстрактным. Мои личные любимые реализации MDE - DSM и ABSE (не перечисленные в статье в Википедии).

3 голосов
/ 12 ноября 2010

DDD - это подход к программному решению с точки зрения бизнеса с целью максимально приблизить дизайн к реальному миру.Это скорее искусство, чем инженерия.

MDA решает разные проблемы.Подробнее здесь: http://xml.coverpages.org/OMG-MDAFAQfinal1.pdf

...