Implementación y Metamodelo UWE: Desarrollo Web Impulsado por Modelos (MDWE)

Enviado por Programa Chuletas y clasificado en Inglés

Escrito el en español con un tamaño de 9,94 KB

Modelo Impulsado por Ingeniería Web (MDWE)

El Desarrollo Web Impulsado por Modelos (Model-driven Web development) es un esfuerzo para elevar el nivel de abstracción en el que desarrollamos software Web. Los procesos de MDWE (Model-Driven Web Engineering) pueden lograrse mediante la generación de código.

Proceso UWE

Aplicando los principios de MDA (véase la Sec. 2), el enfoque UWE propone la construcción de un conjunto de CIMs, PIMs y PSMs como resultados de las fases de análisis, diseño e implementación del proceso impulsado por modelos.

Fases del Proceso UWE

Fase de Análisis

El objetivo de la fase de análisis es reunir un conjunto estable de requisitos. Los requisitos funcionales se capturan mediante el modelo de requisitos. Este modelo comprende casos de uso especializados y un modelo de clases para la aplicación Web.

Fase de Diseño

La fase de diseño consiste en la construcción de una serie de modelos para el contenido, la navegación, el proceso, la presentación y los aspectos de adaptabilidad a un nivel independiente de la plataforma (Platform Independent Level).

Las transformaciones implementan la construcción sistemática de modelos predeterminados, que luego pueden ser refinados por el diseñador. Finalmente, los modelos de diseño se transforman a la aplicación específica de la plataforma.

Este proceso central de UWE se extiende con la construcción de una máquina de estados UML —llamada "gran imagen" (big picture) en nuestro enfoque— que integra los modelos de diseño. El objetivo del modelo de "gran imagen" es la verificación del UWE.

Metamodelo UWE

El metamodelo se estructura en paquetes, a saber: requisitos, contenido, navegación, proceso, presentación y adaptación. Se define como una extensión "perfilable" (profileable) del metamodelo UML 2.0, proporcionando una descripción precisa de los conceptos utilizados para modelar aplicaciones Web y su semántica.

Nos limitamos a ilustrar el enfoque mediante un extracto del metamodelo de presentación (para más detalles sobre el metamodelo UWE, véase [11]).

El metamodelo de presentación define los elementos de modelado necesarios para especificar el layout para el diseño de los modelos de navegación y procesos subyacentes.

Elementos Clave del Metamodelo de Presentación

  • Una PresentationClass es una clase especial que representa una página Web o parte de ella, y está compuesta por elementos de interfaz de usuario (UIElement) y otras clases de presentación.
  • UIElements: Son las clases que representan los elementos de la interfaz de usuario en una página Web.
  • Anclas (Anchors): Representan los vínculos en una página Web y, opcionalmente, se puede definir una expresión de formato para la especificación de la etiqueta que debe tener el ancla.

El metamodelo de presentación se representa en la Fig. 2.

Las invariantes de clase OCL se utilizan para definir las reglas de buena formación (well-formedness rules) para los modelos, es decir, la semántica estática de un modelo, a fin de garantizar que el modelo esté bien formado antes de ejecutar una transformación.

Transformaciones de Modelo a Modelo en UWE

La especificación de requisitos se basa en los casos de uso UML para la definición de la funcionalidad de una aplicación Web.

La fase de diseño consiste en la construcción de una serie de modelos para los aspectos de contenido, navegación, proceso y presentación a un nivel independiente de la plataforma.

Las transformaciones implementan la construcción sistemática de modelos dependientes mediante la generación de modelos predeterminados, que luego deben ser refinados por el diseñador.

El enfoque utiliza el lenguaje de transformación ATL (ATL transformation language) en todas las fases del proceso de desarrollo.

El Modelo de Navegación

El modelo de navegación representa una vista de navegación de los contenidos y proporciona puntos de entrada y salida a los procesos Web.

Los nodos estereotipados como «navigation class» y «process class» (como Project y RemoveProject, Fig. 4) representan información del modelo de contenido y del modelo de caso de uso (requisitos). Se generan mediante las reglas ContentClass2NavigationClass y PProcessIntegratior, respectivamente.

