Diseño controlado por dominio (DDD)

El diseño impulsado por dominios (DDD) es una filosofía de desarrollo de software centrada en el dominio o esfera de conocimiento de quienes lo utilizan. El enfoque permite el desarrollo de software que se centra en los requisitos complejos de aquellos que lo necesitan y no desperdicia esfuerzos en nada innecesario. Los clientes del diseño impulsado por dominios suelen ser empresas de nivel empresarial.

Para diseñar desde una perspectiva impulsada por el dominio, se debe definir el área de especialización o dominio de la empresa. Hay dominios básicos y de apoyo. El dominio central de una empresa es único y fundamental para su funcionamiento, por lo que recibe la mayor parte de la atención, el tiempo y los recursos en el proceso de desarrollo. Los dominios de apoyo son más generales, como dinero, servicio o tiempo. Estos dominios luego se modelan en el idioma y luego en el código correspondiente. Si un dominio no se puede definir fácilmente en el idioma, no está listo para codificarse. Si se realiza un cambio en un dominio de negocios, generalmente se requerirá un cambio correspondiente en el código.

El libro Domain Driven Design de Eric Evans presentó la filosofía. El diseño dirigido por dominios se basa en el análisis y el diseño orientados a objetos. El enfoque facilita la comunicación sobre el proyecto en cuestión y limita el enfoque en las necesidades centrales del dominio. Al mismo tiempo, el diseño basado en dominios requiere un amplio conocimiento de un dominio y no se adapta bien a proyectos altamente técnicos.