1. Desarrollo de software orientado a servicios y procesos de aprendizaje
Itinerario de Doctorado en Modelado, Simulación y Pruebas de Procesos y Tratamiento de Señales y Datos
Model-Driven Engineering
&
Domain Specific Languages
Iván Ruiz Rube
Departamento de Lenguajes y Sistemas Informáticos
Universidad de Cádiz
10/04/2012 1
2. Contenidos
Introducción
La visión de la OMG
Lenguajes específicos de dominio
¿Cómo desarrollar un DSL?
Herramientas
Conclusiones
10/04/2012 2
4. Evolución del desarrollo software
1. Programación en Ensamblador
x86
2. Programación Estructurada
Pascal, C
3. Orientación a Objetos
C++, Java
4. Componentes software
J2EE, .NET
5. Orientación a Aspectos
AspectJ, Spring Framework AOP
6. Arquitecturas orientadas a Servicios
WSDL, SOAP, REST
7. .…
10/04/2012 4
5. Modelos
Hasta ahora, la programación siempre
es el centro de atención
Al igual que en otras ingenierías..
¡tenemos que aumentar el nivel de
abstracción!
Los modelos nos ayudan a construir
sistemas más complejos.
Modelo: descripción o especificación
(de parte) de un sistema software
desde un determinado punto de vista
10/04/2012 5
6. Ejemplo de Modelo
Diagrama de componentes. Arquitectura de
diseño (3 capas) de un sistema web
10/04/2012 6
7. Características y utilidades
Características:
◦ Abstracto: ocultación de elementos
◦ Comprensible: lenguaje entendible
◦ Preciso: correcto sintáctica y
semánticamente
◦ Barato: sencillo de construir
Utilidades:
◦ Especificar las características del sistema a
desarrollar
◦ Comprenderlo con exactitud
◦ Detectar errores con antelación
◦ Guiar la programación
10/04/2012 7
8. Problemas
Sólo suelen usarse como
documentación
En muchas ocasiones su calidad se
mide “al peso”
Falta de sincronía: entre modelos y
entre modelos-código
No podemos optimizar o validar
modelos automáticamente
¿Cuál es el retorno de la inversión
que conseguimos al desarrollar
10/04/2012 8
9. Model-Driven Engineering
MDE es un “nuevo” enfoque en
Ingeniería del Software
Utilización de modelos como
artefactos software
Podremos tener
editores, optimizadores, validadores y
compiladores (transformadores) de
modelos
Objetivo perpetuo en IS: facilitar
trabajo y reducir tiempos de desarrollo
y número de errores
10/04/2012 9
10. Usos
Model-Driven Web Engineering (MDWE)
◦ Generación automática de modelos de
ingeniería (requisitos, análisis, etc.)
Software Process Engineering (SPE)
◦ Soporte a la gestión de procesos
(metodologías) organizacionales
Model-Driven Testing (MDT)
◦ Construcción de casos de prueba
Model-Driven Development (MDD)
◦ Generación automática de código fuente
10/04/2012 10
12. Model-Driven Architecture
MDA es la propuesta
de la OMG para dar
soporte al enfoque
basado en modelos
MDA ofrece un
conjunto de
estándares y un
enfoque de modelado
basado en niveles
10/04/2012 12
13. Estándares
UML: Unified Modeling Language
OCL: Object Constraint Language
QVT: Query/View/Transformation
XMI: XML Metadata Interchange
…
MOF, SPEM, CWM, ODM, …
10/04/2012 13
14. Enfoque de modelado
MDA promueve separar la
especificación de la funcionalidad de
un sistema, de los detalles de
implementación en cualquier
plataforma tecnológica
Proceso paso a paso de refinamiento
de modelos
Cercano a la concepción del ciclo de
vida clásico del desarrollo de software
10/04/2012 14
15. Niveles en MDA
CIM: Computational Independent
Model
◦ Ej: Modelos de procesos de negocio (ej:
BMPN)
PIM: Platform Independent Model
◦ Ej: Modelo de casos de uso
◦ Ej: Modelo entidad/relación
PSM: Platform Specific Model
◦ Ej: Diagrama de clases de diseño
10/04/2012 15
16. Proceso de desarrollo MDA
Initial Manual Manual Manual
Definition Refinement Refinement Refinement
CIM PIM PSM Code
Transformation Transformation Transformation
Rules Rules Rules
10/04/2012 16
17. Relación entre siglas “model-
driven”
Jordi Cabot. http://modeling-languages.com/
10/04/2012 17
19. Domain Specific Languages
(DSL)
Lenguaje de programación orientado
a un problema específico.
Son opuestos a los lenguajes de
propósito general.
Diseñado para ser utilizado para un
conjunto específico de tareas.
Herramienta específica para un
trabajo concreto.
10/04/2012 19
22. Domain Specific Languages
(DSL)
La semántica del lenguaje está muy
cercana al dominio de problema para
el cual se diseña.
Los DSL ofrecen un alto nivel de
abstracción al usuario. Por
tanto, están dirigidos a “expertos en el
dominio”.
Ofrecen un vocabulario controlado
para su ámbito.
10/04/2012 22
24. Ejemplos DSL
Apache Maven
Automatización de la gestión y construcción de
proyectos Java
10/04/2012 24
25. Ejemplos DSL (II)
JBOSS DROOLS
Reglas de negocio definidas en alto nivel, dentro
de un motor de procesos
10/04/2012 25
26. Ejemplos DSL (III)
TREW@
Modelado de procedimientos administrativos
telemáticos en el marco de la administración pública
en Andalucía
10/04/2012 26
27. Ejemplos DSL (IV)
Structured Query Language (SQL)
Manipulación de bases de datos relacionales
10/04/2012 27
28. Ejemplos DSL (V)
HTML
◦ Utilizado para escribir páginas web
CSS
◦ Usado para describir hojas de estilos en
la web
Flex, Bison o ANTLR:
◦ Para generar compiladores
AWK, plantillas Wikipedia, shell
scripts, etc.
10/04/2012 28
30. Fases en el desarrollo de un
DSL externo (enfoque MDE)
Diseño del metamodelo
Desarrollo del formato de representación
Generación de transformaciones
Construcción de un IDE
10/04/2012 30
31. Diseño del metamodelo
El objetivo es definir los conceptos y
relaciones del dominio del problema
que queremos abordar, mediante un
diagrama de clases.
Se definen de forma
abstracta, independientemente del
formato de representación deseado.
Los metamodelos definirán la sintaxis
abstracta de nuestro lenguaje.
10/04/2012 31
33. Desarrollo del formato de
representación
Mecanismo para representar los
elementos del metamodelo.
El formato más adecuado depende del
tipo de problema que queremos modelar
y de los potenciales usuarios del
lenguaje.
Tipo de sintaxis:
◦ Visual: basada en el mapping entre
elementos gráficos y elementos de nuestro
metamodelo. usualmente son más fáciles de
interpretar por el usuario
◦ Textual: basada en una gramática (EBNF).
Son más expresivos que los visuales.
10/04/2012 33
35. Generación de
transformaciones
Las transformaciones permiten
„evolucionar‟ modelos.
Modelo a modelo (M2M)
◦ Mismo modelo:
Ej: Refactorización o aplicación de un patrón de
diseño.
◦ Modelo distinto
Ej: Refinamiento de un diagrama de clases de
análisis a un diagrama de clases para un
framework J2EE.
Modelo a texto (M2T)
◦ Ej: Transformación de un diagrama de
clases de diseño MVC a un conjunto de
10/04/2012 35
37. Construcción de un IDE
Para un DSL visual necesitamos un
entorno de diseño que ofrezca, entre
otros:
◦ Paleta de componentes visuales
◦ Área de trazado
◦ Validación automática de modelos
Para un DSL textual, sería de gran
ayuda disponer de un entorno que
ofrezca:
◦ Coloreado de sintaxis
◦ Formato de código
◦ Validación instantánea
10/04/2012 37
38. IDE Procesamiento de
Imágenes
Liberal Fernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T.
10/04/2012 38
39. Uso del DSL
Liberal Fernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T.
10/04/2012 39
41. Herramientas basadas en
MDE
Es evidente que necesitamos
herramientas que ofrezcan soporte a los
principios del enfoque MDE.
Las herramientas MDE permiten diseñar
y validar modelos escritos en lenguajes
estándar, como UML y luego
transformarlos en otros modelos.
Algunos ejemplos:
◦ Enterprise Architect
◦ Acceleo
◦ StarUML
◦ …
10/04/2012 41
42. Herramientas de desarrollo
DSL
Para dar soporte a las fases del
desarrollo de un DSL, necesitamos
herramientas que nos asistan en
dicho proceso.
Algunos ejemplos:
◦ Eclipse (Modeling Project)
◦ MS Visual Studio (DSL Tools)
◦ MetaEdit+
◦ …
10/04/2012 42
43. Eclipse Modeling Project
MDT: Model Development Tools
EMF: Eclipse Modeling Framework
GMP: Graphical Modeling Project
TMF: Textual Modeling Framework
M2M: Model-to-Model Transformation
M2T: Model To Text Transformation
10/04/2012 43
45. Conclusiones
El enfoque MDE promueve el
desarrollo y transformación de
modelos para dar soporte a diversas
actividades en IS.
Existe gran interés en el mundo
académico e investigador. Sin
embargo, aún no se ha consolidado
completamente en la industria.
Podemos construir con poco esfuerzo
DSLs visuales o textuales.
10/04/2012 45
46. Model-Driven Engineering
&
Domain Specific Languages
Iván Ruiz Rube
ivan.ruiz@uca.es
10/04/2012 46