Skip to content

Latest commit

 

History

History
55 lines (31 loc) · 5.12 KB

Leyes_en_la_evolucion_de_aplicaciones.md

File metadata and controls

55 lines (31 loc) · 5.12 KB

Leyes en la evolución de aplicaciones

17_02_2024

Las ocho leyes en la evolución de aplicaciones también conocidas como las leyes de Lehman indican como evoluciona una aplicación a lo largo del tiempo, una aplicación que estará o está en un entorno real con usuarios reales que la usan.

En síntesis podríamos decir que por un lado, hay atributos de una aplicación que permanecen invariantes o muestran una tendencia a lo largo del tiempo como la velocidad de desarrollo o la tendencia a ser cada vez más complejas. Y por otro lado, que las aplicaciones suelen depender del entono donde influyen, con el tiempo el entorno cambia y por ende las aplicaciones deben actualizarse para mantener su calidad, estas actualizaciones deben ser progresivas y tener en cuenta el feedback de todos los involucrados con la aplicación.

Cambio continuo

Las aplicaciones deben cambiar para seguir siendo útiles, este cambio se puede hacer agregando nuevas funcionalidades o cambiando el enfoque de las funcionalidades que ya existen en la aplicación, todo esto teniendo en cuenta que el nivel de cambio depende de la aplicación y el entorno en el que esta. Además este cambio no solo es externo y visible, también es estructural e interno para que la aplicación pueda seguir creciendo.

Complejidad creciente

Las aplicaciones evolucionan y a medida que lo hacen tienden a ser cada vez más complejas, cada nueva funcionalidad hace crecer la complejidad, es por eso que se deben dedicar recursos para mantener y simplificar la aplicación, este proceso de mantenimiento continuo además de ser invariante también debería hacerse con cuidado para no causar daños colaterales, las decisiones de diseño son delicadas y no se deberían tomar solo.

La llamada deuda técnica o entropía del software son otras formas de referirse a esta ley. Siempre que hablamos de la tendencia que tienen las aplicación al desorden es en todos los sentidos no solo en su estructura sino también en su hardware y UI/UX.

Autorregulación

Las aplicaciones evolucionan siendo autorreguladas por sus atributos. Profundizando en esto, el tamaño de ciertas propiedades como el tiempo entre versiones y el número de errores documentados siguen una tendencia o son invariantes a lo largo del tiempo, por ejemplo, el aumento de complejidad o la invariante velocidad de desarrollo.

Estabilidad organizacional

La velocidad del desarrollo de una aplicación es independiente de los recursos que esta tiene. Si aumentara la cantidad de programadores no aumentaría la velocidad de desarrollo, lo mismo si los programadores hicieran horas extras o si aumentara la cantidad de servidores disponibles.

Puede que un proyecto con cuatro programadores valla más rápido que uno con dos, sin embargo hay un punto en el que aumentar cantidades deja de tener una mejora significativa. Si hablamos de agregar programadores al equipo hay que tener en cuenta que esto va a significar una disminución de la velocidad hasta que los nuevos programadores estén bien familiarizados con el proyecto.

Devido a todo esto, más que los recursos lo importante puede ser la comunicación, planificación y organización que tiene el equipo, siempre buscando un ritmo sostenible.

Crecimiento continuo

Las funcionalidades de una aplicación deberían crecer continuamente, esto se puede hacer ampliando funcionalidades existentes o implementado funciones que antes se habían descartado ya sea por cuestiones de dinero o tiempo.

Conservación de la familiaridad

Es importante hacer cambios en una aplicación, pero estos deben ser progresivos y no repentinos. Al evolucionar una aplicación también evolucionan los programadores y sobre todo los usuarios, estos tienen un conocimiento sobre el contenido de la aplicación y sus características, al hacer cambios repentinos y/o excesivos parte de este conocimiento se pierde y se desconcierta a los usuarios, por esto que es importante hacer cambios progresivos.

Reducción de la calidad

Con el paso del tiempo el entorno en el que está una aplicación cambia.

Una aplicación soluciona los problemas de su entorno, si el entorno cambia la aplicación deja de solucionar los problemas del entorno de la forma adecuada, es por eso que una aplicación debe actualizarse para no perder su calidad. Podemos ver ejemplos de esta ley en la evolución de teléfonos y redes sociales.

Para no quedarse atrás y no reducir su calidad una aplicación debe actualizarse teniendo en cuenta los cambios del entorno y feedback de los usuarios, además es importante que una aplicación tanga una estructura que permita dichas actualizaciones.

Retroalimentación del sistema

El feedback debe existir por parte de usuarios, clientes, programadores y demás personas involucradas, no solo debe existir también debe ser considerado para que una aplicación mejore y evolucione.

/// https://alarcos.esi.uclm.es/per/fruiz/cur/mso/trans/S2.pdf https://cs.uns.edu.ar/~mc/disenio/downloads/Clases/DDS%202019%20-%20Modulo%204%20-%20Evolucion%20del%20SW%20-%206x1.pdf https://arquisoft.github.io/slides/course2122/seminars/DocEs3-06.pdf https://arquisoft.github.io/slides/course2122/seminars/DocEs1-06.pdf ///