SlideShare ist ein Scribd-Unternehmen logo
1 von 79
Downloaden Sie, um offline zu lesen
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Enfoques MDE para GE


Resumen de los diferentes enfoques

Francisco Gortázar Bellas

29
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
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
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Parser
Vista #1

Documento

Vista #2
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
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Parser
Vista #1

Documento

Vista #2
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Parser
Vista #1

Documento

Vista #2
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Parser
Vista #1

Documento

Vista #2
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
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
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
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 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
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
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
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Editores
Refactorizadores

AST

Buscadores

Parser
Vista #1

Documento

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

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

Ticket.java

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

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

Ticket.java

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

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

Ticket.java

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

Modelo de
Sintaxis
Abstracta

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

Ticket.java

Parser
AST
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
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
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
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
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
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Modelo
del
Lenguaje

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

Ticket.java

Parser
AST
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

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
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
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
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
Introducción – EA – MetaCET – Validación – Implementación – Conclusiones

Grammarware Engineering en Eclipse

Francisco Gortázar Bellas

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

Grammarware Engineering en Eclipse

Francisco Gortázar Bellas

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

Grammarware Engineering en Eclipse

Francisco Gortázar Bellas

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

Grammarware Engineering en Eclipse

Francisco Gortázar Bellas

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

Grammarware Engineering en Eclipse

Francisco Gortázar Bellas

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

Grammarware Engineering en Eclipse

Francisco Gortázar Bellas

71
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (9)

Practicas de construccioin
Practicas de construccioinPracticas de construccioin
Practicas de construccioin
 
Clase3 Is 0702 V1
Clase3 Is 0702 V1Clase3 Is 0702 V1
Clase3 Is 0702 V1
 
Tema1 b
Tema1 bTema1 b
Tema1 b
 
Modelo de proceso especializado
Modelo de proceso especializadoModelo de proceso especializado
Modelo de proceso especializado
 
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
 
PLC: lenguajes de programación
PLC: lenguajes de programación PLC: lenguajes de programación
PLC: lenguajes de programación
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Apun2algol
Apun2algolApun2algol
Apun2algol
 
PSW Unidad 3: Implementación y seguridad del proceso de software
PSW Unidad 3: Implementación y seguridad del proceso de softwarePSW Unidad 3: Implementación y seguridad del proceso de software
PSW Unidad 3: Implementación y seguridad del proceso de software
 

Ähnlich wie Grammarware engineering: un enfoque dirigido por modelos

Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16Ramon
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
Introdución a las Arquitecturas Dirigidas por Modelos
Introdución a las Arquitecturas Dirigidas por ModelosIntrodución a las Arquitecturas Dirigidas por Modelos
Introdución a las Arquitecturas Dirigidas por ModelosRicardo Tesoriero
 
Desarrollo de proyectos de software isc
Desarrollo de proyectos de software iscDesarrollo de proyectos de software isc
Desarrollo de proyectos de software iscAngelica Garcia Garcia
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECmrojas_unitec
 
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareMOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareJavier Muñoz
 
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptMarko Zapata
 
02 proceso ciclodevida
02 proceso ciclodevida02 proceso ciclodevida
02 proceso ciclodevidaclaudiappaez
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareMiguel Sanchez
 
P1 Presentación del curso Sesión 1.pdf
P1 Presentación del curso Sesión 1.pdfP1 Presentación del curso Sesión 1.pdf
P1 Presentación del curso Sesión 1.pdfSebasCastao214KK214
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...
Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...
Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...Argentesting
 
LA INGENIERÍA DE SOFTWARE Y RUP
LA INGENIERÍA DE SOFTWARE Y RUPLA INGENIERÍA DE SOFTWARE Y RUP
LA INGENIERÍA DE SOFTWARE Y RUPKudos S.A.S
 

Ähnlich wie Grammarware engineering: un enfoque dirigido por modelos (20)

Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Introdución a las Arquitecturas Dirigidas por Modelos
Introdución a las Arquitecturas Dirigidas por ModelosIntrodución a las Arquitecturas Dirigidas por Modelos
Introdución a las Arquitecturas Dirigidas por Modelos
 
Desarrollo de proyectos de software isc
Desarrollo de proyectos de software iscDesarrollo de proyectos de software isc
Desarrollo de proyectos de software isc
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareMOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
 
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
 
02 proceso ciclodevida
02 proceso ciclodevida02 proceso ciclodevida
02 proceso ciclodevida
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
P1 Presentación del curso Sesión 1.pdf
P1 Presentación del curso Sesión 1.pdfP1 Presentación del curso Sesión 1.pdf
P1 Presentación del curso Sesión 1.pdf
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...
Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...
Argentesting 2018 - Taller de Buenas prácticas para una interacción exitosa e...
 
Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2
 
Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2
 
