2010-11-12 12 views
31

Tengo curiosidad, ¿cuáles son las diferencias entre el diseño impulsado por el dominio y la arquitectura impulsada por el modelo? Tengo la impresión de que tienen ciertas similitudes.Diseño impulsado por el dominio frente a arquitectura impulsada por modelo

¿Podrías aclararme?

Gracias

+0

Podría ayudar a las personas a responder esta pregunta si pudiera proporcionar un poco de información básica sobre la investigación que ya ha realizado. –

Respuesta

26

No está en desacuerdo con la mayoría de las anteriores, aunque tal vez valga la pena ampliar un poco.

El concepto más importante en DDD es centrarse en el dominio del problema. Poner la obsesión de la tecnología a un lado y concentrarse principalmente en modelar el problema que estás tratando de resolver. Así que pon a un lado los ajax, los ORM, las bases de datos, los marcos, etc. en su lugar y asegúrate primero de tener un modelo completo y preciso del problema. (Por supuesto, todavía necesita los componentes arquitectónicos, pero están subordinados explícitamente al modelo). DDD llama a esto "Lenguaje ubicuo", un modelo expresado en términos que los expertos en el dominio y los desarrolladores usan y entienden por igual. Un modelo donde los nombres de clases, métodos, etc. se toman del dominio del problema.

DDD no ordena/cómo/captura ese modelo, aunque el libro implica usar un lenguaje OO para hacerlo.

MDA comparte esa misma noción de modelar el dominio del problema en primer lugar (el PIM, modelo independiente de la plataforma). A diferencia de DDD, recomienda crear ese modelo con UML. Pero la intención es la misma: comprender el dominio del problema sin mancharlo con preocupaciones arquitectónicas (de software).

MDA's PSM (Platform-Specific Model) es algo similar a la aplicación de los patrones arquitectónicos en DDD (por ejemplo, agregado, repositorio, etc.). De nuevo, aunque diferentes en detalles, ambos intentan resolver el problema de convertir un modelo de dominio de problema "puro" en un sistema de software completo.

Así que resumiendo, yo diría que son similares en dos formas:

  1. La centralidad del modelo (como dice @Rui) - específicamente el/dominio/modelo.
  2. Aplicación de patrones arquitectónicos al modelo para realizar el sistema de destino.

hth.

4

La raíz tanto Driven Design-dominio (DDD) y Model Driven Architecture (MDA) es el Modelo-Driven Ingeniería (MDE), también conocido como Desarrollo de Software Dirigido por Modelos (DSDM) si se limita a el dominio de desarrollo de software. Ver Wikipedia: http://en.wikipedia.org/wiki/Model-driven_development

Todos los enfoques que caen bajo el paraguas de MDE tienen una cosa en común: un modelo. Cómo se materializa este modelo depende del sabor MDE específico.

MDA es considerado como demasiado complejo. DDD es considerado por algunos como demasiado abstracto. Mis implementaciones de MDE favoritas personales son DSM y ABSE (no figuran en el artículo de Wikipedia).

3

DDD se trata de abordar una solución de software desde una perspectiva comercial con la intención de mantener el diseño lo más cerca posible del mundo real. Esto es más un arte que ingeniería.

MDA resuelve diferentes problemas. Más detalles aquí: http://xml.coverpages.org/OMG-MDAFAQfinal1.pdf

+0

La ingeniería es un arte :) –

Cuestiones relacionadas