Está en la página 1de 37

Departamento de

Informtica y
Sistemas

Tema 3. Creacin de DSL

Postgrado Informtica y Matemticas Aplicadas


a la Ciencia e Ingeniera
Jess Garca Molina
Departamento de Informtica y Sistemas
Universidad de Murcia
http://dis.um.es/~jmolina

Contenidos

Introduccin
Metamodelado
Elementos de un DSL
Sintaxis abstracta
Sintaxis concreta
Semntica

Etapas en la creacin de un DSL


Familias de Lenguajes
Reutilizacin
Lenguajes para sintaxis concreta

06/08/15

DSDM

Introduccin

DSDM requiere lenguajes apropiados para describir


todos los aspectos de los sistemas y a diferentes
niveles de abstraccin.
Lenguajes de modelado son lenguajes especficos
del dominio (DSL).
DSL son un elemento clave en las factoras de
software (lneas de producto).
Programacin orientada a los lenguajes, Ingeniera
del software de lenguajes, Desarrollo Especfico del
dominio.

Introduccin

Lenguajes son una parte importante de desarrollo:

Necesidad de:

Nivel apropiado de abstraccin a travs de mltiples


lenguajes.
Transformaciones
Composicin
Evolucin
Extensibilidad
Sincronizacin

Frameworks para la creacin de DSL que permiten


adems adaptarlos o extenderlos para crear nuevos
DSL.

Introduccin
Metamodelado es un marco terico para crear DSL
Sintaxis
concreta

Sintaxis
abstracta

Semntica

Sintaxis
de serializacin

Elementos de un lenguaje

Sintaxis abstracta

Sintaxis concreta

Define cmo los elementos del lenguaje aparece en una


notacin visual o textual utilizable por las personas

Sintaxis de serializacin

Define los diferentes elementos del lenguaje y las reglas


que establecen cmo pueden ser combinados

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.

Semntica

Define el significado del lenguaje

Metamodelado

Transformaciones

Extensibilidad

Los lenguajes pueden cambiar a lo largo del tiempo

Qu abarca un metamodelo?

Los lenguajes estn relacionados

Sintaxis abstracta, sintaxis concreta y semntica


Normalmente sintaxis abstracta (y restricciones estticas)

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
Ejecucin, anlisis y testing

Arquitectura de cuatro capas

Creacin de un DSL

Cinco etapas:

Sintaxis abstracta
Reglas de semntica esttica
Sintaxis concreta
Semntica
Transformaciones

Varios grados de formalidad.


Elegir una arquitectura de metamodelado con un
lenguaje de metamodelado:

Clases, Paquetes, Atributos, Operaciones, OCL

Ejemplo: DSL Simple


AlquilerCoche
desasignar

AlquilerCoche
cocheAsignado : Coche
especifReserva : EspecifCoche
setEspecif (espec: EspecifCoche)
asignar (c:Coche)
desasignar()
recoger()
devolver()

Coche
especificacion : EspecifCoche
setEspecif (espec:
EspecifCoche)

Asignado

No asignado

setEspec

Devuelto

recoger

asignar

devolver

Fuera

EspecifCoche
class AlquilerCoche {
setEspecif(spec) {especifReserva = spec}
asignar(c) {cocheAsignado = c}
desasignar() {cocheAsignado = null}
}

class Car {
setEspecif(spec) {
especificacion = spec}
}

Descripcin DSL Simple

Un modelo est formado por una o ms clases.


Una clase tiene cero o ms atributos y cero o ms mtodos
En el cuerpo de un mtodo se puede asignar valores a atributos
Una clase puede ser asociada a una mquina de estados que
establece restricciones sobre el orden en el que pueden
invocarse los mtodos.
Un estado puede tener estados anidados
Existe un estado raz que se llama igual que la clase asociada.
Cada transicin tiene un estado origen y otro destino y debe ser
etiquetada por un mtodo de la clase.
Existe un estado inicial que se liga a uno de los estados
No hay asociaciones entre clases
Se usa notacin UML para la sintaxis concreta grfica y tambin
texto para representar las clases y sus mtodos.