Mod 6.2 introducción al análisis
Mod 6.2 introducción al análisisMod 6.2 introducción al análisis
Mod 6.2 introducción al análisis
 
LA INGENIERÍA DE SOFTWARE Y RUP
LA INGENIERÍA DE SOFTWARE Y RUPLA INGENIERÍA DE SOFTWARE Y RUP
LA INGENIERÍA DE SOFTWARE Y RUP
 

Mehr von Patxi Gortázar

Desarrollo web backend: Spring Boot, MongoDB y Azure
Desarrollo web backend: Spring Boot, MongoDB y AzureDesarrollo web backend: Spring Boot, MongoDB y Azure
Desarrollo web backend: Spring Boot, MongoDB y AzurePatxi Gortázar
 
La computación en la nube en el aula
La computación en la nube en el aulaLa computación en la nube en el aula
La computación en la nube en el aulaPatxi Gortázar
 
Path relinking for high dimensional continuous optimization
Path relinking for high dimensional continuous optimizationPath relinking for high dimensional continuous optimization
Path relinking for high dimensional continuous optimizationPatxi Gortázar
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 

Mehr von Patxi Gortázar (7)

Jenkins pipeline
Jenkins pipelineJenkins pipeline
Jenkins pipeline
 
Docker & ci
Docker & ciDocker & ci
Docker & ci
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Desarrollo web backend: Spring Boot, MongoDB y Azure
Desarrollo web backend: Spring Boot, MongoDB y AzureDesarrollo web backend: Spring Boot, MongoDB y Azure
Desarrollo web backend: Spring Boot, MongoDB y Azure
 
La computación en la nube en el aula
La computación en la nube en el aulaLa computación en la nube en el aula
La computación en la nube en el aula
 
Path relinking for high dimensional continuous optimization
Path relinking for high dimensional continuous optimizationPath relinking for high dimensional continuous optimization
Path relinking for high dimensional continuous optimization
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 

Kürzlich hochgeladen

CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024anasofiarodriguezcru
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888ElianaValencia28
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalEmanuelCastro64
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.radatoro1
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfJoseAlejandroPerezBa
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdflauralizcano0319
 

Kürzlich hochgeladen (20)

CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamental
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
 

Grammarware engineering: un enfoque dirigido por modelos

  • 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. 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. 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. 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. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
  • 6. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
  • 7. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
  • 8. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento
  • 9. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Documento Entorno de Desarrollo
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Enfoques MDE para GE  Resumen de los diferentes enfoques Francisco Gortázar Bellas 29
  • 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. 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. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
  • 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. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
  • 35. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
  • 36. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
  • 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. 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. 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. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones MetaCET Francisco Gortázar Bellas 40
  • 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. 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. 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. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Editores Refactorizadores AST Buscadores Parser Vista #1 Documento Vista #2
  • 45. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
  • 46. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
  • 47. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
  • 48. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java
  • 49. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java Parser
  • 50. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java Parser
  • 51. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones for (Ticket t : tickets) { display(t); } Ticket.java Parser
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 66
  • 67. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 67
  • 68. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 68
  • 69. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 69
  • 70. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 70
  • 71. Introducción – EA – MetaCET – Validación – Implementación – Conclusiones Grammarware Engineering en Eclipse Francisco Gortázar Bellas 71
  • 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. 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. 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. 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. 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. 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. 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. 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

Hinweis der Redaktion

  1. Muchas gracias, sr. presidente
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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).
  16. 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.
  17. 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.
  18. 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).
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. Dentro de MDE se pueden distinguir dos tipos diferentes de modelos
  25. 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.
  26. 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.
  27. 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.
  28. Este marco general independiza...
  29. Este marco general independiza...
  30. 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.
  31. Los elementos relevantes desde el punto de vista del AST son, en primer lugar, la declaración de la variable t, de tipo Ticket.
  32. En segundo lugar, la referencia a la variable tickets.
  33. Y en tercer lugar el cuerpo del bucle.
  34. 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
  35. Como un objeto de tipo VarDecl,
  36. Este objeto contiene un valor t para el atributo name, y un valor ticket para el atributo type.
  37. 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.
  38. 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.
  39. 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.
  40. En el caso de VarDecl la representación textual se limita a un tipo y un nombre.
  41. La representación textual de la clase VarRef contiene exclusivamente el nombre de la variable que se referencia.
  42. 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.
  43. 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.
  44. 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.
  45. Muchas gracias, sr. presidente
  46. 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.