Los nodos estereotipados como «menu» permiten la selección de una ruta de navegación. Los enlaces («vínculo de navegación» y «proceso de enlace») especifican las rutas de navegación entre nodos.

La regla de transformación CreateProcessDataAndFlow genera automáticamente los datos de proceso y un borrador del flujo de procesos para el proceso Web. Los flujos de proceso están representados en el diagrama de actividad UML, donde se muestran las «acciones de usuario».

4 Generación de Aplicaciones Web Basada en UWE

El principal esfuerzo de un enfoque MDE (Model-Driven Engineering) para la generación de aplicaciones Web es salvar la brecha entre las abstracciones presentes en los modelos de diseño (contenido, navegación, proceso y presentación) y la plataforma Web objetivo.

De hecho, esta brecha es bastante estrecha para los modelos de contenido y presentación de UWE:

  • La estructura estática de UML utilizada para describir el contenido en UWE tiene una contraparte bastante directa en las técnicas de descripción de datos de las plataformas Web actuales (como modelos de bases de datos relacionales, mapeos objeto-relacionales o Java Beans).
  • De manera similar, un modelo de presentación UWE, basado en estructuras estáticas de UML, puede verse como una abstracción leve de los diseños de páginas Web, utilizando, por ejemplo, HTML simple, HTML Dinámico o Java Server Pages (JSP).

Esta brecha de abstracción es comparable para las estructuras de navegación UWE que utilizan solo nodos de navegación y primitivas de acceso.

Sin embargo, la situación cambia para las descripciones de procesos de negocio UWE, que utilizan una notación de flujo de trabajo. En particular, la interpretación basada en tokens, similar a una red de Petri, de las actividades UML y su combinación de control y flujo de datos (especialmente adecuada para un transporte de datos declarativo), difiere notablemente de los conceptos de lenguaje de programación más tradicionales y centrados en el control, soportados por las plataformas Web actuales.

Una visión general de las transformaciones y el motor de ejecución se describe en la Fig. 7. La máquina virtual para la ejecución de procesos de negocio y la integración en la navegación se envuelve en un entorno de tiempo de ejecución que se basa en el framework Spring y también encapsula la gestión de datos y el manejo de vistas.

4.1 Entorno de Tiempo de Ejecución (Runtime Environment)

La estructura del entorno de tiempo de ejecución se muestra en la Fig. 8. El framework Spring está configurado para utilizar una implementación de controlador genérico específico llamado MainController.

El controlador tiene acceso a un conjunto de objetos cuyos tipos se generan a partir del modelo de contenido y un objeto raíz designado como punto de entrada para la aplicación.

Los objetos del modelo son accedidos por sus métodos get y set, y las operaciones definidas en el modelo de contenido. Además, el controlador gestiona un conjunto de objetos NavigationClassInfo que contienen información sobre la estructura de navegación con respecto a la herencia entre clases de navegación, y se generan a partir del modelo de navegación.

Un conjunto de objetos ProcessActivity generados a partir del modelo de proceso representa los procesos Web disponibles; para cada sesión, a lo sumo un proceso puede estar activo a la vez.

4.2 Contenido y Navegación

El modelo de navegación no tiene que ser transformado directamente en código porque, en la transformación del modelo de presentación, las referencias a los elementos del modelo de navegación se resuelven de manera que las páginas generadas acceden directamente al contenido.

Ejemplo de Estructura de Clase (Implícita)


public class ProjectList {
    private List projects;
    
    public List getProjects() {
        return projects;
    }
    
    public void removeProject(Project project) {
        // to be implemented manually
    }
}

Nota: El texto original contenía fragmentos de código mal formateados (clase pública Lista privado Lista proyectos de retorno; public void este. public void removeProject (Proyecto proyecto)), que han sido interpretados y formateados como una estructura de clase típica para ilustrar la interacción entre contenido y navegación.

Entradas relacionadas: