Title: Tema 3. Creaci
1Tema 3. Creación de DSL
Departamento de Informática y Sistemas
Postgrado Informática y Matemáticas Aplicadas
a la Ciencia e Ingeniería
Jesús García Molina Departamento de Informática y
Sistemas Universidad de Murcia http//dis.um.es/j
molina
2Contenidos
- Introducción
- Metamodelado
- Elementos de un DSL
- Sintaxis abstracta
- Sintaxis concreta
- Semántica
- Etapas en la creación de un DSL
- Familias de Lenguajes
- Reutilización
- Lenguajes para sintaxis concreta
3Introducción
- DSDM requiere lenguajes apropiados para describir
todos los aspectos de los sistemas y a diferentes
niveles de abstracción. - Lenguajes de modelado son lenguajes específicos
del dominio (DSL). - DSL son un elemento clave en las factorías de
software (líneas de producto). - Programación orientada a los lenguajes,
Ingeniería del software de lenguajes, Desarrollo
Específico del dominio.
4Introducción
- Lenguajes son una parte importante de desarrollo
- Nivel apropiado de abstracción a través de
múltiples lenguajes. - Necesidad de
- Transformaciones
- Composición
- Evolución
- Extensibilidad
- Sincronización
- Frameworks para la creación de DSL que permiten
además adaptarlos o extenderlos para crear nuevos
DSL.
5Introducción
Metamodelado es un marco teórico para crear DSL
6Elementos de un lenguaje
- Sintaxis abstracta
- Define los diferentes elementos del lenguaje y
las reglas que establecen cómo pueden ser
combinados - Sintaxis concreta
- Define cómo los elementos del lenguaje aparece en
una notación visual o textual utilizable por las
personas - Sintaxis de serialización
- Es una sintaxis concreta pero no destinada a su
uso por las personas sino a la persistencia e
intercambio de las especificaciones expresadas
con el lenguaje. - Semántica
- Define el significado del lenguaje
7Metamodelado
- Transformaciones
- Los lenguajes están relacionados
- Extensibilidad
- Los lenguajes pueden cambiar a lo largo del
tiempo - Qué abarca un metamodelo?
- Sintaxis abstracta, sintaxis concreta y semántica
- Normalmente sintaxis abstracta (y restricciones
estáticas) - Herramientas de metamodelado
- Editor de sintaxis abstracta
- Editor de sintaxis concreta (mapping con
sintaxis abstracta) - Crear editores para los lenguajes creados
- Almacenar modelos de los lenguajes creados
- Ejecución, análisis y testing
8Arquitectura de cuatro capas
9Creación de un DSL
- Cinco etapas
- Sintaxis abstracta
- Reglas de semántica estática
- Sintaxis concreta
- Semántica
- Transformaciones
- Varios grados de formalidad.
- Elegir una arquitectura de metamodelado con un
lenguaje de metamodelado - Clases, Paquetes, Atributos, Operaciones, OCL
10Ejemplo DSL Simple
AlquilerCoche
desasignar
AlquilerCoche
cocheAsignado Coche especifReserva
EspecifCoche
Asignado
No asignado
setEspecif (espec EspecifCoche) asignar
(cCoche) desasignar() recoger() devolver()
recoger
asignar
setEspec
Coche
Fuera
Devuelto
especificacion EspecifCoche
setEspecif (espec EspecifCoche)
devolver
EspecifCoche
class AlquilerCoche setEspecif(spec)
especifReserva spec asignar(c)
cocheAsignado c desasignar()
cocheAsignado null
class Car setEspecif(spec)
especificacion spec
11Descripción DSL Simple
- Un modelo está formado por una o más clases.
- Una clase tiene cero o más atributos y cero o más
métodos - En el cuerpo de un método se puede asignar
valores a atributos - Una clase puede ser asociada a una máquina de
estados que establece restricciones sobre el
orden en el que pueden invocarse los métodos. - Un estado puede tener estados anidados
- Existe un estado raíz que se llama igual que la
clase asociada. - Cada transición tiene un estado origen y otro
destino y debe ser etiquetada por un método de la
clase. - Existe un estado inicial que se liga a uno de los
estados - No hay asociaciones entre clases
- Se usa notación UML para la sintaxis concreta
gráfica y también texto para representar las
clases y sus métodos.
12Creación de la sintaxis abstracta
- Identificación de conceptos
- A partir de una lista de conceptos candidatos
- Que tengan un nombre
- Que contengan otros conceptos
- Que registren información sobre relaciones entre
dos conceptos. - Que muestren una relación tipo/instancia
- Que se puedan componer recursivamente
- Que son parte (o están asociados a) de una
expresión - Construir modelos ejemplo
- Identificar casos de uso del lenguaje
- No se deben considerar conceptos ligados a la
notación. - Crear un modelo conceptual
- Posibilidad de reutilizar uno existente
- Escribir las reglas de semántica estática
- Validar y chequear el metamodelo.
13Sintaxis abstracta
- Elementos atómicos y compuestos
- Las reglas o relaciones establecen como se forman
los elementos compuestos a partir de otros
elementos - Dos técnicas
- Metamodelado
- Gramáticas libres de contexto
- Normalmente DSL gráficos con metamodelos y DSL
textuales con gramáticas - Grammarware vs. Modelware
- En el caso de usar gramáticas se usan extensiones
de BNF.
14BNF para DSL Simple
- Model (ModelElement)
- ModelElement Class
- Class ClassName (Features) (StateMachine)?
- ClassName Identifier
- Feature Attribute Method
- Attribute AttributeName TypeRef
- AttributeName Identifier
- TypeRef Identifier
- Method MethodName (Argument) Statement
- Argument ArgumentName TypeRef
- ArgumentName Identifier
- Statement (Statement) AssignmentStatement
- AssignmentStatement LHS RHS
- LHS AttributeRef
- AttributeRef Identifier
- RHS AttributeRef ArgumentRef
- ArgumentRef Identifier
15BNF para DSL Simple
- StateMachine Root
- Root State
- State StateName (StartState)? (State)
(Transition) - StateName Identifier
- StartState StateRef
- Transition MethodRef StateRef
- MethodRef Identifier
- StateRef Identifier
16AST
Model
Class
Class
Feature
ClassName
StateMachine
Root
Attribute
AlquilerCoche Identifier
State
AttributeName
TypeRef
cocheAsignado Identifier
coche Identifier
StateName
State
StartState
AlquilerCoche Identifier
StateName
Transition
StateRef
MethodRef
StateRef
NoAsignado Identifier
NoAsignado Identifier
SetEspecif Identifier
NoAsignado Identifier
17Limitaciones Gramáticas
- No es posible compartir nodos entre diferentes
padres. - AST (Abstract Syntax Tree) es un árbol no es un
grafo - Necesidad de referencias
- En el caso anterior referencias a estados,
atributos y argumentos que son identificadores de
texto. - Se podría definir la sintaxis concreta al tiempo
que la sintaxis concreta - Xtext y TCS son lenguajes para definir sintaxis
concretas que también expresan la sintaxis
abstracta.
18Metamodelo (I)
ltltdatatypegtgt Identifier
19Metamodelo (II)
20BNF a metamodelos
- No terminales representados como clases
- Reglas de producción corresponden a relaciones de
composición. - Una regla con varias alternativas en la parte
izquierda se representa mediante herencia. - No terminales que corresponden a un elemento
primitivo pueden ser representados como atributos - Por ejemplo, nombre de la clase
- Elementos de repetición se representan con
multiplicidades. - Referencias son representadas con asociaciones
con navegabilidad - Todas las composiciones son bidireccionales
21AST-Instancia de un metamodelo
Model
element
element
element
Class name AlquilerCoche
Class name Coche
.
.
feature
feature
Method name Coche
Attribute name CocheAsignado
State name AlquilerCoches
invoked
root
machine
StateMachine
child
sourceOf
State name NoAsignado
Transition
target
22Restricciones OCL
- context Transition
- inv sameMachine target.root().machine
- source.root().machine
- context Statebody()
- body if parent null then self
- else parent.root()
- context AssigmentStatement
- inv lhs.type rhs.type
23Metamodelos y Gramáticas
- Un metamodelo tiene más potencia expresiva que un
CFG - Generación de AST a partir de una especificación
textual conforme a una gramática puede ser
automatizada. Construcción de un AST es un paso
previo a construir un ASG. - Lenguajes gráficos tienen una estructura de grafo
en vez de árbol, más apropiado usar metamodelos.
24Sintaxis concreta
- Puede ser textual o gráfica.
- Notación textual
- Tema bastante conocido GrammarWare
- Herramientas muy extendidas ANTLR, SableCC,..
- Conexión de grammarware con modelware.
- TCS y Xtext son lenguajes para definir la
sintaxis concreta de un metamodelo. - Notación gráfica
- Se deben crear herramientas que pemitan asociar
una notación al metamodelo y crear editores - GMF para metamodelos Ecore
- Herramientas propietarias DSL Tools, Metaedit,
GME
25Sintaxis concreta gráfica
- En nuestro ejemplo de metamodelo
- Un estado se dibuja como un rectángulo con
esquinas redondeadas. - El nombre de un estado sin hijos aparece en el
centro del rectángulo que lo representa. - El nombre de un estado con hijos aparece en la
parte superior del rectángulo separado por una
línea recta. - Una máquina de estado no tiene notación propia se
representa por el símbolo de su estado raíz. - Estados hijos son topológicamente anidados, se
colocan dentro de su estado padre, en el
compartimiento debajo de la línea recta bajo el
nombre. - Transiciones son representadas pro flechas
dirigidas del estado fuente al destino. - Los nombres de los métodos se colocan sobre la
flecha de la transición. - El estado inicial se designa asociándole un
pequeño círculo negro conectado por una flecha.
26Sintaxis Concreta Gráfica
AlquilerCoches
asignar
Asignado
No asignado
desasignar
setEspecif
Devuelto
Retirado
devolver
27Sintaxis Concreta Gráfica
AlquilerCoche
cocheAsignado Coche especifReserva
EspecifCoche
setEspecif (espec EspecifCoche) asignar
(cCoche) desasignar() recoger() devolver()
name ( argument.name argument.type.name
)
28Otras cuestiones
- Servicios de edición seleccionar, cortar, pegar,
mover símbolos. - Pueden cruzarse las transiciones?
- Cómo se calcula el tamaño de los símbolos?
- Formato de texto embebido en un diagrama?
- Cómo se posiciona el nombre de los métodos sobre
las transiciones? - Asignación de colores a las figuras
29Intercambio de modelos gráficos
- Especificación Interchange Diagram de OMG.
- Extensión del metamodelo de UML y XMI
(XMIUMLDI) - Posibilidad de incluir información gráfica de un
modelo en un fichero XMI que serializa al modelo. - Una opción es crear una representación en SVG
30LeafElement
Metamodelo DI
31Metamodelo DI
32Herramientas
- Sintaxis Textual
- Xtext en OpenArchitectureWare
- TCS para AMMA
- Sintaxis gráfica
- GMF para EMF/Eclipse
- Metaedit
- GME
33Semántica de traducción
- Un lenguaje de modelado o DSL se traduce a otro
lenguaje que ya tiene una semántica bien definida
y que posiblemente es ejecutable, por ejemplo el
conjunto de instrucciones de un procesador. - Transformaciones modelo a modelo o modelo a
código.
34Semántica basada en la traza
- Uso de un depurador
- Se ejecuta la especificación y se interpreta la
traza. - Se define un lenguaje de traza de la ejecución
gráfico o textual. - Se establece una correspondencia entre las
expresiones del DSL y las trazas. - De forma constructiva o declarativa
35Sintaxis abstracta de un lenguaje de trazas
StateMachine Trace
Object Trace
Model Trace
objectTrace
machineTrace
1
ObjectTrace
guid Guid
guid Guid
guid Guid
0..1
0..1
1
modelTrace
1
1
lifeline
0..1
lifeline
1
value
value
machineValue
post
Method
StateMachine Value
ObjectValue
1
0..1
1
1
invocation
pre
invocation
1
1
stateValue
1
Attribute Value
target
argValue
Transition Ocurrence
StateValue
Argument Value
1
attributeValue
0..1
1
sourceOf
source
36Sintaxis concreta de un lenguaje de trazas
03AlquilerCoches
cocheAsignado null especifReserva null
No asignado
setEspecif (01)
cocheAsignado null especifReserva 01
No asignado
asignar (02)
cocheAsignado 02 especifReserva 01
Asignado
37Mapping DSL- Lenguaje de trazas
ModelTrace
traceFor
Model
1
1
valueFor
ModelValue
Reglas OCL
ObjectTrace
traceFor
Class
1
1
valueFor
ObjectValue
MethodInvocation
traceFor
Method
1