Cómo TDD te ayuda a diseñar software. Un caso real

En este evento vamos a mostrar cómo TDD puede ayudarnos en nuestro trabajo diario. Mediante una sencilla serie de pasos, veremos cómo se puede desarrollar una librería sin tener siquiera un prediseño pensado. De igual forma, intentaremos explicar cómo los tests nos van “sugiriendo” qué hacer en cada estado del desarrollo, cómo nos hacen enfocarnos para tomar pequeños pasos y evitar así, por ejemplo, la parálisis por análisis.

Tal vez hayas hecho algunas katas (o no) y no llegas a ver qué te aporta TDD, o no ves cómo aplicarlo a tu trabajo real, o te parece un poco pérdida de tiempo. Sea cual sea tu nivel, el objetivo es intentar demostrarte cómo practicando una técnica de TDD básica a base sólo de tests unitarios es posible conseguir un diseño emergente.

El formato del evento será de tipo charla, de contenido eminentemente práctico.

Anímate, ven y no olvides ser puntual. No hace falta traer portátil.

Entrando más en profundidad, aquí tienes los detalles de la charla.

• ¿Qué hace la librería en cuestión? Todo empieza por una necesidad. Veremos de qué se trata, cómo hemos dividido el problema y qué hace concretamente este componente con diseño orientado a objetos, desarrollado a través de TDD.

• Una introducción rápida a TDD para dar contexto. No hace falta saber casi nada para sacarle mucho partido a lo que veremos.

• Explicación paso por paso de cómo ha sido implementada, sin entrar en detalles de lenguajes de programación que es lo de menos. Esta parte se llevará casi todo el tiempo:

• La librería parte de cero. Explicaremos el estado inicial y cómo empezar.

• Diseño emergente commit a commit. Veremos los cambios que se producen en el diseño de la librería en cada commit.

• Lo detallaremos todo a base de diagramas explicando los detalles de implementación sin entrar en cosas concretas del lenguaje de programación.

• Explicaremos “cómo el diseño emerge“, o brota, o aparece (como queráis llamarlo) sin un prediseño inicial. Cómo nacen nuevas clases, por qué unas responsabilidades se quitan de una parte del diseño para ponerlo en otras, cómo las clases se vuelven más pequeñas o delgadas, cómo de un “diseño monolítico” se puede refactorizar a otro modular e interoperable.

• De cómo emerge el diseño veremos por qué es cada vez mejor. Intentando detectar los principios SOLID que vayan apareciendo (y que vamos buscando iteración a iteración)

Suena denso y tocho ¿no? Para nada. Es una librería muy sencilla que no tiene mucha complejidad Será divertido y creo que se le hará interesante a todos los asistentes.

Jeroen Derks

Author: Jeroen Derks

Jeroen is the founder of the Alicante Tech meetup group. His current day job is to mostly build all kinds of applications, ranging from IoT to educational to corporate.