Mantenimiento y reingenieria de software.


El mantenimiento del software es una actividad que permite extender la vida utili del software y adaptarlo a las necesidades cambiantes de la organización.

El mantenimiento del software es un proceso natural del desarrollo de software, y puede ser clasificado según algunos autores en 4 clases de mantenimiento de acuerdo a la función u objetivo que persiga dicho mantenimiento:

1.- Mantenimiento correctivo

En este tipo de mantenimiento buscamos eliminar errores que no fueron detectados durante las pruebas al sistema, no porque no se hicieran las pruebas correctas, sino porque es imposible prever todas aquellas situaciones a las que nuestro software se enfrentara una vez que este en funcionamiento.

El problema con este tipo de mantenimiento es que podemos estar tratando con problemas de muy variados orígenes, siendo los mas problemáticos, aquellos que ocurren de forma esporádica, ya que resulta difícil encontrar las causas, dado que no siguen un patrón de causa-consecuencia.

Dentro de este tipo de mantenimiento tendremos actividades como:

  • Depuración del código
  • Corrección de mensajes y de interfaz
  • Ajustes para adaptar el software a hardware de uso especifico.
  • Corrección de vulnerabilidades.

2.- Mantenimiento adaptativo.

En este mantenimiento, el objetivo es como su nombre lo indica, adaptar el software a los cambios que ha sufrido la empresa desde que se le desarrollo el software.

Uno de los mayores peligros de este mantenimiento es el retraso, ya que si las actividades del mantenimiento adaptativo no se realización en el momento adecuado, puede llevarnos a hacer cambios mayores en la arquitectura del software.

Las actividades de este mantenimiento pueden incluir

  • Agregar nuevos módulos al sistema
  • Agregar nuevos reportes
  • Agregar nuevas funciones
  • Escalar las capacidades del sistema para el manejo de un mayor volumen de datos.
  • Agregar el manejo de nuevos datos en la base de datos.

3.- Mantenimiento de perfeccionamiento o mejoras.

En este, el objetivo es mejorar el sistema, es decir, el software no presenta fallas criticas y sigue vigente en la organización , con este mantenimiento nos referimos a ajustes menores que pueden incluir.

  • Agregar atajos
  • Nuevas funciones que no fueron solicitadas por el usuario, pero que generan una plusvalía en el software.

4.- Mantenimiento preventivo

Este mantenimiento tiene como objetivo, mantener el software funcionando en optimas condiciones, y es una actividad muy absorbente en sistemas de tipo gerencial y en sistemas empresariales para grandes organizaciones.

Entre las actividades del mantenimiento preventivo tendremos

  • Compactación de la base de datos.
  • Respaldo de la base de datos.
  • Eliminación de datos innecesarios u obsoletos.
  • Eliminación de claves y usuarios que ya no son parte de la organización
  • Mejoras en la seguridad para impedir ataques al sistema y/o robo de información.

Como vemos todas estas actividades pueden llegar a consumir demasiado tiempo.

Estas actividades pueden ser muy difíciles, sobre todo, si en el desarrollo del software no se aplicaron correctamente  los principios el diseño.

Ahora bien, sabemos que no se puede dar mantenimiento de forma eterna, no es técnica, ni económicamente viable, y es en este punto donde entra la ingeniería de software.

La reingeniería es un proceso de reconstrucción del software en el que aplicamos los procesos de ingeniería de software a un sistema que nos servirá de base o punto de partida, y del cual deberemos:

  • reestructurar los documentos
  • reestructurar los datos.
  • reestructurar el código.

Es decir descomponemos el software en sus partes fundamentales y comenzamos un  proceso de reconstrucción del mismo, dejando aquellas partes que se consideren  esenciales preservar de esa forma.

En muchos casos el proceso se lleva a cabo tantos años después que o bien ya no trabajan con nosotros los programadores originales o si somos nosotros mismos, ya no nos acordamos de los detalles y las especificaciones de nuestro trabajo.

Ante esta situación muchas veces se requiere recurrir a la ingeniería inversa, en la que tratamos de recuperar las especificaciones del diseño arquitectonico, de datos y de procesos de un software ya existente.

Anuncio publicitario

2 Comments

¿Qué estas pensando?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.