Creacin de la sintaxis abstracta

Identificacin de conceptos

A partir de una lista de conceptos candidatos

Construir modelos ejemplo


Identificar casos de uso del lenguaje
No se deben considerar conceptos ligados a la notacin.

Crear un modelo conceptual

Que tengan un nombre


Que contengan otros conceptos
Que registren informacin sobre relaciones entre dos conceptos.
Que muestren una relacin tipo/instancia
Que se puedan componer recursivamente
Que son parte (o estn asociados a) de una expresin

Posibilidad de reutilizar uno existente

Escribir las reglas de semntica esttica


Validar y chequear el metamodelo.

Sintaxis abstracta

Elementos atmicos y compuestos

Las reglas o relaciones establecen como se forman los


elementos compuestos a partir de otros elementos

Dos tcnicas:
Metamodelado
Gramticas libres de contexto

Normalmente DSL grficos con metamodelos y DSL


textuales con gramticas
Grammarware vs. Modelware
En el caso de usar gramticas se usan extensiones
de BNF.

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

BNF para DSL Simple


StateMachine ::= Root
Root := State
State ::= StateName (StartState)? (State)* (Transition)*
StateName ::= Identifier
StartState ::= StateRef
Transition ::= MethodRef StateRef
MethodRef ::= Identifier
StateRef ::= Identifier

AST

:Model

:Class

:ClassName

:Feature

AlquilerCoche : Identifier

:StateMachine

:Attribute

:AttributeName

cocheAsignado : Identifier

:Class

:Root

:State

:TypeRef

coche : Identifier

:StateName

AlquilerCoche : Identifier

:State

:StateName

:StartState

:Transition

:MethodRef

:StateRef

:StateRef

NoAsignado : Identifier

NoAsignado : Identifier
SetEspecif : Identifier
NoAsignado : Identifier

Limitaciones Gramticas

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 podra definir la sintaxis concreta al tiempo que la


sintaxis concreta

Xtext y TCS son lenguajes para definir sintaxis concretas


que tambin expresan la sintaxis abstracta.

Metamodelo (I)
Model

model

element ModelElement
0..n

StateMachine

machine
0..1

maquina

start
1
parent
0..1

class

class

Class

<<datatype>>
Identifier

feature
0..n

Feature
nombre : String

0..1

1 root
State
nombre : String

target

1
1 source
0..n child

Transition

invoked
1

0..n

sourceOf

Method

Attribute

Metamodelo (II)
0..1
child

parent

Statement

body

0..n

method Method
1

rhs

AssignedElement

method
1

TypedElement

lhs

Attribute
1

type

Type

0..n
Argument
name : Identifier argument

Class

BNF a metamodelos

No terminales representados como clases


Reglas de produccin corresponden a relaciones de
composicin.
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 repeticin se representan con


multiplicidades.
Referencias son representadas con asociaciones con
navegabilidad
Todas las composiciones son bidireccionales

AST-Instancia de un metamodelo
:Model

element

element

element
:Class

:Class

name = AlquilerCoche

name = Coche

.
feature

feature
:Method

:Attribute

name = Coche

name = CocheAsignado

invoked

machine

root

:State

name = AlquilerCoches

:StateMachine
child
sourceOf

:State

:Transition

name = NoAsignado
target

Restricciones OCL
context Transition
inv sameMachine: target.root().machine =
source.root().machine
context State::body()
body: if parent = null then self
else parent.root()
context AssigmentStatement
inv: lhs.type = rhs.type

Metamodelos y Gramticas

Un metamodelo tiene ms potencia expresiva que un


CFG
Generacin de AST a partir de una especificacin
textual conforme a una gramtica puede ser
automatizada. Construccin de un AST es un paso
previo a construir un ASG.
Lenguajes grficos tienen una estructura de grafo en
vez de rbol, ms apropiado usar metamodelos.

Sintaxis concreta

Puede ser textual o grfica.


Notacin textual
Tema bastante conocido : GrammarWare
Herramientas muy extendidas: ANTLR, SableCC,..
Conexin de grammarware con modelware.
TCS y Xtext son lenguajes para definir la sintaxis concreta
de un metamodelo.

Notacin grfica
Se deben crear herramientas que pemitan asociar una
notacin al metamodelo y crear editores
GMF para metamodelos Ecore
Herramientas propietarias: DSL Tools, Metaedit, GME

Sintaxis concreta grfica

En nuestro ejemplo de metamodelo:

Un estado se dibuja como un rectngulo con esquinas redondeadas.


El nombre de un estado sin hijos aparece en el centro del rectngulo
que lo representa.
El nombre de un estado con hijos aparece en la parte superior del
rectngulo separado por una lnea recta.
Una mquina de estado no tiene notacin propia se representa por el
smbolo de su estado raz.
Estados hijos son topolgicamente anidados, se colocan dentro de su
estado padre, en el compartimiento debajo de la lnea recta bajo el
nombre.
Transiciones son representadas pro flechas dirigidas del estado fuente
al destino.
Los nombres de los mtodos se colocan sobre la flecha de la transicin.
El estado inicial se designa asocindole un pequeo crculo negro
conectado por una flecha.

Sintaxis Concreta Grfica


AlquilerCoches

asignar

Asignado

No asignado
desasignar
setEspecif

Retirado

Devuelto
devolver

Sintaxis Concreta Grfica


AlquilerCoche
cocheAsignado : Coche
especifReserva : EspecifCoche
setEspecif (espec: EspecifCoche)
asignar (c:Coche)
desasignar()
recoger()
devolver()

name ( argument.name : argument.type.name )

Otras cuestiones

Servicios de edicin: seleccionar, cortar, pegar,


mover smbolos.
Pueden cruzarse las transiciones?
Cmo se calcula el tamao de los smbolos?
Formato de texto embebido en un diagrama?
Cmo se posiciona el nombre de los mtodos sobre
las transiciones?
Asignacin de colores a las figuras

Intercambio de modelos grficos

Especificacin Interchange Diagram de OMG.


Extensin del metamodelo de UML y XMI (XMI[UML+DI])
Posibilidad de incluir informacin grfica de un modelo en
un fichero XMI que serializa al modelo.
Una opcin es crear una representacin en SVG

LeafElement

Metamodelo DI

Metamodelo DI

Herramientas

Sintaxis Textual
Xtext en OpenArchitectureWare
TCS para AMMA

Sintaxis grfica
GMF para EMF/Eclipse
Metaedit
GME

Semntica de traduccin

Un lenguaje de modelado o DSL se traduce a otro


lenguaje que ya tiene una semntica bien definida
y que posiblemente es ejecutable, por ejemplo el
conjunto de instrucciones de un procesador.
Transformaciones modelo a modelo o modelo a
cdigo.

Semntica basada en la traza

Uso de un depurador

Se ejecuta la especificacin y se interpreta la traza.

Se define un lenguaje de traza de la ejecucin


grfico o textual.
Se establece una correspondencia entre las
expresiones del DSL y las trazas.

De forma constructiva o declarativa

Sintaxis abstracta de un lenguaje de trazas


StateMachine
Trace
guid : Guid
lifeline

machineTrace

ObjectTrace

0..1

0..1

* value
StateMachin
e
Value

Object
Trace
guid : Guid
lifeline

value
machineValue

objectTrace

modelTrace guid : Guid

*1

ObjectValue

post

Method

0..1

1
invocation

pre
1

stateValue

StateValue

Model
Trace

invocation 1

1
target

1
1
source

0..1
sourceOf

Transition
Ocurrence

Attribute
attributeValue Value

argValue

Argument
Value

Sintaxis concreta de un lenguaje de trazas


03:AlquilerCoches
cocheAsignado = null
especifReserva = null
No asignado

setEspecif (01)

cocheAsignado = null
especifReserva = 01
No asignado

asignar (02)

cocheAsignado = 02
especifReserva = 01
Asignado

Mapping DSL- Lenguaje de trazas


traceFor

Model
valueFor

ModelTrace

ModelValue

traceFor

Class
valueFor

ObjectTrace

ObjectValue

traceFor

Method

MethodInvocation

Reglas OCL

También podría gustarte