Академический Документы
Профессиональный Документы
Культура Документы
RESUMEN
En este artículo se presenta una herramienta de apoyo para el diseño y desarrollo de aplicaciones Web basadas en Struts.
La herramienta se apoya en una metodología que a partir de la identificación de los casos de uso conduce a la descripción
del controlador de la aplicación mediante un grafo de control de flujo denominado grafo Struts. Este se construye a partir
de las Vistas y Acciones definidas en Diagramas de Comportamiento que describen los casos de Uso de la aplicación. La
herramienta facilita la construcción de las JSP y las clases que implementan las Vistas y Acciones, genera a partir del
grafo Struts el servlet correspondiente al controlador de la aplicación y provee facilidades para la definición de datos
vivos y datos persistentes. Adicionalmente, la herramienta genera productos que forman parte de la documentación de la
aplicación.
PALABRAS CLAVE
Ambientes de desarrollo Web, MVC, Struts.
1. INTRODUCCIÓN
El diseño de aplicaciones Web es una tarea compleja que requiere de la integración de diferentes métodos y
técnicas, e involucra una gran variedad de tecnologías. En el caso de aplicaciones basadas en Java esto
incluye HTML, JSP, JavaScript, XML, Enterprise JavaBeans, Java Database Connectivity (JDBC), entre
otras. Algunas de estas tecnologías son utilizadas para manejar elementos de presentación y otras para
resolver lo relacionado con la funcionalidad de la aplicación. Ambos aspectos requieren de habilidades
bastante diferentes de parte del desarrollador, lo que conduce a la necesidad de una separación de tareas.
Esta separación de tareas es una de las principales razones por la que el patrón de diseño de arquitectura
MVC (Model – View – Controller) [14], se ha establecido como uno de los paradigmas más ampliamente
utilizados para el desarrollo de aplicaciones en Internet. Las principales ventajas de este patrón son la clara
separación entre las capas de presentación y de aplicación, lo cual facilita el hacer modificaciones a la
presentación sin afectar la lógica del negocio y viceversa, su adaptabilidad a distintos tipos de vistas y
usuarios, y la posibilidad de desarrollo por distintos equipos con diferentes habilidades, reduciendo así costos
y tiempo de desarrollo.
Entre las distintas implementaciones del patrón MVC, una de las más conocidas y difundidas, es el
framework o ambiente de trabajo Struts [12], desarrollado sobre la plataforma J2EE [7]. Esta herramienta
aporta una infraestructura para el desarrollo de aplicaciones Web que facilita la separación entre la
presentación y la lógica de la aplicación, así como la integración entre ambas capas, dejando en manos del
programador especializado la implementación de la lógica del negocio, almacenamiento y acceso a los datos.
En una aplicación Web basada en Struts, el eje central lo constituye el controlador, siendo este elemento
el encargado de recibir las solicitudes de los clientes (las Vistas) y de distribuirlas a los distintos elementos de
la aplicación que se encargarán de dar respuesta a estas solicitudes (las Acciones). Las Acciones establecen la
conexión con los elementos que implementan la lógica del negocio y el modelo de datos (el Modelo),
obteniendo las respuestas que debe dar el sistema a los requerimientos del usuario. Una vez obtenida la
respuesta, el controlador determina la Vista mediante la cual se mostrará la respuesta al usuario.
91
ISBN: 978–972–8924–45-4 © 2007 IADIS
Los distintos componentes del patrón MVC se implementan en Struts haciendo uso fundamentalmente de:
! páginas JSP para implementar las Vistas,
! un servlet de control (clase Java que se ejecuta en un servidor Web como capa intermedia entre
una solicitud proveniente de un browser u otro cliente HTTP y una aplicación en el servidor
HTTP) que controla la relación entre las Vistas y el Modelo,
! Action Classes de Java que implementan las Acciones o puntos de entrada hacia el Modelo,
! Form Beans, clases particulares de Java utilizadas para comunicar los datos entre el Modelo y
las Vistas.
Para representar el controlador de una aplicación, cuando se trabaja con Struts, se propone una
representación gráfica mediante un grafo al estilo de los grafos utilizados en MyEclipse© [11]. Este grafo lo
denominamos “grafo Struts”, siguiendo lo propuesto en [1]. En este grafo los nodos corresponden a las Vistas
y a las Acciones, y los arcos representan la comunicación entre estos nodos, y están etiquetados con
componentes de datos (formas) que establecen cómo se comunican entre sí las Vistas y las Acciones y qué
tipo de información intercambia la aplicación con sus usuarios.
Una vez elaborado el grafo Struts se tiene la información relevante necesaria para completar un archivo
XML denominado struts-config.xml utilizado por Struts para parametrizar el servlet que implementa el
controlador.
Para diseñar una aplicación Web basada en Struts se requiere de metodologías que tomen en
consideración las características propias del diseño para la Web, que se adapten al patrón MVC, y que
aprovechen las facilidades que brinda Struts. La metodología propuesta en [1] se ajusta a los requerimientos
antes descritos.
En este trabajo se presenta el diseño de una herramienta, desarrollada con licencia de software libre, que
sirve de soporte a esta metodología, para obtener el diseño de la aplicación, expresado mediante el grafo
Struts, y a partir de éste parametrizar el controlador de la misma. En otras palabras, esta herramienta está
orientada a facilitar el proceso de diseño, previo al desarrollo de la aplicación.
La herramienta se está desarrollando en ambiente web ya que, en un futuro cercano, se prevé la
posibilidad de integrarle un ambiente colaborativo, de forma que los diseñadores involucrados en un diseño
puedan compartir recursos, definiciones de diagramas, formas y otros componentes. La herramienta incluye
además otras facilidades para apoyar la implementación de la aplicación diseñada. Igualmente es posible su
combinación con distintos ambientes de trabajo existentes en el mercado, basados en Struts, entre los cuales
podemos mencionar Expresso© [6], Exadel Struts Studio© [2], MyEclipse© [11], MDE© [10] que buscan
facilitar la labor del desarrollador. Éstos, en general, requieren de una descripción del controlador, y facilitan
la implementación de las Vistas (páginas) así como las Acciones (clases). La herramienta que se presenta en
este trabajo aporta una facilidad adicional al proveer al desarrollador el apoyo para el diseño del controlador
que refleja la esencia de la aplicación basada en Struts.
El resto del artículo está estructurado de la siguiente forma: en la sección 2 se describe brevemente la
metodología, en la sección 3 se describe la herramienta propuesta y algunos detalles de la implementación.
Finalmente en la última sección se exponen las conclusiones sobre el desarrollo de la herramienta.
2. DESCRIPCIÓN DE LA METODOLOGÍA
La metodología descrita en [1] está orientada al diseño de la interacción entre el usuario y el sistema en una
aplicación Web implementada bajo el patrón MVC utilizando Struts. El proceso parte de la formulación del
problema planteado y conduce a la descripción de las Vistas que es necesario crear para manejar la
interacción entre los usuarios y la aplicación, a una especificación de lo que deben hacer las Acciones y
finalmente a la elaboración del grafo Struts de la aplicación. En la Figura 1 se muestran en forma
esquemática los pasos de la metodología los cuales se detallan a continuación.
92
Conferência IADIS Ibero-Americana WWW/Internet 2007
Identificación de casos de uso: es similar al de otras metodologías, por ejemplo RUP [9] para desarrollo
de sistemas y consiste en la identificación de los casos de uso del sistema, incluyendo para cada caso una
descripción textual, precondición y postcondición.
Elaboración de Diagramas de Comportamiento: consiste en la elaboración de diagramas que modelan
la dinámica e interacción de los actores (usuario y sistema) para cada Caso de Uso. Estos diagramas conjugan
información temporal, cursos alternos, y relaciones entre usuarios y sistema.
Un diagrama de comportamiento estará compuesto por:
! nodos Usuario: describen las acciones que deben ejecutar los usuarios en su interacción con el sistema,
! nodos Sistema: describen las acciones que debe ejecutar el sistema en respuesta a los requerimientos
del usuario,
! flechas que representan comunicaciones entre usuario y sistema.
El diagrama de comportamiento constituye un grafo bipartito, con los nodos separados en dos columnas:
Usuario y Sistema. Los cursos alternos estarán reflejados por distintas flechas etiquetadas que parten de un
mismo nodo.
Los nodos de Usuario se completan luego con “formas”, para agrupar la información que se intercambia
entre el usuario y el sistema.
La descripción de una forma constará de un nombre que la identifica y de una colección de campos que
incluyen:
! Campos de entrada, donde los datos fluyen desde las vistas hacia el sistema.
! Campos de salida, donde los datos fluyen desde el sistema hacia las vistas.
! Campos de entrada-salida, donde los datos fluyen en ambas direcciones.
! El nombre de un nodo Sistema correspondiente a una salida de un nodo Usuario.
Identificación de Vistas y Acciones: consiste en la definición de los elementos del grafo Struts. Los
nodos del grafo son de dos tipos: Vistas y Acciones. Las Vistas se obtienen de los nodos Usuario y las
Acciones de los nodos Sistema, definidos durante la elaboración de los diagramas de comportamiento. Las
Vistas se construyen como páginas JSP a partir de las colecciones de formas asociadas a los nodos Usuario.
Los arcos del grafo Struts y sus etiquetas se derivan de las flechas del diagrama de comportamiento, de la
relación entre las Vistas y los nodos Usuario y de la relación entre las Acciones y los nodos Sistema. Los
arcos Vista ! Acción se etiquetan con el identificador de la forma que contiene los datos que se transmiten a
la Acción.
Elaboración del grafo Struts: se elabora con la definición de las Vistas, las Acciones y los arcos entre
ellas. Este grafo contiene la información relevante requerida en Struts para parametrizar el controlador de la
aplicación en el archivo struts-config.xml. Igualmente, esta información es utilizada para construir
las páginas JSP que implementan las Vistas, así como la parte esencial de las Action Classes que
implementan las Acciones. En la Tabla 1 se muestran de forma resumida los pasos propuestos para alcanzar
el diseño del grafo Struts de una aplicación.
Tabla 1. Pasos de la metodología
Pasos de la Metodología
1. Identificar los Casos de Uso del sistema, incluyendo en cada caso una descripción textual, precondición y postcondición de
cada uno.
2. Elaborar los Diagramas de Comportamiento asociados a cada Caso de Uso del sistema.
3. Para cada Diagrama de Comportamiento:
3.1. Definir las Formas asociadas a los nodos Usuario del Diagrama de Comportamiento. Incluir salidas.
3.2. Combinar las formas obtenidas en 3.1 para producir formar compuestas, integrando incluso formas de nodos Usuario de
diagramas correspondientes a diferentes Casos de Uso.
4. Definir los nodos Vista del grafo Struts a partir de las formas resultantes del paso 3.2.
5. Definir los nodos Acción a partir de los nodos Sistema del Diagrama de Comportamiento, integrando posiblemente, acciones
asociadas a nodos de Sistema de Diagramas correspondientes a diferentes Casos de Uso. Agregar las salidas de los casos de
falla.
6. Definir los arcos del grafo Struts en base a las flechas del Diagrama de Comportamiento, las relaciones entre las vistas y los
nodos de Usuario y entre las acciones y los nodos de Sistema.
7. Elaborar el grafo Struts de la aplicación en función de las Vistas, las Acciones y los arcos definidos en los pasos 4, 5 y 6.
93
ISBN: 978–972–8924–45-4 © 2007 IADIS
3. DESCRIPCIÓN DE LA HERRAMIENTA
94
Conferência IADIS Ibero-Americana WWW/Internet 2007
95
ISBN: 978–972–8924–45-4 © 2007 IADIS
En la herramienta
96
Conferência IADIS Ibero-Americana WWW/Internet 2007
conjuntamente con la información requerida en cada caso. En las conexiones entre distintos casos de uso se
debe especificar el caso al que pertenece el nodo terminal.
3.2.3 Sobre los Datos Vivos
Si bien el protocolo HTTP es un protocolo "sin estado" y cada solicitud enviada por un navegador es
independiente de la anterior, el mecanismo de "cookies" permite responder a una solicitud en el contexto de
la solicitud anterior enviada desde el mismo navegador. Para que la aplicación Web mantenga este contexto,
se utilizan datos de sesión, que se mantienen mientras dure cada interacción de un usuario con la aplicación.
A nivel del diseño se puede especificar, bajo la forma de listas de pares (nombre, clase asociada), las
estructuras de datos que se mantienen durante una sesión con el usuario. Estas estructuras son creadas y
utilizadas para cada diálogo que se establezca entre un usuario y la aplicación, y no trascienden entre
diferentes ejecuciones de la aplicación.
Igualmente, es posible mantener estructuras de datos compartidos entre las diferentes sesiones de la
aplicación que se mantienen en paralelo mediante el uso de estructuras de datos especificadas a nivel del
diseño como listas de pares (nombre, clase asociada), llamadas datos de aplicación.
Los datos de sesión y de aplicación son "conceptualmente" mantenidos en la memoria viva de la
aplicación, mientras ella se ejecute, y pueden ser utilizados a conveniencia en los casos de uso.
3.2.4 Sobre los Datos Persistentes
En algunos casos, una aplicación Web se diseña como fachada de una aplicación existente. En ese caso,
normalmente se interactúa con ella mediante una librería con las operaciones disponibles. En otros casos, la
aplicación Web es también la aplicación completa, por lo que necesita del uso y almacenamiento de datos
persistentes, es decir, de datos que son almacenados en una base de datos, y se mantienen de forma
perdurable en el tiempo, para ser consultados y actualizados por la aplicación.
A nivel de diseño, se puede especificar el conjunto de colecciones de datos persistentes de la aplicación,
de manera de ser utilizados en los casos de uso bajo el esquema de acceso propuesto por la herramienta
Hibernate.
La versión de base de la herramienta que se propone, permite definir colecciones de datos bajo la forma
de clases persistentes, asociarles una colección de campos y definir su correspondencia con componentes de
una base de datos. Igualmente permite establecer tipos de relaciones uno-a-muchos y muchos-a-muchos entre
colecciones. Otras combinaciones de representación de datos no están disponibles en esta versión de la
herramienta.
3.2.5 Generación de la Aplicación Prototipo
El diseño de los diagramas de comportamiento conduce a la generación del archivo de configuración de
Struts (struts-config.xml) de la aplicación, incorporando los arcos de los diagramas de
comportamiento -de los casos de uso- y las formas de los nodos Usuario.
El diseño de la estructura de datos persistente conlleva la generación de los archivos de configuración
para que Hibernate [5] sirva de mediador con la base de datos en donde se almacenarán los datos persistentes
y la definición de operaciones para establecer conexiones y realizar transacciones con la base de datos.
Del diseño de los nodos Usuario se generan archivos JSP con las formas correspondientes que
implementan las Vistas de la aplicación. De los nodos Sistema se generan Acciones que contienen el acceso a
los datos vivos, a los datos que provienen de un nodo Usuario, una conexión a la base de datos y el bloque de
transacción de base de datos cuando se ha indicado que habrá datos persistentes que pueden ser modificados.
En caso de haberse incluido el código Java de la Acción, éste se agrega al archivo de la Acción
correspondiente.
A todo esto se agregan los componentes necesarios en una aplicación Web, que incluyen entre otros, las
librerías utilizadas, el archivo de configuración de la aplicación Web (web.xml) y los descriptores de las
librerías de marcas de Struts.
97
ISBN: 978–972–8924–45-4 © 2007 IADIS
4. CONCLUSIONES
La herramienta presentada constituye un aporte para el área de Ingeniería Web [8] al proveer mediante una
interfaz gráfica y sencilla un soporte metodológico para el diseño de una aplicación en ambiente web.
Además, apoya la construcción de la aplicación basándose en los resultados del diseño, tales como los
diagramas de comportamiento, la definición de las formas, de las Vistas y Acciones y el grafo Struts, que
representa el controlador, a partir de los cuales se implementan los componentes de la aplicación. Si bien en
el mercado existen productos comerciales que a partir de un diseño facilitan el desarrollo de aplicaciones
web, la herramienta propuesta, escrita bajo licencia GNU-GPL[4], cubre la etapa de diseño y facilita el
desarrollo de prototipos de aplicaciones web.
Adicionalmente la herramienta genera productos que forman parte de la documentación de la aplicación,
tales como la descripción detallada de los casos de uso (Diagramas de Comportamiento), descripción
detallada de las formas, especificaciones de las Acciones y el grafo Struts. Todos estos productos pueden
también ser consultados a través de la herramienta. Incluye además un repositorio de diseños. La herramienta
no da soporte directo para integrar a AJAX [3] en las Vistas, sin embargo es posible diseñar con los
Diagramas de Comportamiento llamadas a realizar a través de AJAX .
Entre las características que se irán incorporando a la herramienta se prevé la posibilidad de integrarle un
ambiente colaborativo, de forma que los diseñadores involucrados en un diseño puedan compartir recursos,
definiciones de diagramas, formas y otros componentes. Igualmente se contempla la posibilidad de diseñar
nuevas funcionalidades a una aplicación web existente a partir de sus archivos de configuración.
El desarrollo de la herramienta se llevó a cabo utilizando la misma metodología que esta apoya, y se está
implementando en J2EE, utilizando Struts, Hibernate, SVG y próximamente se utilizará AJAX.
Un prototipo de la herramienta que obtenerse en http://gacela.labf.usb.ve/WebAppsWiki.
RECONOCIMIENTO
Este proyecto contó con el apoyo financiero del Decanato de Investigación y Desarrollo de la Universidad
Simón Bolívar, DID-USB (Proy.IC-CAI-004-06). http://www.did.usb.ve Septiembre 2006/Septiembre 2007.
REFERENCIAS
Bianchini, A., Ortega, M., Suárez, A.: “Una Metodología de Diseño de Aplicaciones Web bajo el Patrón MVC”. Jornadas
Chilenas de Computación - 2005. XIII Encuentro Chileno de Computación 2005. Valdivia, Chile, Noviembre 2005.
Exadel, Inc. “Exadel Struts Studio”. http://www.exadel.com/products_strutsstudio_professional.htm último acceso:
03/2007.
Garret, J. J. : “Ajax: A New Approach to Web Applications”.
http://adaptivepath.com/publications/essays/archives/000385.php Último acceso: 03/2007.
GNU General Public License. http://www.gnu.org/copyleft/gpl.html
Hibernate: Relational Persistence for Java and .NET. http://www.hibernate.org/ Último acceso: 04/2007.
Jcorporate Ltd. “Expresso Framework Project”. http://www.jcorporate.com/expresso.html Último acceso: 02/2007.
J2EE: “Java 2 Platform, Enterprise Edition”. http://java.sun.com/j2ee/index.jsp Ultimo acceso: 04/2006
Kappel, G., Próll, B., Reich, S., Retschitzegger, W.: “Web Engineering The Discipline of Systematic Development of
Web Applications”. John Willey and Sons, 2006.
Kruchten, P. :” The Rational Unified Process: An Introduction (2nd Edition). Addison-Wesley Professional, 2000.
MDE for Struts. http://www.eclipse-plugins.info/eclipse/plugin_details.jsp?id=310 Último acceso: 04/2007.
MyEclipse J2EE IDE – http://www.myeclipseide.com/ Último acceso: 02/2007
Struts Apache org: “The Apache Struts Web Application Framework”. http://struts.apache.org
SVG: Scalable Vector Graphics (SVG). http://www.w3.org/Graphics/SVG/ Último acceso: 03/2007.
Singh I., Stearns, B., Johnson, M., and the Enterprise Team: “Designing Enterprise Applications with the J2EE
Platform”. http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier.html
98