520 likes | 666 Views
PROYECTO DE FIN DE CARRERA. OCL. PROCESADOR DE EXPRESIONES. en un entorno de modelización conceptual. AUTOR: Antonio Villegas Niño DIRECTOR: Antoni Olivé Ramon. Facultat d’Informàtica de Barcelona. 2. CONTEXTO. Compilador. Modelización conceptual. Conceptos clave.
E N D
PROYECTO DE FIN DE CARRERA OCL PROCESADOR DE EXPRESIONES en un entorno de modelización conceptual AUTOR: Antonio Villegas Niño DIRECTOR:Antoni Olivé Ramon Facultat d’Informàtica de Barcelona
2 CONTEXTO Compilador Modelización conceptual Conceptos clave Dresden OCL2 Toolkit XMI Eina GMC: entorno de modelización conceptual DBLP Metamodelo OCL 2.0 Java Objetivo Análisis multicriterio Diseño de la herramienta Eina GMC UML MDA Infraestructura y desarrollo MOF Patrón Visitor El procesador de expresiones OCL 2.0 SableCC Gramática OCL 2.0 Conclusiones Procesador de expresiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
3 Modelización conceptual Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
4 Modelización conceptual Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Esquema conceptual Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Información Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
5 Modelización conceptual Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Esquema conceptual Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Sistema software Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
6 UML Lenguaje Unificado de Modelado ABSTRACCIÓN Conceptos clave Avion Eina GMC: entorno de modelización conceptual modelo: String asientos: Integer Objetivo Diseño de la herramienta Infraestructura y desarrollo Persona El procesador de expresiones OCL 2.0 nombre: String identificador: String Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
7 UML Lenguaje Unificado de Modelado Conceptos clave Avion Eina GMC: entorno de modelización conceptual 1 modelo: String asientos: Integer avión * vuelos Objetivo Vuelo Diseño de la herramienta identificador: String Infraestructura y desarrollo asientosLibres():Integer Persona vuelos * El procesador de expresiones OCL 2.0 nombre: String identificador: String pasajeros * Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
8 Metamodelo • Modelo que especifica como definir modelos • Metamodelos de UML 2.0 y OCL 2.0 • Object Management Group: www.omg.org Avion Conceptos clave modelo: String asientos: Integer Eina GMC: entorno de modelización conceptual METAMODELO UML 2.0 Class Objetivo c1 : Class name: String name = “Avion” Diseño de la herramienta class 0..1 * ownedAttribute Infraestructura y desarrollo Property p2 : Property p1 : Property name: String El procesador de expresiones OCL 2.0 name = “asientos” name = “modelo” 0..1 type Conclusiones Type dt2 : DataType dt1 : DataType name = “Integer” name = “String” Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
9 XMI XML de Intercambio de Metadatos • OMG estándar para intercambio de datos vía XML • Intercambio de modelos en UML entre diferentes herramientas de modelado Conceptos clave Eina GMC: entorno de modelización conceptual <uml2.Kernel.Class xmi.id = ’c1' name = ’Avion’> <uml2.Kernel.Class.ownedAttribute> <uml2.Kernel.Property xmi.id = ’p1’ name = ’modelo’> <uml2.Kernel.TypedElement.type> <uml2.Kernel.DataType xmi.idref = ’dt1'/> </uml2.Kernel.TypedElement.type> </uml2.Kernel.Property> <uml2.Kernel.Property xmi.id = ’p2’ name = ’asientos’> <uml2.Kernel.TypedElement.type> <uml2.Kernel.DataType xmi.idref = ’dt2'/> </uml2.Kernel.TypedElement.type> </uml2.Kernel.Property> </uml2.Kernel.Class.ownedAttribute> </uml2.Kernel.Class> <uml2.Kernel.DataType xmi.id = ’dt1' name = ’String’> <uml2.Kernel.DataType xmi.id = ’dt2' name = ’Integer’> Avion modelo: String asientos: Integer Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
10 MDA Arquitectura dirigida por modelos Conceptos clave Eina GMC: entorno de modelización conceptual MDA Objetivo Lenguajes de alto nivel Diseño de la herramienta Abstracción Complejidad Ensamblador Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Lenguaje máquina Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
11 MDA Arquitectura dirigida por modelos Modelo independiente de la tecnología Conceptos clave Modelo general Eina GMC: entorno de modelización conceptual Objetivo Modelos ligados a la tecnología de desarrollo Modelo específico Modelo específico Modelo específico Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Código de la aplicación Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
12 MDA Arquitectura dirigida por modelos • Problema conocido: • UML no es suficiente Avion Conceptos clave 1 modelo: String asientos: Integer Eina GMC: entorno de modelización conceptual avión * vuelos Vuelo Objetivo identificador: String Diseño de la herramienta asientosLibres():Integer Infraestructura y desarrollo Persona vuelos * nombre: String identificador: String El procesador de expresiones OCL 2.0 pasajeros * Conclusiones • ¿Cuantos pasajeros admite un vuelo? • Segun el diagrama, ilimitado • Segun la lógica, depende de los asientos del avión Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
13 OCL Object Constraint Language Queremos restringir el modelo: pasajeros de un vuelo <= asientos de un avión Avion Conceptos clave 1 modelo: String asientos: Integer Eina GMC: entorno de modelización conceptual avión * vuelos Vuelo Objetivo identificador: String Diseño de la herramienta asientosLibres():Integer Infraestructura y desarrollo Persona vuelos * nombre: String identificador: String El procesador de expresiones OCL 2.0 pasajeros * context Vuelo inv limitePasajeros: pasajeros->size() <= avion.asientos Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
14 OCL Object Constraint Language • OMG estándar incluido dentro de UML 2.0 • Lenguaje para escribir restricciones textuales • Permite definir: • Invariantes • Inicialización de atributos • Reglas de derivación • Definición de atributos y operaciones consultoras • Precondiciones de operaciones • Postcondiciones de operaciones • Body de operaciones • Elimina la ambigüedad • Complemento necesario de UML para crear esquemas conceptuales completos Conceptos clave Eina GMC: entorno de modelización conceptual INV INIT DERIVE DEF PRE POST BODY Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
15 OCL Object Constraint Language Avion Conceptos clave 1 modelo: String asientos: Integer avion Eina GMC: entorno de modelización conceptual * Vuelo vuelos identificador: String asientosLibres():Integer * Objetivo vuelos * Diseño de la herramienta pasajeros context Persona inv identificador: Persona.allInstances()->isUnique(identificador) context Vuelo::asientosLibres():Integer post: result = avion.asientos – pasajeros->size() context Persona def: tieneBonus : Boolean = vuelos->size() > 50 Infraestructura y desarrollo Persona nombre: String identificador: String El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
16 Eina GMC Entorno de modelización conceptual Proyecto desarrollado por GMC http://guifre.lsi.upc.edu Conceptos clave NUCLEO EINA GMC Eina GMC: entorno de modelización conceptual implementan Metamodelos UML & OCL Clases Java Objetivo Diseño de la herramienta instancian es instancia Infraestructura y desarrollo Repositorio de Metadatos Esquema conceptual Objetos Java El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
17 Eina GMC Entorno de modelización conceptual Conceptos clave IMPORTANTE XMI Converter XMI Edition Interface Eina GMC: entorno de modelización conceptual Objetivo Conversor entre diferentes formatos de XMI Interfaz que permite modificar archivos XMI Diseño de la herramienta Herramientas que extienden la funcionalidad del nucleo Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Cardinality Constraints Checker XMI2DOT Converter Conclusiones Comprueba la satisfactibilidad de esquemas conceptuales Crea imágenes a partir de archivos XMI Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
18 Eina GMC Entorno de modelización conceptual Project p = new Project(“myProject”); UmlClassFacade ucf = new UmlClassFacade(p); PropertyFacade pf = new PropertyFacade(p); DataTypeFacade dtf = new DataTypeFacade(p); DataType stringType = dtf.createDataType(); stringType.setName(“String”); DataType integerType = dtf.createDataType(); integerType.setName(“Integer”); UmlClass avion = ucf.createUmlClass(); avion.setName(“Avion”); Property modelo = pf.createProperty(); modelo.setName(“modelo”); modelo.setType(stringType); modelo.setUmlClass(avion); Property asientos = pf.createProperty(); asientos.setName(“asientos”); asientos.setType(integerType); asientos.setUmlClass(avion); p.saveXMI(“/XMIfiles/avion.xmi”); p.closeProject(); Conceptos clave Avion modelo: String asientos: Integer Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
19 Objetivo • Necesidades • Añadir el tratamiento de expresiones OCL en Eina GMC • Proporciona operaciones para crear instancias del metamodelo OCL • Inviable instanciar manualmente • Necesitamos automatizar el proceso de instanciación • Necesitamos una herramienta que: • Cargue un archivo XMI con la descripción de un esquema en UML • Permita introducir restricciones textuales en OCL sobre tal esquema • Compruebe que las restricciones estén bien construidas • Retorne feedback en caso de error • Genere la instanciación de las restricciones y las añada al XMI inicial • Adicionalmente queremos: • Poder borrar restricciones previamente procesadas e instanciadas • Poder recuperar el formato textual de las restricciones a partir de su instanciación Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
20 Objetivo XMI Conceptos clave Eina GMC: entorno de modelización conceptual Instancias UML Procesador de OCL Restricciones textuales en OCL Objetivo Instancias OCL Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 XMI con restricciones Conversión inversa Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
21 Objetivo • Requisitos • Compatible con las versiones 2.0 de UML y OCL • Compatible con Eina GMC y sus demás herramientas • Simplicidad para añadir nuevas construcciones de los lenguajes • Bajo acoplamiento entre los componentes de la herramienta • Sencillez de uso • Herramienta multiplataforma • Distribuido bajo licencia abierta • Posibilidad de compartirlo con la comunidad • Cualquiera puede adaptar el código y modificarlo según sus necesidades Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
22 Diseño de la herramienta • Adaptar una solución existente en vez de empezar de cero • Estudio de alternativas existentes • IBM OCL Parser • MOVA Tool • USE Tool • Dresden OCL2 Toolkit • Aplicación de un análisis multicriterio • PDGPE: Toma de decisiones Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
23 Diseño de la herramienta • Estudio de alternativas existentes • IBM OCL Parser • Una de las primeras herramientas sobre OCL • Soporta UML y OCL versiones 1.1 • Código simple Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
24 Diseño de la herramienta • Estudio de alternativas existentes • MOVA Tool • Editor OCL paso a paso • Universidad Complutense de Madrid Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
25 Diseño de la herramienta • Estudio de alternativas existentes • USE • Interpreta OCL • Formato propio • Bremen University Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
26 Diseño de la herramienta • Estudio de alternativas existentes • Dresden OCL2 Toolkit • Soporta XMI • Utiliza clases similares a Eina GMC • Soporta OCL 2.0 pero UML 1.5 Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
27 Diseño de la herramienta Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
28 Dresden OCL2 Tookit • The Parser Subsystem • Pros • Soporta XMI como formato de intercambio para almacenar y cargar esquemas UML • Implementa los metamodels de UML y OCL con clases Java similares a Eina GMC • “Facilita” la adaptación de esta herramienta a Eina GMC • Chequea sintaxis, semántica y comprueba tipos • Contiene amplia documentación sobre uso y diseño de la herramienta • Código fuente bien documentado y estructurado • Estructura similar a la de un compilador común • Utiliza SableCC-Ext • Contras • Soporta UML 1.5 en vez de 2.0 • Realiza dos pasadas sobre el árbol de compilación • 1º Crea las instancias y chequea sintaxis y parte de la semántica • 2º Chequea semántica y tipos • El chequeo de tipos no es perfecto Conceptos clave http://dresden-ocl.sourceforge.net/ Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
29 Infraestructura y desarrollo • Infraestructura necesaria para la implementación • Noción de Visitor pattern • Noción de Compilador • SableCC • SableCC-Ext • Desarrollo del procesador de expresiones • Primeros pasos • Ciclo de desarrollo • Iteraciones realizadas Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
30 Infraestructura Noción de Visitorn Pattern • Añadir operaciones a una jerarquía de clases sin modificarlas • Separación entre estructura de clases y algoritmos que trabajan con esta Conceptos clave Eina GMC: entorno de modelización conceptual Visitable Visitor accept(Visitor v) visit(Object o) Objetivo B C A MyVisitor1 MyVisitor2 Diseño de la herramienta visit(A) visit(B) visit(C) visit(A1) visit(B1) visit(B2) visit(A) visit(B) visit(C) visit(A1) visit(B1) visit(B2) B1 B2 A1 Infraestructura y desarrollo El procesador de expresiones OCL 2.0 • accept(Visitor v) { • v.visit(this); • } Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
31 Infraestructura Noción de Visitorn Pattern • Double dispatch: mecanismo que decide que método ejecutar dependiendo de los tipos en tiempo de ejecución de los objetos implicados en una llamada Conceptos clave Eina GMC: entorno de modelización conceptual Visitable Visitor accept(Visitor v) visit(Object o) Objetivo A MyVisitor1 MyVisitor2 visit(A) visit(B) visit(C) visit(A) visit(B) visit(C) Diseño de la herramienta B C Infraestructura y desarrollo • v.visit(A) { • B = A.getB(); • B.accept(v); • C = A.getC(); • C.accept(v); • } • Visitor v = new MyVisitor1(); • A.accept(v) -> v.visit(A); El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
32 Infraestructura Noción de Compilador Conceptos clave Entrada Lenguaje A Analizador Léxico Eina GMC: entorno de modelización conceptual Entrada tokenizada (stream de tokens) Analizador Sintáctico/Semántico (Parser) Abstract Syntax Tree (AST) Objetivo Generador de código intermedio Diseño de la herramienta Código Intermedio Optimizador de código intermedio Infraestructura y desarrollo Código Intermedio optimizado El procesador de expresiones OCL 2.0 Generador de código final Salida Lenguaje B Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
33 Infraestructura Noción de Compilador Entrada: context Persona inv debeSerAdulta: edad >= 18 Conceptos clave Tokens: CONTEXT : context ID : (a..zA..Z)+ INV : inv DOSPUNT : “:” MAYORIG : “>=” NUMERO : (0..9)+ Producciones: constraint = CONTEXT nombre INV nombre DOSPUNT expresion nombre = ID expresion = operando (operacion operando)* operacion = MAYORIG operando = ID | NUMERO Eina GMC: entorno de modelización conceptual Objetivo Salida: Diseño de la herramienta CONTEXT ID INV ID DOSPUNT ID MAYORIG NUMERO Infraestructura y desarrollo constraint El procesador de expresiones OCL 2.0 CONTEXT nombre INV nombre DOSPUNT expresion ID ID Conclusiones operando operacion operando ID MAYORIG NUMERO Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
34 Infraestructura SableCC • Sable Compilers Compiler • sablecc.org • Étienne Gagnon, 1998 • McGill University, Montreal Conceptos clave Eina GMC: entorno de modelización conceptual • Genera automáticamente • Analizador léxico • Analizador sintáctico Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
35 Infraestructura SableCC-Ext • Archivo de especificación más complejo • Producciones incluyen el tipo de objeto que retornan • Directivas para modificar el comportamiento del recorrido sobre el árbol de compilación Gramática OCL 2.0 Conceptos clave Eina GMC: entorno de modelización conceptual SableCC-Ext Lexer OCL 2.0 Parser OCL 2.0 Esqueleto del Evaluador de atributos • Generación automática de: • Jerarquía de clases que forman nodos del árbol de compilación según la gramática • Evaluador de atributos • Recorre el árbol de compilación • Permite pasar información • de padres a hijos: heredada • de hijos a padres: sintetizada • Para cada nodo los métodos que computan esta información son abstractos • La implementación es manual Objetivo Diseño de la herramienta Implementar métodos abstractos Infraestructura y desarrollo Evaluador de atributos OCL 2.0 El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
36 Infraestructura SableCC-Ext • Instancia del metamodelo OCL 2.0 • Objeto intermedio Conceptos clave S Eina GMC: entorno de modelización conceptual S H H S S H Objetivo Diseño de la herramienta S H Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
37 Desarrollo Primeros pasos • SableCC-Ext • Integrado en la distribución del paquete Dresden OCL2 Toolkit • Extraerlo como herramienta de producción independiente • Adaptación a Eina GMC • Sustituir clases DOT por clases Eina GMC • Cambiar sistema de generación automática para importar correctamente • Adaptar la gramática DOT a Eina GMC y de UML 1.5 a UML 2.0 • Pruebas de funcionamiento • The Parser Subsystem (DOT) • Decidir que clases mantenemos • Adaptar o eliminar • Eclipse IDE • Preparar nuevo proyecto • Incluir librerías y clases Eina GMC • Incluir partes aprovechables de DOT Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
38 Desarrollo Ciclo de desarrollo DIVIDE & CONQUER Conceptos clave Iteradores Postcondiciones Eina GMC: entorno de modelización conceptual Definiciones Construcción Iterator Tuplas de elementos Invariantes Let expressions Objetivo Acceso a atributos Navegaciones simples Inicializaciones Diseño de la herramienta Collections Operaciones sobre colecciones If expressions Infraestructura y desarrollo Precondiciones @pre Operaciones aritméticas Navegaciones complejas El procesador de expresiones OCL 2.0 Operaciones relacionales Derivaciones Body de operaciones Conclusiones Operaciones lógicas Enumerations Operaciones de clase Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
39 Desarrollo Ciclo de desarrollo • Desarrollo cíclico dividido en iteraciones de implementación • Pasos para completar una iteración • Elegir un subconjunto del lenguaje OCL 2.0 • Preparar la gramática para SableCC-Ext con el contenido específico para definir el subconjunto de OCL escogido • Generar framework a través de SableCC-Ext • Analizador léxico • Analizador sintáctico • Jerarquía de clases acordes a las producciones • Esqueleto del evaluador de atributos • Implementar operaciones abstractas del evaluador de atributos • Computación de atributos heredados y sintetizados • Comprobación semántica y de tipos • Instanciación en el metamodelo • Testeo del funcionamiento y vuelta al paso 1 Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
40 Desarrollo Iteraciones realizadas Conceptos clave Postcondiciones Iteradores Eina GMC: entorno de modelización conceptual Definiciones Construcción Iterator Tuplas de elementos Invariantes Let expressions Objetivo Acceso a atributos Navegaciones simples Inicializaciones Diseño de la herramienta Collections Operaciones sobre colecciones If expressions Infraestructura y desarrollo Precondiciones @pre Operaciones aritméticas Navegaciones complejas El procesador de expresiones OCL 2.0 Operaciones relacionales Derivaciones Body de operaciones Conclusiones Operaciones lógicas Enumerations Operaciones de clase Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Proyecto de Fin de Carrera
41 El procesador de expresiones OCL 2.0 Estructura Restricciones OCL 2.0 Gramática OCL 2.0 Conversión de restricciones textuales a instancias Conceptos clave Lexer: Analizador léxico Eina GMC: entorno de modelización conceptual SableCC-Ext Eina GMC Parser: Constructor árbol de compilación Objetivo Esqueleto del evaluador de atributos Gramática OCL 2.0 Diseño de la herramienta Generador de instancias Infraestructura y desarrollo AST Generator Eina GMC El procesador de expresiones OCL 2.0 OperacionesCreadoras Repositorio de Metadatos Archivo XMI con restricciones OCL Node Factory Type Checker Utility Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
42 El procesador de expresiones OCL 2.0 AST Generator • Extiende el esqueleto del evaluador de atributos generado por SableCC-Ext automáticamente • Basado mínimamente en el generador AST de DOT • Solución a problemas conocidos de DOT • Uso de UML 2.0 y no 1.5 • Contiene la implementación de • Métodos para calcular los atributos sintetizados y heredados • Es el núcleo del procesador de expresiones (1 pasada) • Realiza análisis semántico • Llamadas a Utility para acceder a los elementos del esquema conceptual cargado • Realiza control de tipos • Llamadas a TypeCheck para comprobar el tipo de los elementos • Realiza creación de instancias • Llamadas a NodeFactory para crear instancias del metamodelo OCL en el repositorio de Eina GMC Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
43 El procesador de expresiones OCL 2.0 NodeFactory • Creador de objetos Java • Adaptado de la versión DOT • Obtiene mayor importancia que en DOT • Es el nexo entre Eina GMC y Procesador de expresiones • Aporta bajo acoplamiento entre las partes • Cambios en Eina GMC no afectan al Procesador Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo HashMap “A” Constructor A “B” Constructor B El procesador de expresiones OCL 2.0 B “B” “C” Constructor C Conclusiones “D” Constructor D Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
44 El procesador de expresiones OCL 2.0 TypeChecker y Utility • TypeChecker • Basado en el mecanismo de double dispatch del Visitor pattern • Un método para cada elemento a tratar • Llamada a TypeCheker mediante un único metodo para todos los elementos • Verifica la clase del elemento a comprobar en tiempo de ejecución • Accede al método particular una vez hecho esto • Utility • Contiene métodos para • Verificar si un atributo pertenece a una clase • Verificar que las navegaciones se hacen correctamente • Realizar otras comprobaciones sobre el esquema conceptual cargado Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
45 El procesador de expresiones OCL 2.0 Feedback y Rollback • Feedback • En caso de encontrar errores uso de mecanismo de excepciones Java • LexerException • Errores léxicos (mala construcción de expresiones OCL) • ParserException • Errores sintácticos (problemas en la generación del árbol de compilación) • AttrEvalException y WellformednessException • Errores semánticos y de incompatibilidad de tipos • Rollback • Repositorio MDR de Eina GMC permite volver a un estado anterior • Si se lanza una excepción durante el proceso de conversión • Se eliminan las nuevas instancias creadas en el proceso actual Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
46 El procesador de expresiones OCL 2.0 context Person inv nameIsKey: Person.allInstances()->isUnique(name) Resultado del Generador de instancias • Estructura arborescente siguiendo las indicaciones de los metamodelos de UML y OCL Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
47 El procesador de expresiones OCL 2.0 Conversión inversa • ConverterOCL • Basado en el mecanismo de double dispatch del Visitor pattern • Un método para cada elemento a tratar • Llamada a ConverterOCL mediante un único método para todos los elementos • Verifica la clase del elemento a comprobar en tiempo de ejecución • Accede al método particular una vez hecho esto • Descenso desde instancias Constraint hasta nodos inferiores Eina GMC Conceptos clave Operacionesde acceso Repositorio de Metadatos Converter OCL Eina GMC: entorno de modelización conceptual Archivo XMI con OCL instanciado restricciones textuales OCL Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
48 El procesador de expresiones OCL 2.0 Eliminación de restricciones • Delete Visitor • Basado en el mecanismo de double dispatch del Visitor pattern • Un método para cada elemento (instancia de metaclase) a tratar • Llamada a DeleteVisitor mediante un único método para todos los elementos • Verifica la clase del elemento a comprobar en tiempo de ejecución • Accede al método particular una vez hecho esto • Descenso desde instancias Constraint hasta nodos inferiores • Eliminación en el repositorio Eina GMC Conceptos clave Operacionesde acceso Repositorio de Metadatos Delete Visitor Eina GMC: entorno de modelización conceptual Archivo XMI con restricciones borradas Archivo XMI con OCL instanciado Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
49 Conclusiones Técnicas • En un proyecto software necesitamos • Estudiar los requisitos necesarios • Comprender el funcionamiento que ha de realizar • Conocer su dominio de información • Plasmar esta información evitando ambigüedades • Técnicas de Modelización Conceptual • Herramientas CASE (Computer Aided Software Engineering) • Colaboración de todos los implicados • La mayoría de herramientas de modelado no dispone de soporte para OCL • Model Driven Architecture • UML solo no es suficiente • Necesita el potencial de OCL para completarse • El procesador de expresiones OCL • Permite añadir el tratamiento de expresiones OCL • Completa el entorno de modelización conceptual Eina GMC • Es una pequeña aportación a la causa de MDA Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera
50 Conclusiones Personales • Completar conocimientos • Ámbito de Ingeniería del Software • Ámbito de Modelización Conceptual • Ámbito de Teoría de Compiladores • Colaboración con GMC • Desarrollar proyecto dentro del ámbito de la investigación universitaria • Trabajar con herramientas en desarrollo y de gran tamaño • Adaptar software existente a nuestras necesidades • Contribución a la comunidad • Herramienta de libre distribución y modificación • Experiencia adquirida • Desarrollo de herramienta software en solitario • Planificar y gestionar fechas, recursos y actividades Conceptos clave Eina GMC: entorno de modelización conceptual Objetivo Diseño de la herramienta Infraestructura y desarrollo El procesador de expresiones OCL 2.0 Conclusiones Procesador de expresiones OCL 2.0 Antonio Villegas Niño en un entorno de modelización conceptual Proyecto de Fin de Carrera