Introducción
La metodología UWE, presentada por Koch y sus colegas, soporta el desarrollo de aplicaciones Web con especial énfasis en sistematización, personalización y generación de código semi-automático.
Se fundamentada en el análisis y diseño orientado a objetos, con procesos iterativos e incrementales definidas en el Proceso Unificado (UP). En su notación se utilizan perfiles ligeros de UML (UML profile), un perfil en UWE presenta estereotipos utilizados en el modelado de aspectos de navegación y presentación de las aplicaciones Web.
UWE proporciona guías para la construcción de modelos de forma sistemática enfocadas en el estudio de casos de uso. Las actividades del modelado son Análisis de Requerimientos, Diseño Conceptual, Diseño Navegacional y Diseño de Presentación producen los siguientes artefactos:
- Modelo de Casos de Uso
- Modelo Conceptual
- Modelo de Espacio de Navegación y Modelo de Estructura de Navegación
- Modelo de Presentación.
El proceso UWE
Aplicando los principios de MDA, la metodología UWE propone construir un conjunto de CIM’s, PIM’s y PSM’s como el resultado de las fases de análisis, diseño e implementación del proceso. La fase de análisis apunta a obtener un conjunto de requerimientos estables. Los requerimientos funcionales son capturados a través del modelo de requerimientos. El modelo de requerimientos conforma casos de uso especializados y un modelo de clases para la aplicación Web. La fase de diseño consiste en construir una serie de modelos para el contenido, navegación, proceso, presentación y aspectos adaptativos a un nivel de plataforma independiente. Las transformaciones implementan la construcción sistemática de modelos dependientes por la generación de modelos por defecto, los cuales pueden ser refinados por el diseñador. Finalmente, los modelos de diseño son transformados a una implementación de plataforma específica PSM. Este proceso se extiende con la construcción de máquinas de estado UML (conocidos como la gran foto) que integran los modelos de diseño.
La siguiente figura ilustra la dependencia existente entre los correspondientes modelos de UWE:
Figura 1. Estructura de paquetes del metamodelo de UWE.
Utilizando un diagrama de actividades puede mostrarse los procesos que sigue UWE, en el mismo los modelos se representan con nodos de objetos y las transformaciones como actividades estereotipadas (círculos icónicos especiales), una cadena de transformaciones define el flujo de control.
Figura 2. Proceso UWE para transformaciones CIM2PIM y PIM2PIM.
Un ejemplo de modelos de Contenido, Navegación y Presentación en UWE sería el siguiente:
Figura 3. Ejemplos de Modelos de Contenido, Navegación y Presentación.
Metamodelo UWE
El metamodelo UWE está estructurado en paquetes para requerimientos, contenido, navegación, procesos y presentación de la aplicación Web. Están definidas como extensiones ligeras del metamodelo UML 2.0, proveyendo una descripción precisa de los conceptos usados para el modelado de aplicaciones Web y su semántica. A continuación describimos cada metamodelo.
1. Metamodelo de Requerimientos
En UWE, se utilizan diagramas de casos de uso UML para definir los requerimientos funcionales de la aplicación Web y se usan diagramas de clase UML para representar el contenido de los requerimientos.
La especificación de requerimientos involucra la construcción de:
- Un modelo de análisis de contenido que define la estructura de datos de la aplicación Web.
- Un modelo de casos de uso Web (WebUseCase) que define la funcionalidad de la aplicación.
La siguiente figura ilustra el metamodelo UWE para requerimientos:
Figura 4. Metamodelo para el Modelo de Requerimientos UWE.
Observando la figura se puede indicarlo siguiente:
- Se utilizan clases UML regulares para definir el contenido de la aplicación Web.
- Se utilizan las metaclases abstractas WebUseCase para representar la funcionalidad de la aplicación.
- El contexto para los casos de uso Web se representan por el atributo derivado contentClass. El contexto se refiere a la representación de la ubicación donde el usuario de la aplicación Web se sitúa actualmente.
- En cierto contexto el usuario puede ejecutar cierta funcionalidad contenida en el caso de uso Web.
- El cambio de contexto cuando se ejecuta el caso de uso Web se representa por el atributo derivado target.
- El atributo target corresponde a una asociación entre un WebUseCase y un contentClass.
- Se distinguen dos tipos de WebUseCase: Navigation y WebProcess.
El caso de uso Navigation representa la funcionalidad estática de navegación de la aplicación Web. Por estático entendemos que el contenido de los objetos no cambia cuando se ejecuta el caso de uso.
La funcionalidad dinámica de la aplicación Web se representa por el caso de uso WebProcess. La ejecución de WebProcess cambia el estado del sistema por la ejecución de diferentes acciones en el modelo de contenido. El caso de uso WebProcess representa el caso genérico de un proceso Web en un flujo de tareas. De WebProcess se especializan dos tipos, Edit y SimpleProcess. El caso de uso Edit permite modificar datos en la clase de contenido asociada. El caso de uso SimpleProcess representa la invocación a un método de la clase de contenido asociada.
La funcionalidad dinámica de la aplicación Web se representa por el caso de uso WebProcess. La ejecución de WebProcess cambia el estado del sistema por la ejecución de diferentes acciones en el modelo de contenido. El caso de uso WebProcess representa el caso genérico de un proceso Web en un flujo de tareas. De WebProcess se especializan dos tipos, Edit y SimpleProcess. El caso de uso Edit permite modificar datos en la clase de contenido asociada. El caso de uso SimpleProcess representa la invocación a un método de la clase de contenido asociada.
2. Metamodelo de Contenido
El modelo de contenido para aplicaciones Web en UWE, utiliza modelos estándares UML para modelar estructuras de clases, asociaciones y paquetes.
Figura 5. Metamodelo para el Modelo de Contenido UWE.
De la figura podemos mencionar lo siguiente:- ContentModel, representa el dominio de la aplicación Web.
- Un atributo de un elemento de dominio puede ser distinguido por una clave. La metaclase Key provee esta funcionalidad.
El modelo de contenido puede derivarse automáticamente del modelo de requerimientos aplicando la transformación Requirements2Content, el modelo de contenido resultante deberá ser refinado por el desarrollador adicionando clases, atributos, operaciones, asociaciones, etc.
3. Metamodelo de Navegación
El objetivo del modelo de navegación es el de especificar las rutas de navegación del contenido de una aplicación Web. En este modelo los nodos representan la información del modelo de contenido y los enlaces (links) expresan las rutas de navegación entre los nodos.
En este modelo los nodos son representados por clases UML especializadas y los enlaces por asociaciones UML.El modelo de navegación se construye de la siguiente forma:
- Creación del modelo del espacio de navegación, el cual especifica los nodos que serán visitados por navegación directa a partir de otros.
- Adición de estructuras de acceso al modelo de navegación.
- Adición de menús al modelo para organizar los enlaces de salida de las clases de navegación.
- Los elementos básicos del metamodelo de navegación son NavigationNode y Link, los cuales se derivan de los elementos UML Class y Association, respectivamente. El tronco de este metamodelo se ilustra en la siguiente figura.
Figura 6. Metamodelo para el modelado de navegación UWE.
De la anterior figura se puede mencionar los siguientes:
- El modelo de navegación se construye en el modelo conceptual y representa la estructura de navegación de la aplicación Web entre diferentes entidades, el acceso a las entidades puede ser a través de query’s o menus.
- La clase NavigationNode es abstracta y puede ser de cualquier tipo en el grafo de navegación. Esto significa que si un nodo se alcanza durante la navegación, al usuario se le provee de cierta información y se le ofrece la posibilidad de manejar una o más acciones. Un NavigationNode no necesariamente representa una página en la aplicación Web, aunque sí debería hacerlo.
- La clase NavigationClass representa a un nodo navegable en la estructura de hipertexto y establece una conexión entre el modelo navegacional y el modelo de contenido. Una clase de navegación que se asocia con una clase del modelo de contenido está destinada a representar el contenido de una instancia de esa clase.
- La clase NavigationNode es abstracta, lo cual significa que solo clases especializadas del tipo NavigationClass pueden instanciar la misma. Si un nodo es designado como punto de entrada en la aplicación entonces se le deberá definir el atributo isHome. Si un nodo puede ser accedido desde cualquier lugar del modelo de navegación sin el uso de enlaces explícitos, entonces el atributo isLandmark debe ser definido.
- Los atributos de NavigationClass son instancias de la clase NavigationProperty. Esta clase permite definir el contenido de los elementos de IU. El valor de una propiedad de navegación se puede tomar directamente de la asociación a una propiedad de una clase de contenido o derivada de una expresión de selección.
- La clase Link es una clase abstracta, que solo puede ser instanciada por NavigationLink. Un Link conecta un nodo origen con uno destino el cual se expresa por una asociación entre Link y NavigationNode. Con el atributo isAutomatic un link será ejecutado automáticamente. También puede definirse una expresión de guarda que indica si el Link puede ser ejecutado.
- Menu es una clase de navegación especializada que es usada para estructurar los links de salida de una clase de navegación. Esta clase debe ser asociada a una clase de navegación.
- AccessPrimitive es usada para seleccionar una instancia de una clase de contenido que se transforma en el contenido de una clase de navegación.
- ExternalNode denota a un nodo que no pertenece a la estructura de la aplicación actual.
- Index permite seleccionar una instancia de clases de contenido de un conjunto de instancias compiladas durante la navegación previa. Esto significa que el usuario toma de un conjunto de instancias de clases de contenido del contexto de navegación previa, una instancia. Realizada la elección esta instancia se convierte en el objeto de contenido para la clase de navegación que sigue Index en la ruta de navegación.
- Query se usa para recuperar el contenido de una fuente de datos. A diferencia de Index, un Query no recupera un conjunto de instancias de clases de contenido de la ruta de navegación previa, pero si de una Base de Datos o cualquier otra clase de fuente de datos que soporten query’s.
- GuidedTour representa acceso secuencial a todos los elementos de una lista de instancias de NavigationClass. Esta lista generalmente es una lista ordenada.
Espacio de Navegación
El modelo de espacio de navegación indica que nodos pueden ser visitados por navegación directa a partir de otros nodos, aunque inicialmente no se especifica cómo se accederán dichos nodos, este refinamiento se lo realiza en sucesivos pasos adicionando elementos estructurales de acceso.
Este modelo involucra la definición de vistas de navegación de aquellas clases de contenido las cuales serán visitadas por navegación a través de la aplicación Web y por los links de navegación. Una vista de navegación de una clase de contenido contendrá solo un subconjunto de atributos de la clase o definirá atributos adicionales los cuales son derivados de la clase de contenido.
Este modelo involucra la definición de vistas de navegación de aquellas clases de contenido las cuales serán visitadas por navegación a través de la aplicación Web y por los links de navegación. Una vista de navegación de una clase de contenido contendrá solo un subconjunto de atributos de la clase o definirá atributos adicionales los cuales son derivados de la clase de contenido.
4. Metamodelo de Procesos
Los procesos proveen a una aplicación Web aspectos dinámicos. Un proceso está compuesto por uno o más subprocesos y/o acciones que el usuario ejecuta para alcanzar una meta. Una meta representará un cambio en el estado de la aplicación.
Existen diferentes notaciones UML propuestas para modelar procesos, entre las más conocidas están los diagramas de estados y diagramas de actividades. UWE utiliza diagramas de actividades las cuales proveen un mapa de las características funcionales del sistema por un lado y por otro representan el mapa de interacciones del usuario con el sistema.
El modelamiento de procesos en UWE utiliza un subconjunto de elementos UML aplicado a diagramas de actividades y extendiendo su notación para modelar elementos como excepciones, eventos o nodos de actividades estructurados.
El modelamiento de procesos en UWE está dividido en las siguientes partes:
- Integración de procesos, que permite integrar la ejecución de procesos desde el modelo de navegación.
- Procesamiento de datos, que permite representar el acceso a datos por los procesos.
- Flujos de procesos, representados en flujos de procesos dinámicos, que ejecutan operaciones desde el modelo de contenido.
Integración de procesos
La integración de procesos es una característica que permite actuar como una interface entre los procesos y la navegación. El metamodelo de integración está representada por dos elementos ProcessClass (clase de proceso) y ProcessLink (link de proceso).
Cada proceso está representado por una actividad de proceso (ProcessActivity) y una clase de proceso está asociada a su correspondiente caso de uso de proceso Web (Web Process Use Case). Para cada proceso se designa una clase de proceso integrado en el modelo de navegación. Los links de procesos son links especiales utilizados para invocar un proceso, en el link de proceso el origen o destino del mismo (pero no ambos) se debe ejecutar una clase de proceso.
Cuando se ejecuta un link de proceso que apunta a una clase de proceso se ejecuta la actividad de proceso correspondiente, los parámetros de entrada deben ser compatibles con la clase de contenido origen, los parámetros de salida de la actividad de proceso deben ser compatibles con la clase de contenido destino. El siguiente diagrama ilustra el metamodelo de integración de procesos:
Flujo de Datos y de Procesos
El comportamiento del proceso Web se define por un modelo de flujo, además se requiere de un modelo de procesamiento de datos que define los datos necesarios para la ejecución del modelo de flujo. Los modelos de Procesos y de Datos generalmente se elaboran concurrentemente.
Los diagramas UML de Actividades son usados para definir el modelo de Flujo. Una actividad en estos diagramas denotan un comportamiento parametrizado del proceso, el flujo de ejecución se representa por nodos de actividades conectados. Los nodos de control proveen estructuras de control para el procesamiento. Los nodos de objetos representan datos que fluyen a través de los nodos de actividades, un nodo de acción representa la ejecución de un proceso, pueden definirse acciones especiales para invocar otras actividades, como también acciones compuestas. El siguiente diagrama ilustra el metamodelo del modelo de datos de un proceso:
La clase UserAction es usada para modelar interacciones con el usuario en la aplicación Web, el efecto de esta acción es la de presentar la clase del proceso al usuario, solicitándole ingrese datos para dicha clase. El usuario ingresará los datos correspondientes a las propiedades de la clase del proceso y cuando haya terminado, estos datos estarán disponibles para la próxima actividad. Cabe mencionar que cada salida de la acción está representada por un pin que corresponde a una propiedad de la clase del proceso, si se define una clase de contenido para la clase de proceso entonces la acción de usuario debe tener un pin de entrada con un tipo que corresponda a un tipo de la clase de contenido. La siguientes figuras ilustran el metamodelo de flujo de datos:
Figura 10. Nodos de Control UML.
Figura 11. Nodos de Objetos UML.
5. Metamodelo de Presentación
El modelo de presentación define la apariencia que pueden tomar los modelos de navegación. Este modelo describe estructuras de objetos en base a clases especializadas que conforman las páginas Web. Las clases de presentación representan páginas Web que están compuestas de elementos de IU y otras clases de presentación. Por otro lado, también en estas clases pueden definirse varias propiedades físicas de apariencia que incluyen ordenamiento de los elementos del modelo y la definición de propiedades CSS (Cascading Style Sheets).
El metamodelo de presentación comprende la clase “Presentation” que es una clase especializada que representa una página Web o parte de una página Web en clases compuestas. Cada clase de presentación está asociada exactamente a un nodo en el modelo de navegación.
Los elementos de IU “User Interface Elements” son clases especializadas que representan los elementos de interface en una página Web. Se pueden distinguir diferentes tipos de elementos de interface como ser:
- Anchors, que representan enlaces “links” en una página Web, opcionalmente puede definirse una expresión de formato para especificar la etiqueta que el link va a tener.
- Output elements, que representan a elementos de salida o despliegue dinámico, comprende:
- TextElements, que son elementos de despliegue dinámico de datos de tipo texto.
- ImageElements, que son elementos de despliegue de imágenes accedidas a partir de URL’s.
- Input elements, que representan elementos de captura de datos en la página Web, comprende:
- TextInput, que son elementos de captura de datos a partir de cajas de texto.
- EnumerationInput, que son elementos de captura a partir de listas enumerativas de elementos.
- Selection, que son elementos de captura por selección.
- Static elements, que representan información estática en la página Web, comprende:
- StaticText, representan textos estáticos.
- StaticImage, representan imágenes estáticas
Por cada elemento de IU su apariencia física puede ser mejorada implementando los atributos cssClass y cssStyle.
La siguiente figura ilustra el metamodelo de presentación completo de UWE:
Figura 12. Metamodelo de Presentación UWE.