Java para Aplicaciones Corporativas de la Administración * José García-Alonso, Javier Berrocal Olmeda, Juan M. Murillo
Escuela Politécnica Universidad de Extremadura
[email protected],
[email protected],
[email protected]
Resumen
Desarrollar aplicaciones multicapa utilizando frameworks de desarrollo es una de las tareas más comunes, pero a la vez más complejas que deben abordar hoy en día las administraciones públicas y grandes empresas de desarrollo. Para simplicar esta tarea se han creado una serie de arquitecturas de desarrollo que estandarizan las buenas prácticas de una organización. En esta demostración se presenta JACA, una arquitectura de desarrollo que va un paso más adelante, exibilizando la incorporación de nuevas tecnologías a este tipo de soluciones. 1.
Introducción
El desarrollo de aplicaciones multicapa basadas en frameworks [1] plantea grandes retos a las administraciones públicas y a las grandes empresas. Por una parte, desarrollar este tipo de aplicaciones requiere de personal altamente cualicado y de un constante programa de formación, puesto que estas tecnologías tienen una elevada curva de aprendizaje y evolucionan a una gran velocidad [3]. Por otra parte, este tipo de instituciones sufre de una gran rotación de personal, especialmente las grandes empresas de desarrollo. Cabría esperar que este problema no tuviese incidencia en las administraciones públicas, sin embargo se producen los mismos efectos debido a los traslados de personal entre distintos departamentos o pro* Este trabajo ha sido nanciado por los proyectos TIN2008-02985, PDT08A034, PRE09156 y la Fundación Valhondo Cala.
yectos que se producen anualmente debido a la publicación de la RPT (Relación de Puestos de Trabajo). La unión de la elevada curva de aprendizaje con la constante rotación de personal tiene como consecuencia que la franja de tiempo en la que los desarrolladores tienen niveles de productividad aceptables sea muy pequeña. El motivo es que tardan en alcanzar el nivel de productividad y cuando lo alcanzan cambian rápidamente de puesto de trabajo [6]. Para solventar estos problemas tanto administraciones públicas como grandes empresas de desarrollo han diseñado arquitecturas de desarrollo que aplican a todos los proyectos que lo permiten. El uso de este tipo de arquitecturas permite que un desarrollador pueda cambiar de proyecto o departamento sin necesidad de formación añadida; puesto que se utilizan las mismas tecnologías, aplicadas de la misma manera, en la mayoría de los proyectos desarrollados. Además, este tipo de arquitecturas facilita la creación de componentes que pueden ser reutilizados en varios proyectos puesto que la tecnología base es la misma. Aunque este tipo de arquitecturas de desarrollo presenta grandes ventajas, y por ello son utilizadas por varias administraciones y grandes empresas, presenta un inconveniente: Al tratarse generalmente de arquitecturas estáticas, en las que se invierten grandes esfuerzos en el desarrollo de componentes, resulta muy compleja su actualización y evolución. Ello unido al enorme costo que supone su desarrollo y a la velocidad a la que evoluciona la tecnología supone que a menudo resulten una inversión poco rentable..
En esta demostración se presenta la herramienta JACA (Java para Aplicaciones Corporativas de la Administración), una arquitectura de desarrollo de aplicaciones multicapa basadas en frameworks, creada para ser utilizada en los proyectos desarrollados por y para la Junta de Extremadura. La característica principal de esta herramienta y que la distingue del resto de arquitecturas de desarrollo es que se ha concebido especialmente primando su exibilidad, de forma que incorporar una evolución de alguna de las tecnologías utilizadas o alguna tecnología nueva suponga el menor esfuerzo posible. En la segunda sección de este documento se describe muy brevemente algunas de las arquitecturas de desarrollo de este tipo más utilizadas y las principales diferencias respecto a JACA. En la tercera sección se describe la herramienta JACA, prestando especial atención a la arquitectura de la herramienta y a la exibilidad para incorporar nuevas tecnologías. Por ultimo, en la cuarta sección se presentan las conclusiones y trabajos futuros. 2.
Estado del arte
La gran curva de aprendizaje que plantea el desarrollo de aplicaciones basadas en frameworks y el problema de rotación del personal, junto con la necesidad de establecer un marco común para el desarrollo de este tipo de aplicaciones, ha llevado a muchas administraciones públicas a crear arquitecturas de desarrollo para tratar de mitigar estos problemas. A continuación se presentan algunas de las arquitecturas más representativas en este sentido: • Una arquitectura de este tipo es la crea-
da por el Principado de Asturias con su openFWPA [8] (open Framework del Principado de Asturias).
• La Junta de Andalucia persigue unos ob-
jetivos similares con el sistema MADEJA [4] (MArco de DEsarrollo de la Junta de Andalucía).
• El Gobierno de Cantabria suple sus ne-
cesidades mediante el framework de desa-
rrollo AMAP [2] (Arquitectura Marco para las Administraciones Públicas). • De igual forma, otras comunidades cuen-
tan con sus arquitecturas de desarrollo o documentos de estandarización. La Región de Murcia cuenta con JAVATO [7], el Gobierno Vasco utiliza un documento de Estándares Tecnológicos [9] y la Junta de Castilla y León un framework corporativo de desarrollo [5]
Las grandes empresas de desarrollo sufren estos mismos problemas y también tratan de mitigarlos mediante la utilización de arquitecturas de desarrollo estáticas. Un claro ejemplo de esto es la arquitectura ArqOS (Arquitectura Orientada a Servicios) creada por Indra y utilizada en sus factorías de software. Si bien estas arquitecturas solventan muchos de los problemas mencionados anteriormente, sufren un grave inconveniente. Actualizar una de estas arquitecturas para introducir nuevos frameworks o actualizar las versiones de los soportados supone un alto esfuerzo y coste. Esto ha provocado que aunque estas arquitecturas han sido muy utilizadas tras su concepción, poco a poco han ido quedando desfasadas debido a la falta de actualizaciones. JACA surge de la necesidad de una arquitectura de desarrollo de este tipo, dentro de la Junta de Extremadura, junto con la disposición para que la arquitectura creada fuese lo más exible posible para poder acometer las actualizaciones con el menor coste. 3.
JACA
Con el objetivo de crear una arquitectura capaz de estandarizar los desarrollos llevados a cabo por y para la Junta de Extremadura y, al mismo tiempo, la exibilidad suciente como para adaptarse a las evoluciones tecnológicas se crea JACA. El proyecto se ha desarrollado como plug-ins para el entorno de desarrollo Eclipse, por ser este uno de los más utilizados para los desarrollo Java y permitir la inclusión de nuevas características. La arquitectura de la solución planteada se divide en dos módulos: un conjunto de asisten-
Figura 1: Frameworks disponibles para utilizar en un proyecto
tes que facilitan al usuario la creación de aplicaciones multicapa y un gestor de independencia tecnológica que se sitúa entre los asistentes y los frameworks utilizados para el desarrollo. 3.1.
Asistentes
Este tipo de arquitecturas cuentan usualmente con un elevado número de componentes que son reutilizados en los distintos proyectos abordados mediante el uso de la misma. Estos componentes resultan de gran utilidad, pero suponen un problema a la hora de actualizar la arquitectura, puesto que todos ellos deben ser actualizados a las nuevas tecnologías empleadas. La arquitectura JACA trata de evitar estos inconvenientes utilizando un conjunto de asistentes para el desarrollo. El objetivo de estos asistentes consiste en incrementar la productividad de los desarrolladores, facilitando el desarrollo, pero sin depender de componentes estáticos. Algunos proyectos de reciente creación, como Spring Roo [10], utilizan estos mismos principios para incrementar la productividad de los desarrolladores. JACA cuenta con un asistente principal que permite la creación de proyectos que utilizan la arquitectura. Este asistente permite, entre otras cosas, seleccionar aquellos frameworks que se desean utilizar en el desarrollo del proyecto que se está llevando a cabo. En la gura 1 se puede ver una captura de la pantalla de selección de frameworks. El resultado de eje-
cutar este asistente consiste en la creación de un proyecto en Eclipse, con todos los frameworks que se han seleccionado perfectamente integrados y congurados, listo para empezar a trabajar. Una vez que se dispone de un proyecto de este tipo, JACA proporciona un conjunto de asistentes para la creación de componentes de dicho proyecto. Algunos de los asistentes que proporcionan JACA permiten la creación de objetos persistentes, la creación de controladores web, publicación o consumo de servicios web, etc. En la gura 2 puede verse una captura del asistente para la creación y publicación de un servicio web. Estos asistentes solicitan al usuario la información necesaria para crear y congurar el componente que se desea generar dentro del proyecto. Una vez que son ejecutados, todos los elementos de conguración y clases necesarias son creadas dentro del proyecto y el desarrollador sólo debe encargarse de implementar la funcionalidad correspondiente. 3.2.
Gestor de independencia tecnológica
Los asistentes descritos en el apartado anterior simplican el proceso de creación de aplicaciones multicapa, permitiendo a los desarrolladores centrarse en la implementar la solución y olvidándose de la conguración de distintos componentes. Sin embargo, estos asistentes siguen teniendo el problema de la dicultad de actualización a nuevas tecnologías. Este problema es resuelto en JACA mediante el gestor de independencia tecnológica. Este módulo se sitúa entre los asistentes y los frameworks utilizados para el desarrollo. Esto permite, entre otras cosas, utilizar el mismo asistente para generar componentes con distintas tecnologías. Por ejemplo, es posible utilizar el asistente de servicios web para generar un servicio web que utiliza Axis. Pero también es posible utilizar el mismo asistente para generar un servicio web se basa en CXF. Adicionalmente, toda la conguración y elementos, que son generados por los asistentes, se encuentran en un conjunto de cheros de conguración que son leídos por JACA, de un servidor. Esto permite que cualquier actualización realizada sobre cualquier tecnología sea
utilizando JACA. Referencias
[1] Fayad, M., Schmidt, D. C. Object-oriented application frameworks. Commun. ACM 40, 10 (Oct. 1997), 32-38. [2] Gobierno de Cantabria, Arquitectura co
para
las
Administraciones
Mar-
Públicas
http://amap.cantabria.es/
.
[3] Johnson, R. J2EE Development Frameworks. Computer 38, 1 (Jan. 2005), 107110. [4] Junta de Andalucía,
MArco
de
DEsa-
. http://www.juntadeandalucia.es/xwiki/bi n/view/MADEJA/ rrollo
[5] Junta
de
la
de
Junta
Castilla
de
y
Andalucía
León,
Fra-
. http://plan.aragob.es/circa.nsf/ %28IDPu blica %29/E63A41406BB3860BC12572060 03ADE2B?OpenDocument mework
Figura 2: Asistente para la creación de servicios web
corporativo
de
desarrollo
[6] Morisio, M., Romano, D., Stamelos, I. Quality,Productivity, and Learning in Framework-Based Development: An Explo-
extendida de forma inmediata y transparente a todos los desarrolladores. Además, permite la utilización de distintas conguraciones (frameworks disponibles, versiones, código generado...) para distintos proyectos o desarrolladores y la generación de estadísticas sobre el uso de la arquitectura. 4.
Conclusiones y traba jos futuros
En esta demostración se ha presentado la herramienta JACA, una arquitectura de desarrollo de aplicaciones multicapa con una gran exibilidad para incorporar nuevas tecnologías. La herramienta se encuentra en un estado avanzado de desarrollo y está lista para pasar a fase de pruebas. No obstante, se continua trabajando en la evolución del sistema, con la inclusión de nuevas tecnologías y con el desarrollo de un conjunto de paneles de control para evaluar los proyectos que se desarrollen
Case Study. IEEE Trans. Softw. Eng. 28, 9 (Sep. 2002) ratory
[7] Olivares Sánchez, P., Avilés Pérez, C., Olmedo Chica, M.A., JAVATO: Un framework de desarrollo Java libre. Tecnimap 2006, Sevilla. [8] Principado meWork
del
de
Asturias,
Principado
Open de
Fra-
Asturias
http://www.asturias.es/portal/site/Open FWPA [9] Pais
Vasco,
Documento
.
de
. http://www.ogasun.ejgv.euskadi.net/r51341/es/contenidos/informacion/guia_esta ndares_tecnologicos/es_6876/guia_estan dares_pit_03_05_c.html Estándares
Tecnológicos
[10] Spring Source, Spring http://www.springsource.org/roo
.
Roo