Mantenimiento de Software: Tipos, Tareas y Desafíos

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,58 KB

Según varios estudios, el mantenimiento es la fase más costosa del ciclo de vida del software. La mayor parte del presupuesto se destina a mantener el software existente. Sobrepasando la barrera de mantenimiento, se imposibilitan nuevos desarrollos. La norma IEEE 1219 define el mantenimiento de software como la "modificación de un producto software después de haber sido entregado (a los usuarios o clientes) con el fin de corregir los defectos, mejorar el rendimiento u otros atributos, o adaptarlo a un cambio de entorno".

Pressman [1998] afirma que "la fase de mantenimiento se centra en el cambio que va asociado a la corrección de errores, a las adaptaciones requeridas a medida que evoluciona el entorno del software, y a cambios debidos a las mejoras producidas por los requisitos cambiantes del cliente".

Al final, el coste de mantenimiento de un software es la reducción que se produce en la productividad de los informáticos. Algunos autores, como Boehm [1979], han calculado que el coste de mantener una línea de código (LDC) puede llegar a ser 40 veces más alto que en el proceso de desarrollo.

Una gran cantidad del software actual ha sido desarrollado hace más de 15-20 años. Aunque fuese creado utilizando las mejores técnicas, presenta:

  • Restricciones de tamaño.
  • Restricciones de espacio de almacenamiento.
  • Herramientas tecnológicamente desfasadas.

Muchos de los problemas anteriores vienen dados por el desconocimiento de las actividades durante el mantenimiento. Algunas definiciones solo consideran como mantenimiento la corrección de defectos. La ampliación de nuevos requisitos se considera un proyecto de desarrollo continuado o redesarrollo.

Tipos de Mantenimiento de Software

Podemos distinguir cuatro tipos principales de mantenimiento de software:

Mantenimiento Correctivo

Aun habiendo superado las etapas de prueba y verificación, el software puede contener defectos. Este tipo de mantenimiento tiene como objetivo encontrar y eliminar estos defectos del software.

Defectos vs. Fallos:

  • Un defecto en un sistema es una característica del sistema con el potencial de causar un fallo [Piattini, 2000].
  • Un fallo ocurre cuando el comportamiento de un sistema es diferente del establecido en la especificación [Piattini, 2000].

Podríamos llegar a considerar los siguientes fallos:

  • Procesamiento: Salidas incorrectas en un programa.
  • Rendimiento: Demasiado tiempo de respuesta.
  • Programación: Diseño inconsistente de un sistema.
  • Documentación: Diferencias entre la funcionalidad de un programa y el manual de usuario.

Mantenimiento Adaptativo

Este tipo de mantenimiento responde a una situación en la que se produce algún cambio en el software o hardware del entorno en el que se ejecuta el sistema. Estos cambios pueden deberse a:

  • Cambio en el sistema operativo.
  • Cambio del tipo de arquitectura en la que se ejecuta (red local a Internet/Intranet).
  • Entorno de desarrollo del software (nuevos elementos y herramientas como ODBC).

La envergadura del cambio necesario puede ser muy diferente.

Mantenimiento Perfectivo

Este tipo de mantenimiento está asociado a cambios en los requisitos de un producto software. Se podría definir como "el conjunto de actividades para mejorar o añadir nuevas funcionalidades requeridas por el usuario".

A su vez, este tipo de mantenimiento se puede dividir en dos:

  • Mantenimiento de Ampliación: orientado a la incorporación de nuevas funcionalidades.
  • Mantenimiento de Eficiencia: busca la mejora de las prestaciones del sistema en tiempo de ejecución.

Mantenimiento Preventivo

El principal objetivo de este tipo de mantenimiento es mitigar o evitar las consecuencias de los fallos. Para ello, se realizan las siguientes acciones:

  • Comprobación de la validez de los datos de entrada.
  • Reestructuración del software para mejorar la legibilidad y su futuro mantenimiento.
  • Adición de comentarios.
  • Monitorización de las prestaciones del sistema en todo momento (almacenamiento, procesamiento, ancho de banda, etc.).

Tareas del Mantenimiento

Las principales tareas del mantenimiento de software son:

Comprensión del Software y de los Cambios a Realizar

Se deben conocer la funcionalidad, el objetivo, la estructura interna y los requisitos. Si no respetamos esto, podríamos introducir nuevos errores que nos lleven a más gastos por mantenimiento adicionales.

Modificación del Software

Se deben crear y modificar las estructuras de datos, la lógica de los procesos, las interfaces y la documentación. Para evitar los efectos secundarios, los programadores deben conocer las repercusiones de las modificaciones que van a introducir.

Código Heredado y Leyes del Mantenimiento del Software

La continuidad del cambio es una ley fundamental en el mantenimiento del software. Un programa evoluciona con su entorno para no hacerse obsoleto. Esto puede deberse a:

  • Ideas de los usuarios.
  • Nuevas características de hardware que implican mejoras en el software.
  • Corrección de defectos.
  • Migración del sistema a otra máquina o sistema operativo.
  • Necesidad de que el software sea más eficiente.

Entradas relacionadas: