2008-10-07 21 views

Respuesta

10

Domain Driven Design (DDD) es una forma de pensar y comunicar sobre los problemas y sus soluciones.

El lenguaje específico del dominio (DSL) es una forma de escribir código.

Son similares porque ambos comienzan con la palabra "dominio". Eso es todo, supongo. :-)

+7

Aunque divertido, creo que esta respuesta es algo inexacto. una DSL usaría el mismo lenguaje ubicuo que se obtiene al practicar DDD para el mismo dominio, no están completamente relacionados. –

2

Yo diría que están relacionados de alguna manera y no solo por la palabra "dominio". Una vez que tenga un buen diseño (controlado por el dominio), seguramente le ayudará a crear un DSL sólido.

"DDD no requiere específicamente el uso de una DSL, aunque podría usarse para ayudar a definir una DSL." - Wikipedia

0

Wikipedia tiene una definición bastante clara para DSL:

El término lenguaje específico del dominio (DSL) se ha vuelto popular en los últimos años en desarrollo de software a indican un lenguaje de programación o especificación lenguaje dedicado a un dominio de problema particular , una técnica de solución de problema particular técnica y/o una técnica de solución particular .

Esto se puede implementar como un conjunto de clases siguiendo un patrón consistente, una magia de plantillas de C++ sofisticada o un compilador/analizador que interpreta la entrada de texto libre para hacer lo que desee.

0

Creo que están relacionados de alguna manera (como dijo Christophe), pero dos aspectos totalmente diferentes. Ni siquiera descartaría la declaración de jop.

Para obtener información muy bien escrita sobre DSL, consulte Martin Fowler's set of pages on DSLs (trabajo en progreso), puede comenzar con example o definition. Otra buena lectura es su QandA.

DDD se basa en el modelo de dominio y generalmente tiene al menos un nivel de abstracción más alto que el DSL. Ambos pueden existir sin el otro, y como Christophe ya dijo, ambos pueden usarse en el mismo proyecto.

6

El diseño controlado por el dominio enfatiza la función del dominio del problema a medida que crea el vocabulario, los conceptos y el modelo de objetos fundamentales para el sistema que se está diseñando.

Un lenguaje específico de dominio es una notación para especificar o implementar partes específicas del sistema, orientadas a las necesidades del profesional en ese dominio (es decir, minimizar los aspectos "programados" de la mayoría de los lenguajes de programación o especificación).

0

Las diferencias, una es un enfoque para construir sistemas usando un lenguaje de lenguaje específico del dominio (DSL) en lugar de un lenguaje de propósito general y el otro es un enfoque arquitectónico (DDD) para diseñar y construir sistemas.

La similitud es que ambos se centran en el dominio específico.

1

Un elemento de DDD puede verse como la capacidad de desarrollar lenguajes ubicuos para hablar con los interesados ​​sobre el dominio. Para el subconjunto de esas UL que no son ambiguas y potencialmente ejecutables, puede optar por implementarlas utilizando una DSL interna o externa.

He aquí un video de mí discutir esto en el sitio DomainDriven:

http://domaindrivendesign.org/library/bell_gitlevich_2009

mejores deseos, Peter

Cuestiones relacionadas