Está en la página 1de 35

Taller de Ingeniería Dirigida

por Modelos (TMDE)


Lenguajes y Sintaxis Concreta
Objetivos de hoy
• Comprender el rol de los Lenguajes de
Dominio Específico (DSL) y su diferencia
con los Lenguajes de Propósito General
(GPL)
• Presentar la noción de sintaxis concreta,
tanto visual como textual
Dinámica

Juguemos a “crear un nuevo lenguaje”


GPL vs DSL
• Lenguajes de Dominio Específico (DSL)
son lenguajes de modelado diseñados
para un sector o dominio específico
• Lenguajes de Propósito General (GPL)
son lenguajes de modelado que pueden
ser aplicados a cualquier sector o
dominio
GPL vs DSL
Parece que
estás buscando
una respuesta

• Determinar si un lenguaje es DSL o GPL es


una cuestión subjetiva
• UML puede ser visto como un GPL o un DSL
para la especificación de software (OO)
• Para algunos dominios (ej. diseño de GUI)
UML no es la mejor opción
• Al crear un DSL se puede terminar
repitiendo los mismos errores que se han
solucionado (o identificado) con UML
GPL vs DSL :: ventajas de DSL
• Permiten expresar un problema usando una
notación más natural para los expertos
• Permiten incrementar la usabilidad,
mantenibilidad y reutilización de los modelos
• Permiten expresar un problema al nivel de
abstracción adecuado
• Suelen ser más “compactos”, expresivos y
precisos, así como menos complejos
• En muchos casos es más sencillo desarrollar
herramientas para gestionar DSL que GPL
GPL vs DSL :: desventajas de DSL
Parece que
• La curva de aprendizaje de cada estás buscando
una respuesta
lenguaje nuevo no es despreciable
• El diseño, implementación y mantenimiento
de un DSL no son tareas sencillas, más si se
debe mantener las herramientas asociadas
• La definición descontrolada de DSLs puede
producir incompatibilidades por el uso de
diferentes DSL para el mismo problema
• Puede existir una mayor dificultad para
integrar un DSL con los sistemas existentes
Principios de DSL
• Deben proveer buenas abstracciones y ser
intuitivos
• Su definición debe ser acordada en toda la
organización
• Deben evolucionar y estar actualizados acorde
a las necesidades de los usuarios y el contexto
• Deben estar acompañados de herramientas y
métodos de soporte
• Deben ser abiertos para extensiones y cerrados
para modificaciones (open-close principle)
Clasificación :: Notación
• Gráficos: lenguajes gráficos suelen ser más
expresivos e intuitivos que los textuales
• Textuales: involucran notaciones en XML, texto
estructurado, archivos de configuración, etc.
– Los DSL textuales permiten capturar más
complejidad
• La notación debería ser independiente de la
sintaxis abstracta y de la semántica
• Suele ser conveniente usar una combinación
de ambos tipos (como sucede con UML)
Clasificación :: Foco
• Verticales: con foco en una industria
específica
– Ejemplos: lenguajes de configuración para
domótica, lenguajes de modelado de
experimentos biológicos
• Horizontales: aplicación más amplia
– Ejemplos: SQL, WebML.
Clasificación :: Estilo
Parece que
estás buscando
una respuesta

• Declarativos: expresan la lógica de la


computación sin describir su flujo de
control (definen el qué y no el cómo)
– Ejemplos: coreografía de WS, SQL.
• Imperativos: definen un algoritmo
ejecutable que indica el paso a paso
– Ejemplos: BPMN, lenguajes de
programación como Java o C/C++.
Clasificación :: Ejecutabilidad
• Interpretación de modelos:
interpretación del DSL al momento de
ejecutarlo, igual que un intérprete de un
lenguaje de programación
• Generación de código: aplicación de una
transformación model-to-text (M2T)
generando un código ejecutable, igual
que un compilador de un lenguaje
Clasificación :: Internalidad
• Externos: poseen su propia sintaxis y
herramientas de soporte
– DSL externos es que no dependen de otros, siendo
más pequeños, flexibles y enfocados en un dominio
– Obligan a desarrollar todas las herramientas para
definirlos y manipularlos
• Internos: utilizan un lenguaje huésped y
proveen abstracciones para un dominio en
particular
– Ejemplos: Ruby, perfiles de UML
Ejemplos :: BPMN
• Gráfico, externo, imperativo, horizontal
Ejemplos :: IFML
• Gráfico, externo, declarativo, horizontal
(WebML es interno)
Ejemplos :: VHDL
• Textual,
externo,
declarativo,
vertical
Definir un DSL a partir de UML
• Tres posibilidades para definir un DSL a
partir de UML:
a. Se define un lenguaje completamente nuevo
Se modifica el metamodelo de UML añadiendo
nuevas clases, modificando otras y/o borrando
algunas (heavyweight extension)
b. Se extiende UML, especializando algunos de
sus conceptos y restringiendo otros, pero
respetando la semántica original de los
elementos de UML (lightweight extension)
Perfiles UML
• Es una extensión lightweight de UML.
– Estereotipos extienden elementos del
metamodelo para definir nuevos elementos
– Valores etiquetados definen los atributos
de un estereotipo
– Restricciones agregan
semántica
– Se puede asociar una
representación gráfica
a cada estereotipo
Perfiles de UML :: SoaML
• Definido como un pequeño conjunto de
estereotipos de UML
Perfiles vs DSL :: ventajas
• Perfiles son fáciles de definir y manipular si
se está acostumbrado a manipular UML
• Hay un gran número de personas formadas
ya en UML
• UML es un estándar y esto facilita
enormemente la interoperabilidad entre
herramientas
• No es preciso aprender otros lenguajes de
modelado, ni adquirir otras herramientas
Perfiles vs DSL :: desventajas
• Su expresividad es limitada (respeta la
semántica de UML)
• Son difíciles de definir de una forma rigurosa
• No permiten “ocultar” nada de UML
• Manipular sus modelos no es simple por la
forma en la que se representan internamente
• Los modelos heredan los problemas de UML,
como su falta de precisión
• La notación no es tan compacta ni atractiva
como la que puede conseguirse con un DSL
Perfiles vs DSL
Parece que
estás buscando
una respuesta

