sábado, 6 de octubre de 2012

Aplicaciones mastodónticas


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