Se conoce como ciclo de vida del software al proceso que se inicia con el análisis y diseño de una solución software. Se compone de distintas fases que van cambiando según el estado en el que se encuentra la solución.
A la hora de planificar el ciclo de vida de una solución software, una de las fases que más se suele pasar por alto es la fase de mantenimiento. Sin embargo, esta es una de las fases más importantes, ya que suele ser la que más se alarga en el tiempo y, por tanto, a la que más recursos se suele destinar. Veamos en qué consiste este proceso, los tipo de mantenimiento y el coste que puede suponer.
¿En qué consiste el mantenimiento del software?
La fase de mantenimiento comienza una vez se ha desplegado en producción nuestra solución software. El mantenimiento consiste en darle soporte a nuestra solución, de modo que siga siendo útil y funcional a lo largo del tiempo.
Esta fase no termina hasta que el ciclo de vida de nuestra solución no finaliza y por tanto determinará el éxito a largo plazo de la misma. De nada sirve que una solución se encuentre desplegada durante varios años en producción si por culpa de un mal mantenimiento los usuarios no la encuentran útil o usable.
La fase de mantenimiento de software se divide a su vez en diversos tipos de mantenimientos, que hacen hincapié en aspectos concretos de la solución. Cabe destacar los siguientes:
- Mantenimiento correctivo o preventivo. Eliminar los defectos que se vayan encontrando a lo largo de la vida útil del software.
- Mantenimiento adaptativo. Adaptar la solución a nuevas necesidades
Mantenimiento perfectivo o evolutivo. Añadir nuevas funcionalidades y mejorar las ya existentes
Sin embargo, trabajar en estos aspectos requiere invertir recursos por parte de la empresa, así que la pregunta es: ¿es rentable mantener una solución software a lo largo del tiempo? Para poder responder a esa pregunta, primero debemos entender un poco más qué implicaciones tiene cada tipo de mantenimiento.
¿A qué se dedica cada tipo de mantenimiento del software?
Aunque se considera una única fase, cada tipo de mantenimiento se centra en problemas muy concretos y no toda solución tendrá que hacer frente a los distintos tipos de mantenimiento de la misma manera.
En primer lugar, una solución software necesita estar lo más depurada posible para poder responder a su cometido de forma eficiente. Se conoce como mantenimiento preventivo al acto de revisar el sistema de forma periódica para detectar, evitar y ,en caso necesario, solventar los posibles problemas que puedan aparecer. Por otro lado, se conoce como mantenimiento correctivo si se activan medidas para resolver un fallo después de que este se haga aparente (por ejemplo, porque un usuario final ha detectado una inconsistencia).
Hay que tener en cuenta que no todos los fallos de una solución software tienen el mismo impacto en el éxito de la misma. Mientras que unos pueden ser relativamente inofensivos (un texto descentrado en una aplicación web), otros pueden ser críticos para su éxito (un dispensador de gel automático que no detecta determinadas tonalidades de piel).
Por otro lado, el mantenimiento adaptativo se enfoca en adaptar la solución a los posibles cambios que surjan en las tecnologías, en el hardware o en la normativa. No llevar a cabo este tipo de mantenimientos puede desembocar en la aparición de vulnerabilidades de seguridad en nuestras soluciones e incluso en la inhabilitación de la misma o multas para la empresa si no nos aseguramos de que la solución sea conforme con la normativa vigente.
Por último, una solución software tiene que mantenerse útil en el tiempo, ya sea optimizando procesos existentes (mantenimiento perfectivo) o bien añadiendo nueva funcionalidad que la vuelva atractiva para los usuarios (mantenimiento evolutivo). Invertir en este tipo de mantenimientos también puede ser crítico, ya que si no se renuevan la solución (ya sea con funcionalidad nueva u optimizando la ya existente), puede desembocar en pérdida de interés por parte de los clientes.
Hablemos de los costes de mantenimiento del Software
Tras analizar los diversos tipos de mantenimiento, queda clara su importancia en el éxito de una solución software sobre la que se plantea una vida útil duradera. Sin embargo, cada uno de estos tipos de mantenimiento requiere de tiempo y recursos que conllevan un coste para la empresa (y dependiendo del tipo de mantenimiento y del contrato, puede que también para el cliente).
Por ejemplo, si deseamos realizar un mantenimiento preventivo sobre nuestra solución software tendremos que reservar tiempo de al menos una persona para que se haga cargo de estas revisiones. Si se descubre algún problema, ya sea por una revisión o porque un cliente lo ha detectado, será necesario reservar incluso más tiempo de esa persona y, dependiendo del tamaño de la solución, es posible que haga falta reservar tiempo de un equipo mayor.
Un mantenimiento adaptativo normalmente se puede planificar con tiempo. Los cambios en las leyes tardan un tiempo en aplicarse y una tecnología no suele desaparecer de la noche a la mañana. Sin embargo, en contadas ocasiones puede ocurrir que apenas quede margen para aplicar los cambios que sean necesarios, y esos cambios pueden también ser muy costosos (nuevo hardware, nuevas licencias, consultas con departamentos legales, etc).
El mantenimiento perfectivo y el evolutivo son casos más complejos. Dependen completamente de la solución software y del mercado en el que se encuentre. ¿Tenemos un contrato a largo plazo como proveedor a una compañía? ¿Existe competencia directa con otras soluciones? Según la respuesta a estas y otras preguntas, será más o menos necesario investigar e invertir en este tipo de mantenimientos para mantener la solución relevante.
Por lo tanto, para poder responder de forma efectiva a los mantenimientos es necesario tener siempre pendiente la carga de trabajo del equipo técnico del que se disponga. Lo último que quiere una empresa es tener que hacer frente a algunos de estos mantenimientos en mitad de un pico de trabajo donde no se puede liberar tiempo de ninguno de los encargados de mantener las soluciones. Este problema se volverá más complejo según la capacidad del personal y los recursos de los que disponga la empresa, así como del número de soluciones software que se encuentren en fase de mantenimiento en un momento dado.
El equilibrio es clave en el mantenimiento del software
Al principio de este artículo nos hacíamos la siguiente pregunta: ¿es rentable mantener una solución software a lo largo del tiempo? Tras analizar las implicaciones de la fase de mantenimiento queda bastante claro que esta es necesaria para el éxito de nuestra solución. No obstante, se tiende a ignorar o a pasar por alto a la hora de planificar el ciclo de vida de una solución. Esto se debe sobre todo a que el coste de llevar a cabo un mantenimiento es continuo y directo, mientras que el beneficio que aporta un buen mantenimiento no siempre es tangible. A menudo lo que ocurre es todo lo contrario, que una solución acaba su ciclo de vida antes de lo esperado debido a un mal mantenimiento que hizo que no fuese rentable.
Aunque ignorar la fase de mantenimiento puede tener un impacto negativo en la vida de la solución, dedicar todos tus recursos a mantenerla puede no ser la decisión más adecuada. A la hora de invertir recursos en esta fase, lo importante es siempre comprender los beneficios que se obtendrán de ello. Si el coste de mantener una solución supera a los beneficios que esta genera habrá que ser capaz de tomar ciertas decisiones. Por ejemplo, tal vez no merezca la pena llevar a cabo un mantenimiento preventivo, o puede que invertir en una nueva funcionalidad sea la única manera de conseguir recuperar el interés de los usuarios. Tampoco hay que tener miedo a terminar el ciclo de vida de una solución si esta deja de ser rentable.
Cada solución presentará unos problemas y unas situaciones completamente distintas. Entender la importancia del mantenimiento ayudará a tomar las decisiones correctas, pero al final la clave será siempre un equilibrio entre la inversión que se lleve a cabo para mantener una solución y el beneficio que esta genere para la empresa.