Grammarware Engineering: un
enfoque dirigido por modelos
basado en separación de
conceptos
- Tesis Doctoral Director: Abra...
Grammarware Engineering: un
enfoque dirigido por modelos
basado en separación de
conceptos
- Tesis Doctoral Director
Abrah...
Grammarware Engineering


Introducción

•
•
•







Motivación
Hipótesis
Objetivos

Estado del Arte
MetaCET
Validac...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Motivación


Lenguajes de computadora

•
•
•

D...
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

Documento

Entorno de
Desarrollo
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Motivación


Desarrollo de lenguajes de computa...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Motivación


Creciente interés motivado por dif...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Motivación


El desarrollo de lenguajes es cost...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Motivación


Algunos ejemplos...

•
•



La in...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Motivación


La naturaleza de los lenguajes de ...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Motivación


La propuesta, denominada MetaCET, ...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Hipótesis


La hipótesis fundamental de esta te...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Objetivos


A partir de las hipótesis se plante...
Grammarware Engineering



Introducción
Estado del Arte

•
•
•






Grammarware Engineering
Ingeniería Dirigida por...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering


Gramáticas independie...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering


Gramáticas independie...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering


Analizadores sintácti...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering


Principios de GE

•
•...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Ingeniería Dirigida por Modelos


MDE pretende ...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Ingeniería Dirigida por Modelos




MDE consid...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Ingeniería Dirigida por Modelos


Tres principi...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Ingeniería Dirigida por Modelos


Dos tipos de ...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Ingeniería Dirigida por Modelos


Dos tipos de ...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Enfoques MDE para GE


Características estudiad...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Enfoques MDE para GE


Resumen de los diferente...
Grammarware Engineering




Introducción
Estado del Arte
MetaCET

•
•





Sintaxis abstracta
MetaCET

Validación: g...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Sintaxis abstracta


MDE requiere un cambio en ...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Pars...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Gramática
Independiente
del Contexto

Definición...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Pars...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Pars...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Pars...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Sintaxis abstracta


Nuestra propuesta es basar...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

MetaCET


Propuesta metodológica concreta para
...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

MetaCET


Metodología general
1.
2.
3.
4.

Mode...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

MetaCET

Francisco Gortázar Bellas

40
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

MetaCET




Basado en el modelo de sintaxis a...
Grammarware Engineering
Introducción
 Estado del Arte
 MetaCET
 Validación: generación de un parser


•
•
•
•

Lenguaj...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Validación de MetaCET


Lenguajes

•
•
•



St...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Pars...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

for (Ticket t : tickets)
{
display(t);
}

Ticket...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

for (Ticket t : tickets)
{
display(t);
}

Ticket...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

for (Ticket t : tickets)
{
display(t);
}

Ticket...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

for (Ticket t : tickets)
{
display(t);
}

Ticket...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

for (Ticket t : tickets)
{
display(t);
}

Ticket...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

for (Ticket t : tickets)
{
display(t);
}

Ticket...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

for (Ticket t : tickets)
{
display(t);
}

Ticket...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo de
Sintaxis
Abstracta

