Pregunta

¿Cuáles son las diferencias y similitudes entre los lenguajes específicos de dominio (DSL) y el diseño impulsado por dominio (DDD)?

¿Fue útil?

Solución

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. :-)

Otros consejos

Domain-Driven Design enfatiza la función del dominio del problema al crear el vocabulario fundamental, los conceptos y el modelo de objetos para el sistema que se está diseñando.

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

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 (basado en dominio), seguramente ayudará a crear un DSL sólido.

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

Supongo que ambos tienen como foco principal reducir el ruido en la programación, DDD actúa sobre el ruido semántico y los DSL en el ruido sintáctico.

Esto puede ayudar a entender mi opinión:

http://fragmental.tw/2009/03/12/expessive -design-slides /

http://fragmental.tw/2008 / 04/20 / domain-specific-languages-and-video-games /

Un elemento de DDD se puede ver como la capacidad de desarrollar lenguajes ubicuos para hablar con el interesado sobre el dominio. Para el subconjunto de aquellos UL que son ambiguos y potencialmente ejecutables, puede elegir implementarlos mediante un DSL interno o externo.

Aquí hay un video en el que discuto esto en el sitio de DomainDriven:

http://domaindrivendesign.org/library/bell_gitlevich_2009

Mis mejores deseos, Pedro

Wikipedia tiene una definición bastante clara para DSL :

  

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

Esto se puede implementar como un conjunto de clases siguiendo un patrón consistente, alguna magia de plantilla de C ++ elegante o un compilador / analizador que interpreta el ingreso de texto libre para hacer lo que quieras.

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

Para obtener información muy bien escrita sobre los DSL, consulte el conjunto de páginas de Martin Fowler en los DSL (trabajo en progreso ), puede comenzar con el ejemplo , o el definition . Otra buena lectura es su QandA .

DDD se basa en el modelo de dominio y, por lo general, al menos un nivel de abstracción superior al DSL. Ambos pueden existir sin el otro, y como ya dijo Christophe, ambos pueden usarse en el mismo proyecto.

Las diferencias, uno es un enfoque para construir sistemas utilizando un 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.

Wikipedia ( https://en.wikipedia.org/wiki/Domain-driven_design) tiene una buena respuesta:

  

DDD no requiere específicamente el uso de un DSL, aunque podría ser   Se utiliza para ayudar a definir un DSL y admitir métodos como dominio específico   multimodalización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top