OOWS Suite: Un Entorno de desarrollo para
Aplicaciones Web basado en MDA1
Francisco Valverde1, Pedro Valderas
1, Joan Fons
1
1 Departamento de Sistemas Informáticos y Computación, Universidad Politécnica de
Valencia, Camino de Vera S/N, 46022 Valencia, España
{fvalverde, pvalderas, jjfons}@dsic.upv.es
Resumen En este trabajo, se introduce un entorno de desarrollo MDD para
aplicaciones Web: La OOWS Suite. Dicho entorno proporciona herramientas
que dan soporte al proceso de desarrollo del método OOWS permitiendo la ge-
neración automática de aplicaciones Web totalmente funcionales. Estas herra-
mientas son: (1) Un modelador basado en Eclipse que permite la edición visual
de modelos OOWS. (2) Un conjunto de transformaciones modelo-a-texto que
permiten generar de forma automática la interfaz Web de una aplicación a partir
de estos modelos. Para implementar dicha interfaz se ha desarrollado un fra-
mework que, siguiendo la filosofía de las Factorías de Software, reduce el nivel
de abstracción entre los modelos conceptuales y el código a generar facilitando
la definición de las transformaciones. (3) Una estrategia para integrar dichas
herramientas con OlivaNova, una herramienta comercial de generación de apli-
caciones tradicionales (no-Web) en ambientes transaccionales. Esta integración
nos permite delegar la generación de la lógica de negocio de una aplicación
Web en una herramienta altamente contrastada a nivel industrial
1 Introducción
El Desarrollo de Software Dirigido por Modelos (DSDM) comienza a proporcionar
resultados prometedores. Existen distintos indicadores que nos hacen ser optimistas
en cuanto a la evolución e implantación industrial de esta filosofía de desarrollo. Em-
pezando por el gran empuje que constituye MDA del OMG [1] y la reciente aparición
de las Fábricas de Software [2] impulsadas por Microsoft. Quizás uno de los aspectos
más esperanzadores es el desarrollo continuo de tecnologías y herramientas para la
construcción de herramientas CASE que dan soporte al DSDM como son el proyecto
Eclipse Modeling Project [3] y las DSL Tools [4] integradas en MS Visual Studio
2005. También invita al optimismo la proliferación de herramientas con un soporte
explícito al DSDM, como son ArcStyler [5], Together [6] o AndroMDA [7].
El mundo de la ingeniera Web no es ajeno a esta tendencia, y diversas aproximacio-
nes han ido apareciendo con el fin de proporcionar soporte para el desarrollo de apli-
caciones Web dirigido por modelos. Estas aproximaciones introducen modelos con-
ceptuales para capturar de forma abstracta los diferentes aspectos que definen una
1 Este trabajo ha sido desarrollado con el soporte del MEC bajo el proyecto DESTINO
TIN2004-03534 y cofinanciado por FEDER
aplicación Web. A partir de estos modelos proponen el uso de transformaciones mo-
delo-a-modelo o modelo-a-texto con el fin de obtener el código equivalente a la repre-
sentación abstracta de la aplicación Web que constituye el modelo. En este sentido,
hay que destacar aproximaciones como OOHDM [8], WebML [9], WSDM [10],
OOWS [11], UWE [12] u OOH [13] que son ampliamente aceptadas en el ámbito
científico de la ingeniería Web y que han sido probadas y validadas en el desarrollo
de diferentes aplicaciones. Además, algunas de ellas ya proporcionan herramientas
que dan soporte a su método, como son el caso de WebRatio (herramienta que da
soporte a WebML y que ha sido implantada a nivel industrial), ArgoUWE (UWE) o
VisualWade (OOH). Estas herramientas permiten la definición de modelos que captu-
ran los aspectos estructurales, navegacionales y de presentación de las aplicaciones
Web. Además, proporcionan soporte para la generación de código a partir estos mo-
delos. Sin embargo, aunque estas herramientas se encuentran en constante desarrollo,
los aspectos de comportamiento son actualmente soportados de forma parcial desde
un punto de vista de modelado conceptual. El comportamiento que ofrecen se centra
básicamente en operaciones CRUD2 ligadas a la base de datos y en operaciones arit-
méticas básicas, no permitiendo establecer pre/postcondiciones en las operaciones o
definir cambios complejos en el estado de los objetos.
En este trabajo, se introduce la OOWS Suite, un entorno de desarrollo para aplica-
ciones Web basado en el método de ingeniería Web OOWS. OOWS constituye una
extensión del método OO-Method [14] para dar soporte al modelado conceptual de
aplicaciones Web. En este contexto, el entorno de desarrollo OOWS Suite proporcio-
na herramientas que, basándose en una arquitectura MDA, permiten la creación de los
diferentes modelos OOWS/OO-Method y la generación automática de aplicaciones
Web. Con dicho fin, la OOWS Suite integra la herramienta industrial OlivaNova. Esta
herramienta comercial ha sido desarrollada por la empresa Care Technologies S.A.
[15] y permite generar de forma automática sistemas software completos a partir de
los modelos OO-Method. La OOWS Suite proporciona mecanismos que extienden la
funcionalidad de OlivaNova para soportar correctamente el modelado de aplicaciones
Web y la posterior generación de código. Estas extensiones constituyen la principal
aportación de este trabajo y son las siguientes:
1. Se ha desarrollado una herramienta de modelado basada en Eclipse que da soporte
a la definición de los modelos introducidos por OOWS: el modelo navegacional y
el modelo de presentación.
2. Se ha definido una estrategia basada en transformaciones modelo-a-texto que per-
mite generar código a partir de los modelos OOWS. El código generado está basa-
do en un framework de implementación de aplicaciones Web que reduce el nivel
de abstracción entre los modelos OOWS y el código a generar. Para ello, el fra-
mework proporciona constructores basados en conceptos abstractos del desarrollo
Web (como página, enlace, mecanismo de identificación, etc.).
3. Se han implementado mecanismos para la integración conservativa de las exten-
siones propuestas por OOWS con la herramienta comercial OlivaNova. Esta inte-
gración se realiza a dos niveles: (1) A nivel de modelado, permitiendo que, en
tiempo de modelado, la herramienta que da soporte a los modelos OOWS interac-
túe correctamente con los modelos OlivaNova, y (2) a nivel funcional, permitiendo
2 Create, Relationship, Update, Delete
la interoperabilidad, en tiempo de ejecución, entre la interfaz Web generada a partir
de los modelos OOWS y la lógica de negocio generada por OlivaNova.
El resto del trabajo se estructura como sigue: La sección 2 presenta brevemente el
proceso de desarrollo basado en OOWS/OO-Method al cual de soporte la OOWS
Suite. En la sección 3 se introduce la herramienta de modelado desarrollada para crear
modelos OOWS. En la sección 4 se detalla la estrategia seguida para la generación de
código a partir de estos modelos así como el framework de implementación y los
mecanismos para definir y asociar aspectos estéticos al código generado. En la sec-
ción 5 se introduce la integración de las extensiones propuestas por OOWS con la
herramienta comercial Olivanova. Por último, la sección 6 introduce las conclusiones
y líneas de trabajo futuras.
2 Proceso de desarrollo OOWS/OO-Method
La OOWS Suite proporciona soporte para el desarrollo de aplicaciones Web basándo-
se en el método de ingeniería Web OOWS. OOWS surge como una extensión para el
ámbito de las aplicaciones Web del método de producción de software orientado a
objetos OO-Method. OO-Method proporciona mecanismos para la generación de có-
digo a partir de modelos conceptuales. Basándose en una arquitectura MDA, este
método define un PIM en el cual se modelan tanto los aspectos estáticos como diná-
micos del sistema a través de tres vistas complementarias entre sí:
• Un Modelo Estructural, que define la estructura estática del sistema mediante la
definición de sus clases y las relaciones entre éstas. Este modelo se basa en el dia-
grama de clases UML.
• Un Modelo Dinámico, que describe la secuencia válida de estados en la vida de los
objetos pertenecientes a cada clase del sistema. Para ello se utiliza un Diagrama de
Transición de Estados UML. Además, también se describe la interacción entre ob-
jetos de diferentes clases mediante un Diagrama de Secuencia UML.
• Un Modelo Funcional, que especifica la semántica de cada cambio de estado en la
vida de un objeto definiendo el efecto de sus servicios. Para ello, se utiliza una es-
pecificación formal textual.
OO-Method ha sido implantado a nivel industrial mediante la herramienta OlivaNo-
va [16], la cual da soporte al método. OlivaNova proporciona un modelador que per-
mite la edición visual de los modelos OO-Method e implementa un motor de trans-
formación [17] que genera de forma automática y completa código en entornos tran-
saccionales (Java y .NET). Para ello, la herramienta transforma internamente el PIM
de OO-Method en el PSM correspondiente a la tecnología destino. A partir de este
PSM, genera código basado en una arquitectura de tres capas (presentación, lógica de
negocio y persistencia). La figura 1 muestra, en su parte izquierda, el proceso de desa-
rrollo de OO-Method.
OOWS introduce dos nuevos modelos en el proceso de desarrollo OO-Method, con
el fin de soportar correctamente las nuevas características enfatizadas en el desarrollo
de aplicaciones Web (navegación y presentación). Estos modelos son:
• El Modelo Navegacional, que define la estructura navegacional del sistema. Dicho
modelo se define a partir de un conjunto de grafos cuyos nodos (contextos navega-
cionales) representan vistas sobre el modelo estructural de OO-Method y cuyos ar-
cos representan enlaces de navegación entre los nodos. Cada una de las vista define
la información y funcionalidad que debe proporcionarse en los contextos navega-
cionales. Básicamente, un contexto navegacional representa a nivel conceptual una
de las páginas que definen la aplicación Web a nivel de implementación.
• El Modelo de Presentación, que especifica las propiedades que deben cumplir la
información mostrada. Para ello, se proponen un conjunto de patrones de presenta-
ción aplicables a las primitivas abstractas definidas en el modelo navegacional. Di-
chos patrones indican aspectos como la organización de la información (modo re-
gistro, tabular, maestro-detalle, etc), ordenación de la información, etc.
PIM
CÓ
DIG
O
OO-Method
PIM
-to-P
SM
-to-C
ode
MODELO DINÁMICO
MODELO FUNCIONAL
OLIVANOVA MODELLER
Clase Relación
Atributos
PSM+
Generador de Código
OLIVANOVA
TRANSFORMATION ENGINE
Aplicación
MODELO NAVEGACIONAL
MODELO DE PRESENTACIÓN
OOWS
Capa de Presentación
Capa de Lógica de Negocio
Capa de PersistenciaArquitectura de 3
capas
Framework
Interfaz Web
PROCESO DE TRADUCCIÓN
Mod
el D
riven
Arc
hite
ctur
e
+Generador de codigo
PIM
CÓ
DIG
OTra
nsf
orm
aci
ón A
uto
mátic
aCompilador OOWS
Aplicación Web
Integración
MODELO ESTRUCTURAL
Editor Visual OOWS
Desarrollo de aplicaciones Web mediante OOWS Suite
Fig. 1. Proceso de desarrollo MDA
En este contexto, la herramienta que da soporte a OO-Method, OlivaNova, debe ser
extendida para permitir la creación de los nuevos modelos introducidos por OOWS
así como para considerar correctamente, en el proceso de generación de código, la
información definida en ellos. Como se ha comentado en la introducción, debido a
políticas comerciales de la empresa, dicha extensión debe realizarse de una forma
conservativa (sin modificar el producto OlivaNova) con el fin de asegurar que no
existen problemas de compatibilidad con las aplicaciones previamente desarrolladas.
Para lograr esta meta, se ha construido el entorno de desarrollo OOWS Suite. Dicho
entorno introduce una serie de herramientas que, basándose en OOWS, complemen-
tan conservativamente el proceso de desarrollo OO-Method con el fin de dar soporte
al desarrollo de aplicaciones Web. El nuevo proceso de desarrollo que define la
OOWS Suite se muestra en la Figura 1. La parte izquierda de esta figura representa el
proceso de desarrollo de OO-Method. La parte derecha representa las extensiones que
complementan este proceso y que dan soporte al desarrollo de aplicaciones Web. Así
pues, el proceso de desarrollo que soporta la OWS Suite se divide en tres etapas:
1. Modelado: Se construye el PIM que define los diferentes aspectos de una aplica-
ción Web. Los modelos OO-Method que capturan los aspectos estáticos y de com-
portamiento son definidos mediante el modelador de OlivaNova [16]. El modelo de
navegación y de presentación son definidos por la herramienta de modelado
OOWS. Dicha herramienta se presenta en la sección 3. La estrategia definida para
la interacción de ambas herramientas se explica con detalle en la sección 5.1
2. Generación de código: En esta etapa se llevan a cabo dos procesos de generación
de código paralelos. Por un lado, el motor de transformación de OlivaNova obtiene
código a partir de los modelos OO-Method mediante una transformación PIM-
PSM-Código. Información sobre esta transformación puede encontrase en [17]. Por
otro lado, un compilador de modelos OOWS genera una interfaz Web mediante
una transformación modelo-a-texto (lo que MDA denomina una transformación
automática). Dicha transformación se introduce en la sección 3.2.
3. Integración OOWS/OO-Method: La integración de la información capturada por
los modelos OO-Method con la información capturada por los modelos OOWS se
lleva a cabo a nivel de implementación. La interfaz Web generada a partir de los
modelos OOWS está basada en un framework que se encarga de interactuar con la
lógica de negocio de OlivaNova (.NET, Java etc.). Las diferentes primitivas que in-
troduce del framework, así como ejemplos de su uso se introducen en las secciones
4.1 y 4.3. La integración del framework con el código OO-Method se introduce en
la sección 5.2.
El proceso de desarrollo propuesto por la OOWS Suite permite implementar (si-
guiendo una arquitectura MDA) aplicaciones Web totalmente funcionales. Además,
extiende de forma conservativa la herramienta OlivaNova, ahorrándole a Care Tech-
nologies problemas de compatibilidad con proyectos ya desarrollados. A continua-
ción, se presentan cada una de las extensiones introducidas por la OOWS Suite.
3 Herramienta de modelado para los modelos OOWS
Para dar soporte a la creación de modelos OOWS, se ha desarrollado una herramienta
basada en la plataforma Eclipse Modelling. Dicha herramienta debe soportar dos
aspectos básicos:
• Creación y Persistencia de Modelos: Se deben proporcionar mecanismos que
faciliten la creación de modelos OOWS, respetando siempre su metamodelo, y la
serialización de los modelos en un lenguaje estándar. Para satisfacer estas necesi-
dades se han utilizado los componentes que proporciona el Eclipse Modelling
Framework (EMF) [18]. A partir de la definición en ECore (subconjunto del están-
dar MOF de la OMG) del metamodelo de OOWS, EMF nos proporciona la funcio-
nalidad necesaria para poder crear y modificar modelos conceptuales. Además,
EMF proporciona mecanismo para almacenar los modelos en el formato XMI, es-
tándar de la OMG para el intercambio de modelos conceptuales, abriendo la posi-
bilidad de interacción con otras herramientas de modelado externas.
• Edición visual de Modelos: Para facilitar la construcción de los modelos OOWS
se propone desarrollar una herramienta de edición visual de modelos similar a las
herramientas CASE industriales. Para esta tarea se ha utilizado el Eclipse Grap-
hical Modelling Framework (GMF). Este framework permite la generación auto-
mática de editores gráficos a partir de una especificación que asocie primitivas de
modelos Ecore a su representación gráfica o textual.
Fig. 2. OOWS Case Tool
En la figura 2 puede verse una captura de la herramienta desarrollada con el modelo
navegacional OOWS de la aplicación Web IMDB3 (la cual utilizaremos como caso de
estudio en el resto del articulo). La aplicación Web IMDB constituye la mayor fuente
de información cinematográfica de acceso público. En este sentido, en el modelo
navegacional de dicha aplicación se definen contextos navegacionales que proporcio-
nan información relacionada con el cine. Por ejemplo, el contexto TopMovies muestra
un ranking de las mejores películas valoradas por los usuarios y el contexto MovieIn-
formation proporciona información detallada sobre una película determinada.
4 Generación de código a partir de los modelos OOWS
La estrategia definida para generar código a partir de los modelos OOWS está basada
en un conjunto de transformaciones modelo-a-texto. Con el fin de facilitar la defini-
ción de estas transformaciones, se ha desarrollado un framework que reduce el gap
semántico entre los modelos OOWS y el código generado. Para ello, el framework
proporciona un conjunto de constructores de alto nivel de abstracción. Además, dicho
3 The Internet Movie Database, http://www.imdb.com
framework define una serie de mecanismos para incorporar los aspectos estéticos a
través de plantillas de presentación, totalmente independientes del código que imple-
menta la funcionalidad y la recuperación de información.
Así pues, en esta sección se introduce en primer lugar el framework desarrollado
para la implementación de aplicaciones Web. A continuación, se presentan las trans-
formaciones modelo-a-texto. Finalmente, se comentan los mecanismos proporciona-
dos por el framework para integrar aspectos estéticos.
4.1 Framework de implementación
El objetivo del framework de implementación es el de simplificar la definición de las
transformaciones de modelo a código. El lenguaje de implementación utilizado ha
sido PHP 5, al ser un lenguaje habitualmente utilizado para la creación de frameworks
en entornos Web como Zend Framework [19] o CakePHP [20]. El framework propor-
ciona constructores de alto nivel de abstracción para la implementación de páginas
Web. Dichos constructores se definen a partir de un conjunto de clases que represen-
tan conceptos habituales a la hora de construir aplicaciones Web como son página,
enlace, menú de navegación, etc. En este sentido, el framework define una aplicación
Web como un conjunto de objetos que especifican la información y funcionalidad que
la aplicación Web debe proporcionar. Los objetos principales que componen una a-
plicación Web son:
• Application: Este objeto, que es único en cada aplicación, contiene la información
global. Por ejemplo, a través del método Rol permite definir los tipos de usuarios
que pueden acceder a la aplicación o mediante la propiedad AllowAnonymous per-
mite autorizar el acceso anónimo. También es posible seleccionar los estilos de
presentación mediante el método DefaultStyle. Además, proporciona el método
AddPage para definir los objetos Page que compone nuestra aplicación.
• Page: Cada objeto Page permite implementar una página Web. Siguiendo criterios
de usabilidad definidos en [21], este objeto construye cada página Web como la
agregación de un conjunto de zonas de contenido. Las zonas de contenido más im-
portantes que permite definir este objeto son:
− Navegación: proporciona al usuario el conjunto de enlaces de navegación que puede activar dentro de la página en la que se encuentra.
− Información: recupera información del sistema para ser mostrada, generalmen-
te, desde la capa de persistencia.
− Entrada de datos: se encarga de proporcionar al usuario un formulario, en el
cual pueda introducir la información necesaria para la ejecución de un servicio.
− “Custom”: contiene información, generalmente independiente del dominio de
la aplicación, que no puede ser catalogada como por ejemplo banners.
El objeto Page proporciona primitivas para añadir estás zonas de contenido como
por ejemplo AddNavigationZone o AddInformationZone.
• Zone: Este objeto se encarga de especificar cada una de las zonas de contenido citadas anteriormente. Tomando como ejemplo la zona de información, proporcio-
na el método AddField para indicar los atributos van a ser recuperados y AddDetail
para mostrar información relacionada. También es posible definir mecanismos de
filtrado e indexación de la información, a través de las primitivas DefineFilter y
DefineIndex respectivamente.
La figura 3 muestra la implementación parcial de una página del caso de estudio.
Por último, comentar que para poder utilizar el framework, éste debe ser previamente
instalado en el servidor donde se encuentren las páginas Web de la aplicación. Cuan-
do el usuario realiza una petición de acceso a una página Web, el framework se en-
carga de crear el conjunto de objetos que forman la página Web solicitada (según la
definición del objeto Page correspondiente). Dichos objetos se encargan de producir
código XHTML que permite visualizar la página en el navegador Web del usuario.
Además, el framework proporciona constructores de alto nivel pero independientes
del método OOWS. Esto permite que el framework pueda ser utilizado como tecnolo-
gía destino por cualquier método de ingeniería Web.
Fig. 3. Ejemplo del código del framework
4.2 Proceso de generación de código
A la hora de abordar el proceso de transformación de un modelo a código existen
distintas alternativas. Desde la transformación basada en grafos como se muestra en
[22], pasando por el uso de lenguajes de plantillas [23] e incluso la aplicación de
transformaciones XSLT [24]. La opción que se ha escogido ha sido la de utilizar
openArchitectureWare (oAW) [25], un framework de herramientas de soporte al
DSDM. La gran ventaja de oAW respecto a otras soluciones se basa en el hecho de
estar basada en la plataforma Eclipse y por lo tanto, es posible integrar perfectamente
las herramientas que proporciona dentro de la OOWS Suite. Entre otras utilidades,
oAW proporciona el lenguaje xPand para la generación código a partir de modelos.
Este lenguaje, permite la definición de reglas que toman como entrada una primitiva
conceptual de un modelo. A partir de la información de dicho elemento se completa
una plantilla de código.
Para hacer posible el proceso de generación de código, se han definido las corres-
pondencias entre las primitivas conceptuales de OOWS y las primitivas del frame-
work. Todo elemento del metamodelo de OOWS tiene asociada una regla que esta-
blece el código del framework al cual se traduce. Tomemos como ejemplo, la primiti-
va conceptual “modelo navegacional” (descrita en la sección 2) junto con su regla
asociada, ModelNavigationRule (ver Figura 4). En primer lugar, esta regla añade el
usuario al cual pertenece el modelo navegacional a través de la primitiva Rol del obje-
to Application. A continuación para cada contexto se crea una nueva página Web a
través de la primitiva Page.
Fig. 4. Regla de transformación para el modelo navegacional
4.3 Definiendo los aspectos visuales de presentación
La OOWS Suite proporciona una estrategia para definir los aspectos estéticos basada
en plantillas de presentación., definidas mediante el lenguaje CSS. Se introducen dos
tipos de plantillas:
• Independientes del Dominio: los estilos de estas plantillas se definen a partir de las primitivas conceptuales de OOWS/OO-Method y los términos que introduce el fra-
mework. Estilos de este tipo son por ejemplo: InformationZone, AttributeName,
NavigationLink, etc. Este grupo de etiquetas define un conjunto de estilos genéri-
cos que pueden ser aplicados a cualquier aplicación generada mediante la OOWS
Suite.
• Dependientes del Dominio: a diferencia de las anteriores, sus estilos se definen a partir de conceptos propios del dominio de la aplicación a construir. Estilos de este
tipo son por ejemplo: MovieTitle, Director, Cast, etc. Estos estilos no son reutiliza-
bles.
La Figura 5A muestra la definición de dos estilos dependientes. Dichos estilos se
han definido específicamente para el caso de estudio IMDB. Definen las propiedades
estéticas que deben presentar el título de cada película .MovieInformation.MovieTitle)
así como el reparto de actores (.MovieInformation .Cast). Como vemos, estos estilos
están definidos a partir de conceptos propios de la aplicación IMDB y no pueden ser
utilizados en otras aplicaciones. La Figura 5B muestra la definición de tres estilos
independientes los cuales, definen las propiedades estéticas que deben cumplir la zona
de información de cada página (.InformationZone), el nombre de los atributos defini-
dos en las clases del modelo estructural (.AttributeName) y el valor de dichos atribu-
tos (.AttributeValue). Estos estilos, aunque también han sido utilizados en el caso de
estudio, son independientes de dominio y por tanto pueden ser utilizados en el desa-
rrollo de otras aplicaciones Web.
Fig. 5. Estilos dependientes e independientes de domino
El framework es el encargado de asociar los aspectos estéticos definidos en las plan-
tillas de presentación al código que implementa la aplicación Web. Para ello, la estra-
tegia seguida es la siguiente:
1. En primer lugar, los constructores del framework producen código XHTML sin
ningún tipo de formato predefinido. Sin embargo, dicho código esta marcado
mediante un conjunto de estilos independiente y dependientes. Los estilos inde-
pendientes han sido predefinidos e integrados directamente en el framework. Por
otra parte, los estilos dependientes son generados dinámicamente por los cons-
tructores del framework, a partir de la información de nuestros modelos.
2. Por otro lado, el framework proporciona el método DefaultStyle del objeto Ap-
plication, que nos permite introducir las plantillas de presentación que deben
asociarse al código XHTML. Por ejemplo, si asociamos la plantilla de presenta-
ción que define el look and feel de ImDB del siguiente modo:
$Application->DefaultStyle("IMDB");
El framework generará la siguiente línea de código XHTML cada vez que el
usuario acceda a una página de la aplicación Web:
<link rel="stylesheet" type="text/css" href="IMDB.css">
Esta estrategia basada en plantillas dependientes e independientes de dominio pre-
senta las siguientes ventajas:
• Adaptabilidad: Cambiar el “look and feel” de una aplicación resulta tan sencillo
como cambiar la plantilla del método DefaultStyle del objeto Application. La fi-
gura 6 presenta la visualización de una página Web del caso de estudio tras
haberle asociarlo dos plantillas de presentación diferentes.
• Reusabilidad: todas las aplicaciones Web desarrolladas mediante la OOWS Sui-
te están implementadas mediante código XHTML. Dicho código comparte en
cualquier desarrollo el marcado basado en los estilos de presentación indepen-
dientes de domino. En este contexto, las plantillas independientes de domino
pueden ser asociadas al código de cualquier aplicación Web.
Fig. 6. Una misma página Web con diferente “Look & Feel”
5 Integración OOWS/OO-Method
A fin de dar soporte a la generación automática de aplicaciones Web a nivel indus-
trial, los nuevos modelos introducidos por OOWS deben integrarse con los modelos
OO-Method proporcionados por la herramienta OlivaNova. Dicha integración debe
realizarse a dos niveles: En primer lugar, a nivel de modelado, permitiendo la correcta
interacción de los modelos OOWS basados en EMF con los modelos OO-Method de
OlivaNova. En segundo lugar, a nivel de generación de código, donde la funcionali-
dad generada por OlivaNova debe comunicarse con la interfaz Web generada a partir
de los modelos OOWS.
5.1 Integración a nivel de modelado
La definición de los modelos OOWS se realiza partiendo del modelo estructural de
OO-Method definido mediante el modelador de OlivaNova. Por ejemplo, para definir
la vista que constituye cada contexto navegacional es necesario conocer las clases
definidas en el modelo estructural. Así pues, la integración entre ambas herramientas
de modelado se llevará a cabo a través del modelo estructural OO-Method. Para ello,
se deben proporcionar dos tipos de mecanismos: (1) Mecanismos que faciliten a la
herramienta OlivaNova la exportación del modelo estructural y (2) mecanismos que
faciliten a la herramienta de modelado OOWS la importación del mismo modelo.
Los mecanismos para la exportación del modelo estructural ya vienen proporciona-
dos por la herramienta OlivaNova, ya que dicha herramienta almacena sus modelos
mediante el lenguaje estándar XML. Los mecanismos para la importación de este
modelo estructural deben ser implementados en la herramienta de modelado OOWS.
La solución adoptada para resolver este problema ha sido la siguiente (ver Figura 7):
• En primer lugar, se ha utilizado Ecore para definir el metamodelo del modelo es-
tructural. Ecore es un lenguaje definido a partir de un subconjunto de MOF para la
construcción de metamodelos. Además, es la base de EMF por lo que es fácilmente
integrable en la herramienta de modelado OOWS (la cual ha sido desarrollada tam-
bién mediante EMF, ver sección 3). Así pues, el metamodelo definido en Ecore se
introduce en dicha herramienta extendiendo el metamodelo de OOWS. Esto permi-
te que la herramienta soporte los diferentes conceptos abstractos que definen el
modelo estructural.
• A continuación, se ha definido una transformación de modelo-a-modelo que permi-
te transformar un modelo estructural de OlivaNova en un modelo estructural basa-
do en el metamodelo Ecore (almacenado en un documento XMI basado en XML).
Una vez realizada esta transformación, el modelo estructural Ecore (en el cual se
especifica la lógica de negocio de la aplicación Web) puede ser cargado en la
herramienta de modelado OOWS. Para definir la transformación se ha utilizado
una plantilla XSLT. Se ha optado por esta opción porque el modelo estructural
OlivaNova y el modelo estructural Ecore se almacenan como documentos XML.
XSLT nació con el fin de proporcionar precisamente transformaciones entre este
tipo de documentos.
Modelo Estructural
Olivanova (XML)
OlivaNova Modelador OOWS
Modelo Estructural Ecore (XMI)
TransformaciónM2M Metamodelo
OOWS
Metamodelo del Modelo EstructualBasado en Ecore
<<extiende>>XSLT
Paso 1Paso 2
Basado en
Fig. 7. Integración a nivel conceptual con OlivaNova
5.2 Integración a nivel funcional
A partir de los modelos OOWS se genera una interfaz Web implementada mediante el
framework introducido en la sección 4.1. Sin embargo, la lógica de negocio es gene-
rada por OlivaNova en una tecnología diferente a la que utiliza dicho framework. En
este sentido, es necesario definir un mecanismo para integrar la interfaz con la lógica
de negocio.
Para acotar el problema, nos hemos centrado en el código generado por OlivaNova
para la plataforma .NET, en donde la lógica de negocio se encapsula como un com-
ponente COM+. La comunicación de las interfaces con dicho componente se produce
mediante el envío de un mensaje XML con la consulta/servicio requerido y la recep-
ción de otro mensaje con la respuesta. Así pues, la interfaz Web implementada me-
diante el framework debe comunicarse con la lógica de negocio implementada por
OlivaNova a través de mensajes XML.
Para llevar a cabo este proceso de comunicación, se ha definido una fachada de
negocio denominada OlivaNovaFacade (ver Figura 8). Dicha fachada proporciona un
conjunto de métodos que pueden ser utilizados por el framework y que se encargan de
construir los mensajes XML adecuados. Los métodos más importantes son:
• QueryPopulation: devuelve la población relacionada de una clase determinada.
• QueryById: devuelve una única instancia de una clase a partir de su oid. • QueryRelated: a partir del oid de una instancia, devuelve todas las instancias de
una clase relacionadas.
• ExecuteService: a partir del identificador unívoco de un servicio tal y el conjunto de valores de los argumentos, ejecuta dicho servicio.
• GetServiceResponse: recupera el resultado o el error de la ejecución de un servicio.
Fig. 8. Integración con la funcionalidad generada con OlivaNova
6 Conclusiones
En este trabajo, se ha introducido la OOWS Suite, un entorno de desarrollo MDD
para aplicaciones Web. Dicho entorno proporciona herramientas que dan soporte al
proceso de desarrollo OOWS/OO-Method permitiendo la generación automática a
partir de modelos de aplicaciones Web totalmente funcionales. Dicha aplicaciones
Web están basadas en tres capas (presentación, lógica de negocio y persistencia).
Para el desarrollo de la capa de presentación (o interfaz Web), la OOWS Suite
proporciona una herramienta de modelado y un conjunto de transformaciones mode-
lo-a-texto que permiten la edición visual de los modelos introducidos por OOWS y la
posterior generación automática de código. Dicha herramientas han sido construidas a
partir de estándares MDA (XMI, MOF) y herramientas libres (EMF, oAW) de gran
aceptación dentro del ámbito del DSDM y con grandes posibilidades de evolución.
Por otro lado, el código generado por las transformaciones está basado en un fra-
mework de implementación que, siguiendo la filosofía de las Factorías de Software,
reduce el nivel de abstracción entre los modelos conceptuales y el código a generar,
facilitando la definición de las transformaciones. El framework también proporciona
mecanismos que facilitan la adaptación y reutilización de aspectos estéticos a través
de plantillas de presentación.
Para el desarrollo de las capas de lógica de negocio y persistencia, se ha definido
una estrategia para integrar la herramienta comercial que da soporte a OO-Method
(OlivaNova) en la OOWS Suite. Esta integración permite delegar la generación de la
lógica de negocio de una aplicación Web en una herramienta altamente contrastada a
nivel industrial. Además, extiende de forma conservativa la herramienta OlivaNova,
evitando que surjan problemas de compatibilidad con proyectos ya desarrollados.
Por ultimo, comentar que el proceso de desarrollo soportado por la OOWS Suite ha
sido validado en el desarrollo de aplicaciones Web reales como el sitio Web del de-
partamento de sistemas informáticos y computación (www.dsic.upv.es).
Referencias
[1] Object Management Group (OMG). www.omg.org.
[2] Greenfield, J., Short, K., Cook, S., Kent S. and Crupi, J., Software Factories: Assembling
Applications with Patterns, Models, Frameworks, and Tools, Wiley.
[3] Eclipse Modelling Project. www.eclipse.org/modeling/
[4] Microsoft DSL Tools. http://msdn2.microsoft.com/en-us/vstudio/aa718368.aspx.
[5] Arcstyler. www.interactive-objects.com/products/arcstyler
[6] Borland Together. www.borland.com/us/products/together/index.html
[7] AndroMDA. www.andromda.org
[8] Schwabe D., Rossi G., and Barbosa. S. Systematic Hypermedia Design with OOHDM. In
ACM Conference on Hypertext, Washington, USA, 1996.
[9] Ceri, S. Fraternali, P., Bongio, A., Brambilla M., Comai S., Matera M. (2003). Designing
Data-Intensive Web Applications.Morgan Kaufman
[10] O. De Troyer and S. Casteleyn. Modelling Complex Processes from web applications
using WSDM. In IWWOST 2003. Oviedo, Spain. 2003 pp 1-12.
[11] Fons J., Pelechano V., Albert M., and Pastor O. Development of Web Applications from
Web Enhanced Conceptual Schemas. In ER 2003, vol. 2813 of LNCS. Springer
[12] N. Koch. Software Engineering for Adaptive Hypermedia Applications. PhD thesis,
Ludwig-Maximilians-University, Munich, Germany, 2000.
[13] J. Gómez, C. Cachero, O. Pastor. Extending an Object-Oriented Conceptual Modelling
Approach to Web Application Design. June 2000. CAiSE'2000, LNCS 1789, Pags 79-93
[14] Pastor, O., Gomez, J., Insfran, E. and Pelechano, V. The OO-Method Approach for Infor-
mation Systems Modelling: From Object-Oriented Conceptual Modeling to Automated
Programming. Information Systems 26, pp 507–534 (2001)
[15] Care Technologies S.A. www.care-t.com
[16] OlivaNova Modeller. http://www.care-t.com/products/modeler.asp
[17] OlivaNova Transformation Engine. http://www.care-t.com/products/transengine.asp
[18] Budinsky, F., Steinberg, D., Merks, E., Ellersick, R. and Grose T.J., Eclipse Modelling
Framework: A developer’s guide, Addison-Wesley, 2004.
[19] Zend Framework. http://framework.zend.com/
[20] CakePHP. www.cakephp.org
[21] Olsina, L. Metodologia Cuantitativa para la Evaluacion y Comparacion de la Calidad de
Sitios Web. PhD thesis, Facultad de Ciencias Exactas de la Universidad Nacional de La
Plata (1999).
[22] Rozenberg G. (ed.).Handbook of Graph Grammars and Computing by Graph Trans-
formation. World Scientific, Singapore (1997)
[23] Muñoz, J. and Pelechano, V., Building a software factory for pervasive systems develop-
ment., in CAiSE, volume 3520 of Lecture Notes in Computer Science, pages 342–356,
Springer, 2005.
[24] Kovse, J. and Härder, T. Generic XMI-Based UML Model Transformations. 8th Interna-
tional Conference on Object-Oriented Information Systems, Montpellier, France, 2002.
[25] OpenArchitectureWare. www.openarchitectureware.org
Top Related