El software, analógicamente como una máquina, tiende a degradarse con el tiempo si no se ejecuta un adecuado mantenimiento preventivo. Cuando las cosas se salen de control, se empiezan a necesitar acciones correctivas que pueden traer consigo un alto costo, o en algunos casos más severos, la reconstrucción o mantenimiento de software.

Un ejemplo comparable puede ser el hecho del cambio de aceite de un vehículo. No se espera a que el motor se dañe para proceder a dicho cambio, ya que allí comenzamos a entender la importancia de realizar actividades que pueden ser prescindibles en algún momento.

Las etapas más costosas del ciclo del mantenimiento de software están asociadas con las fases de mantenimiento y soporte, entre otras cosas, porque para el momento en el que nuestro negocio delega procesos core sobre estos sistemas, prescindir de ellos o sacarlos a offline puede traer como consecuencias un alto precio que la operación cobrará con creces.

No en vano se puede consultar en diferentes fuentes el término pudrición del software, un término brusco y difícil de asimilar sobre algo que nos resulta abstracto. En realidad claramente no corresponde a un fenómeno físico como la descomposición de un cuerpo, sino más bien a una inadecuada gestión de revisión y actualización que con el tiempo terminará generando respuestas cada vez más lentas, un software cada vez más obsoleto y sin uso, por lo que es necesario un mantenimiento preventivo del software

Entre las razones por las cuales un software comienza su deterioro son cuando el diseño del software, desde su arquitectura, no concibió situaciones que no eran posibles visualizar. 

Por ejemplo, un módulo de consultas que cuando se diseñó no se esperaba un número significativo de usuarios recurrentes. Con el tiempo resulta que dicha consulta arroja indicadores que han empezado a ser importantes bajo la nueva administración, así que ahora la consulta se realiza muchas veces al día y por muchos más usuarios recurrentes.

Este componente no estaba preparado para ello y ahora es necesario hacer una actualización para agregar algo en el diseño que le permita responder la alta demanda de consultas y no bloquearse. 

Instalaciones posteriores incorrectas 

Algunos sistemas tienen consigo una serie de instrucciones para su correcta instalación y configuración, variables que ajustar antes de usarlo, carga de información inicial para que algunas funcionalidades puedan operar, por ejemplo, una carga de asignaturas previas o un listado de sedes universitarias. Si se ejecutan posteriores instalaciones o reinicios y estos pasos no son llevados a cabo, entonces se pueden empezar a generar errores al emplearlo.

Funcionalidades dormidas 

Cuando tenemos un software robusto con varias funcionalidades, probablemente algunas de ellas no se han utilizado con escenarios cambiantes o simplemente algunas nunca se han utilizado. Esto es más común de lo que parece.

En grandes sistemas de información, por ejemplo, Excel, se cuentan con un gran número de funcionalidades que probablemente no lleguemos a emplear simplemente porque nuestra operación diaria no lo necesita. Esto también puede suceder con aplicaciones desarrolladas a la medida.

El asunto es que dichas funcionalidades con un flujo de trabajo alterno o que recién empiezan a ser empleadas puede develar errores que siempre habían estado allí, pero que pasaron desapercibidos porque no era una prioridad en su momento probarlas o no se plantearon combinaciones de datos y escenarios.

Estos errores pueden causar claramente bloqueos a la operación que no puede continuar con el uso normal del software o generar datos corruptos que al ser tomados por otras partes del sistema pueden generar errores transaccionales. 

Actualización de software 

Paradójicamente, las actualizaciones también pueden provocar errores si no se realiza una adecuada actualización o si no se actualiza todo lo que debe cambiarse. Por ejemplo, suponga que dada una política es necesario actualizar un sistema operativo en un servidor, tal vez porque esa versión ya no va a tener soporte del fabricante y entonces es necesario actualizarlo.

Sobre ese sistema operativo corren componentes que pueden ser fundamentales para su aplicación, tal vez el empleo de una librería que depende de otras que solo están en la versión antigua. 

