Subido por Ernesto Rodriguez

Apolyagdo MPDAB

Anuncio
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
Descargar