Utilizando las últimas tecnologías y las mejores interfaces, una aplicación puede ser desarrollada con una arquitectura extraordinaria, pero sin embargo no llega al nivel esperado a las necesidades del negocio, no va a ser para nada útil. Entonces es cuando Diseño guiado por el dominio (DDD) aparece. Como bien indica su nombre, se centra en el dominio de un negocio específico.
De hecho, para diseñar un buen software, es importante saber sobre qué trata ese software. Para crear un sistema de software para un banco, se necesita de un buen entendimiento de los procesos que se llevan a cabo en el, uno ha de entender el domain del banco.

 

¿Que es Diseño guiado por el dominio ?

 

En el desarrollo de software, el enfoque del diseño guiado por el dominio se utiliza para necesidades muy complejas, para conectar la implementación a un modelo en evolución de la idea principal del modelo de negocio. Pone el foco en el problema relevante y básicamente ayuda a identificar la arquitectura e informar sobre los mecanismos que el software necesita replicar.

Diseño guiado por el dominio tiene un valor estratégico y se basa en mapear la idea de negocio domain en los artefactos del software. Organizando los artefactos del código en línea con el problema de negocio, usando el mismo lenguaje.

Diseño guiado por el dominio no es una metodología, trata de el diseño de la arquitectura del software, dando una estructura con unas prácticas de toma de decisiones que ayudan a proyectos de software con dominios complicados.

El enfoque DDD fué introducido por Eric Evans en el libro “Domain-Driven Design: Tackling Complexity in the Heart of Software“. Todos los desarrolladores en Apiumhub lo hemos leído y lo recomendamos al 100%!

 

Mayormente, diseño guiado por el dominio se centra en:

 

  • El domain central y su logica
  • Diseños complejos en modelos domain
  • Mejorando el modelo de la aplicación y resolviendo problemas emergentes relacionados con el domain colaborando con expertos.

Diseño guiado por el dominio engloba un lenguaje común, técnicas y patrones al igual que la arquitectura. El foco se pone en el negocio y en modelar los problemas que se intentan resolver.
Con diseño guiado por el dominio , los desarrolladores reciben técnicas que ayudan a minimizar la complejidad y a llevar las colaboraciones con el resto. La idea es utilizar los requisitos y mapear el proceso de negocio en el modelo mediante el mismo lenguaje utilizado por el negocio mismo.

 

Algunas condiciones utilizadas por Diseño guiado por el dominio

 

Lenguaje Ubicuo
Aquí hablamos del lenguaje utilizado por todo el equipo para conectar todas las actividades del equipo de software. El lenguaje Ubicuo DDD ayuda cuando se quiere saber sobre las condiciones utilizadas por los expertos de negocio. El equipo técnico es capaz de saber si el lenguaje cambia y si un aspecto en especial tiene un significado distinto.

Contexto
El contexto es un ajuste que determina el significado de lo declarado.

Contexto del mapeado
Una gráfica que conecta los contextos entre ellos. Para cada uno de ellos encontrarás: un lenguaje, una implementación independiente y una interfaz para hablar a otros contexto delimitados.

Contextos delimitados
El contexto delimitado es uno en el que los lenguajes Ubicuos y los modelos correspondientes son válidos. Da al equipo un entendimiento claro de lo que ha de ser consistente y lo que puede desarrollar independientemente.

Modelo
El modelo es un sistema que describe los aspectos seleccionados de un domain y que normalmente se utiliza para resolver problemas relacionados en ese domain en particular.

 

¿Cuales son las características de un modelo fuerte de domain?

 

Alineados
Con el modelo de negocio, estrategias y procesos.

Caso aislado
De otros domains y capas en el negocio.

Ser el diseño con más soltura
Sin dependencias en las capas de la aplicación en cualquier parte de la capa domain.

Capaz de re-utilizarse
Para obviar modelos duplicados.

Una capa abstracta y claramente separada 
Para mantenerse, ser testeado y tener una versión más fácil.

Dependencias mínimas en la infraestructura de los marcos 
Para evitar esos marcos y obtener un acoplamiento ajustado en frameworks.

Diseñado por un “Plain Old Java Object” de modelo de programación
Sin tener ninguna tecnología o dependencias de framework

 

Acordamos que es una corta introducción a diseño guiado por el dominio. La razón de este artículo era en tener una idea del concepto Diseño guiado por el dominio. Os dejaré una lista de beneficios clave de DDD que puede hacer que os dé más curiosidad a indagar sobre el tema.

 

Beneficios clave del diseño guiado por el dominio

 

Orientado a las necesidades de negocio
Como ya sabes, con el diseño guiado por el dominio, todo el el mundo puede acabar utilizando el mismo lenguaje, términos y modelo. Los desarrolladores comunicamos mejor con el equipo de negocio y el trabajo es más eficiente cuando se refiere a establecer soluciones para los modelos que refleja cómo el negocio opera, en vez de como lo hace el software.

Un grupo común de términos y definiciones usado por todo el equipo
Es un concepto claro pero volvamos a ello una vez más. Los equipos se comunican mejor durante el ciclo de desarrollo porque desde el principio, se centran en establecer el lenguaje ubicuo común en ambas partes (desarrollo y expertos de negocios). El lenguaje está vinculado al modelo domain del proyecto y los aspectos técnicos se definen a través de términos simples fáciles de entender.

Hacer un seguimiento facilita las cosas
No hace falta decir, que si todo el mundo utiliza la misma terminología, simplifica el seguimiento de les requisitos de la implementación.

Mejor código
Con diseño guiado por el dominio acabas con un codigo más fácil de leer y menos duplicado.

Agilidad como principio
Siguiente el enfoque Agile que es iterativo e incremental, diseño guiado por el dominio clarifica el modelo mental de los expertos en domain a un modelo útil para el negocio.

Consigue una buena arquitectura de software
Gracias al buen entendimiento del contexto de rebote, todos los equipos son capaces de entender cuando ciertas integraciones son importantes y porque. Esto da pie a saber que estás recibiendo una buena arquitectura de software.

La comunicación cuenta
Generalmente hablando, diseño guiado por el dominio es de ayuda cuando se ayuda a los equipos a crear un modelo común. Los equipos de la parte de negocios y de la parte de desarrollo lo pueden utilizar para comunicar los requisitos de negocios, entidades de información y modelos de proceso.

Una aplicación equilibrada
Con diseño guiado por el dominio construyes a través de conceptos del domain y los consejos de los expertos en domain. Esto implica que las aplicaciones desarrolladas representarán, en realidad, lo que el domain necesita en vez de la aplicación centrada únicamente en UX y UI, olvidando el resto de los requisitos. Lo más importante es tener un producto equilibrado que encaja perfectamente el domain de los usuarios/audiencia en específico.

Centrarse en la solución
El hecho de que hayan límites más limpios entre modelos puros, habilita a los desarrolladores a esforzarse en lo que de verdad importa, la solución.

Puramente flexible
Diseño guiado por el dominio gira alrededor del concepto de object-oriented design. Esto implica que casi todo en el modelo domain está basado en un objeto y por ello será modular y encapsulado, dejando que el sistema cambie y mejore regularmente y continuamente.

 

Si te ha gustado este artículo, puede que te interese: