2010-11-12 2 views
31

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

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

Благодаря

+0

Это может помочь людям ответить на этот вопрос, если вы могли бы предоставить немного фона в исследование, которое вы уже сделали. –

ответ

26

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

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

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

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

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

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

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

hth.

4

Корень как Domain-Driven Design (DDD) и Model Driven Architecture (MDA) является Model-Driven Engineering (MDE), также известный как Model-Driven Development Software (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

+0

Техника - искусство :) –

Смежные вопросы