Подтвердить что ты не робот

Архитектура, управляемая доменом, и модельная архитектура

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

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

Спасибо

4b9b3361

Ответ 1

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

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

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

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

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

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

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

НТН.

Ответ 2

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

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

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

Ответ 3

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

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