La evolución del software es un proceso mediante el cual un programa informático comercial requiere una actualización, mantenimiento y mejora continuos a lo largo del tiempo para que siga siendo un producto viable. En este sentido, la evolución del software está impulsada por las necesidades de los consumidores y empresas externas que cambian a medida que otros software y tecnologías avanzan a su alrededor. Sin embargo, el factor impulsor de la evolución del software suele ser interno y se centra en el equipo de ingeniería que produjo el producto y en la empresa que depende de su éxito para obtener rentabilidad. El Imperial College de Londres, Inglaterra, promulgó por primera vez tres leyes fundamentales de la evolución del software a principios de la década de 1970, que desde entonces se han ampliado a un total de ocho leyes a partir de 2011. También se han realizado otros intentos para cuantificar el proceso utilizando modelos como el modelo lineal secuencial y el modelo prototipo, pero el paradigma que parece encajar mejor en los ciclos de vida de la entropía del software es el que se asemeja a la evolución darwiniana de los seres vivos.
Los factores impulsores básicos detrás de los cambios en la arquitectura del software se asemejan a las mismas fuerzas que motivan a las empresas a actualizar la maquinaria industrial o los procedimientos operativos estándar a medida que cambian las necesidades de la sociedad. A medida que el software se utiliza cada vez más, se hacen evidentes nuevas necesidades o funciones que deben incorporarse en versiones posteriores del producto. Todo el software también se lanza con errores previamente desconocidos, por lo que se deben realizar parches periódicos y procedimientos de mantenimiento para corregir situaciones como lagunas de seguridad que podrían hacer que una empresa sea vulnerable a ataques a través del propio software. Una clave para la evolución del software es también el hecho de que dichos programas deben adaptarse cada vez más para trabajar en diferentes tipos de equipos informáticos emergentes y dentro de varias arquitecturas de sistemas operativos para que el programa tenga un atractivo más amplio.
Satisfacer todas estas necesidades es crucial para determinar si un programa de software sigue siendo viable y, dado que los activos de software son un aspecto tan crucial de la economía de la información a partir de 2011, la evolución del software se ha convertido en un aspecto fundamental de la adaptación y el crecimiento empresarial. A Meir Lehman, un científico informático del Imperial College de Londres, se le atribuye la creación de Lehman Laws, que definió sucintamente el proceso de evolución del software y guió a los desarrolladores en el pensamiento avanzado de la visualización de software. Las leyes de Lehman se basan en la premisa de que el software evoluciona a medida que aumenta la retroalimentación sobre su rendimiento y que su tendencia inevitable es volverse cada vez más compleja.
Lehman ha declarado que la naturaleza de la evolución del software refleja cambios naturales como la mutación en las moscas de la fruta, la forma en que las ciudades se expanden con el tiempo y cómo las estructuras militares mejoran gradualmente los sistemas de armas. Las primeras tres leyes del proceso emulan estas tendencias al detallar el Cambio Continuo, el Aumento de la Complejidad y lo que se conoce como Evolución de Grandes Programas. El cambio continuo se refiere al hecho de que el programa debe adaptarse para cumplir con las condiciones comerciales actuales del mundo real, y esto refleja una complejidad creciente, ya que el programa debe satisfacer una diversidad cada vez mayor de necesidades inesperadas. Large Program Evolution se refiere a la necesidad de corrección de errores y nuevas versiones del programa que están inexorablemente ligadas a las demandas del mercado.
De las cinco leyes restantes en la evolución del software, la número cuatro es la estabilidad organizacional y se refiere al hecho de que el crecimiento de un programa adquiere vida propia independientemente del nivel de recursos que se le dediquen intencionalmente, y la número cinco es la conservación de la familiaridad. que establece que el crecimiento incremental del programa es inevitable. El número seis en las ocho leyes de Lehman es el crecimiento continuo, que es necesario para satisfacer la demanda de los consumidores, y el número siete es la calidad en declive, que enfatiza el hecho de que todo software eventualmente enfrenta límites en la funcionalidad que no puede cumplir. La Ley de Lehman final para la evolución del software es el Sistema de Retroalimentación en sí mismo, que une todas las fuerzas que afectan la viabilidad de un programa de software para impulsarlo rápidamente hacia un mayor éxito o hacia la obsolescencia y muerte inevitables.