En el momento del cambio, esas librerías desaparecen y su software, al querer ejecutar la lógica que dependía de ellas, no funcionará porque ya no están. Entonces, antes de hacer el cambio del sistema operativo, una adecuada actualización en su aplicación realiza un mantenimiento preventivo para el software para el cambio del sistema operativo. 

Entre otras también se encuentran: 

  • No ejecutar actualizaciones frente a nuevas vulnerabilidades de seguridad descubiertas en los componentes que conforman la arquitectura del software, por ejemplo middleware como Api-rest. 
  • Inclusión de nuevas funcionalidades que pueden inyectar errores y degradan el funcionamiento de versiones estables.
  • Acumulación de información muy antigua o basura y así mismo la no limpieza, por ejemplo de logs usados por las bases de datos transaccionales para hacer rollback, lo que genera procesos muy pesados y bajan la performance de las sentencias de búsqueda y del motor relacional en sí. 
  • No documentar los cambios, lo cual con el tiempo se vuelve insostenible al no tener una bitácora clara o con nuevos integrantes del equipo que no pueden obtener la transferencia de conocimiento, que por no estar consignado se pierde con el tiempo y hace el proceso más susceptible de introducir errores involuntariamente. 

El mantenimiento correctivo de software enfocado a solucionar problemas concretos también hace parte no solo de buscar la satisfacción del usuario y evitar el desuso de la plataforma en cuestión, sino también para abordar problemas más pequeños que pueden transformarse en otros mayores.  

El mantenimiento de software y sus activos es una tarea que merece planeación, dedicación de personal especializado y presupuesto, pero este es mucho menor que el que se deba invertir frente a situaciones irreparables y que impliquen grandes refactoring de código, rediseños nuevos o hasta la construcción de una nueva aplicación en su totalidad. 

Las acciones a tener en cuenta terminan siendo variadas y dependerán del modelo en el que se tenga desplegado el software, esto para lo que compete a la actualización de sistemas, base y mantenimiento de hardware.

No es lo mismo contar con un Datacenter propio en donde las responsabilidades son mayores a que si la infraestructura utilizada es un IAAS (infraestructura como servicio) o un PAAS (plataforma como servicio) bajo una nube pública o privada. Todos estos factores hacen que al menos este aspecto se deba revisar cada caso particularmente. 

En cuanto a la solución en sí, es decir, su código fuente y los componentes que la constituyen, se deberán seguir buenas prácticas de programación basada en el lenguaje y framework sobre la que se construyó.

Establecer de ser necesario una línea base de documentación y políticas para mantener esta práctica, vigilancia respecto a vulnerabilidades expuestas y realizar procedimientos de actualización para cerrar dichas brechas, realizar pruebas de estrés y tomar estadísticas, resultado de monitoreos para detectar degradaciones en los servicios, estar alineado con la estrategia del negocio para determinar si es necesario adecuar alguna parte del sistema para que responda asertivamente frente a una nueva situación, tareas operativas de limpieza en disco, etc. En resumidas cuentas, se debe establecer un plan en concreto para cada caso. 

Beneficios 

Además, realizar un adecuado mantenimiento de software aportará algunos beneficios a tu sistema, tales como: 

  1. Reducirá detenciones imprevistas en el funcionamiento. El desperfecto de alguna característica por falta de mantenimiento preventivo del software puede ocasionar fallas que paralicen el sistema por horas, o días. 
  2. Incrementa la vida útil de los equipos, pues el mismo sistema se encargará de organizar fechas en las cuales debe ocurrir el mantenimiento de software para asegurar su mayor rendimiento. 
  3. Previene o reduce costos en reparaciones. Al hacer constantes procesos de mantenimiento preventivo del software se logran reducir significativamente los costos de conservación. 

Nosotros te podemos ayudar 

Dado esto, tras lograr un desarrollo de software a la medida deberás realizar un óptimo mantenimiento de software, lo que se convierte en una labor primordial dentro de la institución educativa para evitar los fallos inesperados y velar por el buen rendimiento de la solución tecnológica. 

Para esto, en Heinsohn contamos con las herramientas necesarias que pueden ayudarte en tu mantenimiento preventivo y correctivo del software. Contáctanos para ayudarte con tu solución tecnológica moderna.