Si participas en el sector del desarrollo de software, probablemente est茅s de acuerdo en que entender un negocio es tan o m谩s importante que el saber programar bien. Partiendo de esta premisa, el mejor paradigma para enfocarse en el negocio y plasmarlo en el c贸digo es aplicar聽el modelo DDD聽(Domain Driven Design).
Este enfoque de desarrollo de software propuesto por Eric Evans pone en el centro al dominio del negocio. Pero, 驴qu茅 es el dominio? B谩sicamente, representa la informaci贸n, la l贸gica y procesos del negocio. As铆 como el problema espec铆fico que debemos resolver.
El DDD est谩 concebido para facilitar el desarrollo de aplicaciones complejas y para aquellos proyectos que utilizan metodolog铆as agile. Del mismo modo, no servir谩 para proyectos en los que se utilizan conceptos exclusivamente t茅cnicos y poca l贸gica de negocio.
Todo el conjunto de elementos significativos que representan el dominio (atributos, funciones y relaciones), as铆 como el conocimiento que se tiene sobre este, se ver谩n representados en el modelo. Este ser谩 la base del dise帽o del software y se ir谩 depurando a medida que se aprenda m谩s sobre el dominio.
Si queremos que el desarrollo de las aplicaciones tenga 茅xito, deber谩 existir un lenguaje com煤n (Ubiquitous Language) entre los expertos en el dominio, conocedores del negocio, el flujo y la operativa a seguir para resolver el problema, y los desarrolladores. Se deber谩n tener claros los conceptos del negocio para construir las entidades y las relaciones entre ellas. De esta manera, la estructura y el lenguaje en el c贸digo del software (nombres de entidades, propiedades y funciones) ser谩n un reflejo del dominio de negocio.
Conocer en profundidad el dominio evitar谩 errores funcionales y, en caso de tener que explicar nuevas funcionalidades o relaciones que se deben aplicar durante el proyecto, la comunicaci贸n entre ambas partes ser谩 m谩s inteligible. Tambi茅n facilitar谩 el mantenimiento del modelo y permitir谩 concebir un software con los objetivos bien claros.
Como resultado, obtendremos un c贸digo limpio, donde los comentarios servir谩n para aclarar los conceptos y explicar cu谩l es la funcionalidad del bloque. No necesitaremos incluir ning煤n diccionario para identificar las entidades en los comentarios.
Elementos clave
El Domain Driven Design se compone de los siguientes elementos:
Entidades:
En las entidades se definen todos los modelos que el negocio necesita para representar. Las entidades son objetos con identidad 煤nica, que se mantiene en el tiempo y cuyos atributos no son su principal caracter铆stica.
Objetos de valor:聽
A diferencia de las entidades, los objetos de valor no tienen identidad y se definen 煤nicamente por los valores de sus atributos.
Contexto:
El conjunto de entidades que est谩n relacionadas entre ellas y que deben coexistir conjuntamente para que el negocio tenga sentido.
Servicios:
Toda la l贸gica del negocio vive en este bloque. Los servicios no tienen ninguna dependencia con ninguna parte externa del negocio (por ejemplo, acceso a base de datos).
Repositorio:
Los repositorios deben contener la implementaci贸n de los accesos de los datos externos. Implementan las interfaces de los servicios del dominio.
La documentaci贸n de las aplicaciones es importante tanto para el cliente como para el desarrollador. La documentaci贸n es un doble factor para verificar que la aplicaci贸n realiza las operaciones y en la secuencia correctamente.
Aunque es un proceso que requiere de tiempo de aprendizaje y gran implicaci贸n por parte de los equipos involucrados en el proyecto, Domain Driven Design te permitir谩 tener una mayor visi贸n y enfoque del negocio. As铆, se conseguir谩 un software cercano al cliente, con un c贸digo bien organizado y f谩cilmente mantenible en el tiempo.
En Click-IT empleamos DDD para afrontar proyectos de desarrollo complejos. Cu茅ntanos tu necesidad y te ayudaremos a encontrar la mejor soluci贸n que cumpla tus objetivos.