domain-driven-design - que - domain driven design example
¿Qué es el diseño impulsado por el dominio? (4)
¿Alguien puede explicar (en términos sucintos) qué es exactamente el diseño impulsado por el dominio? Veo el término bastante pero realmente no entiendo qué es ni cómo se ve. ¿En qué se diferencia del diseño sin dominio?
Además, ¿alguien puede explicar qué es un objeto de dominio? ¿Cómo difiere el dominio de los objetos normales?
Aquí hay otro buen artículo que puede consultar en Domain Driven Design . si su solicitud es algo serio que no sea la asignación a la universidad. La premisa básica es estructurar todo alrededor de sus entidades y tener un fuerte modelo de dominio. Diferenciar entre los servicios que proporcionan cosas relacionadas con la infraestructura (como el envío de correo electrónico, datos persistentes) y servicios que realmente hacen las cosas que son requisitos básicos de su negocio.
Espero que ayude.
Domain Driven Design es una metodología y una receta de proceso para el desarrollo de sistemas complejos cuyo enfoque es mapear actividades, tareas, eventos y datos dentro de un dominio de problemas en los artefactos de tecnología de un dominio de solución.
El énfasis del Diseño Dirigido por Dominio es comprender el dominio del problema para crear un modelo abstracto del dominio del problema que luego se puede implementar en un conjunto particular de tecnologías. El diseño impulsado por el dominio como metodología proporciona directrices sobre cómo el desarrollo de este modelo y el desarrollo de la tecnología pueden dar como resultado un sistema que satisfaga las necesidades de las personas que lo usan y al mismo tiempo sea sólido frente al cambio en el dominio del problema.
El lado del proceso del Diseño Dirigido por Dominio implica la colaboración entre expertos de dominio, personas que conocen el dominio del problema y los expertos en diseño / arquitectura, personas que conocen el dominio de la solución. La idea es tener un modelo compartido con lenguaje compartido para que las personas de estos dos dominios diferentes con sus dos perspectivas diferentes discutan la solución, en realidad están discutiendo una base de conocimiento compartida con conceptos compartidos.
La falta de un entendimiento del dominio del problema compartido entre las personas que necesitan un sistema en particular y las personas que están diseñando e implementando el sistema parece ser un impedimento central para proyectos exitosos. Domain Driven Design es una metodología para abordar este impedimento.
Es más que tener un modelo de objetos. La atención se centra realmente en la comunicación compartida y en la mejora de la colaboración para que se puedan descubrir las necesidades reales dentro del dominio del problema y se cree una solución adecuada para satisfacer esas necesidades.
Diseño impulsado por el dominio: lo bueno y lo desafiante proporciona una breve descripción general con este comentario:
DDD ayuda a descubrir la arquitectura de nivel superior e informa sobre la mecánica y la dinámica del dominio que el software necesita para replicar. Concretamente, significa que un análisis bien hecho de DDD minimiza malentendidos entre expertos de dominio y arquitectos de software, y reduce el número posterior de costosas solicitudes de cambio. Al dividir la complejidad del dominio en contextos más pequeños, DDD evita obligar a los arquitectos del proyecto a diseñar un modelo de objetos inflado, que es donde se pierde mucho tiempo en la elaboración de detalles de implementación, en parte porque el número de entidades a tratar crece a menudo más allá del tamaño de pizarras blancas de la sala de conferencias.
Consulte también este artículo Diseño impulsado por dominio para la arquitectura de servicios que proporciona un breve ejemplo. El artículo proporciona la siguiente descripción en miniatura del diseño impulsado por el dominio.
El Diseño Dirigido por Dominio aboga por el modelado basado en la realidad del negocio como relevante para nuestros casos de uso. Como ahora está envejeciendo y el nivel de exageración está disminuyendo, muchos de nosotros nos olvidamos de que el enfoque DDD realmente ayuda a comprender el problema y diseñar software para la comprensión común de la solución. Al crear aplicaciones, DDD habla de problemas como dominios y subdominios. Describe los pasos / áreas de problemas independientes como contextos delimitados, enfatiza un lenguaje común para hablar sobre estos problemas y agrega muchos conceptos técnicos, como entidades, objetos de valor y reglas de raíz agregadas para respaldar la implementación.
Martin Fowler ha escrito una serie de artículos en los que se menciona el Diseño Dirigido por Dominio como una metodología. Por ejemplo, este artículo, BoundedContext , proporciona una visión general del concepto de contexto delimitado de Domain Driven Development.
En esos días más jóvenes se nos aconsejó construir un modelo unificado de todo el negocio, pero DDD reconoce que hemos aprendido que "la unificación total del modelo de dominio para un sistema grande no será factible ni rentable" 1 . Por lo tanto, DDD divide un sistema grande en contextos delimitados, cada uno de los cuales puede tener un modelo unificado, esencialmente una forma de estructurar MultipleCanonicalModels.
EDITAR:
Como este parece ser un resultado superior en Google y mi respuesta a continuación no es, consulte esta respuesta mucho mejor:
https://.com/a/1222488/1240557
ANTERIOR RESPUESTA (no tan completa :))
Para crear un buen software, debes saber de qué se trata ese software. No puede crear un sistema de software bancario a menos que tenga una buena comprensión de qué se trata la banca, uno debe comprender el dominio de la banca.
De: Domain Driven Design por Eric Evans.
Este libro hace un buen trabajo al describir DDD.
Regístrese para descargar un resumen del libro o descargue el resumen directamente .
SÓLO PODRÁ comprender el diseño impulsado por el Dominio al comprender primero lo siguiente:
¿Qué es un dominio?
El campo para el cual se construye un sistema. Administración de aeropuertos, ventas de seguros, cafeterías, vuelos orbitales, lo que sea.
No es inusual que una aplicación abarque varios dominios diferentes. Por ejemplo, un sistema minorista en línea podría estar trabajando en los dominios del envío (eligiendo las formas apropiadas de entrega, dependiendo de los artículos y el destino), precios (incluidas las promociones y los precios específicos del usuario, por ejemplo, ubicación) y recomendaciones (cálculo relacionado productos por historial de compras).
¿Qué es un modelo?
"Una aproximación útil al problema en cuestión". - Gerry Sussman
Una clase de empleado no es un empleado real. Modela a un empleado real. Sabemos que el modelo no captura todo sobre empleados reales, y ese no es el punto. Solo pretende capturar lo que nos interesa para el contexto actual.
Distintos dominios pueden estar interesados en diferentes formas de modelar lo mismo. Por ejemplo, el departamento de sueldos y el departamento de recursos humanos pueden modelar a los empleados de diferentes maneras.
¿Qué es un modelo de dominio?
Un modelo para un dominio.
¿Qué es el diseño controlado por el dominio (DDD)?
Es un enfoque de desarrollo que valora profundamente el modelo de dominio y lo conecta a la implementación. DDD fue acuñado e inicialmente desarrollado por Eric Evans.
Culled de here