Conviene definir un DSL cuando... Conviene definir un perfil cuando...


El dominio de aplicación está bien definido El dominio no es muy estándar o estable
No se necesita poder combinar fácilmente Es preciso combinar fácilmente modelos de
modelos de diferentes dominios. diferentes dominios
La semántica del dominio no es compatible Es posible respetar la semántica de UML para
con la de UML modelar sistemas de ese dominio
La empresa no cuenta con demasiada La empresa cuenta con herramientas UML
experiencia en UML ni con sus que normalmente utiliza en sus proyectos
herramientas asociadas
La sintaxis concreta que se necesita es muy La notación que se precisa no es muy
diferente a la de UML diferente de la de UML
Las herramientas que se necesitan para Las herramientas asociadas a los modelos se
gestionar los modelos no admiten una integran bien con las herramientas de UML
integración fácil con UML/XMI
Las condiciones no son necesarias ni suficiente, son acumulativas.
Sintaxis concreta
• La notación de un lenguaje de modelado
se conoce como sintaxis concreta
• Existen diversos enfoques para la
definición de la sintaxis concreta
Sintaxis concreta
• La sintaxis concreta mejora la legibilidad
de los modelos
– La sintaxis abstracta no está pensada para
humanos
• Una sintaxis abstracta puede tener
múltiples sintaxis concretas
– Incluyendo textuales y gráficas
Sintaxis concreta
Parece que
estás buscando
una respuesta

• Las visuales suelen ser más expresivas


• Las textuales suelen capturar mejor la
complejidad
• En teoría, la sintaxis es independiente
de la semántica, pero los humanos
solemos asociar significados a símbolos
• En general es mejor una combinación de
notaciones gráficas y textuales
Sintaxis concreta en EMF
Sintaxis concreta :: GCS
• Una sintaxis concreta gráfica (Graphical
Concrete Syntax, GCS) consiste de
• Símbolos gráficos,
– ej.: rectándulos, círculos, …
• Reglas de composición,
– ej., anidamiento de elementos, …
• Y relación entre
símbolos gráficos y
sintaxis abstracta
Eugenia / Epsilon
• Componente del proyecto Epsilon
• Metamodelos Ecore son anotados con
información gráfica
• Un generador interpreta las anotaciones y
produce una representación gráfica
• Editor gráfico generado automáticamente
(aplicación de MDE)

http://www.eclipse.org/epsilon/doc/eugenia/
Sintaxis concreta :: TCS
• Una sintaxis concreta textual (Textual
Concrete Syntax, TCS) se define en el
espacio técnico de las gramáticas
• Tienen ventajas en comparación con las
sintaxis gráficas
• Toda GCS se puede transformar en una
TCS
Xtext
• Xtext permite definir DSL textuales
• La gramática se define de forma similar a
EBNF, con construcciones adicionales
inspiradas en metamodelado
• Permite crear un metamodelo, parser y
editor a partir de la definición de la
gramática
https://eclipse.org/Xtext/
Bibliografía
1. M. Brambilla, J. Cabot, M. Wimmer (2012). Model-Driven
Software Engineering in Practice. Morgan Claypool. ISBN:
9781608458820
2. F. Durán, J. Troya, A. Vallecillo. Desarrollo de software
dirigido por modelos. Universitat Oberta de Catalunya
3. M. Fowler. Domain-Specific Languages. Addison-Wesley
ISBN: 0321712943
Epílogo…
• Identifiquen 2 cosas que se llevan de ésta clase
• Para las próximas clases
– Miércoles 16 de mayo (Lab) :: Metamodelado
– Miércoles 23 de mayo (Teo) :: Control de lectura
sobre transformaciones de modelos

También podría gustarte