domingo, 16 de febrero de 2014

Leyes de Lehman

Introducción:

En la Ingeniería de Software, las Leyes de la Evolución del Software, son una serie de leyes que Meir Lehman formuló en 1974.
Las leyes describen un balance entre fuerzas que ayudan al desarrollo de los sistemas de software, y de otras que realentizan el proceso.
Debido a que casi todo el software está destinado a cambiar durante el curso de su existencia, Lehman determinó ocho leyes que deben cumplirse si se quiere que el software sobreviva.
En un artículo publicado en 1980, Lehman distinguió tres categorías de software:
Un programa-S de "Specification" está escrito según a una especificación exacta sobre lo que el programa puede hacer.
Un programa-P de "Procedures" está escrito para implementar ciertos procedimientos que determinan completamente lo que el programa puede hacer.
Un programa-E de "Enviroment" está escrito para llevar a cabo actividades en el mundo real, sus funciones deben de estar intrínsecamente ligadas al entorno al que está implementado, por lo tanto debe adaptarse a las circunstancias de su entorno y a cualquier cambio.
Lehman señaló que las Leyes de la Evolución del Software se aplican solo a la tercera categoría, los programas-E.

Desarrollo:

Las leyes son:
  1. Cambio continuo: Un programa que se usa en un entorno real necesariamente debe cambiar o se volverá progresivamente menos útil y menos satisfactorio para el usuario.
  2. Complejidad creciente: A medida que un programa en evolución cambia, su estructura tiende a ser cada vez más compleja. Se deben dedicar recursos extras para preservar y simplificar su estructura.
  3. Autoregulacion La evolución de los programas es un proceso autoregulado. Los atributos de los sistemas, tales como tamaño, tiempo entre entregas y la cantidad de errores documentados son aproximadamente invariantes para cada entrega del sistema.
  4. Estabilidad organizacional: Durante el tiempo de vida de un programa, su velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados al desarrollo del sistema.
  5. Conservación de la familiaridad: A medida que un sistema evoluciona todo lo que está asociado con ello, como los desarrolladores, personal de ventas, y usuarios por ejemplo, deben mantener un conocimiento total de su contenido y su comportamiento para lograr una evolución satisfactoria. Un crecimiento exagerado disminuye esta capacidad. Por tanto este incremento promedio debe mantenerse.
  6. Crecimiento continuado: La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para mantener la satisfacción de los usuarios.
  7. Decremento de la calidad: La calidad de los sistemas software comenzará a disminuir a menos que dichos sistemas se adapten a los cambios de su entorno de funcionamiento.
  8. Realimentación del sistema: Los procesos de evolución incorporan sistemas de realimentación multiagente y multibucle y estos deben ser tratados como sistemas de realimentación para lograr una mejora significativa del producto.

Conclusión:

Es interesante que desde los años setentas se hallan establecido leyes que describen la evolución del software de entorno, y que además sigan vigentes hasta nuestros días. Dichas leyes deben considerarse y aplicarse en el mantenimiento de los programas-E si se desea que sigan cubriendo los requerimientos para los que fueron creados y los nuevos que vallan surgiendo, ya que el mundo es un lugar que está en constante cambio y no es posible crear un sistema que sea eterno e inmutable.

lunes, 3 de febrero de 2014

Mantenimiento de Software

Introducción:

El mantenimiento de software es una etapa del ciclo de vida del desarrollo de sistemas, el cual consiste en un desarrolloa pequeña escala, de carácter evolutivo. Empieza una vez que se ha realizado la implementación, se hace para corregir errores, mejorar el rendimiento, añadir requerimientos, actualizar bases de datos u otra clase de cambios que son pequeños en comparación con la etapa de desarrollo.
Se piensa que el mantenimiento de software es en su mayoría corrección de defectos, pero un estudio hecho en 1997 reveló que alrededor del ochenta por ciento del trabajo de mantenimiento son mejoras al sistema.
El mantenimiento del software y la evolución de los sistemas fue abordada por primera vez por Meir M. Lehman en 1969, quien descubrió que los sistemas evolucionan en complejidad, acercándose cada vez más a la perfección.

Desarrollo:

El mantenimiento puede ser clasificado en varias clases.
El mantenimiento preventivo se realiza para aumentar la fiabilidad del software, y con ello minimizar la posibilidad de que llegara a fallar.
En el mantenimiento correctivo se diagnostican y se corrigen errores que no fueron encontrados durante la etapa de pruebas, entonces es muy probable que tales errores hallan sido encontrados por los fallos que reportaron los usuarios del sistema.
En el mantenimiento adaptativo se realizan modificaciones al software para hacer frente a cambios en el ambiente del software, osea que se adapta el software a nuevas necesidades exteriores, como el uso de una nueva tecnología. El mantenimiento adaptativo se realiza cuando el costo beneficio de modificar el software para adaptarlo a nuevas condiciones, es menor al costo de desarrollar un nuevo sistema desde cero.

Conclusiones:

El mantenimiento es una tarea menos difícil que el desarrollo de software, pero es una tarea extensa, ya que se debe realizar durante todo el tiempo que el sistema esté implementado, para asegurar su correcto funcionamiento.
Cualquier trabajo que se le haga al software después de ser implementado, puede ser considerado trabajo de mantenimiento.

Fuentes:

  • Wikipedia
http://es.wikipedia.org/wiki/Mantenimiento_de_software
  • Experiencia personal adquirida durante mi carrera de técnico en programación en el CECyT 9.