¿Alguien puede explicar (en términos breves) qué es exactamente el diseño impulsado por dominio? Veo bastante el término, pero realmente no entiendo qué es o qué aspecto tiene. ¿Cómo difiere del diseño no dirigido por dominio?
Además, ¿alguien puede explicar qué es un objeto de dominio? ¿Cómo difiere el dominio de los objetos normales?
domain-driven-design
Calanus
fuente
fuente
Respuestas:
EDITAR:
Como este parece ser un resultado superior en Google y mi respuesta a continuación no lo es, consulte esta respuesta mucho mejor:
https://stackoverflow.com/a/1222488/1240557
ANTIGUA RESPUESTA (no tan completa :))
De: Diseño impulsado por dominio de Eric Evans.
Este libro hace un muy buen trabajo al describir DDD.
Regístrese para descargar un resumen del libro o descargue el resumen directamente .
fuente
Domain Driven Design es una metodología y prescripción de procesos para el desarrollo de sistemas complejos cuyo enfoque es mapear actividades, tareas, eventos y datos dentro de un dominio problemático en los artefactos tecnológicos de un dominio de solución.
El énfasis del diseño impulsado por dominio es comprender el dominio del problema para crear un modelo abstracto del dominio del problema que luego puede implementarse en un conjunto particular de tecnologías. El diseño impulsado por dominio como metodología proporciona pautas sobre cómo este desarrollo de modelo y desarrollo de tecnología puede dar como resultado un sistema que satisfaga las necesidades de las personas que lo utilizan y, al mismo tiempo, sea robusto frente al cambio en el dominio del problema.
El lado del proceso del diseño dirigido por el dominio implica la colaboración entre expertos en el 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 un 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 una comprensión 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. El diseño impulsado por dominio es una metodología para abordar este impedimento.
Es más que tener un modelo de objetos. El enfoque es realmente sobre la comunicación compartida y 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 dominio: lo bueno y lo desafiante proporciona una breve descripción general con este comentario:
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 controlado por dominio.
Martin Fowler ha escrito una serie de artículos en los que se menciona el diseño impulsado por dominio como metodología. Por ejemplo, este artículo, BoundedContext , proporciona una descripción general del concepto de contexto acotado del Desarrollo dirigido por dominio.
fuente
Usted sólo puede entender el diseño de dominio impulsada por primera comprender lo que los siguientes son:
Sacado de aquí
fuente
Aquí hay otro buen artículo que puede consultar sobre Diseño impulsado por dominio . si su solicitud es algo más serio que una asignación universitaria. La premisa básica es estructurar todo alrededor de sus entidades y tener un modelo de dominio sólido. Diferenciar entre los servicios que proporcionan cosas relacionadas con la infraestructura (como enviar correos electrónicos, datos persistentes) y los servicios que realmente hacen cosas que son sus requisitos comerciales principales.
Espero que ayude.
fuente
Al igual que en TDD y BDD, usted / equipo se enfoca más en las pruebas y el comportamiento del sistema que en la implementación del código.
De manera similar cuando el analista del sistema, el propietario del producto, el equipo de desarrollo y, por supuesto, el código: entidades / clases, variables, funciones, procesos de interfaces de usuario se comunican usando el mismo lenguaje, se llama Diseño impulsado por dominio
DDD es un proceso de pensamiento. Al modelar un diseño de software, debe mantener el dominio / proceso empresarial en el centro de atención en lugar de las estructuras de datos, los flujos de datos, la tecnología, las dependencias internas y externas.
Hay muchos enfoques para modelar systerm usando DDD
Objeto de dominio:
En palabras muy ingenuas, un objeto que
fuente
DDD (diseño impulsado por dominio) es un concepto útil para analizar los requisitos de un proyecto y manejar la complejidad de estos requisitos. Antes de que las personas estuvieran analizando estos requisitos al considerar las relaciones entre clases y tablas y, de hecho, su diseño se basaba en tablas de bases de datos relaciones no es viejo pero tiene algunos problemas:
En proyectos grandes con requisitos complejos no es útil, aunque esta es una excelente forma de diseño para proyectos pequeños.
Cuando no se trata de personas técnicas que no tienen un concepto técnico, este conflicto puede causar algunos problemas importantes en nuestro proyecto.
Por lo tanto, DDD maneja el primer problema al considerar el proyecto principal como un Dominio y dividir cada parte de este proyecto en piezas pequeñas que nos caracterizan por Contexto limitado y cada una de ellas no tiene influencia en otras piezas. Y el segundo problema se ha resuelto con un lenguaje omnipresente que es un lenguaje común entre los miembros del equipo técnico y los propietarios de productos que no son técnicos pero tienen suficiente conocimiento sobre sus requisitos.
En general, la definición simple de Dominio es el proyecto principal que genera dinero para los propietarios y otros equipos.
fuente
Creo que el siguiente pdf le dará una visión más amplia. Diseño impulsado por dominio por Eric Evans
NOTA: Piense en un proyecto en el que pueda trabajar, aplique las pequeñas cosas que entendió y vea las mejores prácticas. También le ayudará a aumentar su capacidad para el enfoque de diseño de arquitectura de micro servicios.
fuente
No quiero repetir las respuestas de los demás, así que, en resumen, explico algunos malentendidos comunes
Debe evitar usarlo en todo su proyecto
Básicamente, es porque lleva demasiado tiempo y esfuerzo. Por lo tanto, se sugiere dividir todo el dominio en subdominio y simplemente aplicarlo en aquellos con alto valor comercial. (ex no en subdominio genérico como correo electrónico, ...)
No es programación orientada a objetos. Es principalmente un enfoque de resolución de problemas y (a veces ) no necesita usar patrones OO (como Gang of Four) en sus modelos de dominio. Simplemente porque no puede ser entendido por los expertos en negocios (no saben mucho sobre Factory, Decorator, ...). Incluso hay algunos patrones en DDD (como The Transaction Script, Table Module) que no están 100% en línea con los conceptos OO.
fuente