La captura de especificaciones ‘congela’ el mundo al momento en que se establecen o bien genera lagunas que fuerzan a la toma de decisiones sobre suposiciones. Esto produce un desfase entre la necesidad real y la solución generada dado que durante su fabricación la realidad ha cambiado y los detalles no documentados son fuente de imprecisiones.
En un enfrentamiento cara a cara contra la realidad, lo más probable es que ésta salga victoriosa a no ser que la sigas de cerca y te amoldes, negocies los cambios. La agilidad es una buena estrategia en el mundo del desarrollo actual.
La falta de calidad se debe directamente a la incapacidad del software para cumplir las necesidades reales, a esto se añade que el número de defectos sea muy alto y una baja mantenibilidad, responsable del alto coste de la corrección de errores y el añadido de nuevos requerimientos , otro pez que se muerde la cola.
Los defectos son fuente de costes no deseados, convirtiendo los sistemas en inestables, impredecibles o incluso en inútiles. Pueden dar lugar a pérdidas en lugar de beneficios. Las pruebas extensivas permiten reducir la probabilidad de fallo, he ahí su importancia y razón de ser.
Medir la mantenibilidad no es tarea fácil, es bien conocido que está directamente relacionada con la calidad del código (siempre y cuando el código se haya realizado con la mantenibilidad en mente), pero ¿qué distingue un mal código de uno bueno? debemos reflexionar sobre ello.
Una técnica habitual en la agilidad para obtención de requisitos consiste en que el cliente, o bien alguien que lo represente, mantenga una lista de requerimientos. De esa lista se toman subconjuntos de entradas dividiendo cada una de ellas en tareas que pasan a formar parte de otra nueva lista de seguimiento de la iteración, donde las tareas se priorizan a partir de los criterios del cliente y del equipo de desarrollo. Comúnmente la duración de un ciclo ha de ser corta, desde unas horas a un par de semanas, permitiendo realizar seguimientos bastante precisos del esfuerzo realizado.
La toma de requerimientos no es tarea fácil, determinar la necesidad verdadera es una necesidad principal. Debemos cuestionarnos una y otra vez: ¿Estamos realmente cubriendo la necesidad real? Es perfectamente posible solucionar necesidades innecesarias de una forma completamente artística, cosa que debemos evitar pues dispara los costes y no mejora en nada la calidad del producto, de hecho es muy probable que ésta disminuya.
Dada una nueva característica debemos esclarecer:
- En qué consiste exactamente.
- Qué se interpone en nuesto camino de añadirla al producto.
- Darle un nombre claro.
- Determinar cómo solucionarlo.