¿Qué “leyes” rigen la evolución del software? El paso del tiempo hace que cada vez sea mas complejo de mantener

Adell estaba lo suficientemente borracho como para intentarlo y lo
suficientemente sobrio como para traducir los símbolos y operaciones
necesarias para formular la pregunta que, en palabras, podría haber co rrespondido a esto:
¿Podrá la humanidad algún día, sin el gasto neto de energía, devolver al
Sol toda su juventud aun después que haya muerto de viejo?
O tal vez podría reducirse a una pregunta más simple, como ésta:

¿Cómo puede disminuirse masivamente la cantidad neta de entropía
del universo?

Multivac enmudeció. Los lentos resplandores cesaron, los clicks dis-
tantes de los transmisores terminaron.
Entonces, mientras los asustados técnicos sentían que ya no podían
contener más el aliento, el teletipo adjunto a la computadora cobró vida
repentinamente. Aparecieron cinco palabras impresas:
DATOS INSUFICIENTES PARA RESPUESTA ESCLARECEDORA.
– No hay respuesta -murmuró Lupov. Salieron apresuradamente. A la
mañana siguiente, los dos, con dolor de cabeza y la boca pastosa, habían
olvidado el incidente.

— La última pregunta. Asimov

Por más que repitamos que desarrollar y mantener software tiene poco o nada que ver con los procesos que se siguen para fabricar coches o construir casas nunca será suficiente. La visión, que tanto daño ha hecho a la profesión, de intentar encajar el desarrollo software en un proceso de fabricación de algo físico lleva demasiado tiempo con nosotros y ha calado profundamente en muchos perfiles, empresas y profesionales del sector.
Aún así, y dicho esto, que tenga poco sentido desarrollar software bajo “leyes” físicas que, obviamente, si afectan a la creación de cosas físicas, no quiere decir que el desarrollo software no se vea afectado por algunas, llamemos, leyes.
Quienes más escribieron, o quienes escribieron lo más popular, sobre el tema fueron, allá por el ’76, Belady and Lehman y luego a principios de los 80 Lehman escribió las que se conocen como leyes de la evolución del software.
La idea general en los anteriores gira sobre el concepto “entropía”, es decir, que un sistema software está bajo la “ley” de la desestructuración, que se incrementa con el tiempo, salvo que se trabaje específicamente en reducirla. Con el tiempo, según el concepto de entropía, el software se hace cada vez más complejo, menos mantenible.
Lehman decía que el software, normalmente, está siempre en un cambio continuo y que los cambios aumentan la complejidad de manera creciente.
De hecho, específicamente dividió la idea varias leyes, de las que he querido resumir aquí las más destacadas:
Cambio Continuo. Un software que se usa debe ser continuamente adaptado, sino, progresivamente, será menos satisfactorio.
Complejidad incremental. Cuando un software evoluciona su complejidad se incrementa, a menos que se trabaje en mantenerla o en reducirla.
Conservación de la familiaridad. Uno de los factores que determina la evolución software es la familiaridad de los implicados con la versión, cuantos más cambios se hacen a una versión más difícil es que todos los implicados los conozcan, una evolución “grande” dificultaría esa familiaridad, por lo que los cambios tienden a ser siempre de un tamaño parecido.
Crecimiento continuo. La funcionalidad del programa debe incrementarse continuamente para mantener la satisfacción del usuario. Los sistemas nacen con limitaciones de funcionalidad, por motivos de tiempo o recursos, lo que produce que con el tiempo requisitos que se descartaron al principio vuelvan a aparecer.
Ya sabes, o dedicas tiempo a controlar la complejidad o estar no te perdonará y crecerá y crecerá.

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *