Diseño guiado por el dominio

La programación orientada a objetos es una herramienta muy potente debido a que se basa en un paradigma de modelado y provee una implementación de las construcciones del modelo. Java y otras herramientas permiten crear objetos y relaciones directamente análogas al modelo conceptual de objetos.
El diseño guiado por el dominio es un enfoque para el desarrollo de software con necesidades complejas mediante la conexión de la implementación con un modelo en evolución de los conceptos clave del negocio. 1
Un buen modelo del dominio captura las abstracciones y las informaciones essenciales necessarias para entender el dominio en el contexto de los requisitos actuales y ayuda a la gente a entender el dominio - sus conceptos, terminologia y relaciones-.
El diseño guiado u orientado por el dominio (DDD) no es exactamente una tecnología, sino una guía de prácticas y terminologías para organizar las aplicaciones y estructurar el código. DDD se basa abstraer y "naturalizar" la forma en que se interactúa con el sistema.
Este término fue acuñado por Eric Evans, en el libro "Domain Driven Design ".2
Esta enfoque complementa muy bien la arquitectura MVC, especialmente en la capa del modelo.

Terminología utilizada en el diseño guiado por el dominio:
• Entidad : un objeto definido principalmente por un hilo de continuidad e identidad 2 . El concepto de identidad adoptado por DDD va más allá de las operaciones de los lenguajes orientados a objetos, ya que proporcionan una "identidad" a cada objeto. (por ejemplo, el operador == en java).
El concepto de identidad, desde el punto de vista del DDD, es un atributo más metafísico, que emerge del modelo y toma significado a través del dominio. Es este concepto el que guía el diseño de la operación de identidad entre objetos del dominio. Por ejemplo, el muchas aplicaciones, el atributo "email" se utiliza como identificador de dos instancias de objeto de tipo Usuario, ya que dos usuarios no pueden tener el mismo email.
Tienen ciclos de vida que pueden cambiar radicalmente su forma y contenido, pero se debe mantener un hilo de continuidad.
• Value Object: un objeto que no tiene identidad. Por lo general, estos objetos son inmutables.
• Repository: objetos que se utilizan para almacenar, recuperar y eliminar entidades del almacenamiento de varias implementaciones.
• Service: Type of object that performs operations that do not belong conceptually to a particular object.
• Aggregate: Cluster of domain objects that can be treated as a single unit.
• Factory: The type of object used to create complex Aggregates.
Wanna know more?
Related Posts