Tipos de mantenimiento de software

El mantenimiento es la última fase del ciclo de vida del software, y por norma general también suele ser la más larga y en muchas ocasiones la más aburrida, pero también es una parte fundamental e inevitable de esta industria.

Definición de mantenimiento

Antes de avanzar con los distintos tipos de mantenimiento, es buena idea unificar criterios y asegurarnos de que estamos de acuerdo en la definición.

El mantenimiento es la acción de modificar la versión en producción software con el fin de corregir errores, subsanar problemas o realizar cambios enfocados en conservar la capacidad de prestar el servicio para el cual fue diseñado.

Tipos de mantenimiento

Y ahora que tenemos claro qué es el mantenimiento del software, repasemos qué tipos hay.

Mantenimiento preventivo

Si visualizamos el mantenimiento desde un prisma general y no solo desde el punto de vista del desarrollo de software, la mayoría de nosotros pensaremos en un conjunto de acciones proactivas enfocadas a evitar el deterioro de la cosa mantenida.

Si hablamos de software es exactamente igual, el mantenimiento preventivo es la acción de modificar el software proactivamente con el objetivo de evitar su deterioro o de mejorarlo sin alterar su funcionamiento.

Podemos realizar este tipo de mantenimiento por varios fines como corregir olores en el código, mejorar la comprensión, optimizar el funcionamiento, optimizar el consumo de recursos, etc

Llegados a este punto quizás te estés preguntando cuál es la diferencia entre el mantenimiento preventivo y la refactorización, pues a mi modo de ver ninguna, son la misma cosa. Así que te invito a leer el artículo Refactorización de código para ampliar conocimientos.

Mantenimiento correctivo

El mantenimiento correctivo se sitúa justo en el lado opuesto del mantenimiento preventivo: si en el mantenimiento preventivo actuamos de forma proactiva para evitar que se produzca el error, en el mantenimiento correctivo lo hacemos de forma reactiva y reaccionamos a los o errores que aparecen.

Los errores son inevitables y por más que intentemos desarrollar software libres de bugs, tarde o temprano y en mayor o menor medida éstos van a aparecer. Por lo tanto, para minimizar el tiempo que invertimos gastamos corrigiendo errores y sufriendo los efecto de sus consecuencias debemos enfocar nuestros esfuerzos en tres tareas:

  • Disponer de un proceso de desarrollo adecuado con el fin de minimizar el número de bugs desde el primer momento. Puedes echarle un vistazo a la entrada entorno de desarrollo.
  • Realizar mantenimiento preventivo (ó refactorización).
  • Disponer de herramientas adecuadas para la notificación, clasificación y seguimiento de los errores.

Mantenimiento adaptativo

El mantenimiento adaptativo consiste en modificar el software, sin alterar su funcionamiento, con el objetivo de dar respuesta a cambios en el entorno de la aplicación. El objetivo es que estos cambios no afecten a la capacidad del programa de prestar el servicio.

Algunos ejemplos de este tipo de mantenimiento pueden ser:

  • Modificar el software para adaptarse a cambios en una API de terceros.
  • Adaptar un software para soportar una nueva versión del lenguaje de programación.
  • Actualizar la versión de una librería o de un framework.
  • Soportar cambios en el sistema operativo o en el hardware.

Mantenimiento perfectivo

En la literatura que he consultado identifican el mantenimiento perfectivo como un tipo de mantenimiento con un doble objetivo: por un lado la incorporación de nuevas funcionalidades o la modificación de las existentes, y por otro las adaptaciones necesarias para asegurar el rendimiento cuando existe un incremento del volumen considerable.

Mi opinión es que teniendo en cuenta el auge de los modelos de desarrollo ágiles y su filosofía de entrega de valor rápida basada en ciclos de desarrollo cortos, el mantenimiento perfectivo queda absorvido por la propia fase de desarrollo.

Y en cuanto a las adaptaciones necesarias para asegurar el rendimiento por aumento de volumen, creo que pueden ser perfectamente incluidas como mantenimiento preventivo, si se atajan a tiempo, o en caso contrario como mantenimiento correctivo.

Dónde comienza el mantenimiento

La versión en producción de un software es el producto de un proceso complejo formado por varias etapas conocido cómo ciclo de vida del software. Por lo tanto, la calidad del software final está altamente condicionada por la calidad individual de cada una de las etapas.

Por lo tanto, con el fin de minimizar el esfuerzo que hacemos en mantener el software podemos dar por válida una pequeña mentira: el mantenimiento del software comienza en el mismo momento en el que comienza el análisis de viabilidad del software. Es decir, invertir el tiempo necesario y hacer las cosas bien en cada una de las etapas nos garantiza, entre otras muchas ventajas, gastar menos tiempo en el mantenimiento del software .

Mantenimiento, evolución y metodologías ágiles

Como hemos visto con el mantenimiento perfectivo, las metodologías ágiles hacen que los conceptos de mantenimiento y evolución, en algunos casos, estén separados por una delgada línea gris que invita a hacer interpretaciones subjetivas de qué es qué. Éste es un tema sobre el que podríamos escribir largo y tendido, y sobre el que en esta ocasión no vamos a entrar pero si creí necesario mencionar.

Créditos, referencias y artículos relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *