Tema 3. Creaci - PowerPoint PPT Presentation

1 / 37
About This Presentation
Title:

Tema 3. Creaci

Description:

Departamento de Inform tica y Sistemas Tema 3. Creaci n de DSL Postgrado Inform tica y Matem ticas Aplicadas a la Ciencia e Ingenier a Jes s Garc a Molina – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 38
Provided by: Jes137
Category:
Tags: creaci | lenguaje | origen | tema

less

Transcript and Presenter's Notes

Title: Tema 3. Creaci


1
Tema 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
2
Contenidos
  • 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

3
Introducció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.

4
Introducció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.

5
Introducción
Metamodelado es un marco teórico para crear DSL
6
Elementos 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

7
Metamodelado
  • 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

8
Arquitectura de cuatro capas
9
Creació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

10
Ejemplo 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
11
Descripció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.

12
Creació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.

13
Sintaxis 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.

14
BNF 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

15
BNF para DSL Simple
  • StateMachine Root
  • Root State
  • State StateName (StartState)? (State)
    (Transition)
  • StateName Identifier
  • StartState StateRef
  • Transition MethodRef StateRef
  • MethodRef Identifier
  • StateRef Identifier

16
AST
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
17
Limitaciones 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.

18
Metamodelo (I)
ltltdatatypegtgt Identifier
19
Metamodelo (II)
20
BNF 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

21
AST-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
22
Restricciones 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

23
Metamodelos 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.

24
Sintaxis 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

25
Sintaxis 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.

26
Sintaxis Concreta Gráfica
AlquilerCoches
asignar
Asignado
No asignado
desasignar
setEspecif
Devuelto
Retirado
devolver
27
Sintaxis Concreta Gráfica
AlquilerCoche
cocheAsignado Coche especifReserva
EspecifCoche
setEspecif (espec EspecifCoche) asignar
(cCoche) desasignar() recoger() devolver()
name ( argument.name argument.type.name
)
28
Otras 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

29
Intercambio 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

30
LeafElement
Metamodelo DI
31
Metamodelo DI
32
Herramientas
  • Sintaxis Textual
  • Xtext en OpenArchitectureWare
  • TCS para AMMA
  • Sintaxis gráfica
  • GMF para EMF/Eclipse
  • Metaedit
  • GME

33
Semá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.

34
Semá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

35
Sintaxis 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
36
Sintaxis 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
37
Mapping DSL- Lenguaje de trazas
ModelTrace
traceFor
Model
1
1
valueFor
ModelValue
Reglas OCL
ObjectTrace
traceFor
Class
1
1
valueFor
ObjectValue
MethodInvocation
traceFor
Method
1
Write a Comment
User Comments (0)
About PowerShow.com