¿Qué pregunta responde DDD? [duplicar]

12

¿Cuál es el problema que se resuelve con Domain Driven Design?

Entiendo lo que Object Oriented Programming trajo y veo los problemas que abordó y cómo, y en qué aspecto / escenaria, facilitó la vida de un desarrollador. Pero hasta ahora no pude ver el panorama general de lo que el DDD nos brinda. Seguro que esto se debe al hecho de que acabo de comenzar con DDD y tal vez sea algo que sabré al final (después de haber trabajado con él durante algunos años). Pero si no, y es posible resumir el panorama general en algunas oraciones, compártelos conmigo.

Lo que tengo hasta ahora:

DDD ayuda a definir un lenguaje común para discutir un proyecto de software, por ejemplo. Para entender lo que está sucediendo en un dominio, por ejemplo, Cómo funciona el negocio, qué operaciones son posibles y bajo qué condiciones. Qué datos deben almacenarse y cómo deben agruparse.

¿Es este el panorama general? Creo que hay más, pero aún no puedo verlo.

Editar

Existe una pregunta similar ¿Qué es el desarrollo impulsado por dominios en términos prácticos? . Sin embargo, esta pregunta tiene un enfoque diferente cuando se pregunta qué es DDD , mientras que me gustaría aprender sobre qué problema DDD es la solución . Una respuesta es realmente excelente y también incluye posibles respuestas a mi pregunta. No puedo juzgar si esta respuesta incluye la respuesta completa a mi pregunta, pero en este momento mi intuición me dice que no.

    
pregunta Sjoerd222888 14.12.2015 - 18:13

2 respuestas

12

El Diseño Dirigido por Dominio es fundamentalmente un remedio para nuestra tendencia a sangrar los objetos y preocupaciones técnicos y "filosóficos" entre sí. Incluso en los casos en que tenemos la sensación de que estas dos cosas se abordan mejor como preocupaciones separadas, puede ser difícil hacer las divisiones correctas sin una regla clara.

Y así, la regla básica es: "cree y mantenga una parte claramente reconocible de su aplicación (el dominio) en la que contiene sus objetos y métodos puros y reconocibles por el negocio, cuyos nombres debe reconocer cualquier persona de negocios. "

Se trata de evitar las situaciones en las que tanto las reglas comerciales como la tecnología son difíciles de cambiar porque no están bien aisladas entre sí.

En mi propia experiencia con las aplicaciones web, descubrí que cuando no se respetan explícitamente los principios de DDD y de DDD, existe una tendencia fuerte a hacer que las reglas de negocios se adapten a la derecha Código de interfaz de usuario Por lo tanto, terminará con varias copias de las reglas de negocio (una para cada página), y ni las UI's ni las reglas de negocio se pueden cambiar fácilmente.

    
respondido por el svidgen 14.12.2015 - 19:01
5

Creo que DDD trata con un concepto un tanto subestimado, al que llamo "Separación de problema / solución". Y resuelve el problema de Reutilización de problemas en lugar de solo Reutilización de soluciones.

Tal como lo veo, debería modelar los elementos del problema de una manera que no dependa de cómo se resolvería. Esa sería la parte de "análisis" de OOAD, donde se define conceptualmente cuáles son los elementos del problema. Mientras tanto, a medida que avanza en el desarrollo de su solución , es decir, diseñando una de las posibles soluciones, agregue elementos que pertenecen específicamente a esa solución. . Esa sería la parte de "diseño" de la aplicación, donde se define cómo deben manipularse los elementos del problema, o cómo se espera que interactúen para que el problema se resuelva.

Como ejemplo concreto, desarrollo software médico (en su mayoría, captura de datos, procesamiento y visualización de señales biológicas). Nuestra compañía tiene un puñado de productos de software, cada uno de los cuales resuelve problemas bastante similares en formas ligeramente diferentes, dependiendo de la especialidad médica. Tras el análisis, es decir, el análisis del problema , hemos visto los mismos conceptos recurrentes una y otra vez. Esos conceptos se diseñaron en objetos (o interfaces, o clases abstractas) y se colocaron en un ensamblaje llamado Company.BioSignals.DomainModel . Ahora tenemos una asignación de uno a muchos entre una parte del código base relacionada con problemas, circunscrita, y un conjunto de partes del código base relacionadas con la solución.

    
respondido por el heltonbiker 14.12.2015 - 21:11

Lea otras preguntas en las etiquetas