archivo

Archivos diarios: junio 15, 2011

En su día describí en que consistía el ciclo de vida en cascada y las consecuencias del mismo. Podría ponerme a escribir mil artículos sobre el tema y no llegaría a expresar todo lo perjudicial que ha resultado y resulta para el desarrollo de software.

Cierto es que todos los desarrollos son cascadas, en el sentido de que en mayor o menos medida hay un análisis, un diseño, una construcción y una implantación, pero también lo es que la secuencia de fases sean esas u otras no son las responsables del problema (salvo que la elección no sea adecuada para el proyecto).

El problema es la duración de cada ciclo completo y el ciclo de vida tradicional o en cascada se basa en el desarrollo del sistema completo o la mayor parte del mismo en una iteración y esto es ir contra la naturaleza de los proyectos donde el trabajo es adaptativo y no puede estar basado en la predecibilidad de un análisis que se ha realizado desde la abstracción y desde la interpretación de un problema por parte de usuarios y de los analistas.

Es inevitable la abstracción y la interpretación y pese a que se pueden aplicar diferentes técnicas (prototipado, casos de uso, historias de usuario, etc…) que ayudan a que las distintas partes a homogeneizar la interpretación de las funcionalidades, cuanto mayor sea el abanico de las mismas con las que se trabaja, mayor será la posibilidad de que se hayan escapado detalles (que pueden ser más o menos importantes) o que simplemente cambien, aparezcan otras nuevas o se cambien las prioridades en medio del proyecto.

Si en un desarrollo en cascada de un tamaño medio o superior, a lo largo del desarrollo no se presentan cambios en las especificaciones resulta casi peor que el hecho de que no aparezcan, ya que probablemente los problemas se presenten de golpe cuando los usuarios empiecen a utilizar el sistema, lo que puede resultar crítico para la propia subsistencia del sistema y por tanto para la inversión realizada (sin embargo en función del tipo de procesos que se haya informatizado la pérdida puede ir más allá de la inversión, sobre todo si hay en juego otros aspectos que dependen del buen funcionamiento de la aplicación).

No quiero decir que un proyecto desarrollado con un ciclo de vida en cascada no pueda tener éxito, lo puede tener en mayor o menor medida, sin embargo su propia dinámica de funcionamiento, su propia naturaleza, son un obstáculo muy complicado de solventar y una fuente continua de problemas y desgaste entre las diferentes partes que participan en un proyecto y probablemente ninguno termine de estar satisfecho porque todos deberán haber dado concesiones para sacarlo adelante.