trabajo en equipo

adesso Blog

El Diseño Dirigido por el Dominio (DDD) es un enfoque de desarrollo de software que se centra en entender y modelar el dominio de negocio para solventar problemas complejos de manera eficaz. Según Eric Evans, autor de "Domain-Driven Design: Tackling Complexity in the Heart of Software", el dominio hace referencia al área de conocimiento, influencia o actividad en la que se desarrolla un producto de software.

En términos más simples, como explica Vaughn Vernon en su libro "Implementing Domain-Driven Design", el dominio es lo que una organización realiza y cómo lo realiza. Cada compañía adquiere su propio conjunto único de conocimientos y prácticas para poner a prueba sus operaciones, lo cual constituye su dominio. En resumen, el Diseño Dirigido por el Dominio se trata de entender en alto grado el negocio y componerlo de manera efectiva en el código para crear soluciones que estén estrictamente alineadas con las necesidades y objetivos de la compañía.

Según Eric Evans, un modelo es un sistema de abstracciones que describe aspectos seleccionados de un dominio y puede ser utilizado para resolver problemas relacionados con ese dominio. El dominio, a su vez, se divide en diferentes partes llamadas subdominios, cada uno conteniendo uno o varios modelos.

Estos subdominios se dividen de la siguiente manera:

1. Núcleo del Dominio o Dominio Principal (Core Domain)

Es la parte más significativa que hace que se convierta en un activo clave para la organización. Aquí residen los conceptos más relevantes y técnicos que distinguen a la compañía de sus adversarios. Se le otorga la mayor preferencia y requiere un esfuerzo significativo, concentrando el mejor talento de la organización.

2. Subdominios de soporte

Estos subdominios revelan aspectos del negocio que son importantes, pero menos críticos que el dominio principal. Aunque son imprescindibles para el funcionamiento general de la organización, no tienen el mismo nivel de complejidad o especialización que el núcleo del dominio.

3. Subdominio Genérico

Este subdominio no expresa aspectos específicos del modelo de dominio de la organización. Aquí, se permite la utilización de estándares y soluciones genéricas, como sistemas ERP (Enterprise Resource Planning) o CRM (Customer Relationship Management), para reducir la complejidad y los costos asociados.

En resumen, esta estructura de subdominios permite una organización más clara y efectiva del conocimiento y las responsabilidades dentro de un proyecto de desarrollo de software basado en el Diseño Dirigido por el Dominio, el cual puede aportar un valor significativo a las grandes organizaciones al proporcionar un marco sólido para comprender y modelar el dominio de negocio, mejorar la comunicación y la colaboración, gestionar la complejidad, y mantener la flexibilidad y la adaptabilidad a lo largo del tiempo

Domain-Driven Design

Domain-Driven Design Reference: Definitons and Pattern Summaries

Arquitectura Hexagonal con DDD

La Arquitectura Hexagonal, también conocida como Arquitectura de Puertos y Adaptadores, busca separar la lógica de negocio de los detalles de implementación al dividir la aplicación en capas internas y externas.

  • Capas Internas: Representan el núcleo de la aplicación donde reside la lógica de negocio. Aquí se definen los modelos, reglas y procesos que son específicos de la aplicación.
  • Capas Externas: Son los adaptadores que se comunican con el mundo exterior, como la interfaz de usuario, las bases de datos o servicios externos. Estos adaptadores se encargan de convertir las solicitudes externas en un formato comprensible para el núcleo de la aplicación y viceversa.

El objetivo principal es minimizar las dependencias externas del núcleo de la aplicación, lo que facilita cambios y evoluciones en el sistema sin afectar su funcionalidad principal. Además, al separar estas partes, cada una puede ser modificada y probada de forma independiente, lo que mejora la mantenibilidad y la escalabilidad del sistema. En resumen, la Arquitectura Hexagonal promueve un diseño flexible y modular que facilita la adaptación a los cambios y la evolución del sistema con el tiempo. Por eso, la combinación de DDD y Arquitectura Hexagonal puede ser muy beneficiosa para el desarrollo de software por varias razones:

  • Claridad y Mantenibilidad: DDD proporciona un modelo claro y expresivo del dominio del negocio, mientras que la Arquitectura Hexagonal separa claramente las preocupaciones de la lógica de negocio de los detalles de implementación. Esto hace que el código sea más comprensible y mantenible a lo largo del tiempo.
  • Flexibilidad y Adaptabilidad: La Arquitectura Hexagonal permite que el sistema sea fácilmente adaptable a cambios en los requisitos o en el entorno tecnológico, ya que las capas externas pueden cambiarse sin afectar al núcleo de la aplicación. DDD, por su parte, facilita la identificación y el manejo de la complejidad del dominio del negocio, lo que permite una mayor flexibilidad y adaptabilidad en el diseño del software.
  • Pruebas y Refactorización: La separación de la lógica de negocio de los detalles de implementación en la Arquitectura Hexagonal facilita las pruebas automatizadas y la refactorización del código. Esto se combina bien con los principios de diseño de DDD, que fomentan la iteración y la mejora continua del modelo del dominio.
Arquitectura Hexagonal

En conclusión, la combinación de Domain-Driven Design y Arquitectura Hexagonal puede ayudar a crear sistemas de software más robustos, flexibles y mantenibles al centrarse en comprender el dominio del negocio y separar las preocupaciones de la lógica de negocio de los detalles de implementación.

Bibliografía:

1. "Domain-Driven Design: Tackling Complexity in the Heart of Software", Eric Evans

2. "Implementing Domain-Driven Design", Vaughn Vernon

Imagen Silvia Pelegri

Autor Silvia Pelegri

Silvia es una apasionada en la creación e implantación de soluciones tecnológicas innovadoras trabajando como Senior Software Engineer. Su objetivo es diseñar e implementar soluciones de software que no solo aborden los desafíos actuales, sino que también impulsen el crecimiento y el éxito de adesso y sus clientes.

Guarde esta página. Eliminar esta página.