A estas alturas tengo bastante olvidados los fundamentos de la termodinámica, pero vagamente recuerdo dos cosas acerca de la entropía.
Una, que la entropía, de alguna forma, representa el desorden de un sistema… o del universo.
La segunda es que, según la segunda ley de la termodinámica, la entropía tiende siempre a aumentar, no disminuir.
Busco, en efecto la formulación del Segunda Ley de la Termodinámica en wikipedia y me encuentro:
La cantidad de entropía del universo tiende a incrementarse en el tiempo.
Y ahora vuelvo mis ojos al mundo del software y a lo que de él nos dice Frederick P. Brooks Jr. en su libro ‘The mythical man-month‘. Y, ya hacia el final del libro, cuando el autor está recapitulando las enseñanzas que ha intentado transmitir, y hablando del mantenimiento del software, afirma lo siguiente:
All repairs tend to destroy structure, to increase the entropy and disorder of a system.
¿Podía ser de otra manera?
El software es un sistema y, como hemos visto, un sistema caracterizado por su complejidad. Es casi científicamente poético pensar que el software aplique principios de la termodinámica. Pero lo cierto es que a medida que evoluciona la funcionalidad, a medida que se corrigen errores y aplican parches, el software tiende a deteriorarse.
Quizá es que se pierde esa integridad conceptual de que ya hablamos en su momento, quizá es que se pierde conocimiento e incluso cuidado a medida que el código original pasa por varias manos… o quizá es que, simplemente, no se puede ir en contra de las leyes de la física.
Lo cierto es que el software se deteriora con el mantenimiento… y acaba convirtiéndose en obsoleto, inservible y, paradójicamente, inmantenible.
Triste para el arquitecto o desarrollador iniciales…pero buenas noticias para los desarrolladores en general, para el sector en general. Si el software se deteriora, hay que hacer nuevo software que lo sustituya… y la rueda, y el negocio, siguen girando.
Así, y ahora sí que poéticamente vamos a contradecir a la física y a su conservación de la energía, el software sólo se crea y se destruye…pero no se transforma (bueno, no mucho).