for (Ticket t : ti...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo de
Sintaxis
Abstracta

Sintaxis
Concreta
...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo de
Sintaxis
Abstracta

Sintaxis
Concreta
...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo de
Sintaxis
Abstracta

Sintaxis
Concreta
...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo de
Sintaxis
Abstracta

Sintaxis
Concreta
...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo de
Sintaxis
Abstracta

Sintaxis
Concreta
...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo
del
Lenguaje

Sintaxis
Concreta
for (Tick...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones



Modelo del lenguaje

•
•
•
•

Definición de s...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones



Modelo del analizador

•
•
•

Gramática neutr...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones



Modelo del generador

•
•
•

Analizador sintá...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Comparativa
MetaCET-Enfoque Tradicional


Enfoq...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Comparativa
MetaCET-Enfoque Tradicional


Enfoq...
Grammarware Engineering


Introducción



Estado del Arte



MetaCET



Validación: generación de un parser



Implem...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Eclipse


Entorno de desarrollo multi-lenguaje
...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering en Eclipse

Francisco Go...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering en Eclipse

Francisco Go...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering en Eclipse

Francisco Go...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering en Eclipse

Francisco Go...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering en Eclipse

Francisco Go...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering en Eclipse

Francisco Go...
Grammarware Engineering


Introducción



Estado del Arte



MetaCET



Validación: generación de un parser



Implem...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Conclusiones generales


Aplicación de MDE al d...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Aportaciones principales
1.

Metodología general...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Aportaciones principales
4.
5.

Particularizació...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Trabajo futuro


Ampliación de la gama de herra...
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Trabajo futuro


Relaciones entre dos modelos d...
Grammarware Engineering: un
enfoque dirigido por modelos
basado en separación de
conceptos
- Tesis Doctoral Director: Abra...
Grammarware Engineering: un
enfoque dirigido por modelos
basado en separación de
conceptos
- Tesis Doctoral Director
Abrah...
Upcoming SlideShare
Loading in …5
×

Grammarware engineering: un enfoque dirigido por modelos

379 views
232 views

Published on

El objetivo de la tesis es proporcionar un enfoque up-down, en lugar de un enfoque down-up en la construcción de herramientas de soporte para lenguajes de programación.

La idea principal es definir el lenguaje partiendo de su sintaxis abstracta (un modelo orientado a objetos) y decorar posteriormente este modelo con la sintaxis concreta.

A partir de ahí, mediante técnicas de MDE, se pueden generar diferentes tipos de herramientas como editores, compiladores o parsers.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
379
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Muchas gracias, sr. presidente
  • Gracias, sr. presidente.
    Buenos días. Este trabajo de investigación se ha desarrollado en el seno del grupo Gavab, grupo de investigación multidisciplinar al cual pertenezco. Este grupo pertenece al Departamento de Ciencias de la Computación de la Escuela Superior de Ciencias Experimentales y Tecnología en la Universidad Rey Juan Carlos.
    Querría extender mi agracedimiento a los miembros del tribunal, a mi director de tesis, y a todos los que se han acercado hasta aquí hoy a ver esta exposición.
  • La presentación del trabajo de tesis está dividida en cinco apartados. En primer lugar haré una introducción al tema de la tesis presentando la motivación, las hipótesis y los objetivos de la misma. A continuación se describe el estado del arte, exponiendo brevemente las características fundamentales de Grammarware Engineering y Model Driven Engineering o Ingeniería Dirigida por Modelos, para posteriormente pasar a describir la metodología general propuesta en esta tesis para Grammarware Engineering, denominada MetaCET. Como ejemplo de aplicación de la metodología se mostrará la obtención de un parser, que es una de las herramientas básicas de soporte para los lenguajes de computadora. Finalmente, se expondrán las conclusiones, aportaciones principales y futuros trabajo.
  • Esta tesis doctoral pretende dar un primer paso que convierta el desarrollo de lenguajes en una Ingeniería de Lenguajes. Por desarrollo de lenguajes se entiende la definición de lenguajes de computadora y la implementación o construcción de herramientas de soporte para el mismo. Estas herramientas, denominadas grammarware, no son sino software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo su función. Grammarware Engineering, según la definición dada por Paul Klint, Ralf Lämmel, y Chris Verhoef, es el desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.
  • Esta tesis doctoral pretende dar un primer paso que convierta el desarrollo de lenguajes en una Ingeniería de Lenguajes. Por desarrollo de lenguajes se entiende la definición de lenguajes de computadora y la implementación o construcción de herramientas de soporte para el mismo. Estas herramientas, denominadas grammarware, no son sino software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo su función. Grammarware Engineering, según la definición dada por Paul Klint, Ralf Lämmel, y Chris Verhoef, es el desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.
  • Esta tesis doctoral pretende dar un primer paso que convierta el desarrollo de lenguajes en una Ingeniería de Lenguajes. Por desarrollo de lenguajes se entiende la definición de lenguajes de computadora y la implementación o construcción de herramientas de soporte para el mismo. Estas herramientas, denominadas grammarware, no son sino software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo su función. Grammarware Engineering, según la definición dada por Paul Klint, Ralf Lämmel, y Chris Verhoef, es el desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.
  • Esta tesis doctoral pretende dar un primer paso que convierta el desarrollo de lenguajes en una Ingeniería de Lenguajes. Por desarrollo de lenguajes se entiende la definición de lenguajes de computadora y la implementación o construcción de herramientas de soporte para el mismo. Estas herramientas, denominadas grammarware, no son sino software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo su función. Grammarware Engineering, según la definición dada por Paul Klint, Ralf Lämmel, y Chris Verhoef, es el desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.
  • Esta tesis doctoral pretende dar un primer paso que convierta el desarrollo de lenguajes en una Ingeniería de Lenguajes. Por desarrollo de lenguajes se entiende la definición de lenguajes de computadora y la implementación o construcción de herramientas de soporte para el mismo. Estas herramientas, denominadas grammarware, no son sino software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo su función. Grammarware Engineering, según la definición dada por Paul Klint, Ralf Lämmel, y Chris Verhoef, es el desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.
  • Esta tesis doctoral pretende dar un primer paso que convierta el desarrollo de lenguajes en una Ingeniería de Lenguajes. Por desarrollo de lenguajes se entiende la definición de lenguajes de computadora y la implementación o construcción de herramientas de soporte para el mismo. Estas herramientas, denominadas grammarware, no son sino software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo su función. Grammarware Engineering, según la definición dada por Paul Klint, Ralf Lämmel, y Chris Verhoef, es el desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.
  • Esta tesis doctoral pretende dar un primer paso que convierta el desarrollo de lenguajes en una Ingeniería de Lenguajes. Por desarrollo de lenguajes se entiende la definición de lenguajes de computadora y la implementación o construcción de herramientas de soporte para el mismo. Estas herramientas, denominadas grammarware, no son sino software que necesita conocimiento de la descripción estructural del lenguaje para llevar a cabo su función. Grammarware Engineering, según la definición dada por Paul Klint, Ralf Lämmel, y Chris Verhoef, es el desarrollo y mantenimiento de grammarware fomentando las buenas prácticas, las herramientas de soporte y los métodos rigurosos.
  • A pesar de los años que han pasado desde los primeros lenguajes de computadora, es esta un área que sigue despertando interés. Este interés se ha visto incrementado en los últimos años debido a dos fuerzas fundamentalmente: en primer lugar, la necesidad de definir y utilizar lenguajes específicos del dominio; en segundo lugar, la apertura arquitectónica de los entornos de desarrollo, que han pasado de una arquitectura monolítica, a una arquitectura completamente abierta, basada en el concepto de plug-in, que permite añadir nueva funcionalidad al entorno, lo cual a su vez ha permitido que proveedores distintos al propietario del entorno de desarrollo puedan ofertar productos que se integran bien en dicho entorno.
    Este interés ha venido impulsado por tres comunidades principalmente: las metodologías ágiles, que propugnan la inclusión de expertos del dominio en el proceso de desarrollo. Estos expertos pueden colaborar en el desarrollo describiendo, por ejemplo, casos de prueba, siempre que se les proporcione un lenguaje adecuado para describir dichos casos de prueba. De ahí el interés en los DSLs de esta comunidad. Por otro lado, la ingeniería dirigida por modelos, que basa el proceso de desarrollo en el modelado específico del dominio, a través de DSLs. Aunque describiré en más detalle MDE, baste decir que la definición de este tipo de lenguajes es esencial en esta metodología. Por último, los desarrolladores de IDEs, puesto que estos entornos se han convertido en entornos con soporte para múltiples lenguajes y tareas, motivando la búsqueda de la reutilización en esta torre de babel en que se han convertido.
  • Sin embargo, el problema con el que se encuentran estas áreas, es la complejidad de la tarea que tienen delante. El desarrollo de lenguajes es costoso, tanto el diseño como la implementación de las herramientas de soporte al lenguaje requieren un esfuerzo considerable. Supóngase, por ejemplo, que se desea desarrollar un nuevo lenguaje con el objetivo de utilizarlo para describir determinadas partes de una aplicación software compleja que se está desarrollando. Cualquier usuario del lenguaje, que tenga experiencia con otros lenguajes de computadora, espera disponer de ciertas herramientas que hoy en día se consideran básicas: editores con resaltado de sintaxis y asistencia según se escribe, metricadores, refactorizadores, y un largo etcétera. La construcción de todas estas herramientas es una tarea ardua.
  • Algunos datos sobre el alcance de este problema han sido dados por diversos autores. Ho y otros señalan ,en un artículo presentado en la conferencia de Eclipse, que el soporte para un nuevo lenguaje dentro de este entorno se implementa copiando y pegando el soporte del lenguaje Java (reconocido como uno de los más logrados), y adaptándolo al lenguaje que se desea incorporar. Por otro lado, Riccardo Solmi, en su tesis doctoral, señala que la incorporación de los cambios introducidos en la versión 5 de Java dentro del soporte para Java en Eclipse llevó un año y medio de trabajo. Parece mucho tiempo habida cuenta de que se trata de evolucionar las herramientas, y no de desarrollarlas desde cero.
    El problema es la falta de una metodología adecuada para el desarrollo de lenguajes. Esta tarea es realizada de manera ad-hoc para cada lenguaje.
  • Aunque existen infinidad de lenguajes de computadora, todos ellos comparten ciertas características: en primer lugar, todos presentan ciertos conceptos estructurados de alguna forma. Estos conceptos representan información del dominio en el contexto del cual se desarrolla el lenguaje. Los conceptos y su estructura conforman lo que se denomina sintaxis abstracta del lenguaje.
    En segundo lugar, el lenguaje define un significado para dichos conceptos, que es lo que se denomina semántica del lenguaje.
    Por último, una definición del lenguaje incluye cómo se representan dichos conceptos. Esto se denomina sintaxis concreta del lenguaje. La representación puede ser gráfica, como la notación para diagramas de clases del lenguaje UML, o textual, como el lenguaje Java.
  • La propuesta presentada en esta tesis doctoral se centra exclusivamente en la sintaxis abstracta y la sintaxis concreta del lenguaje. Además, está orientada exclusivamente hacia lenguajes con representación textual. Para los lenguajes con representación gráfica existen algunas propuestas muy interesantes (como por ejemplo el Graphical Modeling Framework de Eclipse).
  • A continuación se describen las bases conceptuales de Grammarware Engineering y de MDE, y se presentan, de manera resumida, los problemas encontrados en la mayoría de herramientas relacionadas que han sido estudiadas.
  • En el contexto del desarrollo de lenguajes, las gramáticas independientes del contexto son el formalismo más utilizado a la hora de definir el lenguaje. Herramientas como los generadores de analizadores sintácticos utilizan descripciones de este tipo para construir analizadores que son capaces de determinar si un fragmento de código es correcto, y detectar diferentes tipos de errores en el mismo.
    Una gramática independiente del contexto puede definirse como una cuatro tupla, donde V sub t representa el conjunto de símbolos terminales, estos símbolos representan el vocabulario del lenguaje. V sub n es el conjunto de símbolos no terminales. Ambos conjuntos tienen la particularidad de que su intersección es vacía. P es un conjunto finito de reglas de producción y S es el símbolo inicial. A partir de S es posible generar todas las posibles cadenas del lenguaje utilizando las producciones.
  • Las producciones definen reglas de transformación entre un no terminal y una cadena de terminales y no terminales. Al no terminal se le denomina antecedente (o parte izquierda de la producción), a la cadena se la denomina consecuente (o parte derecha).
  • Las GICs tienen la ventaja de que se conocen diferentes técnicas de análisis sintáctico que, dada una GIC, son capaces de determinar si una cadena pertenece al lenguaje.
  • Complementariamente al uso de gramáticas, Klint y otros proponen una serie de principios que deberían ser aplicados para hacer del desarrollo de lenguajes y de grammarware una ingeniería. Para ello proponen utilizar gramáticas neutrales para independizar la definición del lenguaje de las técnicas de análisis sintáctico. Aplicar diferentes transformaciones a partir de estas gramáticas neutrales para diferentes casos de uso. Separar conceptos diferentes. Permitir la evolución de grammarware. Investigar la ingeniería inversa de grammarware, ya que existe una gran cantidad de grammarware ya desarrollado. Desarrollar unas métricas adecuadas que permitan medir la calidad del grammarware.
    Al final:
    Nuestra propuesta trata de aplicar estos principios mediante la utilización de una metodología dirigida por modelos para la construcción de grammarware.
  • La Ingeniería Dirigida por Modelos pretende solucionar los problemas de los lenguajes de tercera generación a la hora de afrontar la complejidad de las plataformas en las que las aplicaciones tienen que ejecutarse y de expresar conceptos del dominio de manera efectiva. En este sentido, esta metodología promueve la utilización de lenguajes de modelado específicos del dominio que permitan expresar conceptos de las plataformas concretas y la generación de las aplicaciones a mediante motores de transformación de modelos y generación de código.
    Por plataforma entendemos aquellos requisitos específicos del contexto en el cual el sistema tiene que ejecutarse. Una plataforma puede ser desde un lenguaje de implementación, un sistema operativo, un framework web, un sistema gestor de bases de datos, etcétera.
    El objetivo de las transformaciones es ir introduciendo aspectos específicos de la plataforma en los modelos. En ocasiones esta información llega a ser tan descriptiva que es posible generar el sistema completo.
    Lo interesante del enfoque es la capacidad para especializar el sistema para plataformas diferentes.
  • En este enfoque los modelos se consideran una entidad de primer orden. En este sentido, y según la definición dada por Bezivin y Gerbé, un modelo es una representación de un sistema o parte de él que se construye con un objetivo concreto. El modelo debe poder proporcionar respuestas sobre el sistema sin tener que construir el sistema real.
  • Según Favre, esta metodología está guiada por tres principios básicos: representación directa, es decir, cada aspecto del sistema debe ser gestionado con su propio lenguaje, automatización para obtener nuevos modelos a través de transformaciones; y estándares, que permiten la interoperabilidad de las herramientas MDE.
  • Dentro de MDE se pueden distinguir dos tipos diferentes de modelos
  • Previamente al desarrollo de la metodología que se presenta en esta tesis, se estudiaron aquellas herramientas que por su enfoque estaban más cercanas a un enfoque MDE.
  • Esta tabla resume los resultados obtenidos tras el estudio. Aunque no voy a describir cada herramienta en detalle, sí comentaré las conclusiones que se extrajeron de dicho estudio.
  • Tras haberse descrito brevemente las principales características de Grammarware Engineering y MDE, a continuación se describirá la metodología desarrollada en esta tesis doctoral para la definición de lenguajes y el desarrollo de herramientas de soporte para los mismos. En primer lugar detallaré cómo nos llevamos la definición de lenguajes desde el campo de las gramáticas independientes del contexto al campo del modelado orientado a objetos, apoyándonos para ello la sintaxis abstracta del lenguaje. En segundo lugar, describiré la metodología general, denominada MetaCET.
  • Este marco general independiza...
  • Este marco general independiza...
  • Para mostrar el enfoque propuesto, se utilizará un ejemplo sencillo, en este caso una representación de un bucle for, habitual en la mayoría de lenguajes de programación. La representación textual de dicho bucle se puede ver en la figura. Esta representación incluye palabras reservadas como for, símbolos, como las llaves o los paréntesis, nombres de variables, etc.
  • Los elementos relevantes desde el punto de vista del AST son, en primer lugar, la declaración de la variable t, de tipo Ticket.
  • En segundo lugar, la referencia a la variable tickets.
  • Y en tercer lugar el cuerpo del bucle.
  • La representación de la información relevante en el correspondiente AST puede verse en la imagen de la derecha. Cada caja representa un objeto en memoria que tiene unos valores para cada uno de sus atributos. Concretamente, la declaración de la variable t se representa
  • Como un objeto de tipo VarDecl,
  • Este objeto contiene un valor t para el atributo name, y un valor ticket para el atributo type.
  • Este AST es una instancia de las clases definidas en el modelo de sintaxis abstracta, donde se definen los conceptos de For, VarDecl, etcétera jun to con sus atributos y relaciones. El objetivo es construir el parser a partir de este modelo de sintaxis abstracta.
  • Para ello necesitamos incorporar a este modelo información sobre la sintaxis concreta del lenguaje, es decir, sobre su representación textual. Así, el for está formado textualmente por la palabra reservada for, seguida de un paréntesis de apertura, una declaración de variable, el símbolo dos puntos, una referencia a una variable, un paréntesis de cierre y un cuerpo.
  • En el modelo de sintaxis abstracta, la clase for se estereotipa entonces con el estereotipo syntax. La propiedad value de este estereotipo permite definir toda esta información. Es importante notar que la declaración de la variable, la referencia a la variable y el cuerpo del bucle se indican utilizando el nombre de los correspondientes atributos de la clase For. Sus representaciones textuales vendrán dadas en las respectivas clases VarDecl, VarRef y Body.
  • En el caso de VarDecl la representación textual se limita a un tipo y un nombre.
  • La representación textual de la clase VarRef contiene exclusivamente el nombre de la variable que se referencia.
  • Por último el cuerpo del bucle se representa como una lista de sentencias encerrada entre llaves.
    Ahora tenemos toda la infgormación relevante de la sintaxis abstracta y sintaxis concreta. Este modelo lo denominamos modelo del lenguaje, puesto que incluye ambas características.
  • Por último el cuerpo del bucle se representa como una lista de sentencias encerrada entre llaves.
    Ahora tenemos toda la infgormación relevante de la sintaxis abstracta y sintaxis concreta. Este modelo lo denominamos modelo del lenguaje, puesto que incluye ambas características.
  • El modelo...
    La generación del parser tiene lugar a partir de este modelo en dos transformaciones sucesivas y una fase de generación de código.
  • Muchas gracias, sr. presidente
  • Gracias, sr. presidente.
    Buenos días. Este trabajo de investigación se ha desarrollado en el seno del grupo Gavab, grupo de investigación multidisciplinar al cual pertenezco. Este grupo pertenece al Departamento de Ciencias de la Computación de la Escuela Superior de Ciencias Experimentales y Tecnología en la Universidad Rey Juan Carlos.
    Querría extender mi agracedimiento a los miembros del tribunal, a mi director de tesis, y a todos los que se han acercado hasta aquí hoy a ver esta exposición.
  • Grammarware engineering: un enfoque dirigido por modelos

    1. 1. 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
    2. 2. 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
    3. 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 3
    4. 4. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Motivación  Lenguajes de computadora • • • Diferentes propósitos Diferentes objetivos Comunicación Francisco Gortázar Bellas 4
    5. 5. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
    6. 6. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
    7. 7. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
    8. 8. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
    9. 9. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento Entorno de Desarrollo
    10. 10. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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.” Francisco Gortázar Bellas 10
    11. 11. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 11
    12. 12. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 12
    13. 13. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 13
    14. 14. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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) Francisco Gortázar Bellas 14
    15. 15. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Motivación  La propuesta, denominada MetaCET, se centra en: • • Sintaxis abstracta del lenguaje Sintaxis concreta del lenguaje • Lenguajes textuales Francisco Gortázar Bellas 15
    16. 16. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 16
    17. 17. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 17
    18. 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 18
    19. 19. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering  Gramáticas independientes del contexto • Una gramática independiente del contexto puede definirse mediante una 4-tupla G = (Vt , Vn , P, S ) • V es el conjunto de símbolos terminales • V es el conjunto de símbolos no terminales • P es un conjunto finito de reglas de producción • S es el símbolo inicial t n Vt ∩ Vn = φ Francisco Gortázar Bellas 19
    20. 20. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering  Gramáticas independientes del contexto • Las reglas de producción P tienen la siguiente forma N → w | N ∈ Vn , w ∈ Σ* • Σ = Vn ∪ Vt ∑∗ representa una cadena de terminales y no terminales Francisco Gortázar Bellas 20
    21. 21. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 21
    22. 22. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 22
    23. 23. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 23
    24. 24. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 24
    25. 25. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 25
    26. 26. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 26
    27. 27. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 27
    28. 28. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Enfoques MDE para GE  Características estudiadas • • Utilización de gramáticas neutrales Separación de conceptos • • Automatización: uso de transformaciones Utilización de estándares • Sintaxis abstracta respecto de la gramática • Gramática respecto de técnicas de análisis • Técnicas de análisis respecto de generadores Francisco Gortázar Bellas 28
    29. 29. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Enfoques MDE para GE  Resumen de los diferentes enfoques Francisco Gortázar Bellas 29
    30. 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 30
    31. 31. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Sintaxis abstracta  MDE requiere un cambio en la visión del proceso de desarrollo • • Modelar el lenguaje Definir las transformaciones Francisco Gortázar Bellas 31
    32. 32. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
    33. 33. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Gramática Independiente del Contexto Definición del AST Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
    34. 34. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
    35. 35. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
    36. 36. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
    37. 37. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 37
    38. 38. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 38
    39. 39. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones MetaCET  Metodología general 1. 2. 3. 4. Modelar la sintaxis abstracta del lenguaje con UML Modelar la sintaxis concreta anotando el modelo de sintaxis abstracta Diseñar las transformaciones necesarias para cada herramienta de soporte Diseñar el generador de código Francisco Gortázar Bellas 39
    40. 40. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones MetaCET Francisco Gortázar Bellas 40
    41. 41. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 41
    42. 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 42
    43. 43. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Validación de MetaCET  Lenguajes • • •  Statechart Dialecto de SQL Java Grammarware generado • • • Editor Gramática Parser Francisco Gortázar Bellas 43
    44. 44. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
    45. 45. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
    46. 46. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
    47. 47. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
    48. 48. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
    49. 49. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java Parser
    50. 50. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java Parser
    51. 51. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java Parser
    52. 52. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Modelo de Sintaxis Abstracta for (Ticket t : tickets) { display(t); } Ticket.java Parser AST
    53. 53. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Modelo de Sintaxis Abstracta Sintaxis Concreta for (Ticket t : tickets) { display(t); } Ticket.java Parser AST
    54. 54. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Modelo de Sintaxis Abstracta Sintaxis Concreta for (Ticket t : tickets) { display(t); } Ticket.java Parser AST
    55. 55. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Modelo de Sintaxis Abstracta Sintaxis Concreta for (Ticket t : tickets) { display(t); } Ticket.java Parser AST
    56. 56. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Modelo de Sintaxis Abstracta Sintaxis Concreta for (Ticket t : tickets) { display(t); } Ticket.java Parser AST
    57. 57. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Modelo de Sintaxis Abstracta Sintaxis Concreta for (Ticket t : tickets) { display(t); } Ticket.java Parser AST
    58. 58. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Modelo del Lenguaje Sintaxis Concreta for (Ticket t : tickets) { display(t); } Ticket.java Parser AST
    59. 59. 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
    60. 60. 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
    61. 61. 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
    62. 62. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 62
    63. 63. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 63
    64. 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 64
    65. 65. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Eclipse  Entorno de desarrollo multi-lenguaje  Arquitectura  Código abierto  Comunidad  Apoyo empresarial Francisco Gortázar Bellas 65
    66. 66. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 66
    67. 67. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 67
    68. 68. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 68
    69. 69. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 69
    70. 70. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 70
    71. 71. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 71
    72. 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 72
    73. 73. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Conclusiones generales  Aplicación de MDE al desarrollo de lenguajes  Principios de Grammarware Engineering  Definición del lenguaje mediante UML  Metodología general Francisco Gortázar Bellas 73
    74. 74. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 74
    75. 75. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Aportaciones principales 4. 5. Particularización de la metodología para obtener un analizador sintáctico Modelado de gramáticas en UML a través del perfil Parser • • 6. 7. Gramática neutral Independiente de técnicas de análisis Modelado de especificaciones JavaCC y JFlex en UML a través de los perfiles JFlex y JavaCC Publicación de resultados Francisco Gortázar Bellas 75
    76. 76. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 76
    77. 77. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones 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 Francisco Gortázar Bellas 77
    78. 78. 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
    79. 79. 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

    ×