sábado, 19 de junio de 2010

Domain-Driven Design (DDD)

Nunca había escuchado hablar de DDD. Hasta que un día ví un video acerca de metodologías de diseño de dominio y di con este término. Fue así como quise investigar un poco y quiero compartir con ustedes lo que descubrí.



¿Qué es DDD?

El término es algo como "Diseño orientado al Dominio", y trata acerca de 2 conceptos vitales:

1.- En un proyecto de software el bjetivo principal debe ser el dominio y su lógica.
2.- Los diseños de dominio complejos deben estar basados en un modelo.

DDD no es una tecnología o una metodología. Es una forma de pensar y un conjunto de prioridades, encaminadas a acelerar los proyectos de software que tienen que lidiar con un dominio más complejo.


Para cumplir con este objetivo, el equipo de desarrollo debe contar con un extenso conocimiento sobre practicas de diseño, técnicas y principios.



El reto de la complejidad

Muchas cosas se pueden poner en un proyecto en curso, burocracia, objetivos poco claros, falta de recursos, etc., pero será el enfoque de diseño el que determina que tan complejo puede llegar a ser el desarrollo. Cuando la complejidad se nos va de las manos, el software no puede ser entendido ampliamente como para modificarlo y extenderlo fácilmente. Por el contrario, un buen diseño puede crear oportunidades de aquellas características complejas.


Algunos de esos factores de diseño son tecnológicos y se han centrado en gran medida en diseño de redes, base de datos, etc.


Sin embargo, la complejidad mas importante de muchas aplicaciones no es técnica. Está en el propio dominio. La actividad o negocio del usuario. Cuando esta complejidad no es tratada en el diseño, no importaría que la infraestructura estuviera bien concebida. Un diseño exitoso deberia lidiar sistematicamente con este aspecto central del software.



Hasta la próxima entrega :) ... Ahí seguiré con la segunda parte.

No hay comentarios.: