Tras un intenso año de desarrollo
consigues poner en producción la aplicación que gestionas. Como
quieres agradar a quien la utiliza y fomentar su uso, una vez puesta
en marcha, empiezas con el mantenimiento evolutivo añadiendo nuevos
campos de formulario, de fusión (porque se generan plantillas a
partir de la información grabada por el usuario), nuevos informes,
caminos cortos para los usuarios avanzados, nuevas integraciones con
otras aplicaciones para facilitar el trabajo de gestión, etc. Además
la aplicación, que en este caso es de backend, tiene casuísticas
diferentes para distintos usuarios ya que el procedimiento no está
debidamente normalizado y por tanto los usuarios de Albacete no
trabajan igual que los de Guadalajara, por poner un ejemplo.
Como resultado de esta evolución
tienes el título de la entrada es decir una aplicación
mastodóntica. A mí me ha ocurrido, y creo no ser el único entre
los que conformamos el gremio que nos dedicamos a desarrollar
aplicaciones. Eso significa que más del 70% del trabajo se te va en
mantenimiento, que los usuarios tienen que ser muy avezados para
saberla utilizar, que las puestas en producción de nuevas
funcionalidades se ralentizan, etc. En definitiva ir en contra de la
tendencia actual: Aplicaciones simples, elegantes y de fácil
manejo.
Entonces, ¿cómo no incurrir en
aplicaciones mastodónticas sin que los usuarios pierdan
funcionalidad?. ¿Cómo mantener un orden que haga posible el
acometer nuevos desarrollos sobre este mamotreto de aplicación? Para
ello he elaborado una pequeña lista de lo que bajo mi punto de vista
son cuestiones importantes para conseguirlo.
1.- Hay que eliminar funcionalidad.
El mantenimiento evolutivo siempre está centrado en añadir. Sin
embargo, se descuida hasta límites insospechados la simplicidad. Hay
que revisar periódicamente qué campos, listados y en definitiva qué
funcionalidades no se utilizan o han sido cubiertas de alguna forma
con nuevas versiones. Sí, es duro eliminar porque parece que te
cargas de golpe y porrazo un trabajo que te costó lo suyo, pero más
duro es mantener varias vías para hacer lo mismo.
2.- Antes de acometer un nuevo
desarrollo debes estar seguro que tiene sentido realizarla. Esto
sobre todo se refiere a aplicaciones con usuarios distintos y con
distintas formas de interpretar un mismo procedimiento. Lo ideal
sería estandarizar el procedimiento y que todos operen por igual.
Como muchas veces esa tarea de coordinación es casi utópica en
nuestro ámbito laboral, al menos que sea la aplicación la que de
algún modo vaya reorientando la forma de trabajo entre los distintos
usuarios para que ésta se estandarice. Esto sólo es posible si la
aplicación no se desvía de la norma y trata de no atender
necesidades muy particulares y concretas. En ocasiones hay que saber
decir que no por el bien de la aplicación.
El usuario no siempre
tiene la razón, sobre todo si comparte tal condición con otros
muchos.
3.- Hay que documentar debidamente.
Si, todos sabemos que es tedioso documentar pero es la única forma
de poder avanzar de forma ordenada y que no impere el caos si, por
ejemplo, hay que traspasar el proyecto a otros responsables. Además,
cuando documentas te vas haciendo experto y hace que descubras muchas
posibilidades de mejora y errores de concepto que, de otro modo,
tardarías mucho en darte cuenta. Documentar ayuda a hacerte
experto en la materia y de esa manera se facilita la innovación.
4.- El código hay que revisarlo y
depurarlo. Ya hablaré del rendimiento de las aplicaciones en
otro Post. Aquí simplemente comentaré que de vez en cuando hay que
hacer un impasse en el mantenimiento evolutivo y examinar la
programación y las queries contra la BD, ya que el rendimiento de la
aplicación va a depender mucho del buen quehacer de esta tarea.
Además, y enlazado con el primero de los puntos, en estas revisiones
hay que centrarse en eliminar código redundante y obsoleto.
El rendimiento juega un papel
fundamental en aplicaciones de gestión. El correcto manejo de
sesiones y consultas a la Base de datos son esenciales para
optimizarlo.
5.- Hay más cuestiones que
ayudan en este sentido, pero como no quiero que mi artículo sea
mastodóntico, ahí lo dejo.
Concluyendo, frente a las metodologías
clásicas o en cascada, se están imponiendo las iterativas e
incrementales. Respecto a estas últimas, sin embargo, existe una
tendencia a olvidar la parte iterativa, que está centrada en mejorar
la calidad de la anterior versión, frente a la parte incremental más
enfocada en añadir nuevas funcionalidades.
Esto hace crecer en ocasiones de forma
desmesurada las aplicaciones, provocando que sean difícilmente
mantenibles por su baja calidad y alta complejidad.
No hay comentarios:
Publicar un comentario