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
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
MDE y DSLs

INTRODUCCIÓN




             10/04/2012   3
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
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
Ejemplo de Modelo




 Diagrama de componentes. Arquitectura de
    diseño (3 capas) de un sistema web

                  10/04/2012                6
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
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
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
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
MDE y DSLs

LA VISIÓN DE LA OMG
(MDA)




             10/04/2012   11
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
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
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
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
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
Relación entre siglas “model-
    driven”




Jordi Cabot. http://modeling-languages.com/
                                          10/04/2012   17
MDE y DSLs

LENGUAJES
ESPECÍFICOS DE
DOMINIO



             10/04/2012   18
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
Herramienta de Propósito
   General




Peter Friese, itemis
                       10/04/2012   20
Herramienta de Propósito
   Específico




Peter Friese, itemis
                       10/04/2012   21
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
Clasificación de DSL
   Representación
    ◦ Visuales
    ◦ Textuales
   Implementación
    ◦ Internos
    ◦ Externos




                     10/04/2012   23
Ejemplos DSL




              Apache Maven
Automatización de la gestión y construcción de
               proyectos Java

                    10/04/2012                   24
Ejemplos DSL (II)




              JBOSS DROOLS
Reglas de negocio definidas en alto nivel, dentro
           de un motor de procesos

                      10/04/2012                25
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
Ejemplos DSL (IV)




    Structured Query Language (SQL)
 Manipulación de bases de datos relacionales

                    10/04/2012                 27
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
MDE y DSLs

¿CÓMO DESARROLLAR
UN DSL?




             10/04/2012   29
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
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
Metamodelo




Liberal Fernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T.
                                               10/04/2012                        32
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
Formato de representación




Liberal Fernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T.
                                               10/04/2012                        34
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
Transformaciones M2T




Liberal Fernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T.
                                               10/04/2012                        36
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
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
Uso del DSL




Liberal Fernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T.
                                               10/04/2012                        39
MDE y DSLs

HERRAMIENTAS




             10/04/2012   40
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
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
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
MDE y DSLs

CONCLUSIONES




             10/04/2012   44
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
Model-Driven Engineering
            &
Domain Specific Languages
        Iván Ruiz Rube
         ivan.ruiz@uca.es




               10/04/2012   46

MDE & DSLs

  • 1.
    Desarrollo de softwareorientado 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  Lavisión de la OMG  Lenguajes específicos de dominio  ¿Cómo desarrollar un DSL?  Herramientas  Conclusiones 10/04/2012 2
  • 3.
  • 4.
    Evolución del desarrollosoftware 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 suelenusarse 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  MDEes 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
  • 11.
    MDE y DSLs LAVISIÓN DE LA OMG (MDA) 10/04/2012 11
  • 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: UnifiedModeling 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 desarrolloMDA 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
  • 18.
    MDE y DSLs LENGUAJES ESPECÍFICOSDE DOMINIO 10/04/2012 18
  • 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
  • 20.
    Herramienta de Propósito General Peter Friese, itemis 10/04/2012 20
  • 21.
    Herramienta de Propósito Específico Peter Friese, itemis 10/04/2012 21
  • 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
  • 23.
    Clasificación de DSL  Representación ◦ Visuales ◦ Textuales  Implementación ◦ Internos ◦ Externos 10/04/2012 23
  • 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
  • 29.
    MDE y DSLs ¿CÓMODESARROLLAR UN DSL? 10/04/2012 29
  • 30.
    Fases en eldesarrollo 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
  • 32.
    Metamodelo Liberal Fernández, P.;López Urbina, M.; Sales Montes, N.; Tocino García, J.T. 10/04/2012 32
  • 33.
    Desarrollo del formatode 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
  • 34.
    Formato de representación LiberalFernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T. 10/04/2012 34
  • 35.
    Generación de transformaciones  Lastransformaciones 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
  • 36.
    Transformaciones M2T Liberal Fernández,P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T. 10/04/2012 36
  • 37.
    Construcción de unIDE  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 LiberalFernández, P.; López Urbina, M.; Sales Montes, N.; Tocino García, J.T. 10/04/2012 39
  • 40.
  • 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
  • 44.
  • 45.
    Conclusiones  El enfoqueMDE 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