Domain Driven Design - jahurtadod/domain-driven-design GitHub Wiki
DDD se refiere al "diseño guiado por el dominio", conocido en inglés como “Domain-Driven Design”.
El DDD no es una tecnología ni una metodología, es una técnica que está estructurada por varias prácticas que podrán ayudarte a tomar decisiones de diseño con el fin de enfocar y acelerar el manejo de dominios complejos durante el desarrollo de proyectos digitales.
INTRODUCCIÓN
Nos esforzamos por producir calidad en el software que desarrollamos. Logramos cierta calidad mediante el uso de pruebas que nos ayudan a evitar la entrega de software con un número alto de errores. Sin embargo, incluso si pudiéramos producir software completamente libre de errores, eso en sí mismo no significa necesariamente que se diseñe un modelo de software de calidad. La forma en que el software expresa la solución al objetivo empresarial que se está buscando, aún podría sufrir mucho. La entrega de software con pocos defectos es obviamente bueno. Aún así, podemos llegar más alto con un modelo de software bien diseñado que refleje explícitamente el objetivo comercial previsto, y nuestro trabajo puede alcanzar un reconocimiento por su gran nivel
El enfoque de desarrollo de software llamado Domain-Driven Design, o DDD, existe para ayudarnos a tener más éxito en la consecución de diseños de modelos de software de alta calidad. Cuando se implementa correctamente, el DDD nos ayuda a llegar al punto en que nuestro diseño es exactamente como el software funciona.
Por qué deberías hacer el DDD
- Permite poner a los expertos en dominios y a los desarrolladores en igualdad de condiciones, lo que produce un software que tiene perfecto sentido para el negocio, no sólo para los codificadores. Esto no significa simplemente tolerar al grupo opuesto. Significa convertirse en un equipo cohesivo y unido.
- Puedes enseñar al negocio más sobre sí mismo. Ningún experto en dominios, ningún gerente de nivel C, nadie, nunca sabe cada cosa sobre el negocio. Es un proceso de descubrimiento constante que se vuelve más perspicaz con el tiempo. Con el DDD, todo el mundo aprende porque todos contribuyen a los debates sobre los descubrimientos.
- Permite centralizar del conocimiento, con ello la empresa es capaz de asegurar que la comprensión del software no se encierre en el "conocimiento tribal", disponible sólo para unos pocos selectos, que por lo general son sólo los desarrolladores.
- Su equipo desarrolla un lenguaje común y compartido que todos en el equipo hablan.
- DDD proporciona técnicas sólidas de desarrollo de software que abordan tanto el diseño estratégico como el táctico. El diseño estratégico nos ayuda a comprender cuáles son las inversiones de software más importantes que hay que hacer, qué activos de software existentes hay que aprovechar para llegar allí de la manera más rápida y segura, y quién debe participar. El diseño táctico nos ayuda a elaborar un modelo único y elegante de una solución utilizando bloques de construcción de software probados y comprobados.
La utilidad de un modelo en el diseño basado en el dominio
En el diseño basado en el dominio, tres usos básicos determinan la elección de un modelo.
-
El modelo y el corazón del diseño se moldean mutuamente. Es el vínculo íntimo entre el modelo y la implementación lo que hace que el modelo sea relevante y asegura que el análisis que entró en él se aplique al producto final, un programa en marcha. Esta unión del modelo y la implementación también ayuda durante el mantenimiento y el desarrollo continuo, porque el código puede ser interpretado basado en la comprensión del modelo.
-
El modelo es la columna vertebral de un lenguaje utilizado por todos los miembros del equipo. Debido a la unión del modelo y la implementación, los desarrolladores pueden hablar del programa en este lenguaje. Pueden comunicarse con el dominio expertos sin traducción. Y porque el lenguaje se basa en la modelo, nuestras habilidades lingüísticas naturales se pueden convertir en el refinamiento del modelo en sí mismo.
-
El modelo es un conocimiento destilado. El modelo es el acuerdo del equipo forma de estructurar el conocimiento del dominio y distinguir los elementos de mayor interés. Un modelo capta cómo elegimos pensar en el a medida que seleccionamos los términos, desglosamos los conceptos y los relacionamos. El El lenguaje compartido permite a los desarrolladores y expertos en dominios colaborar de manera efectiva mientras luchan por la información en esta forma. La unión del modelo y la implementación hace que la experiencia con las primeras versiones del software aplicable como retroalimentación en el proceso de modelación.