miércoles, 27 de julio de 2011

ATLAS: Nuevo framework para el desarrollo de aplicaciones en la Comunidad de Madrid

* Artículo escrito junto con mis compañeros del Área de Arquitectura e Integración de Aplicaciones de ICM para la revista ICM Conecta 


Introducción
El mundo de la tecnología evoluciona constantemente y con él los lenguajes de programación y las plataformas o frameworks que se apoyan sobre ellos. Una de las labores principales del Área de Arquitectura e Integración de Aplicaciones de ICM (AIAA) es estar al corriente de la evolución tecnológica, e incorporar a las aplicaciones de la Comunidad de Madrid aquellas tecnologías que puedan aportar valor, haciéndolas más eficientes y disminuyendo los tiempos y costes de desarrollo y mantenimiento.
En este contexto, el nuevo framework ATLAS incorpora las tecnologías más consolidadas del mundo Java a todos los desarrollos de aplicaciones que se emprendan en la Comunidad de Madrid.

¿Qué es ATLAS?
Antes de empezar a hablar en detalle de ATLAS, lo que incorpora y las mejoras que aporta para el desarrollo de aplicaciones, sería muy importante tener claro qué es un Framework. Según la wikipedia, un framework o marco de trabajo es “un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar”. Aun siendo una descripción muy conceptual, podemos hacernos una idea de lo que significa dentro del contexto de las aplicaciones informáticas: durante el desarrollo de software aparecen una serie de requisitos similares entre aplicaciones a los que se ha de dar solución. Ese conjunto de soluciones, junto con la documentación, buenas prácticas y ejemplos de uso constituyen lo que comúnmente se entiende como un framework. El concepto de ATLAS es más amplio, ya que además de todo esto incluye una definición detallada de los procesos que afectan al ciclo de vida de desarrollo y mantenimiento de software, así como una serie de herramientas de ayuda al programador.

Un poco de historia
Desde ICM se ha recorrido un largo camino hasta llegar a la tecnología de desarrollo de aplicaciones actual. Llevamos más de doce años creando aplicaciones web para la Comunidad de Madrid (aquellas que se utilizan desde un navegador). En un principio se utilizó la tecnología de CGI’s a través de ejecutables generados con Object Pascal (con componentes Delphi CGI Expert). Posteriormente se dio el salto al lenguaje Java, creándose el primer framework, que se apoyaba en la tecnología de Servlets. El siguiente paso fue la creación de un nuevo framework (Framework2 de ICM) que utilizaba la tecnología de páginas JSP y el patrón de diseño MVC para separar las distintas capas de las aplicaciones. 
Como respuesta a las nuevas necesidades tecnológicas surgidas desde la aparición del Framework2, desde ICM se vio necesario dar un salto cualitativo que agilizara y facilitara el desarrollo de aplicaciones, para lo cual, hace tres años, se contrata la construcción de un nuevo framework denominado ATLAS.
La construcción de un framework es un proyecto atípico, pues lo que se desarrolla no es una aplicación o sistema de información al uso, sino los cimientos para la construcción de futuras aplicaciones, por lo que la calidad y el control del proyecto tienen que ser máximos. Para la construcción del framework se tuvo en cuenta el contexto actual de ICM, en el que el desarrollo de aplicaciones se realiza por parte de proveedores externos en factorías, y el mantenimiento y evolución de dichas aplicaciones puede ser realizado por otros proveedores ajenos al proyecto inicial. Esto exige una disciplina muy estricta para que el código sea homogéneo, así como la utilización de buenas prácticas y soluciones estándar, con el objetivo principal de que el mantenimiento de la base instalada sea ágil, rápido y por lo tanto económico (el coste del mantenimiento de un aplicación es, a la larga, bastante mayor que el de su desarrollo).

Elementos de ATLAS
ATLAS está formado por los siguientes elementos:
  • Normativa: Es una de las piezas fundamentales del framework. Se trata de un documento que describe en profundidad la forma en la que se deben desarrollar las aplicaciones. Incluye una serie de Normas de obligado cumplimiento, así como Buenas Prácticas o recomendaciones.
La normativa de ATLAS incluye una serie de normas y buenas prácticas
  • Librerías: Se trata de una serie de librerías escritas en lenguaje Java que permiten llevar a la práctica las especificaciones definidas en la normativa. Entre estas librerías se incluyen módulos de integración con tecnologías horizontales a todas las aplicaciones (Servicios Web, Gestión Documental, Business Intelligence, etc.).
  • Documentación de Uso y Procedimientos: ATLAS incluye documentación de uso de todos sus componentes, así como documentos internos que describen en detalle todos los procesos a seguir desde el comienzo del desarrollo hasta que la aplicación se encuentra en producción y se procede a su mantenimiento.
  • Herramienta de ayuda a la verificación de la calidad: Junto con el framework ATLAS se incluye una herramienta que permite al proveedor comprobar el grado de cumplimiento de la normativa durante el desarrollo de una determinada aplicación. Utilizando la herramienta desde el comienzo del desarrollo, se evita que al final del proyecto se detecten incumplimientos de la normativa que requieran cambios estructurales.
  • Plantillas de partida: Para acelerar el arranque de los desarrollos, en el framework se incluyen una serie de plantillas de partida (denominadas Arquetipos), que contienen todo lo necesario para comenzar a desarrollar una aplicación de forma ágil.
  • Aplicación de Ejemplo: Para mostrar el uso de los distintos componentes de la arquitectura, junto con el framework se distribuye el código fuente de una aplicación de ejemplo.
