Buscando técnicas para hacer que desarrollar software sea cada vez más sencillo y no más complejo estoy últimamente interesado con las aproximaciones TDD. Ahí va un poco de información sobre TDD:
El Desarrollo Dirigido por Tests (Test Driven Development o TDD) es una técnica para diseñar software que se centra en tres pilares fundamentales:
· La implementación de las funciones justas que el cliente necesita y no más.
· La minimización del número de defectos que llegan al software en fase de producción.
· La producción de software modular, altamente reutilizable y preparado para el cambio.
En TDD pasamos de pensar en implementar tareas, a pensar en ejemplos certeros que eliminen la ambigüedad creada por la prosa en lenguaje natural. Hasta ahora estábamos acostumbrados a que las tareas, o los casos de uso, eran las unidades de trabajo más pequeñas sobre las que ponerse a desarrollar código.
Con TDD intentamos traducir el caso de uso o tarea en X ejemplos, hasta que el número de ejemplos sea suficiente como para describir la tarea sin lugar a malinterpretaciones de ningún tipo.
En otras metodologías de software, primero nos preocupamos de definir cómo va a ser nuestra arquitectura. Pensamos en las clases de infraestructura que van a homogeneizar la forma de trabajar en todos y cada uno de los casos, pensamos si vamos a usar un patrón Facade y otro Singleton y una comunicación mediante eventos, o DTOs, y una clase central que va a hacer esto y aquello… ¿Y si luego resulta que no necesitamos todo eso? ¿Cuánto vamos a tardar en darnos cuenta de ello? ¿ Cuánto dinero vamos a malgastar?
En TDD dejamos que la propia implementación de pequeños ejemplos, en constantes iteraciones, hagan emerger la arquitectura que necesitamos usar. Ni más ni menos.
No es que nos despreocupemos por completo de las características técnicas de la aplicación a priori, es decir, lógicamente tendremos que saber si el desarrollo será para un móvil, para una web o para un pc; más que nada porque tenemos que elegir unas herramientas de desarrollo conformes a las exigencias del guión. Sin embargo, nos limitamos a escoger el framework correspondiente y a usar su arquitectura como base.
La esencia de TDD es sencilla, sólo tiene 3 pasos:
· Escribir la especificación del requisito (el ejemplo, el test).
· Implementar el código según dicho ejemplo.
· Refactorizar para eliminar duplicidad y hacer mejoras.
En próximos post veremos en detalle estos pasos.


Deja un comentario