Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informtica y
Sistemas
Contenidos
Introduccin
Metamodelado
Elementos de un DSL
Sintaxis abstracta
Sintaxis concreta
Semntica
06/08/15
DSDM
Introduccin
Introduccin
Necesidad de:
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
Sintaxis de serializacin
Semntica
Metamodelado
Transformaciones
Extensibilidad
Qu abarca un metamodelo?
Herramientas de metamodelado
Creacin de un DSL
Cinco etapas:
Sintaxis abstracta
Reglas de semntica esttica
Sintaxis concreta
Semntica
Transformaciones
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}
}
Identificacin de conceptos
Sintaxis abstracta
Dos tcnicas:
Metamodelado
Gramticas libres de contexto
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
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
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
Sintaxis concreta
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
asignar
Asignado
No asignado
desasignar
setEspecif
Retirado
Devuelto
devolver
Otras cuestiones
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
Uso de un depurador
machineTrace
ObjectTrace
0..1
0..1
* value
StateMachin
e
Value
Object
Trace
guid : Guid
lifeline
value
machineValue
objectTrace
*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
setEspecif (01)
cocheAsignado = null
especifReserva = 01
No asignado
asignar (02)
cocheAsignado = 02
especifReserva = 01
Asignado
Model
valueFor
ModelTrace
ModelValue
traceFor
Class
valueFor
ObjectTrace
ObjectValue
traceFor
Method
MethodInvocation
Reglas OCL