Desarrollo Rápido de Aplicaciones Apoyado en MDA Israel García Portuondo, Lissette Fonseca Suárez Este trabajo expone los resultados de una investigación realizada en la Facultad Regional “Mártires de Artemisa” sobre el desarrollo de software basado en una metodología de desarrollo rápido, denominada RAD, para su uso en aplicaciones basadas en tecnologías J2EE; la cual se apoye en MDA para agilizar dicho proceso. Debido a las propias características de la metodología, y las potencialidades de desarrollo rápido que brinda MDA, se identificó la posibilidad de que MDA sirviera como apoyo fundamental a esta metodología. AndroMDA es una herramienta generadora de código que se adhiere al paradigma MDA, la cual, teniendo en cuenta que genera una gran cantidad de código a partir de modelos, principalmente para proyectos de aplicaciones J2EE, favorece en gran medida el desarrollo con RAD. El principal objetivo de esta investigación es proponer el trabajo con la metodología RAD unido a un desarrollo basado en MDA, haciendo uso de la herramienta AndroMDA para el desarrollo de aplicaciones basadas en tecnologías J2EE en un corto período de tiempo, utilizando una menor cantidad de recursos humanos y tecnológicos, sin que esto afecte la calidad del producto final. Palabras claves: metodología, RAD, desarrollo rápido, MDA. I. INTRODUCCIÓN En los últimos años se ha experimentado un increíble auge a nivel mundial de los proyectos de desarrollo de aplicaciones en la plataforma Java 2 Enterprise Edition (J2EE), tanto para aplicaciones Web como también para aplicaciones de gestión. Frente a esta necesidad, las empresas de tecnología han respondido demandando gran número de recursos humanos en forma de Programadores, Analistas, Jefes de Proyecto y Consultores. Esto se debe fundamentalmente a las principales ventajas de Java, como son su portabilidad e independencia. Java y la plataforma J2EE aportan una solución única, fiable y eficaz para el desarrollo e implementación de aplicaciones Web y aplicaciones distribuidas mediante tecnologías modernas, permitiendo además acceder a los sistemas existentes [1]. La Facultad Regional “Mártires de Artemisa”, de la Universidad de las Ciencias Informáticas (UCI), comenzó en el año 2010 a encaminar a sus recursos humanos en el aprendizaje de la plataforma J2EE, para utilizarla en el desarrollo de proyectos. Debido a la cantidad de compromisos productivos a los cuales se enfrenta la Facultad, los equipos de desarrollo son pequeños, lo que provoca que los miembros tengan que desempeñar más de un rol durante la construcción del producto, haciendo necesario el uso de herramientas que faciliten la elaboración del mismo. Esta investigación está encaminada a proponer una metodología que dirija el desarrollo rápido de software basado en la plataforma J2EE, apoyado en una herramienta que permita la construcción rápida del producto. II. MATERIALES Y MÉTODOS Con el fin de construir una propuesta que se ajustara a las necesidades la “Facultad Regional Mártires de Artemisa” se procedió a una profunda revisión bibliográfica dirigida principalmente en dos sentidos fundamentales: metodologías para el desarrollo rápido de aplicaciones y herramientas para el desarrollo rápido de aplicaciones. Primeramente se realizó una investigación relacionada con las metodologías de desarrollo rápido, con la finalidad de proponer una metodología que permitiera el uso de herramientas que agilizaran el proceso de desarrollo de software. En la misma se tuvieron en cuenta los siguientes aspectos: tiempo y costo de desarrollo, tamaño de los equipos de desarrollo, documentación generada, apoyo en herramientas que agilicen el desarrollo, ventajas y desventajas de utilización. Finalmente se procedió a realizar un análisis de la información existente relacionada con las herramientas para el desarrollo rápido de aplicaciones teniendo en cuenta el porciento de desarrollo que ahorra, flexibilidad, curva de aprendizaje y productividad. III. RESULTADOS Y DISCUSIONES Como resultado de la búsqueda bibliográfica se obtuvieron los datos que se muestran a continuación, los cuales ayudaron a obtener una propuesta que se ajustara al problema planteado inicialmente. Metodologías de desarrollo rápido. Rapid Application Development. Rapid Application Development (RAD) fue creado por la IBM en el año 1980 como un método formal para el desarrollo de aplicaciones. Con RAD el usuario está involucrado en todas las fases del ciclo de vida del producto, no sólo en la definición de los requerimientos, sino en el diseño, desarrollo, pruebas y despliegue del mismo [2]. La interacción con el usuario se incrementa con el uso de herramientas y ambientes de desarrollo que permitan una evaluación del producto en cada etapa de su desarrollo. RAD se caracteriza por el tiempo de respuesta rápida para la definición de los requisitos de sistema completo. Esta metodología sigue una secuencia de integraciones de sistemas evolutivos o prototipos que son revisados con el cliente, descubriendo nuevos requerimientos durante este proceso. El desarrollo de cada entregable está a restringido a un período de tiempo bien definido, por lo general de 60 días, a este período se le llama time-boxing [2]. Entonces para poder crear un sistema teniendo en cuenta los 60 días de time-box sin sacrificar la calidad del mismo es necesario incluir al desarrollo del software herramientas de desarrollo de alta potencia, un diseño modular de la aplicación para poder reutilizar componentes. Esta es una metodología que permite a las organizaciones desarrollar sistemas estratégicamente importantes, de manera más rápida reduciendo a la vez los costos de desarrollo y manteniendo la calidad. Esto se hace por medio de la automatización de porciones grandes del ciclo de vida del desarrollo de sistemas, imponiendo límites entre los plazos de desarrollo y volviendo a usar los componentes existentes y se logra mediante el uso de una serie de técnicas de utilidad comprobada de desarrollo de aplicaciones, dentro de una metodología bien definida. Algunas de estas tecnologías son [3]: JAD (Joint Application Development): pequeños grupos (hasta 10 personas) de usuarios y analistas hacen reuniones [2], para en un corto espacio de tiempo analizar y especificar entradas, procesos y salidas, a través del desarrollo conjunto de un prototipo [3]. Generadores de Aplicación: estas herramientas posibilitan generar código ejecutable a partir de definiciones generales o prototipos. Son utilizadas como parte de un proceso mayor de JAD o prototipación. Prototipación rápida: el objetivo de esta técnica es obtener en el menor tiempo posible el análisis, diseño e implementación de un sistema, completo o parcial, a través de la utilización de técnicas y tecnologías complementarias. Estas técnicas requieren el uso de equipos pequeños de desarrollo y bien capacitados, prototipos evolutivos; herramientas poderosas integradas que apoyan el modelo, el prototipo y la reutilización de componentes; un depósito central de la información para tenerla a la mano en el momento que se le necesita, límites rígidos en los plazos de desarrollo [3]. La metodología RAD tiene cuatro etapas principales [4]: 1. La etapa de Definición Conceptual que define las funciones del negocio y las áreas sujeto de datos que el sistema apoyará y determina el alcance del sistema. 2. La etapa de Diseño Funcional que usa los talleres para modelar los datos y los procesos del sistema y para construir un prototipo de trabajo de los componentes críticos del sistema. 3. La etapa de Desarrollo que completa la construcción física de la base de datos y del sistema de aplicación, construye el sistema de conversión y elabora ayudas de usuarios y planes de trabajo a desarrollar o de despliegue. 4. La etapa de Despliegue que incluye la puesta a prueba y la capacitación del usuario final, la conversión de datos y la implementación del sistema de aplicación. Figura 1: El modelo de RAD Entre sus características principales podemos encontrar: Modelo Central: Se pueden crear modelos o redefinir modelos existentes, y se pueden integrar estos modelos con la funcionalidad de aplicaciones existentes (componentes, paquetes, etc.) Desarrollo Visual: Proporciona un nivel alto de abstracción, y da facilidad de crear nuevas aplicaciones y mantener las existentes. Código Construido: Diseñado para alto rendimiento, escalabilidad y ahorro de tiempo. Finalización de la Integración del Desarrollo del Ciclo de Vida: Proporciona un desarrollo de artefactos y semántica del negocio capturados y organizados en modelos visuales. Dar esfuerzo a la Orientación a Objetos: Implica que el proceso de desarrollo esta manejado por el modelo del negocio (clases). Extensible: La integración que tiene abarca: XML, Servicios Web, componentes EJB, DHTML. Model Driven Architcture Model Driven Architecture (MDA), en español Arquitectura de Software Dirigida por Modelos, es un framework para el desarrollo de software definido por el Object Management Group. El aspecto más importante de MDA es la importancia que les concede a los modelos en el proceso de desarrollo de software. Dentro de la MDA lo que guía el proceso de desarrollo de software es la propia actividad de modelado del software [5]. Una de las ideas principales por la que surge MDA es separar la especificación de los sistemas de los detalles de su implementación en una determinada plataforma. MDA provee un conjunto de herramientas para especificar un sistema independientemente de la plataforma de implementación, especificar dichas plataformas, elegir una determinada plataforma para el sistema, y transformar las especificaciones de los sistemas a la plataforma elegida. Todo esto se complementa con los objetivos de portabilidad, interoperabilidad y reusabilidad [6]. La independencia propuesta por MDA se consigue mediante una catalogación de modelos que permiten especificar el sistema desde diferentes puntos de vista. Los tipos más destacables de modelos son los siguientes [5]: Computational Independent Model (CIM): Modelo Independiente de la Computación. Son visiones de los sistemas desde el punto de vista del problema a resolver, es decir, un modelo simplificado que se abstrae de detalles específicos. Platform Independent Model (PIM): Modelo Independiente de la Plataforma. Muestra una vista del diseño del sistema obviando detalles de plataformas concretas. Platform Specific Model (PSM): Modelo Específico de la Plataforma. Muestra un diseño del sistema incluyendo detalles específicos de la plataforma. Un amplio conjunto de herramientas con soporte para MDA se están desarrollando por los principales fabricantes y proyectos Open Source. Algunos ejemplos simples de estas especificaciones de arquitecturas incluyen seleccionar una de las arquitecturas de referencia tales como Java EE o Microsoft .NET y especificar la arquitectura a un nivel de mayor detalle incluyendo tecnologías de la capa de presentación, de la capa de negocio, de persistencia o tecnología de mapeo de persistencia. AndroMDA AndroMDA es un motor de transformación de modelos en código fuente y/o archivos de configuración extensible, open source que se adhiere al paradigma MDA. AndroMDA transforma modelos de algunas herramientas de modelado UML en componentes listos para su despliegue o instalación [5]. Los componentes generados pueden pertenecer a distintas plataformas de despliegue como por ejemplo Java EE, Spring o .NET. A diferencia de otras herramientas MDA, AndroMDA incluye una serie de cartuchos listos para su uso, que dirigen hoy, el desarrollo de aplicaciones basadas en componentes como Axis, jBPM, Struts, JSF, Spring y Hibernate [5]. AndroMDA también contiene un conjunto de mecanismos para la construcción de nuevos cartuchos o personalización de los ya existentes, gracias a esto se puede construir un generador de código personalizado utilizando su herramienta de modelado UML preferida. AndroMDA genera código empresarial a medida para cubrir las necesidades particulares de un proyecto [7]. Cuando necesitas modificar la aplicación, cambias primero el modelo, regeneras el código, y añades o modificas el código a medida. Si se desea generar artefactos a medida desde el modelo, se puede escribir un cartucho a medida. Esta herramienta que tiene una gran curva de aprendizaje, debido a que es un framework y no tiene interfaz gráfica, y para poder hacer modificaciones en los cartuchos es necesario modificar los archivos del framework. Sin embargo representa una ventaja en el desarrollo del software, porque si este es modelado con eficiencia, entonces la cantidad de código automático generado representa entre un 50% y 70% del total. En el desarrollo de aplicaciones J2EE es común que este desarrollo se divida por módulos, con interfaces bien definidas entre ellos, los cuales son integrados finalmente para conformar la aplicación. Si se utiliza AndroMDA esto también es posible, definiendo correctamente los modelos. Propuesta general Para los proyectos productivos de la Facultad Regional “Mártires de Artemisa” que utilizarán la plataforma J2EE para el desarrollo de software se les propone utilizar la metodología RAD, apoyada por la herramienta AndroMDA. La figura 2 muestra el esquema propuesto para la metodología. Integrar módulos: Una vez que se obtengan los módulos se procede a la integración. Se deben tener en cuenta las interfases definidas en las fases anteriores Prueba al producto final y despliegue: Una vez que se integran los módulos, éstos son probados para garantizar que la integración fue realizada correctamente. Para esto se realizan pruebas a la comunicación entre los módulos que la requieren. Se realiza el despliegue de la aplicación. IV. CONCLUSIONES Figura 2: Propuesta de RAD Para un mejor entendimiento de la figura se detallan las partes de la figura anterior. Requisitos: Se realiza la captura de los requisitos con la participación de los usuarios. Modularizar Requisitos: Se agrupan los requisitos en módulos que permitan un desarrollo paralelo entre los mismos. Desarrollo de Módulos: El desarrollo de los módulos van a estar regidos por 4 fases: análisis, diseño codificación y prueba. En la fase de análisis se realiza la arquitectura general del sistema, siendo los módulos partes funcionales del mismo. Se definen las interfases entre los módulos para facilitar la integración. Se reparten los módulos a diferentes equipos de desarrollo. En la fase de diseño se realiza el diseño del módulo, se especifica más lo obtenido del diseño. En esta fase interviene la herramienta AndroMDA. En ella se definen los modelos según lo obtenido en la fase de análisis. La fase de análisis y diseño pueden ser unidas en caso de que sea requerido por el proyecto. En la codificación se genera el código a partir de los modelos realizados anteriormente y se programa el código restante de la aplicación. Una vez obtenido el código se realizan las pruebas al mismo para verificar su validez. La metodología propuesta es una de las más antiguas que se conocen, sin embargo, es muy usada en la actualidad por empresas de software. El paradigma que presenta MDA es muy útil y ventajoso en el desarrollo rápido de software debido a la importancia que le concede al modelo, que ya no es el tradicional que solamente le brinda información al usuario, sino que va más allá de eso y le da un significado más grande. La herramienta AndroMDA aunque presente una curva de aprendizaje alta, se adhiere correctamente a MDA y en el desarrollo de software basado en el estándar J2EE se convierte en un arma muy poderosa. La propuesta presentada puede ser validada por otros investigadores que deseen profundizar más en esta línea y obtener resultados más profundos. REFERENCES [1] B. Aumaille, J2EE Desarrollo de Aplicaciones Web, Barcelona, España: Ediciones ENI, 2002, pp. 9-11. [2] R. T. Futrell, D. F. Shafer, and L. I. Shafer, Quality Software Project Management, Upple Sader River, New Jersey: Prentice Hall PTR, 2002, pp. 131-139. [3] J. C. Rueda Chacón, “Aplicación de la metodología RUP para el desarrollo rápido de aplicaciones basado en el estándar J2EE,” Tesis de Maestría, Universidad de San Carlos de Guatemala, 2006. Available: http://biblioteca.usac.edu.gt/tesis/08/08_7691.pdf [r 2] [4] S. Sangeeta, Software Engineering, New Age International, 2008, pp. 1921 [R 4] [5] A. G. Kleppe, J. Warmer, J. B. Warmer, and Wim Bast, MDA explained. The model driven architecture: practice and promise, Addison-Wesley, 2003, pp. 5-9 [6] P. A. Fernández Sáez, “Un Análisis Crítico de la Aproximación ModelDriven Architecture,” Tesis de Maestría, Universidad Complutense de Madrid, 2009. Available: http://eprints.ucm.es/9880/1/Un_An%C3%A1lisis_Cr%C3% ADtico_Sobre_la_Aproximaci%C3%B3n_ModelDriven_Architecture.pdf [7] “About AndroMDA” [Online] AndroMDA Team [ref. de 18 junio 2010]. Available: http://www.andromda.org/index.php?option=com_content&vi ew=category&layout=blog&id=19&Itemid=42