Download CLASE10-ADM
Document related concepts
no text concepts found
Transcript
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006 Consideraciones para el desarrollo de herramientas CASE basadas en UML/MDA Sintaxis de los lenguajes visuales Definición de la sintaxis de los lenguajes visuales Metamodelos Surgieron para definir la sintaxis de lenguajes visuales basados en diagramas de entidad-relación. UML es el referente de este estilo de definición sintáctica, que usa una técnica de metamodelado con 4 niveles de metamodelos. Gramáticas de grafos Interpretan modelos gráficos como grafos y usan reglas de transformación para expresar las reglas para construir diagramas correctos. Sólo una clase restringida de grafos puede ser descrita por gramáticas de grafos [1]. [1] Marriot, K., Meryer, B. Visual Language Theory, Springer, 1998. Definición de la sintaxis de los lenguajes visuales Grafos abstractos Transforma diagramas concretos en un lenguaje de modelamiento en un grafo abstracto que preserva la topología. Este grafo es interpretado como un metamodelo del lenguaje. Debe complementarse con especificaciones en un lenguaje de constraints basado en lógica [2]. [2] Ebert, J., Suttenbach, R. An OMT Metamodel, Technical report 13, University of Koblenz, 1997. EBNF Una integración de Gramáticas de cadenas para lenguajes libres del contexto y gramáticas de atributos para sensibles al contexto y reglas operacionales para expresar constraints de la sintaxis dinámica [3] [3] Xia, Y. Glinz, M. Rigorous EBNF-based Definition for a Graphic Modeling Language, IEEE, 2003 Relación entre gramáticas libres del contexto y metamodelos MOF Las gráficas y ejemplos de esta sección fueron extraídos de: Alanen, M., Porres, I. A Relation between Context-Free grammars and meta Object facility Metamodels. Turku Centre for Computer Science TUCS Technical Report 606, 2003 www.tucs.fi/research/publications/search/.. BNF (Backus Naur Form) y MOF (Meta Object Facility) Metamodelos Lenguaje de modelos Gramáticas Lenguaje de programas Transformación de una gramática en un metamodelo G MM Transformación de un texto (código) en un modelo T M Son reversibles G MM T M BNF y MOF Se han desarrollado tecnologías para derivar metamodelos de varias fuentes: BNF UML ERD … Por ejemplo MDWorkbench es un IDE basado en Eclipse para generación de código y transformaciones de modelos para implementa estrategias MDA/MDE. BNF y MOF QVT (Query, View, Transformation) Metamodel Transformaciones Relaciones Especificación de transformaciones, no ejecutables multidireccionales Mappings Implementación de transformaciones, potencialmente unidireccionales BNF y MOF BNF y MOF G MM Relación a nivel de metamodelos que puede implementarse mediante los mappings G MM G MM BNF y MOF G MM Cada gramática válida puede ser mapeada a un metamodelo válido. Cada metamodelo válido puede ser mapeado a una gramática válida La relación es reversible Los modelos válidos deberían producir árboles de sintaxis válidos y viceversa. Toda la información debe estar contenida en la gramática o el metamodelo Algoritmo para transfomar una EBNF en un metamodelo MOF Algoritmo para transformar una EBNF en un metamodelo MOF Algoritmo para transformar un metamodelo a una BNF Algoritmo para transformar un metamodelo a una BNF Ejemplo: desde una gramática JAVA simplificada a MOF Metamodelo JAVA generado desde BNF simplificada Algoritmos para transformaciones entre BNF y MOF Estos algoritmos no mapean cualquier gramática arbitraria en un metamodelo arbitrario. Por ejemplo, no pueden ser usadas para mapear la gramática de JAVA en un metamodelo UML. Esto debería resolverse en dos etapas, primero mapear JAVA a un metamodelo JAVA y luego, de éste a un metamodelo MOF usando transformaciones modelo a modelo. El mismo razonamiento se aplica en la dirección inversa. Algoritmos para transformaciones entre BNF y MOF Las transformaciones son específicas para cada par de lenguaje de programación y de modelamiento. Es posible definir un mapping de un metamodelo MOF a otro usando transformaciones de modelos. Relaciones a nivel de modelos Esta relación define mappings desde un árbol de sintaxis BNF ( es decir un programa) y un modelo, y desde un modelo a un árbol de sintaxis. El mapping de un árbol de sintaxis a un modelo es una instanciación de elementos del metamodelo de acuerdo al mapping definido entre EBNF y el metamodelo. Reingeniería basada en MDA Arquitectura de una heramienta de ingeniería inversa Tonella, P. Potrich, A. Reverse Engineering of Object-Oriented Code, Springer, 2005 Reingeniería de sistemas legacy En [1] se describe un estudio de factibilidad en la reingeniería de sistemas legacy de una compañía aseguradora. Los pasos del proceso propuesto son: 1) Parsing del código del sistema legacy de acuerdo a la gramática. 2) Mapping de los árboles de sintaxis abstracta obtenidos en el paso previo a un modelo de gramática que está definida en MOF. [1]Reus, T., Geers, H. van Deursen, A. Harvesting Software System for MDA-based Reengineering. Lecture Notes in Computer Science 4066, Springer, 2006. Reingeniería de sistemas legacy 3) 4) Convertir la gramática de 2) en un metamodelo genérico que permita expresar información del software en forma independiente del lenguaje. Mapping de los modelos que son instancias del metamodelo genérico, usando transformaciones modelo a modelo a modelos UML que pueden ser usados para generar código o como documentación. Reingeniería de sistemas legacy Transformaciones y metamodelos Metamodelo PSM “es-instancia-de” PSM AntiRefinamiento Anti Refinamiento ISM-PSM ISM-PSM Metamodelo ISM ISM “es-instancia-de” Arquitecture-Driven Modernization ADM ADM La misión de ADM es crear estándares en el marco de OMG y MDA para la modernización de sistemas existentes y consolidar prácticas que conduzcan a la realización de proyectos de modernización exitosos. La modernización soporta una serie de iniciativas (escenarios) para incluir mejoras en la calidad de las aplicaciones, conversión código a código, migración a diferentes plataformas, migración a SOA, a MDA. ADM Uno de los principales objetivos fue la creación de KDM (Knowledge Discovery Metamodel), un metamodelo que permite interoperabilidad entre diferentes herramientas. Las diferentes herramientas deberían intercambiar vistas comunes sobre plataformas y lenguajes con el fin de analizar y estandarizar sistemas existentes. KDM está alineado con MOF 2.0. KDM representa a los principales artefactos del software (propios) o aquellos externos con los que interactúa ADM Task Force- Roadmap OMG Adopted Specification ptc/06-06-07 RFP #1: ADM: Knowledge Discovery Meta Model Package Facilitar el intercambio de metadatos de sistemas existentes para varias herramientas de modernización. RFP #2: ADM: Abstract Syntax Tree Meta Model (ASTM) Construido sobre KDM para representar software bajo el nivel procedural ADM Task Force- Roadmap RFP #3: ADM: Analysis Package Un estándar para facilitar el análisis de metadatos estructurales a fin de derivar metadatos de comportamiento de sistemas. RFP #4: ADM: Metrics Package RFP #5: ADM: Visualization Package RFP #6: ADM: Refactoring Package RFP #7: ADM: Target Mapping & Transformation Package