10 Dic

Mantenimiento de Software: Conceptos Clave

El mantenimiento de software consiste en modificar el código y la documentación asociada para corregir defectos, mejorar el rendimiento o adaptarlo a cambios en el entorno.

Tipos de Mantenimiento de Software

  • Correctivo: Se centra en localizar y eliminar posibles defectos que pueden causar fallos, es decir, un comportamiento distinto al especificado. Los defectos pueden originarse en la especificación, el diseño, la lógica, la interfaz de usuario, la comprobación de errores, el manejo de datos, la interfaz de hardware, los estándares o la interfaz de software. Algunos fallos comunes incluyen problemas de procesamiento, rendimiento, programación y documentación. Representa el 17% del mantenimiento.
  • Adaptativo: Implica la modificación del programa debido a cambios en el entorno en el que se ejecuta, como el sistema operativo, la arquitectura o el entorno de desarrollo del software. Se pueden distinguir dos clases de cambios: en el entorno de los datos o en el entorno de los procesos. Representa el 18% del mantenimiento.
  • Perfectivo: Abarca los cambios en la especificación, debidos a modificaciones en los requisitos. Incluye actividades para mejorar o añadir nuevas funcionalidades requeridas por el usuario. Se divide en mantenimiento de ampliación (nuevas funcionalidades) y mantenimiento de eficiencia (mejora de la ejecución). Este tipo de mantenimiento aumenta cuando el producto tiene mucho éxito comercial. Representa el 60% del mantenimiento.
  • Preventivo: Consiste en la modificación del software para mejorar sus propiedades sin alterar sus especificaciones funcionales. Es el que más partido saca de las técnicas de ingeniería inversa y reingeniería. Dentro de este tipo, encontramos el mantenimiento para la reutilización, que busca modificar el software para que sea más fácilmente reutilizable. Representa el 5% del mantenimiento.

Actividades de Mantenimiento de Software

  1. Análisis de impacto y de costos/beneficios: Se analizan las alternativas de implementación y se comprueba el impacto en la planificación, los costos y la facilidad de operación.
  2. Comprensión del cambio: Se localiza el error y se determina su causa, o se comprenden los requisitos de una mejora solicitada.
  3. Diseño del cambio: Se propone un diseño para el cambio, con un posible rediseño del sistema.
  4. Codificación y pruebas unitarias: Se codifican y prueban individualmente cada uno de los componentes modificados.
  5. Inspección, certificación y consultoría: Se inspecciona el cambio, se comprueban otros diseños y se realizan reuniones de inspección.
  6. Pruebas de integración: Se integran los componentes modificados con el resto del sistema y se realizan las pruebas correspondientes.
  7. Pruebas de aceptación: Se verifica la adecuación del cambio a las necesidades del usuario.
  8. Pruebas de regresión: Se somete al software a casos de prueba previamente almacenados y por los que ya pasó, para asegurar que no se han introducido nuevos errores.
  9. Documentación del sistema: En caso necesario, se revisa y reescribe la documentación del sistema para que se ajuste al producto modificado.
  10. Otra documentación: Se actualiza la documentación del usuario, por ejemplo.
  11. Otras actividades: Se incluyen actividades dedicadas a la gestión del proyecto de mantenimiento.

Distribución del Esfuerzo en Mantenimiento Correctivo y Perfectivo

  • La proporción de esfuerzo dedicado a la comprensión es mucho mayor en el caso de mantenimiento correctivo que en el perfectivo.
  • La proporción de esfuerzo empleado en inspección, certificación y consultoría es mucho mayor en el caso de mantenimiento perfectivo que en el correctivo.
  • La proporción de esfuerzo dedicado a diseño, codificación y pruebas es muy similar en ambos tipos de mantenimiento.

QN9JZ1uWHczf-j6L1PHJbPmjhiK44mXXrAuVvLJ1

Dificultades y Complicaciones en el Mantenimiento de Software

  • Realizar el mantenimiento de forma rigurosa para evitar el deterioro de la calidad.
  • Código heredado: Código de aplicaciones desarrolladas hace tiempo, con técnicas y herramientas en desuso. Desechar y reescribir el código supone un gasto muy alto.
  • Continuidad del cambio: Un programa utilizado en un entorno real debe cambiar, ya que, si no, cada vez será menos usado en dicho entorno.
  • Incremento de la complejidad: La estructura del programa se hace más compleja cuando no se utilizan técnicas de ingeniería del software.
  • Evolución del programa: Proceso autorregulado. Las medidas de determinadas propiedades (tamaño, tiempo entre versiones y número de errores) revelan estadísticamente determinadas tendencias e invariantes.
  • Conservación de la estabilidad organizacional: A lo largo del tiempo de vida de un programa, la carga que supone el desarrollo de dicho programa es aproximadamente constante e independiente de los recursos dedicados.
  • Conservación de la familiaridad: Durante todo el tiempo de vida de un sistema, el incremento en el número de cambios incluidos con cada versión (release) es aproximadamente constante.
  • El mantenimiento es realizado, a menudo, de una manera ad hoc por el programador.
  • Falta de documentación.
  • Problemas de gestión, como programadores que desmerecen la tarea de mantenimiento, prefiriendo el desarrollo de software nuevo. Esto puede llevar a que el mantenimiento se haga de mala gana, introduciendo nuevos errores.
  • Desarrollo de programas sin tener en cuenta la ingeniería del software.

Deja un comentario