19 agosto 2010

Agilidad y Buenas Prácticas de Desarrollo

Las prácticas ágiles deben ir acompañadas con buenas prácticas en programación. Hablamos de la estrecha relación de la agilidad con TDD, BDD, ATDD, refactorización, etc. Todas ellas técnicas y prácticas propias de desarrollo.
Recientemente, he conocido "Domain-Driven Design" (DDD), impulsado por un grupo de expertos, entre los que se encuentra Eric Evans ("Domain-Driven Design: Tackling Complexity in the Heart of Software"), y que cumple a la perfección los principios de las metodologías ágiles.
Como explican sus creadores, Domain-Driven design no es ninguna tecnología, ni metodología. Se trata de una forma de pensar y organizar un conjunto de prioridades, dirigidos a la aceleración de proyectos de software que tienen que tratar con complejos dominios (http://domaindrivendesign.org/resources/what_is_ddd)
Propugna la comunicación directa entre los expertos del dominio (el cliente), los analistas y desarrolladores, utilizando un lenguaje común (lenguaje ubícuo) que permita un entendimiento completo del dominio, hacia la elaboración iterativa del diseño que conduzca a la correcta codificación del problema planteado.
Como dice Eric Evans en su libro "Domain-Driven Design Quickly" (de descarga gratuita en InfoQ), no basta con conocer las técnicas adecuadas de programación si no van acompañadas de unos sólidos conocimientos de arquitectura y sus principios. Esta arquitectura reconoce la complejidad en la elaboración del software, y trata de
Para los que trabajamos con .Net, existe una mágnifíca guía, en estos momentos en fase Beta, llamada "Guía de Arquitectura N-Capas orientada al Dominio con .Net 4.0", que trata de llevar a su implementación práctica el DDD. Todo el material relacionado se puede encontrar en el "Centro de Arquitectura - MSDN".