Aplicación de gestión de ayudas

La Dirección General de Industria y de la PYME (DGIPYME) lleva años desarrollando la Base de datos de Ayudas e Incentivos para empresas con la información de los programas de ayudas y subvenciones así como los préstamos dirigidos a la PYME que se obtiene de los distintos boletines oficiales, nacionales y europeos, y de otras fuentes que puedan tener los organismos y entidades públicas (páginas web, publicaciones no oficiales, etc.). Actualmente la DGIPYME explota esta base de datos ofreciendo servicios gratuitos de consulta on-line, difusión selectiva a través del correo electrónico, elaboración de guías dinámicas y servicios web e iframes que permiten integrar el buscador portales externos como: emprendedores.eselEconomistaanel y otros muchos. Incluso en Dispersium hemos integrado el buscador de ayudas por su sencillez y utilidad para emprendedores ;).

Todas la mañanas dos documentalistas, Leticia y Montse, se encargan de revisar decenas publicaciones, entre nacionales y europeas, buscando cualquier información relevante a la financiación de la empresas (marcos legales, órdenes de bases, convocatorias, modificaciones, etc.) para procesarla e ingresarla en la Base de Datos de Ayudas e Incentivos en forma de fichas con información descriptiva adecuadamente elaborada y catalogada conforme a criterios regionales, sectoriales y legislativos. Para ponernos en situación, entre ambas documentalistas pueden tener que leer a lo largo del mes cerca de 1.500 publicaciones y generar más de 300 fichas.

La aplicación que estaban utilizando tenía ya casi una década, y había margen de mejora en varias áreas: podía funcionar mas rápido, había inconsistencias en la base de datos que debían solucionarse, y procesos de verificación que en su día tenían sentido pero ya no se llevaban a cabo. La búsqueda de ayudas y la gestión de la base de datos también podía mejorarse.

Este proyecto se realizó con la brillante colaboración de Aurelio García, analista programador de Atos, que planificó y realizó toda la parte de desarrollo, no sólo teniendo en cuenta las necesidades actuales, sino creando una aplicación escalable que pudiera implementar cambios en el futuro sin tener que rehacerla.

El reto

El reto era cambiar esta aplicación de escritorio por una que funcionara vía web, y que pudiera utilizarse independientemente del terminal con el que se accediera. Además, queríamos hacer que todo funcionara más rápido. Después del rediseño de la aplicación, hemos estimado que cada documentalista llega a ahorrar hasta una hora de trabajo cada día.

¿Cómo lo hicimos?

Dividimos la aplicación en “entregables” de forma que cada unos de estos fuese un elemento funcional completo que los usuarios pudiesen probar y validar de forma independiente.

Antes de lanzarnos a la elaboración de los wireframes para cada “entregable” analizamos las necesidades de los usuarios y su forma de trabajo. Repasamos el resultado de los análisis y discutimos cómo aplicarlos a un sistema con las características intrínsecas de una aplicación web. Nuestro principal problema consistía en sustituir una aplicación de escritorio que mantenía una conexión directa, permanentemente abierta, con la base de datos, en la que el coste de la consultas era mínimo y en la que las interfaces de usuario mantenían una fluidez propia de una aplicación de nativa, por una aplicación basada en clientes desconectados, en la que cada consulta en la base de datos o actualización de elementos de la interfaz podía implicar un impacto negativo en el rendimiento y fluidez del sistema si no se planificaba adecuadamente.

 

 

Wireframes

Estudiamos la interfaz antigua y entrevistamos a sus usuarias para entender cómo podíamos mejorarla.

Entender la aplicación requirió su tiempo: Comprender a fondo el porqué de todas las funcionalidades y procesos tenía su miga. Nos entrevistamos con las gestoras, con sus superiores, e incluso con gente que había trabajado en este proyecto hacía años. Tratábamos de simplificar, reduciendo el número de pantallas y pasos para realizar los diferentes procesos al recibir, insertar y publicar las diferentes ayudas.

No sólo se trataba de entender la aplicación, sino también la forma en que las gestoras la utilizaban. Tras años con la aplicación anterior, eran conscientes de que muchas ayudas eran muy parecidas entre sí. A menudo era más eficiente clonar una ayuda anterior y hacer unos pocos cambios que crearla de cero. Pero les tomaba tiempo encontrar la ayuda adecuada para clonar. Simplificamos esto con la funcionalidad “Insertar basado en…” que permitía seleccionar fácilmente una ayuda anterior para crear una nueva a partir de esta.

Prototipos para tests

Mediante prototipos navegables que testeamos con las gestoras,
encontramos áreas de mejora en el diseño y pudimos refinarlo
antes de añadirle funcionalidad.

Se nos presentaba una particularidad poco habitual: trabajábamos directamente con las usuarias finales del producto. Esto es una grandísima ventaja, ya que puedes hacer tests con la seguridad de que tienes a tus usuarios tipo. Estos tests fueron de gran ayuda para entender su proceso de trabajo y cómo iban a adaptarse a la nueva aplicación. La ventaja de saber exactamente cómo iba a ser la interfaz antes de programarla nos ahorró horas de desarrollo.

Finalmente, maquetamos la interfaz con Bootstrap 3 como framework, y algunos añadidos de JQuery UI para la interacción. Y continuamos testeando. Ya habíamos logrado una interfaz efectiva, pero también queríamos medir la eficiencia. Hicimos pruebas para comprobar cuánto tiempo se ganaba con la nueva aplicación, que arrojaron ahorros del 15-16%. Esto supone más de 500 de horas de trabajo al año.

Arquitectura de la aplicación de gestión de ayudas

Entre las tecnologías utilizadas podríamos destacar:

 

  • En presentación hemos aplicado el patrón MVC con el framework de Microsoft: ASP MVC 5.1
  • Parte del diseño y de su comportamiento “responsive” con Boostrap 3.0
  • Para el resto del comportamiento del cliente hemos utilizado Javascript apoyándonos en JQuery 2.1

En cuanto a la parte de negocio:

  • Los servicios web los hemos desarrollado como WEB APIs
  • El control de persistencia con Entity Framework 6.1
  • El acoplamiento y la inyección de dependencias con Unity Container (IoC) 3.5