Sie sind auf Seite 1von 18

THE PROJECT

Análisis de Lenguajes Específicos de


Dominio para Sistemas Embebidos

Resultados Preliminares
Ander Zubizarreta
Arrasate, 30 Enero 2009
la idea

 Analysis of DSL (Domain Specific Languages)


 State-of-the-art: problems
 Concepts: models, metamodels, transformations
 Tools: commercial & academic

 Trabajo realizado
 Entender conceptos
 Probar herramientas
 Hacer pequeños ejemplos
Domain Specific Languages

 Ideas fundamentales
 Higher-level abstraction than general purpose languages
 Closer to the problem domain than to the implementation
domain
 Closer to the domain experts, allowing modelers to perceive
themselves as working directly with domain concepts

 Mas:
 Domain rules can be included into the language as constraints,
disallowing the specification of illegal or incorrect models
 Languages for representing different views of a system in
terms of models
¿Cuándo usar DSLs?

 Cuando …
 … un lenguaje de
 modelado de proposito general (e.g. UML )
 NO proporciona
 la expresividad que necesitamos
 en nuestro dominio

 … un lenguaje de
 programación de proposito general (e.g. C, C++, Java)
 NO proporciona
 las abstracciones que necesitamos
 en nuestro dominio
Terminologia

 Modelo:
 “represents a part of the reality called the object system and is
expressed in a modeling language.
 A model provides knowledge for a certain purpose that can be
interpreted in terms of the object system”
 Metamodelo:
 A model of models (definición del modelo. Define qué elementos y
cómo se utilizaran en el modelo).
 Transformación:
 Transformación Model-to-model, model-to-text
 RuleSets:
 Conjunto de reglas que definen la transformación de un modelo a otro,
normalmente haciendo un mapping entre los elementos de sus respectivos
metamodelos
 Templates:
 Plantillas de texto utilizadas para generar código de los modelos
Conceptos
 DSLs are defined in terms of
 Abstract syntax (domain concepts and rules)
 Concrete syntax (language representation)
 Metamodels used to represent the abstract syntax
 Models “conform to” metamodels
 Metamodels are models, too

EBNF
Level M3
the MOF
 A metamodel conforms MMM

to its meta-metamodel

the Pascal
grammar
 This tower usually ends Level M2 the SPEM
MM
the UML
MM
the CWM
MM

at level 4

program P
a Pascal
Level M1 a UML another UML
model m model m’

an execution
program P
Level M0

X of
a particular another
use of m use of m
Problemas (MUCHOS!)

 Representacion
 Definicion de DSL
 Lenguajes de modelos, metamodelos (e.g. Ecore)
 Restricciones
 Generación de código
 Transformaciones
 modelo a modelo
 modelo a texto
 Primitivas de transformacion
 Model queries
 RuleSets, Templates, Scripts
 Más: debug, model operations (merge), simulación, etc
Escenarios de Aplicación (i)

Metamodels

Doc
<<conformsTo>> <<transforms>> <<conformsTo>>

Models

Code
M2M
M2T

Tests
Escenarios de Aplicación (ii)

 UML “típico”
 Diseñamos un sistema con UML
 Queremos generar cierto código repetitivo
 Estructural: estructura de paquetes/clases
 Comportamiento: diagramas de estados
 Limitaciones:
 Especificar la semantica es complicado
 Existen ASL (Action Semantic Languages), pero acaban siendo
lenguajes de programacion genericos
Escenarios de Aplicación (iii)

 Nos “inventamos” un DSL


 Diseñamos una parte del sistema con el DSL
 Definimos como va a ser el codigo que queremos
generar
 Es decir, tenemos
 Metamodelo origen (DSL)
 Metamodelo destino (Codigo)
 Solucion
 Definimos transformaciones (rulesets, templates, etc)
 Se modelan los conceptos del dominio (no codigo)
 Limitaciones:
 Conocer el dominio es complicado
 Siempre puede haber algun concepto que se “olvida”
Herramientas: estudio de mercado
 MetaEdit+
 Herramienta para crear lenguajes gráficos de modelado y modelar
con ellos. Se puede generar código de los modelos creados.
 Eclipse (entorno)
 EMF (Eclipse Modeling Framework):
 Plugin de Eclipse con herramientas para trabajar con modelos. Basándose en un
metamodelo, permite generar código y crear editores de modelos. Usa el
lenguaje de mtamodelado Ecore, pero también permite importar UML y XML
Schema.
 GEF (Graphical Editing Framework) & GMF (Graphical Modeling
Framework)
 Plugins que permiten crear editores gráficos para modelar
 AGE (Agile Generative Environment)
 Herramienta basada en Ruby y Eclipse, que mediante el lenguaje de
trasnformación RubyTL permite definir transformaciones de modelos y generar
código
Herramienta MDWorkbench
 MDWorkbench
 Basada en EMF (eclipse)
 forma fácil de ver y editar los
MM, modelos y transformaciones
 Lenguajes propios:
 MQL para tranformacion entre modelos y
 TGL para generación de código.
 Tambien permite incluir código Java en las transformaciones.

 Seleccionada por:
 Facilidad para navegar entre los elementos del modelo
 Facilidad para escribir transformaciones
 Se puede generar documentación en word
 Abundancia de documentacion
Ejemplos

 Ejemplos Realizados
 [M2Model] UML (SC) to SCXML
 [M2Text] DSL to C++
 [M2Text] SCXML to C++

 Ejemplos para hacer


 [M2Model] SysML to DSL
 [M2Text] SPEM to Ant
Pasos seguidos:
Ejemplos Realizados (i) 2)Definir modelo
3)Definir las reglas de
 [M2Model] UML to SCXML transformación
4)Aplicar la tranformación al
modelo
UML
running

M2M
[mvOffOn()==TRUE]
Idle Off On
tm(10)/doInit();
loadVariables(); doOff() doOn()

[mvOnOff()==TRUE]
SCXML

input

ouotput
Ruleset
Pasos seguidos:
Ejemplos Realizados(ii) 2)Definir modelo
3)Definir las reglas de
 [M2Text] DSL to C++ transformación y plantillas
4)Aplicar la transformación al
modelo
C++
DSL
M2T

in
Rules +
Templates out
Pasos seguidos:
Ejemplos Realizados (iii) 2)Definir modelo
3)Definir las reglas de
 [M2Text] SCXML to C++ transformación y templates
4)Aplicar la tranformación al
modelo

SCXML C++

M2T

out
in
Rules +
Templates
Ejemplos para hacer
 [M2Model] SysML to DSL
 Dibujar modelo en SysML (2 posib: XMI o AP233)
 Aplicar transformación a DSL

 [M2Text] SPEM to ANT


 Automatizar el proceso
 Dibujar el proceso en SPEM
 Generar ANT que ejecute todo el proceso

M2T
build.xml
Demo

Sysdef code generation using


MDWorkbench

Ander Zubizarreta 9/1/2009