Grammarware Engineering: un enfoque dirigido por modelos basado
en separación de conceptos
- Tesis Doctoral -Director: Abraham Duarte Muñoz
Doctorando: Francisco Gortázar Bellas
Grammarware Engineering: un enfoque dirigido por modelos basado
en separación de conceptos
- Tesis Doctoral -
Director
Abraham Duarte Muñoz
Doctorando
Francisco Gortázar Bellas
Departamento de Ciencias de la Computación
Escuela Superior de Ciencias Experimentales y Tecnología
Francisco Gortázar Bellas 3
Grammarware Engineering
Introducción• Motivación
• Hipótesis
• Objetivos
Estado del Arte MetaCET Validación: generación de un parser Implementación Conclusiones, aportaciones y trabajo futuro
Francisco Gortázar Bellas 4
Motivación
Lenguajes de computadora
• Diferentes propósitos
• Diferentes objetivos
• Comunicación
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Entorno de Desarrollo
Documento
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 10
Motivación
Desarrollo de lenguajes de computadora
• Definición del lenguaje y construcción de las herramientas (grammarware) necesarias para su utilización
• Grammarware: software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo las tareas para las que fue diseñado
• Grammarware Engineering [Klint et al., 2005]
• “Desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.”
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 11
Motivación
Creciente interés motivado por diferentes fuerzas
• Lenguajes específicos del dominio (DSLs – Domain Specific Languages)
• Apertura arquitectónica de los IDEs (Integrated Development Environments)
Comunidades interesadas
• Metodologías ágiles
• Ingeniería Dirigida por Modelos (MDE – Model Driven Engineering)
• Desarrolladores de IDEs
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 12
Motivación
El desarrollo de lenguajes es costoso
• El diseño requiere un esfuerzo considerable
• La implementación de herramientas requiere un esfuerzo aún mayor: considérense las herramientas mínimas necesarias para que un desarrollador se sienta “cómodo” utilizando el lenguaje
• Editores
• Refactorizadores
• Asistencia según se escribe
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 13
Motivación
Algunos ejemplos...
• La incorporación de un nuevo lenguaje en Eclipse se realiza en numerosas ocasiones copiando y pegando el código fuente del soporte para Java y adaptándolo al lenguaje objetivo [Ho et al., 2004]
• La adaptación del soporte para Java en Eclipse a las especificaciones de Java 5 llevó un año y medio de trabajo [Solmi, 2005]
La causa del problema es la falta de una metodología adecuada [Klint et al., 2005]
• El desarrollo de lenguajes es una tarea realizada principalmente ad-hoc para cada lenguaje
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 14
Motivación
La naturaleza de los lenguajes de computadora es muy diversa, pero comparten ciertas características• Presentan unos conceptos y una estructura (sintaxis abstracta del
lenguaje)
• Representación de dichos conceptos (sintaxis concreta del lenguaje)
• Dichos conceptos tienen unos significados (semántica del lenguaje)
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 15
Motivación
La propuesta, denominada MetaCET, se centra en:
• Sintaxis abstracta del lenguaje
• Sintaxis concreta del lenguaje
• Lenguajes textuales
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 16
Hipótesis
La hipótesis fundamental de esta tesis doctoral se puede enunciar del siguiente modo:
• Es posible alcanzar los objetivos de Grammarware Engineering a través de una separación de conceptos clara llevada a la práctica mediante la Ingeniería Dirigida por Modelos
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 17
Objetivos
A partir de las hipótesis se plantea como objetivo fundamental
• Desarrollar una metodología para Grammarware Engineering basada en el modelado de lenguajes a través de su sintaxis abstracta que permita la aplicación de la Ingeniería Dirigida por Modelos para obtener automáticamente diferentes herramientas de soporte para dichos lenguajes
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 18
Grammarware Engineering
Introducción Estado del Arte
• Grammarware Engineering
• Ingeniería Dirigida por Modelos
• Enfoques MDE para Grammarware Eng.
MetaCET Validación: generación de un parser Implementación Conclusiones, aportaciones y trabajo futuro
Francisco Gortázar Bellas 19
Grammarware Engineering
Gramáticas independientes del contexto
• Una gramática independiente del contexto puede definirse mediante una 4-tupla
• Vt es el conjunto de símbolos terminales
• Vn es el conjunto de símbolos no terminales
• P es un conjunto finito de reglas de producción
• S es el símbolo inicial
),,,( SPVVG nt
nt VV
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 20
Grammarware Engineering
Gramáticas independientes del contexto
• Las reglas de producción P tienen la siguiente forma
• representa una cadena de terminales y no terminales
*,| wVNwN n tn VV
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 21
Grammarware Engineering
Analizadores sintácticos o parsers• Determinan si una cadena pertenece al lenguaje
• Dos familias de técnicas de análisis sintáctico• Ascendentes: parten de la cadena y van realizando
sustituciones hasta llegar al símbolo inicial
• Descendentes: parten del símbolo inicial y tratan de obtener la cadena mediante sustituciones
• Las sustituciones se realizan utilizando las producciones Estas técnicas son limitadas
• No soportan todos los tipos de GICs
• Cada generador de analizadores implementa exclusivamente una de estas técnicas
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 22
Grammarware Engineering
Principios de GE
• Gramáticas neutrales: independencia de técnicas de análisis y generadores de analizadores
• Transformaciones para diferentes casos de uso
• Separación de conceptos
• Evolución del grammarware
• Ingeniería inversa del grammarware
• Calidad del grammarware: establecimiento de métricas adecuadas para medir la calidad
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 23
Ingeniería Dirigida por Modelos
MDE pretende solucionar los problemas que tienen los lenguajes de tercera generación para afrontar la complejidad de las plataformas y expresar conceptos del dominio de manera efectiva [Douglas C. Schmidt, 2006]
• Utilización de lenguajes de modelado específico del dominio
• Motores de transformación de modelos y generación de código
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 24
Ingeniería Dirigida por Modelos
MDE considera los modelos como una entidad de primer orden en el proceso de desarrollo
Modelo ([Bézivin y Gerbé, 2001])
• Un modelo es una representación de un sistema que se construye con un objetivo concreto. En este sentido, el modelo debe ser capaz de proporcionar respuestas sin tener que construir el sistema real
Plataforma
• Requisitos específicos del contexto en el que el sistema tiene que ejecutarse
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 25
Ingeniería Dirigida por Modelos
Tres principios básicos [Jean-Marie Favre, 2004]
• Representación directa
• Cada aspecto del sistema debe ser modelado con su propio DSL
• Automatización
• Obtención de nuevos modelos a través de transformaciones
• Estándares (UML, XMI, etc.)
• Interoperabilidad
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 26
Ingeniería Dirigida por Modelos
Dos tipos de modelos
• Modelos independientes de la plataforma
• Modelos dependientes de la plataforma
Transformaciones
• Permiten obtener modelos dependientes de la plataforma a partir de modelos independientes
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 27
Ingeniería Dirigida por Modelos
Dos tipos de modelos
• Modelos independientes de la plataforma
• Modelos dependientes de la plataforma
Transformaciones
• Permiten obtener modelos dependientes de la plataforma a partir de modelos independientes
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 28
Enfoques MDE para GE
Características estudiadas
• Utilización de gramáticas neutrales
• Separación de conceptos
• Sintaxis abstracta respecto de la gramática
• Gramática respecto de técnicas de análisis
• Técnicas de análisis respecto de generadores
• Automatización: uso de transformaciones
• Utilización de estándares
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 29
Enfoques MDE para GE
Resumen de los diferentes enfoques
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 30
Grammarware Engineering
Introducción Estado del Arte MetaCET
• Sintaxis abstracta
• MetaCET
Validación: generación de un parser Implementación Conclusiones, aportaciones y trabajo futuro
Francisco Gortázar Bellas 31
Sintaxis abstracta
MDE requiere un cambio en la visión del proceso de desarrollo
• Modelar el lenguaje
• Definir las transformaciones
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Parser
AST
Refactorizadores
Buscadores
Editores
Vista #1
Vista #2
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Parser
AST
Refactorizadores
Buscadores
Editores
Vista #1
Vista #2
GramáticaIndependientedel Contexto
Definición del AST
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Parser
AST
Refactorizadores
Buscadores
Editores
Vista #1
Vista #2
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Parser
AST
Refactorizadores
Buscadores
Editores
Vista #1
Vista #2
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Parser
AST
Refactorizadores
Buscadores
Editores
Vista #1
Vista #2
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 37
Sintaxis abstracta
Nuestra propuesta es basar la definición de lenguajes en este modelo
• Diseñado en UML
• La sintaxis concreta puede añadirse posteriormente al modelo
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 38
MetaCET
Propuesta metodológica concreta para Grammarware Engineering
• Diseño de lenguajes y desarrollo de herramientas de soporte para los mismos
Proporciona un marco general para el desarrollo de lenguajes
• Con mayor capacidad de abstracción que los enfoques dirigidos por gramáticas
• Con flexibilidad suficiente para permitir la personalización
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 39
MetaCET
Metodología general1. Modelar la sintaxis abstracta del lenguaje con UML
2. Modelar la sintaxis concreta anotando el modelo de sintaxis abstracta
3. Diseñar las transformaciones necesarias para cada herramienta de soporte
4. Diseñar el generador de código
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 40
MetaCET
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 41
MetaCET
Basado en el modelo de sintaxis abstracta Independiza la definición del lenguaje de gramáticas Sintaxis abstracta y sintaxis concreta pueden tener
un uso que no requiera de una gramática
• Outline, editores estructurales, etc. Si es necesario la gramática puede generarse
posteriormente de manera automática
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 42
Grammarware Engineering
Introducción Estado del Arte MetaCET Validación: generación de un parser
• Lenguaje de ejemplo
• Descripción del perfil Syntax
• Separación en niveles de abstracción
• Comparativa MetaCET-Enfoque Tradicional Implementación Conclusiones, aportaciones y trabajo futuro
Francisco Gortázar Bellas 43
Validación de MetaCET
Lenguajes
• Statechart
• Dialecto de SQL
• Java Grammarware generado
• Editor
• Gramática
• Parser
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Documento
Parser
AST
Refactorizadores
Buscadores
Editores
Vista #1
Vista #2
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parserfor (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parserfor (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parserfor (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parser
AST
Modelo deSintaxisAbstracta
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parser
AST
Modelo deSintaxisAbstracta
Sintaxis Concreta
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parser
AST
Modelo deSintaxisAbstracta
for (Ticket t : tickets) { display(t);}
Ticket.java
Sintaxis Concreta
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parser
AST
Modelo deSintaxisAbstracta
Sintaxis Concreta
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parser
AST
Modelo deSintaxisAbstracta
Sintaxis Concreta
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parser
AST
Modelo deSintaxisAbstracta
Sintaxis Concreta
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Parser
AST
Modelodel Lenguaje
Sintaxis Concreta
for (Ticket t : tickets) { display(t);}
Ticket.java
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Modelo del lenguaje
• Definición de sintaxis abstracta y concreta
• Independiente de gramáticas
• Independiente de técnicas de análisis
• Independiente de generadores
Parser
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Modelo del analizador
• Gramática neutral
• Independiente de técnicas de análisis
• Independiente de generadores
Parser
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Modelo del generador
• Analizador sintáctico
• Dependiente de una técnica de análisis
• Dependiente de un generador
Parser
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 62
Comparativa MetaCET-Enfoque Tradicional
Enfoque tradicional• Gramáticas
dependientes del uso
• Dependientes de la técnica de análisis y generador
• Duplicación de información
• Dificultad para generar herramientas
• Difícil evolución
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 63
Comparativa MetaCET-Enfoque Tradicional
Enfoque tradicional• Gramáticas
dependientes del uso
• Dependientes de la técnica de análisis y generador
• Duplicación de información
• Dificultad para generar herramientas
• Difícil evolución
MetaCET• Estándares
• Niveles de abstracción
• Formalización de la definición del lenguaje
• Casos de uso
• Independencia de herramientas
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 64
Grammarware Engineering
Introducción
Estado del Arte
MetaCET
Validación: generación de un parser
Implementación
Conclusiones, aportaciones y trabajo futuro
Francisco Gortázar Bellas 65
Eclipse
Entorno de desarrollo multi-lenguaje
Arquitectura
Código abierto
Comunidad
Apoyo empresarial
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 66
Grammarware Engineering en Eclipse
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 67
Grammarware Engineering en Eclipse
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 68
Grammarware Engineering en Eclipse
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 69
Grammarware Engineering en Eclipse
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 70
Grammarware Engineering en Eclipse
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 71
Grammarware Engineering en Eclipse
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 72
Grammarware Engineering
Introducción Estado del Arte MetaCET Validación: generación de un parser Implementación Conclusiones, aportaciones y trabajo
futuro
Francisco Gortázar Bellas 73
Conclusiones generales
Aplicación de MDE al desarrollo de lenguajes
Principios de Grammarware Engineering
Definición del lenguaje mediante UML
Metodología general
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 74
Aportaciones principales
1. Metodología general para el desarrollo de
lenguajes
2. Modelado de lenguajes en UML a través del perfil
Syntax
3. Separación de conceptos
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 75
Aportaciones principales
4. Particularización de la metodología para obtener un analizador sintáctico
5. Modelado de gramáticas en UML a través del perfil Parser
• Gramática neutral
• Independiente de técnicas de análisis
6. Modelado de especificaciones JavaCC y JFlex en UML a través de los perfiles JFlex y JavaCC
7. Publicación de resultados
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 76
Trabajo futuro
Ampliación de la gama de herramientas generadas
• Editores estructurales
• Herramientas de búsqueda
• Metricadores
• Herramientas de análisis Aumentar la definición del lenguaje con la semántica
estática
• Posiblemente con OCL
• Enlazar referencias con declaraciones
• Comprobación de tipos
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Francisco Gortázar Bellas 77
Trabajo futuro
Relaciones entre dos modelos de lenguajes diferentes
• Traducción de programas de un lenguaje a otro
• Aprovechar el grammarware existente para un determinado lenguaje
• Compiladores
• Depuradores
• Máquinas virtuales
Publicación del código
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones
Grammarware Engineering: un enfoque dirigido por modelos basado
en separación de conceptos
- Tesis Doctoral -Director: Abraham Duarte Muñoz
Doctorando: Francisco Gortázar Bellas
Grammarware Engineering: un enfoque dirigido por modelos basado
en separación de conceptos
- Tesis Doctoral -
Director
Abraham Duarte Muñoz
Doctorando
Francisco Gortázar Bellas
Departamento de Ciencias de la Computación
Escuela Superior de Ciencias Experimentales y Tecnología