Aplicación de Ejemplo
  • Portal de Conocimiento: Para facilitar la distribución de la documentación y la formación a proveedores, existe un portal de conocimiento con toda la información necesaria para aprender a utilizar el framework y mantenerse al día de su evolución (incluyendo vídeos formativos sobre los distintos componentes).
¿Qué beneficios aporta ATLAS
El framework ATLAS supone un importante cambio en el desarrollo de aplicaciones, tanto en aspectos tecnológicos como procedimentales. Este cambio redunda en una serie de beneficios específicos para cada uno de los tres principales agentes implicados: el usuario final, ICM y el proveedor externo. En el siguiente gráfico se muestra un resumen de estos beneficios:
Beneficios de ATLAS
Arquitectura del framework
La arquitectura del framework está basada en tres tecnologías ampliamente extendidas y utilizadas en el desarrollo de aplicaciones Java. Estas tecnologías son: JSF que se utiliza en la capa de presentación, Spring en la capa de lógica de negocio e Hibernate en el acceso a los datos. Sobre estas tecnologías se ha construido una capa de servicios y herramientas propios de ICM cuya misión es simplificar el desarrollo de aplicaciones, a la vez que facilitar el mantenimiento de las mismas. Entre los servicios que ofrece el framework están los siguientes:

  • Servicio de autenticación y autorización basado en políticas de seguridad predefinidas.
  • Componentes de presentación más habituales en los desarrollos de la Comunidad de Madrid.
  • Servicio de Trazas con información que permite la monitorización de las aplicaciones.
  • Servicio de Auditoría de acceso a datos personales para cumplimiento de la LOPD.
  • Servicios de integración con otras tecnologías: Gestión Documental, Certificados Digitales, Servicios Web, Planificación, Reporting, Bussiness Intelligent, etc.

Adicionalmente a estos servicios, para asegurar la calidad del código de las aplicaciones desde su comienzo se han seleccionado una serie de herramientas que facilitan la construcción de pruebas automatizadas, como son JMeter, JUnit y Selenium, y se ha desarrollado la herramienta de ayuda a la verificación automática de la calidad del código.

Como base para el arranque de nuevos desarrollos, se proporcionan una serie de Arquetipos o plantillas de partida que incluyen toda la configuración necesaria para utilizar los distintos servicios que ofrece el framework según se indica en la normativa. Actualmente se dispone de arquetipos para aplicaciones web, procesos batch, librerías, servicios web y aplicaciones que se integren con Documentum.

En ATLAS, todo el código fuente de las distintas aplicaciones se almacena en un único repositorio centralizado (Subversion). Para la gestión del ciclo de vida de las aplicaciones se utiliza la herramienta Maven, que aporta los siguientes beneficios:

  1. Permite la automatización de las tareas más comunes (como la compilación, empaquetado y despliegue de las aplicaciones en los distintos entornos de ICM).
  2. Proporciona la gestión automática de las dependencias de un proyecto, descargando todas las librerías necesarias para una aplicación de un repositorio centralizado de librerías (Artifactory).
  3. Establece un método único de gestión de la configuración: Permite la gestión de las versiones del framework y de las aplicaciones, lo que aporta control sobre su estado y evolución a lo largo del tiempo.
Próximos Pasos
Se han liberado ya varias versiones estables de ATLAS, el framework se encuentra disponible para desarrollar proyectos de forma estándar para la organización, permitiendo un nuevo horizonte sobre el que sustentar futuros procesos de renovación tecnológica de la base instalada.

Para una correcta adopción del nuevo framework es imprescindible que los desarrolladores conozcan los estándares tecnológicos en los que se apoya (JSF, Spring e Hibernate). Para garantizar el éxito de los proyectos, los proveedores externos tienen que tener esto muy presente e involucrar a personal cualificado en los desarrollos.
Mientras siguen creándose nuevas aplicaciones basadas en ATLAS, el framework continúa evolucionando (un framework siempre está vivo, en un proceso constante de adaptación a las nuevas necesidades). El futuro de ATLAS pasa por seguir trabajando en enriquecer su contenido y facilitar la labor de desarrollo. En este sentido, se está trabajando en incorporar a futuras versiones del framework funcionalidades como la generación automática de código a partir de un modelo de datos (para generar automáticamente pantallas de administración de catálogos). La integración con otras tecnologías emergentes en la organización será otra línea de trabajo muy importante a tener en cuenta.

    2 comentarios:

    Jorge dijo...

    Llevo dos meses en una empresa y he currado sobre Atlas durante un mes en un proyecto que estaba terminando. Ahora hemos empezado otro y usa Framework2

    Manuel Pereira dijo...

    Hola Jorge, gracias por tu comentario.
    Desde el año pasado se han lanzado varios proyectos estratégicos con el nuevo framework (con algunos de los principales proveedores de ICM), y en breve cualquier desarrollo nuevo que se emprenda se hará con ATLAS.
    Además de la agilidad de desarrollo, uno de los principales pilares de ATLAS es la estandarización y optimización de los procesos internos de ICM (apoyándonos en Maven).
    El paso más importante para que se note el incremento de productividad en el desarrollo es asegurarnos de que el personal involucrado en los proyectos está formado en JSF, Spring e Hibernate.
    Un saludo.