SlideShare ist ein Scribd-Unternehmen logo
1 von 123
Downloaden Sie, um offline zu lesen
Ingeniería Dirigida por Modelos


            Introducción
                    Vicente García Díaz – garciavicente@uniovi.es
                                      Universidad de Oviedo, 2012
         Model Driven Engineering
             Research Group
2


Tabla de contenidos
                                        Introducción
1. Conceptos básicos

2. Ejemplos de aplicación

3. Terminología

4. El estándar Model-Driven Architecture

5. La plataforma Eclipse Modeling Project
4

Conceptos básicos




                    Fuente: http://blog.drummondhouseplans.com/category/multi-family/
5

Conceptos básicos




                    Fuente: http://www.flightglobal.com//
6

Conceptos básicos

    ¿Qué es un modelo?

        1. Punto de referencia para imitarlo o reproducirlo
        2. Ejemplar que por su perfección se debe seguir e
           imitar
        3. Representación en pequeño de alguna cosa
        4. Esquema teórico, generalmente matemático, de
           un sistema o de una realidad compleja, como la
           evolución económica de un país, que se elabora
           para facilitar su comprensión y el estudio de su
           comportamiento

                                                 Fuente: http://www.rae.es/rae.html
7

Conceptos básicos

    ¿Modelos en el desarrollo software?
 • Por supuesto…




              Modelo   Desarrollo   Producto
8

Conceptos básicos

    Proceso típico de desarrollo
 • Las ingenierías clásicas se basan en el empleo de
   modelos para obtener un producto tras realizar
   un desarrollo
    ▫ No es posible automatizar el desarrollo
      completamente
9

Conceptos básicos

    Proceso de desarrollo de software
 • Peculiaridad: los productos software se pueden
   diseñar y crear sin “salir” del ordenador




              Modelo    Desarrollo   Producto


 • Informática  Información + Automática
 ¿Podríamos automatizar la etapa de desarrollo?
10

Conceptos básicos

    ¿Para qué se utiliza principalmente MDE?
  • Para crear modelos software

  • Dichos modelos definen los conceptos de un
    dominio determinado

  • Las tecnologías existentes englobadas en MDE
    permiten trabajar con los modelos como si fueran
    lenguajes de programación de alto nivel
    ▫ Generalmente lenguajes de dominio específico
11

Conceptos básicos

    Motivación
  • Crecimiento de la complejidad del software
  • No se reutiliza ni el conocimiento tecnológico ni del
    dominio
  • Se necesita industrializar el desarrollo del software
  • El término crisis del software sigue vigente
                                     The major cause of the software crisis is that
                                     the machines have become several orders of
                                     magnitude more powerful! To put it quite
                                     bluntly: as long as there were no machines,
                                     programming was no problem at all; when
                                     we had a few weak computers, programming
                                     became a mild problem, and now we have
                                     gigantic computers, programming has
                                     become an equally gigantic problem
                                     [Dijkstra, 1972]
12

Conceptos básicos

    Antecedentes
  • El nivel de abstracción de los lenguajes va en
    aumento
     ▫   Binario
     ▫   Ensamblador
     ▫   Procedimental
     ▫   Orientado a objetos
  • Hacia el espacio de la solución del problema
  • En los años 80 surgen las herramientas CASE
     ▫ No tuvieron mucho éxito
13

Conceptos básicos

    Objetivos
  • Reducir la complejidad de las plataformas
    actuales
  • Expresar los conceptos de los diferentes dominios
    de forma más apropiada
                             Conceptos del dominio
                                                  Conceptos del dominio
                    Trabajo mental de
                    los desarrolladores
                                                         Conceptos de la
                                                       tecnología utilizada

                                  Conceptos de la
                                tecnología utilizada
Ejemplos de aplicación

    Telefonía IP




                         Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación

    Productos de seguros




                           Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación

    Automatización del hogar




                               Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación

    Aplicaciones para móviles




                                Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación

    Relojes digitales




                         Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación

    Sistemas de trazabilidad alimentaria

                   1.1 Pro ducto r ?
                                                                                                                                                                   FABRICA DE QUESOS
                   1.2 Tipo ?
                                                                                                                                                                     PROCESO BEYOS
                   1.3 Pes o ?                                 6.1 Lo te ?                               7.1 Lo te Leche?
                   1.4 Temperatura?                            6.2 Cantidad?                             7.2 Cantidad?                                              Fecha: 04/06/2008
                   1.5 Acidez?                                 6.2 PH?                                   7.3 Mas Leche?                                               Versión: 0.017
                   1.6 Lo te Pro ductor?                                                                 7.4 Lo te Cuajo ?
                   1.7 Lo te INT->?        1. RECEPCION                                                  7.5 Mas Cuajo ?
                                               LECHE                                                     7.6 Lo te Fermento s?
                                                                             6.                          7.7 Mas Fermento s?
                   2.1 Pro ducto r ?                                     PASTEURIZA                      7.8 Lo te Calcio ?
                   2.2 Cantidad?                                                                         7.9 Mas Calcio ?
                   2.3 Lo te Pro ductor?                                                                 7.10 Lo te INT->
                   2.4 Lo te INT->?        2. RECEPCION
                                               CUAJO                                                                                                     12.1 Lo te?
                                                                                                                                                         12.2 Nº Artículo s?
                   3.1 Pro ducto r ?                                                                                                                     12.3 Cliente?
                   3.2 Cantidad?
                   3.3 Lo te Pro ductor?                                                                       7. CUAJADA
                   3.4 Lo te INT->?        3. RECEPCION
                                            FERMENTOS
                                                                                                                                                                    13. ENVASADO
                   4.1 Pro ducto r ?                                                           Las etiquetas las irán                                                REQUESÓN
                   4.2 Cantidad?                                                               colocando en las
                   4.3 Lo te Pro ductor?                                                       estanterías que
                   4.4 Lo te INT->?        4. RECEPCION                                        quieran
                                               CALCIO                                                                                                                            14.1 Cliente?
                                                                                              8.1 Lo te Cuajada?                                                                 14.2 Lo te?
                                                                                              8.2 Nº etiquetas deseadas?                                                         14.3 Unidades?
                   5.1 Pro ducto r ?
                   5.2 Cantidad?                                          ETIQUETAS RFID
                   5.3 Lo te Pro ductor?   5. RECEPCION
                   5.4 Lo te INT->?             SAL                                                                                                                        14.
                                                                                               8.                                                                      COMERCIALIZ
                                                                                           EMMOLDADO                                                                      ACION




                                                                                                                   11.1 RFID Secado ?
                                                                                                                   11.3 Nº Co ntra-etiquetas?
                                                                                                                   11.4 Primera Co ntra-etiqueta                               13.1 Cliente?
                                                 9.1 RFID Enmo ldado?               10.1 RFID Salado ?             11.5 Cliente?                                               13.2 Pes o ?
                                                 9.2 Lo te Sal?                                                                                                                13.3 Lo te?
                                                                                                                                                                               13.4 Unidades?
                                                                                                                                                    ETIQUETAS
                                                                                                                                                   COMERCIALES


                                                                                                                                                                            12.
                                                          9. SALADO                         10. SECADO                           11. ENVASADO                           COMERCIALIZ
                                                                                                                                                                           ACION
Ejemplos de aplicación

    Videojuegos en entorno .NET


            Esto es un poco la idea del GADE4ALL,
              ¿Podríais cambiarlo por un par de
                imágenes del GADE4ALL y así
               hablamos un poco del proyecto?



                                                    [Furtado, 2007]
23

Terminología

    El metamodelado
  • Relación en cascada entre modelos y metamodelos

               Elementos del   describe            describe
                mundo real                Modelo              Metamodelo
                 (dominio)
24

Terminología

     Espacio conceptual
                                  Meta-
                                metamodelo

  Subdominios

                          <<instanceof>>      Sintaxis     Basado en   Semántica
                                             abstracta                  estática

                Describe
                conceptos de
   Dominio                      Metamodelo



                                                                       Lenguaje de
                           <<instanceof>>    Sintaxis
                                                                         dominio
                                             concreta
                                                                        específico

                                   Modelo
                                   formal



                                                         Semántica


                                                                             Respeta a
25

Terminología

    Beneficios del uso de un metamodelo
  • Clave de la ingeniería dirigida por modelos
  • Es imprescindible para:
     1.    Construir lenguajes de dominio específico
     2.    Validar modelos
     3.    Transformar modelos
     4.    Generar artefactos (código, documentación, etc.)
     5.    Integración de herramientas
Terminología
27

Terminología                             Ejemplo de dominio: Redes de Petri



    Dominio de las Redes de Petri
  • Fueron definidas en los años 60 por Carl Adam Petri
  • Son una especialización de la teoría de autómatas que permite
    expresar eventos concurrentes
  • Tiene lugares, transiciones y arcos dirigidos
  • Áreas de aplicación: análisis de datos, diseño de software,
    fiabilidad, flujo de trabajo…

                P1
                           T1

                                    17         P2
                      15


                                                        T2
                      4
                                3                   4         6
                P3                        P1                          P5
28

Terminología                                      Ejemplo de dominio: Redes de Petri



    Un metamodelo para el dominio
                                                                                 P1
                                                                                           T1

                                                                                                    17        P2
                                                                                      15


                                                                                                                       T2
                                                                                      4
                                                                                                3                  4        6
                                                                                 P3                      P1                      P5




               PetriNet

                                                                  0..*
                          1

                  1                        Node                          Arc
                                       +Name : string            +weight : int
                              0..*




                               Place               Transition
29

Terminología                                         Ejemplo de dominio: Redes de Petri



     Un meta-metamodelo para el dominio

                 Model Element

                                                            PetriNet

                                                                                                                 0..*
                                                                         1

                                                               1                           Node                         Arc
                                                                                       +Name : string           +weight : int
 Typed Element             Generalizable Element                              0..*




                                                                               Place               Transition


   Attribute           Association           Class
30

Terminología                                                    Ejemplo de dominio: Redes de Petri


    Mapeo entre sintaxis abstracta y concreta

                                                                                           T1
               PetriNet
                                                                          P1       15           17
                                                                                                     P2
                             1                 0..*


                  1              Node                 Arc
                             +Name : string   +weight : int
                      0..*




                                                        Place                           Transition
31

Terminología

    Supermetamodelo (I)

               M3      Meta-metamodelo



               M2         Metamodelo


               M1           Modelo



               M0   Elementos del mundo real



                    Instancia de

                    Representado por
32

Terminología

    Supermetamodelo (II)
                     MOF                             EBNF

       M3               MOF                              EBNF



       M2           UML, ODM, ...                  JAVA, C#, XML, ...



       M1      UML classes, objects, ...         Programas informáticos



       M0      Elementos del mundo real         Elementos del mundo real



                             Instancia de

                             Representado por
33

Terminología

    Dualidad de los espacios de modelado
                                     M3                    MOF




                                                                                   MO
                                                                                     F
                            M2                      UML                      ODM




                             Modelo UML de
               M1            la gramática de
                                                           Modelo UML
                                                              de un
                                                                                     Modelo
                                                                                    ODM de
                                   Java                   programa Java             animales




               M0
                       N     F
                    EB
                                                             Programa Java
                                     Gramática de
                     EBNF




                                        Java
34

Terminología

    Ciclo de vida del desarrollo con MDE
                        Tradicional                           MDE


           Requisitos                          Requisitos


                                      Texto                         Texto

               Análisis                          Análisis


                                      Modelo                        Modelo
               Diseño                            Diseño


                                      Modelo                        Modelo

           Codificación                        Codificación


                                      Código                        Código
               Pruebas                          Pruebas


                                      Código                        Código

           Despliegue                          Despliegue




                    Paso manual
                    Paso automático
35

Terminología

    Secuencia de pasos
                  Modelo
                   Modelo        <<instanceof>>    Metamodelo
                    Modelo

                                <<instanceof>>


                                                     Reglas de
               Transformación
                                                  transformación



                  Modelo



                                                     Reglas de
               Transformación
                                                  transformación

                 Artefactos
                  textuales
                 generados
36

Terminología

    ¿Cómo se generan los artefactos? (I)
  • Metamodelo (meta-metamodelo) + Plantillas

                Metamodelo


                                                               Apply to
                                              Instancia del
                                                                          Plantillas
                                Instance of   metamodelo
                Based
                 on



                                        Yields
               Especificación


                                                               Código
                                                              generado
37

Terminología

    ¿Cómo se generan los artefactos? (II)
  • Metamodelo (meta-metamodelo) + Plantillas




                Fuente: http://www.openarchitectureware.org/pub/documentation/4.3.1/openArchitectureWare-4.3.1-Reference.pdff
39

El estándar Model-Driven Architecture

    Introducción
   • http://www.omg.org/mda
40

El estándar Model-Driven Architecture

       Puntos de vista
   •   Computation Independent Model (CIM)
   •   Platform Independent Model (PIM)         CIM


   •   Platform Specific Model (PSM)
   •   Implementation Specific Model (ISM)
                                                PIM




                                        PSM 1         PSM n
                                                …




                                        ISM 1         ISM n
                                                …
41

El estándar Model-Driven Architecture

    Arquitectura en cuatro capas

      Meta-metamodelo (M3)                            MOF




      Metamodelo (M2)                       UML                  ODM
                                                                              …


      Modelo (M1)                       Modelos UML             Modelos ODM
                                                                                  …


      Realidad (M0)                                   Sistema
El estándar Model-Driven Architecture   Estándares relacionados (MOF)



    Meta-Object Facility (MOF)  ECORE
                                                             ECORE META-METAMODEL



     • Ecore
43

El estándar Model-Driven Architecture              Estándares relacionados (MOF)



    Empleo de MOF como origen de todo
                                            MOF




               Metamodelo origen                                          Metamodelo destino


                                           Reglas de
                                        transformación
                                             (QVT)




                                        transformación
                 Modelo origen                                               Modelo destino
44

El estándar Model-Driven Architecture   Estándares relacionados (UML)



    Unified Modeling Language (UML)
   • Estándar para
      ▫   Visualizar
      ▫   Especificar
      ▫   Documentar
      ▫   …
   • Independiente del lenguaje
   • Una combinación
      ▫ Fue diseñado por “The three amigos”
      ▫ James Rumbaugh, Ivar Jacobson, Grady Booch
45

El estándar Model-Driven Architecture                          Estándares relacionados (UML)



    Extensión de UML basada en Perfiles
                      «metaclass»    *             1     «metaclass»                        «metaclass»
                       Attribute                           Class                             Operation

                                                                            1          *

                       «extends»                          «extends»                            «extends»
  stereotype

               <<stereotype>> PrimaryKey           <<stereotype>> Entity            <<stereotype>> FinderMethod
                                                 PersistenceTime: (short, long)




  constraint                context Entity
                                                                                               tagged value
                            inv: attribute->exists(isStereoKinded("PrimaryKey")




                     <<Entity>> Empleado            *                   1           <<Entity>> Empresa
                  -<<PrimaryKey>> nif : string                                  -<<PrimaryKey>> cif : string
                  -edad : int                                                   -name : string
                   {PersistenceTime=short}                                      -<<FinderMethod>>findByCif()
46

El estándar Model-Driven Architecture      Estándares relacionados (XMI)



    XML Metadata Interchange (XMI) (I)
   • Sirve para serializar modelos
   • Permite que las herramientas se integren

                                                    XMI 2.1 –
                                                    MOF 2.0

                            XMI 1.3 –
                            MOF 1.4
                                        XMI 2.0 –
        XMI 1.1 –
                                        MOF 1.4
        MOF 1.3
                       XMI 1.2 –
                       MOF 1.4
47

El estándar Model-Driven Architecture   Estándares relacionados (XMI)



    XML Metadata Interchange (XMI) (II)
48

El estándar Model-Driven Architecture   Estándares relacionados (XMI)



    XML Metadata Interchange (XMI) (III)
49

El estándar Model-Driven Architecture   Estándares relacionados (OCL)



    Object Constraint Language (OCL) (I)
   • Se utiliza para definir restricciones
   • Es parte de UML
   • Tipos
      ▫ Clase  invariant
      ▫ Precondiciones de una operación  precondition
      ▫ Postcondiciones de una operación  postcondition
50

El estándar Model-Driven Architecture                       Estándares relacionados (OCL)



    Object Constraint Language (OCL) (II)
  context Empresa                                                                     context Coche
  inv: conductoresPotenciales = empleados->select(edad >= 18)                         inv: conductor.edad >= 18

                          Empresa                poseedor                             Coche

                                                            vehículos
               +contratar(entrada p : Persona)                          +conducir(entrada p : Persona)


                                      jefe                        context Coche::conducir(p: Persona)
                                                                  pre: (conductor==null) && (p.edad >= 18)
                                                                  post: conductor = p
         conductoresPotenciales
                             empleados

                           Persona
                                             conductor
                        -edad : int
                                              context Empresa::contratar(p: Persona)
                                              pre: --none
                                              post: (empleados.size = empleados@pre.size + 1) &&
                                                     (empleados.includes(p))
                                                                                                Fuente: [Stahl and Völter, 2006]
51

El estándar Model-Driven Architecture             Estándares relacionados (OCL)



    Object Constraint Language (OCL) (III)
   • Restricción en nivel Mn afecta al nivel Mn-1
                                «metaclass»               «metaclass»
                                UML::Class              UML::Attribute
                               -name : String           -name : String
                                                        -type : Type




                               «metaclass»              «metaclass»
                         MM::PersonaDesconocida   MM::ParametrosNumericos




        context PersonaDesconocida                         context ParametrosNumericos
        inv: name == “no identificada”                     inv: type.name == “Integer”
                     || “desconocida”
52

El estándar Model-Driven Architecture                                 Estándares relacionados (QVT)



    Query, Views, Transformations (QVT) (I)
   • Lenguaje de transformación de modelos
   • Compuesto de tres lenguajes con objetivos
     distintos
   • QVT
                                        Operation Mappings Language
                                                                           Relations Language

      ▫ Relacional




                                                                                                      Black Box Mappings
      ▫ Core
      ▫ Operacional
                                                                             Core Language
53

El estándar Model-Driven Architecture   Estándares relacionados (QVT)



    Query, Views, Transformations (QVT) (II)
   • Lenguaje relacional
      ▫ Transformaciones  un conjunto de relaciones
          Declarativo




                                                                        Fuente: [Mens, 2009]
54

El estándar Model-Driven Architecture   Estándares relacionados (QVT)



    Query, Views, Transformations (QVT) (III)
   • Lenguaje operacional
      ▫ Transformaciones  un conjunto de operaciones
          Imperativo




                                                                        Fuente: [Mens, 2009]
El estándar Model-Driven Architecture                                             La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association


[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
El estándar Model-Driven Architecture                                             La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association
El estándar Model-Driven Architecture                                             La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association
El estándar Model-Driven Architecture                                             La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association
El estándar Model-Driven Architecture                                             La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association
El estándar Model-Driven Architecture                                             La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association
El estándar Model-Driven Architecture                                             La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association
El estándar Model-Driven Architecture                                            La cadena de modelado


         Relación entre M1 y M2
         Relaciones entre M1 y M2                                Instance of


                                      Vehículo                                                 ModelElement
                                                                                               -name : string
                             +puedeMoverse() : bool



                                                                     *
   Persona         +driver +car        Coche                                Classifier                                        Feature
-nombre : string                                      -generalizations
                                                                                          1                     1..*   -visibility : Visibility
                   1          *
                                                                     *
                                      1
                                      4
                                                                    Class           DataType              Operation          Attribute            AssociationEnd
                                       Rueda
                                  -malEstado : bool
                                                                                                                                                           1

                                                                                                                                                   Association
El estándar Model-Driven Architecture                                                                 La cadena de modelado


           Relación entre M2 y M3        ModelElement
                                                                                             Instance of
                                         -name : string

                                                                                                                                      ModelElement
                                                                                                                                      -name : string

               *
                      Classifier                                  Feature
-generalizations
                                   1                1..*   -visibility : Visibility
                                                                                                           *
                                                                                                               GeneralizableElement                    Feature            TypedElement
               *



              Class           DataType        Operation          Attribute            AssociationEnd       *


                                                                                                                    Classifier                   StructuralFeature       AssociationEnd
                                                                                               1

                                                                                       Association



                                                                                                           Association       Class        DataType                   Attribute




                                                                                                                                 PrimitiveType      VisibilityKind


 [http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
El estándar Model-Driven Architecture                                                                 La cadena de modelado


          Relación entre M2 y M3         ModelElement
                                                                                             Instance of
                                         -name : string

                                                                                                                                      ModelElement
                                                                                                                                      -name : string

               *
                      Classifier                                  Feature
-generalizations
                                   1                1..*   -visibility : Visibility
                                                                                                           *
                                                                                                               GeneralizableElement                    Feature            TypedElement
               *



              Class           DataType        Operation          Attribute            AssociationEnd       *


                                                                                                                    Classifier                   StructuralFeature       AssociationEnd
                                                                                               1

                                                                                       Association



                                                                                                           Association       Class        DataType                   Attribute




                                                                                                                                 PrimitiveType      VisibilityKind
El estándar Model-Driven Architecture                                                                 La cadena de modelado


          Relación entre M2 y M3         ModelElement
                                                                                             Instance of
                                         -name : string

                                                                                                                                      ModelElement
                                                                                                                                      -name : string

               *
                      Classifier                                  Feature
-generalizations
                                   1                1..*   -visibility : Visibility
                                                                                                           *
                                                                                                               GeneralizableElement                    Feature            TypedElement
               *



              Class           DataType        Operation          Attribute            AssociationEnd       *


                                                                                                                    Classifier                   StructuralFeature       AssociationEnd
                                                                                               1

                                                                                       Association



                                                                                                           Association       Class        DataType                   Attribute




                                                                                                                                 PrimitiveType      VisibilityKind
El estándar Model-Driven Architecture                                                                 La cadena de modelado


          Relación entre M2 y M3         ModelElement
                                                                                             Instance of
                                         -name : string

                                                                                                                                      ModelElement
                                                                                                                                      -name : string

               *
                      Classifier                                  Feature
-generalizations
                                   1                1..*   -visibility : Visibility
                                                                                                           *
                                                                                                               GeneralizableElement                    Feature            TypedElement
               *



              Class           DataType        Operation          Attribute            AssociationEnd       *


                                                                                                                    Classifier                   StructuralFeature       AssociationEnd
                                                                                               1

                                                                                       Association



                                                                                                           Association       Class        DataType                   Attribute




                                                                                                                                 PrimitiveType      VisibilityKind
El estándar Model-Driven Architecture                                                                 La cadena de modelado


          Relación entre M2 y M3         ModelElement
                                                                                             Instance of
                                         -name : string

                                                                                                                                      ModelElement
                                                                                                                                      -name : string

               *
                      Classifier                                  Feature
-generalizations
                                   1                1..*   -visibility : Visibility
                                                                                                           *
                                                                                                               GeneralizableElement                    Feature            TypedElement
               *



              Class           DataType        Operation          Attribute            AssociationEnd       *


                                                                                                                    Classifier                   StructuralFeature       AssociationEnd
                                                                                               1

                                                                                       Association



                                                                                                           Association       Class        DataType                   Attribute




                                                                                                                                 PrimitiveType      VisibilityKind
El estándar Model-Driven Architecture                                                                 La cadena de modelado


          Relación entre M2 y M3         ModelElement
                                                                                             Instance of
                                         -name : string

                                                                                                                                      ModelElement
                                                                                                                                      -name : string

               *
                      Classifier                                  Feature
-generalizations
                                   1                1..*   -visibility : Visibility
                                                                                                           *
                                                                                                               GeneralizableElement                    Feature            TypedElement
               *



              Class           DataType        Operation          Attribute            AssociationEnd       *


                                                                                                                    Classifier                   StructuralFeature       AssociationEnd
                                                                                               1

                                                                                       Association



                                                                                                           Association       Class        DataType                   Attribute




                                                                                                                                 PrimitiveType      VisibilityKind
El estándar Model-Driven Architecture                                                                 La cadena de modelado


          Relación entre M2 y M3         ModelElement
                                                                                             Instance of
                                         -name : string

                                                                                                                                      ModelElement
                                                                                                                                      -name : string

               *
                      Classifier                                  Feature
-generalizations
                                   1                1..*   -visibility : Visibility
                                                                                                           *
                                                                                                               GeneralizableElement                    Feature            TypedElement
               *



              Class           DataType        Operation          Attribute            AssociationEnd       *


                                                                                                                    Classifier                   StructuralFeature       AssociationEnd
                                                                                               1

                                                                                       Association



                                                                                                           Association       Class        DataType                   Attribute




                                                                                                                                 PrimitiveType      VisibilityKind
71

La Plataforma Eclipse Modeling Project

    Eclipse Modeling Project
   • Engloba todo lo relacionado con MDE en Eclipse
            The Eclipse Modeling Project (EMP) focuses on the evolution and promotion of
            model‐based development technologies within the Eclipse community by providing a
            unified set of modeling frameworks, tooling, and standards implementations
   • Todos tienen Eclipse Public Licence y han de ser Open Source
   • No está relacionado con el grupo OMG pero…
   • Se divide principalmente en:
      ▫   Desarrollo de sintaxis abstractas
      ▫   Desarrollo de sintaxis concretas
      ▫   Transformación de modelos
      ▫   Herramientas de desarrollo
      ▫   Desarrollo de nuevas tecnologías
      ▫   Agrupación de proyectos
   • http://www.eclipse.org/modeling
72

La Plataforma Eclipse Modeling Project

    Desarrollo de sintaxis abstractas
   • Eclipse Modeling Framework (EMF)
      ▫ Ecore
      ▫ Otros componentes:
          Soporte para realizar transacciones sobre modelos
          Validación de modelos
          Consultas sobre modelos
          Búsquedas sobre modelos
          Comparación de modelos
          Mecanismos de persistencia
73

La Plataforma Eclipse Modeling Project

    Desarrollo de sintaxis concretas
   • Graphical Modeling Framework (GMF)
      ▫ Servicio de sintaxis gráficas
      ▫ Permite crear un editor sobre el metamodelo Ecore
      ▫ Graphiti es una tecnología englobada dentro de GMF

   • Textual Modeling Framework (TMF)
      ▫ Servicio de sintaxis textuales
      ▫ Permite crear un editor sobre el metamodelo Ecore
      ▫ Xtext es una tecnología englobada dentro de TMF
74

La Plataforma Eclipse Modeling Project

    Transformación de modelados
   • Model to Model Transformation (M2M)
      ▫ Para transformar unos modelos en otros
      ▫ QVT, ATL, …

   • Model to Text Transformation (M2T)
      ▫ Para generar artefactos textuales
      ▫ Java Emitter Templates (JET), Xpand, etc…
75

La Plataforma Eclipse Modeling Project

    Herramientas de desarrollo
   • Model Development Tools (MDT)
      ▫ Proyectos basados en estándares de la industria
          UML
          XML Schema Definition
          Object Constraint Language (OCL)
          Business Process Modeling Notation (BPMN2)
          eTrice
          Papyrus
         …
76

La Plataforma Eclipse Modeling Project

    Desarrollo de nuevas tecnologías
   • Generative Modeling Technologies (GMT)
      ▫ Agrupa varios proyectos que aún están en fase
        experimental
      ▫ Muchos de ellos acaban formando parte de la
        lista principal de proyectos de EMP
          ATL -> ahora en M2M
          Xpand -> ahora en M2T
          Xtext -> ahora en TMF
77

La Plataforma Eclipse Modeling Project

    Agrupación de proyectos
   • Modeling Amalgamation Project (Amalgam)
      ▫ Amalgamation -> Es el proceso de combinar o
        unir entidades en una única forma
      ▫ Su propósito es agrupar tecnologías de EMP y
        facilitar su uso, instalación e integración

      ▫ Es un Eclipse con un gran número de proyectos
        del EMP integrado
La Plataforma Eclipse Modeling Project
79

La Plataforma Eclipse Modeling Project   Instalación del entorno de desarrollo



    Instalación
   • Lo más fácil es descargar un Eclipse con todo
   • http://www.eclipse.org/downloads/packages/eclipse-
     modeling-tools/junosr1 (Eclipse Modeling Tools)
La Plataforma Eclipse Modeling Project




                                Mediante editor gráfico
81

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Crear un proyecto
   • Nuevo Proyecto  MDEWebMetamodelEditor
82

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Crear el metamodelo (I)
   • Nuevo elemento en la carpeta model  Web.ecore
83

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Crear el metamodelo (II)
84

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Visualizar el metamodelo
85

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Crear el modelo generador
   • Nuevo EMF Generator Model  Web.genmodel
86

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Configurar el modelo generador
87

La Plataforma Eclipse Modeling Project            Definición de un metamodelo (editor gráfico)


    Crear JavaDoc




               Botón derecho en Web.genmodel Reload
88

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Especificar métodos (I)
89

La Plataforma Eclipse Modeling Project            Definición de un metamodelo (editor gráfico)


    Especificar métodos (II)




                                                Cuerpo del método

     EOperation


                                                         Documentación JavaDoc

                                         EParameter
90

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)


    Especificar métodos (III)
91

La Plataforma Eclipse Modeling Project   Definición de un modelo (programáticamente)


    Generar el código de los modelos
92

La Plataforma Eclipse Modeling Project   Definición de un modelo (programáticamente)


    Crear un proyecto
93

La Plataforma Eclipse Modeling Project   Definición de un modelo (programáticamente)


    Crear el código fuente para la definición
94

La Plataforma Eclipse Modeling Project   Definición de un modelo (plugin)


    Generar todos los artefactos
95

La Plataforma Eclipse Modeling Project   Definición de un modelo (plugin)


    Crear el modelo mediante el editor
96

La Plataforma Eclipse Modeling Project   Persistencia de modelos


    Guardar el modelo en formato XMI
   • El archivo My.web internamente es código XML (XMI)
   • También se puede persistir el modelo creado con Java
97

La Plataforma Eclipse Modeling Project   Persistencia de modelos


    Cargar el modelo guardado en XMI
98

La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos


    Java Emitter Templates
   • Los modelos se utilizan para obtener artefactos en base
     a lo que se haya modelado
   • Java Emitter Templates (JET) es una tecnología que
     permite transformar modelos a texto (M2T)
   • En concreto, con JET se hace traducción y generación
     ▫ Modelo  Clase Java  Texto
   • Tipos de elementos:
      ▫ Directivas  <%@ … %>
      ▫ Expresiones  <%= .. %>
      ▫ Scriplets  <% … %>
99

La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos


    Preparar el proyecto para trabajar con JET
   • Desde el proyecto en el que se quiera generar
     artefactos…
100

La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos


    Resumen de acciones a realizar
   • Estado de cómo quedará el proyecto al finalizar el proceso
101

La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos


    Crear la plantilla
102

La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos


    Generar artefactos desde la clase Java
   • Crear ConvertToHTML.java
La Plataforma Eclipse Modeling Project




                         Mediante interfaces Java anotadas
La Plataforma Eclipse Modeling Project    Definición de un metamodelo (interfaces Java)


    Idea general de lo que se hará
   1. Crear interfaces Java anotadas
   2. Crear el modelo generador (web.genmodel) en base a las
      interfaces
   3. Se obtiene el metamodelo


   Interfaces Java



      Modelo
                             Metamodelo
     generador
105

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)


    Aspecto final del proyecto
   • Se crea un proyecto Java y se incluyen librerías para
     trabajar con Ecore y para trabajar con XMI
106

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)


    Elementos fundamentales de la API
   • Se utilizan comentarios JavaDoc para indicar


   • Algunas propiedades…
      ▫   abstract=“BOOLEAN”
      ▫   required=“BOOLEAN
      ▫   containment=“BOOLEAN”
      ▫   default=VALUE
      ▫   changeable=“BOOLEAN"
107

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)


    Código de las interfaces (I)
108

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)


    Código de las interfaces (II)
109

La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)


    Generación del metamodelo
   • Cuando se crea el archivo web.genmodel 
     elegir como model importer las anotaciones Java
   • Se generará el archivo Ecore automáticamente
La Plataforma Eclipse Modeling Project




                                   Programáticamente
La Plataforma Eclipse Modeling Project         Definición de un metamodelo (programáticamente)


    Idea general de lo que se hará
   1.    Crear dinámicamente el metamodelo (modelo Ecore)
   2.    Crear dinámicamente un modelo a partir del metamodelo
   3.    Serializar el modelo
   4.    Deserializar el modelo


    Metamodelo
                                                                           Se crea el
                                                                           metamodelo
                      Serializar                                           de forma
        Modelo                           XMI                               dinámica
                      Deserializar
La Plataforma Eclipse Modeling Project   Definición de un metamodelo (programáticamente)


    Aspecto final del proyecto
   • Se crea un proyecto Java y se incluyen librerías
     para trabajar con Ecore y para trabajar con XMI
La Plataforma Eclipse Modeling Project   Definición de un metamodelo (programáticamente)


    Elementos fundamentales de la API
   • Metamodelo


   • Modelo  API reflectiva basada en EObject
      ▫ eClass()
      ▫ eGet() y eSet()
      ▫ eContents() / eContainer()
La Plataforma Eclipse Modeling Project
    Generación del metamodelo (I)        Definición de un metamodelo (programáticamente)
La Plataforma Eclipse Modeling Project
    Generación del metamodelo (II)       Definición de un metamodelo (programáticamente)
La Plataforma Eclipse Modeling Project
    Generación del metamodelo (III)      Definición de un metamodelo (programáticamente)
La Plataforma Eclipse Modeling Project
    Generación del metamodelo (IV)       Definición de un metamodelo (programáticamente)
La Plataforma Eclipse Modeling Project
    Generación del metamodelo (V)        Definición de un metamodelo (programáticamente)
La Plataforma Eclipse Modeling Project
    Generación de un modelo              Definición de un metamodelo (programáticamente)
La Plataforma Eclipse Modeling Project       Definición de un metamodelo (programáticamente)




                                         Serializar y deserializar
La Plataforma Eclipse Modeling Project   Definición de un metamodelo (programáticamente)


    Resultado final
122


Bibliografía
123


¿Siguientes pasos?

•   Creación de lenguajes de dominio
    específico textuales basados en modelos



•   Creación de lenguajes de dominio
    específico gráficos basados en modelos

Weitere ähnliche Inhalte

Was ist angesagt?

Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Darthuz Kilates
 
4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De SoftwareJulio Pari
 
Beneficios de aplicar cmmi
Beneficios de aplicar cmmiBeneficios de aplicar cmmi
Beneficios de aplicar cmmilucainog
 
Herramientas de Desarrollo de Software
Herramientas de Desarrollo de SoftwareHerramientas de Desarrollo de Software
Herramientas de Desarrollo de SoftwareTe Amo Gabriel
 
Metodologías tradicionales: Desarrollo de Software
Metodologías tradicionales: Desarrollo de Software Metodologías tradicionales: Desarrollo de Software
Metodologías tradicionales: Desarrollo de Software Juan C. S. Suárez
 
Actividad 4 cuadro comparativo sobre lenguajes de programacion
Actividad 4 cuadro comparativo sobre lenguajes de programacionActividad 4 cuadro comparativo sobre lenguajes de programacion
Actividad 4 cuadro comparativo sobre lenguajes de programacionJuan Antonio Plascencia Zepeda
 
Modelos de desarrollo de software
Modelos de desarrollo de softwareModelos de desarrollo de software
Modelos de desarrollo de softwareRadel Fuentes
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del SoftwareJaneth Jimenez
 
Introducción a la Ingenieria de Software
Introducción a la Ingenieria de SoftwareIntroducción a la Ingenieria de Software
Introducción a la Ingenieria de SoftwareSorey García
 
MODELADO RUP UML
MODELADO RUP UMLMODELADO RUP UML
MODELADO RUP UMLkcastro388
 
Grupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwareGrupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwarePrimoLaura
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de softwareJesenia Escobar
 
Metodologia web
Metodologia webMetodologia web
Metodologia webAnel Sosa
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareKarloz Dz
 

Was ist angesagt? (20)

Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software
 
Beneficios de aplicar cmmi
Beneficios de aplicar cmmiBeneficios de aplicar cmmi
Beneficios de aplicar cmmi
 
Herramientas de Desarrollo de Software
Herramientas de Desarrollo de SoftwareHerramientas de Desarrollo de Software
Herramientas de Desarrollo de Software
 
Modelo espiral expo
Modelo espiral expoModelo espiral expo
Modelo espiral expo
 
Metodologías tradicionales: Desarrollo de Software
Metodologías tradicionales: Desarrollo de Software Metodologías tradicionales: Desarrollo de Software
Metodologías tradicionales: Desarrollo de Software
 
Conceptos de diseño
Conceptos de diseñoConceptos de diseño
Conceptos de diseño
 
Actividad 4 cuadro comparativo sobre lenguajes de programacion
Actividad 4 cuadro comparativo sobre lenguajes de programacionActividad 4 cuadro comparativo sobre lenguajes de programacion
Actividad 4 cuadro comparativo sobre lenguajes de programacion
 
Modelos de desarrollo de software
Modelos de desarrollo de softwareModelos de desarrollo de software
Modelos de desarrollo de software
 
Computo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPIComputo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPI
 
Modelo incremental
Modelo incrementalModelo incremental
Modelo incremental
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del Software
 
Introducción a la Ingenieria de Software
Introducción a la Ingenieria de SoftwareIntroducción a la Ingenieria de Software
Introducción a la Ingenieria de Software
 
MODELADO RUP UML
MODELADO RUP UMLMODELADO RUP UML
MODELADO RUP UML
 
Grupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwareGrupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-software
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de software
 
Metodologia web
Metodologia webMetodologia web
Metodologia web
 
Mitos del software
Mitos del softwareMitos del software
Mitos del software
 
Modelos de proceso evolutivos – prototipos
Modelos de proceso evolutivos – prototiposModelos de proceso evolutivos – prototipos
Modelos de proceso evolutivos – prototipos
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de Software
 

Ähnlich wie Introducción a la ingeniería dirigida por modelos

Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudEliud Cortes
 
DevOps, por donde comenzar? - DrupalCon Latin America 2015
DevOps, por donde comenzar?  - DrupalCon Latin America 2015DevOps, por donde comenzar?  - DrupalCon Latin America 2015
DevOps, por donde comenzar? - DrupalCon Latin America 2015Taller Negócio Digitais
 
Sesion 1. entendiendo las necesidades (2);diapositiva
Sesion 1. entendiendo las necesidades (2);diapositivaSesion 1. entendiendo las necesidades (2);diapositiva
Sesion 1. entendiendo las necesidades (2);diapositivaYesi Kathe
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILOscar Limachi
 
Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010Kiberley Santos
 
Metodología xp
Metodología xpMetodología xp
Metodología xpPiskamen
 
15 el-desarrollo-del-software
15 el-desarrollo-del-software15 el-desarrollo-del-software
15 el-desarrollo-del-softwarevisualmolina
 
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareMOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareJavier Muñoz
 
Sistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosSistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosAidil Sanchez
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modularguestb97266b9
 
Problemas en el desarrollo de software
Problemas en el desarrollo de software Problemas en el desarrollo de software
Problemas en el desarrollo de software Arielkad
 
Grupo# 5 problemas en el desarrollo de software
Grupo# 5 problemas en el desarrollo de softwareGrupo# 5 problemas en el desarrollo de software
Grupo# 5 problemas en el desarrollo de softwarejohan2105
 
Monografia metodologia agil xp oficial
Monografia metodologia agil xp oficialMonografia metodologia agil xp oficial
Monografia metodologia agil xp oficialHarry G Portales
 

Ähnlich wie Introducción a la ingeniería dirigida por modelos (20)

Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
 
Tecnicasdedesarrollo
TecnicasdedesarrolloTecnicasdedesarrollo
Tecnicasdedesarrollo
 
DevOps, por donde comenzar? - DrupalCon Latin America 2015
DevOps, por donde comenzar?  - DrupalCon Latin America 2015DevOps, por donde comenzar?  - DrupalCon Latin America 2015
DevOps, por donde comenzar? - DrupalCon Latin America 2015
 
Del Mono al QA
Del Mono al QADel Mono al QA
Del Mono al QA
 
Sesion 1. entendiendo las necesidades (2);diapositiva
Sesion 1. entendiendo las necesidades (2);diapositivaSesion 1. entendiendo las necesidades (2);diapositiva
Sesion 1. entendiendo las necesidades (2);diapositiva
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITIL
 
Curso online-cnet-lw
Curso online-cnet-lwCurso online-cnet-lw
Curso online-cnet-lw
 
Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010
 
Metodología xp
Metodología xpMetodología xp
Metodología xp
 
15 el-desarrollo-del-software
15 el-desarrollo-del-software15 el-desarrollo-del-software
15 el-desarrollo-del-software
 
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareMOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
 
Sistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosSistema para el control de ventas e inventarios
Sistema para el control de ventas e inventarios
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Problemas en el desarrollo de software
Problemas en el desarrollo de software Problemas en el desarrollo de software
Problemas en el desarrollo de software
 
Grupo# 5 problemas en el desarrollo de software
Grupo# 5 problemas en el desarrollo de softwareGrupo# 5 problemas en el desarrollo de software
Grupo# 5 problemas en el desarrollo de software
 
Monografia metodologia agil xp oficial
Monografia metodologia agil xp oficialMonografia metodologia agil xp oficial
Monografia metodologia agil xp oficial
 
Ingeniería de software
Ingeniería de software Ingeniería de software
Ingeniería de software
 
Capitulo 2
Capitulo 2Capitulo 2
Capitulo 2
 
Tarea 1
Tarea 1Tarea 1
Tarea 1
 

Mehr von Vicente García Díaz (16)

Creating a textual domain specific language
Creating a textual domain specific languageCreating a textual domain specific language
Creating a textual domain specific language
 
Introduction to architectures based on models, models and metamodels. model d...
Introduction to architectures based on models, models and metamodels. model d...Introduction to architectures based on models, models and metamodels. model d...
Introduction to architectures based on models, models and metamodels. model d...
 
jBPM
jBPMjBPM
jBPM
 
Wikitude. KML y ARML
Wikitude. KML y ARMLWikitude. KML y ARML
Wikitude. KML y ARML
 
Wikitude. ARchiect
Wikitude. ARchiectWikitude. ARchiect
Wikitude. ARchiect
 
Sorting algorithms
Sorting algorithmsSorting algorithms
Sorting algorithms
 
Iniciación a OpenGL
Iniciación a OpenGLIniciación a OpenGL
Iniciación a OpenGL
 
Iniciación a la realidad aumentada
Iniciación a la realidad aumentadaIniciación a la realidad aumentada
Iniciación a la realidad aumentada
 
Iniciación a ARToolKit
Iniciación a ARToolKitIniciación a ARToolKit
Iniciación a ARToolKit
 
Desarrollo robótico - Robot Operating System (ROS)
Desarrollo robótico - Robot Operating System (ROS)Desarrollo robótico - Robot Operating System (ROS)
Desarrollo robótico - Robot Operating System (ROS)
 
Wikitude. Servicios Seb
Wikitude. Servicios SebWikitude. Servicios Seb
Wikitude. Servicios Seb
 
LaTeX
LaTeXLaTeX
LaTeX
 
Automatización y Microsoft Word
Automatización y Microsoft WordAutomatización y Microsoft Word
Automatización y Microsoft Word
 
Árboles
ÁrbolesÁrboles
Árboles
 
Dispersión y tablas hash
Dispersión y tablas hashDispersión y tablas hash
Dispersión y tablas hash
 
Grafos
GrafosGrafos
Grafos
 

Kürzlich hochgeladen

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 

Kürzlich hochgeladen (16)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 

Introducción a la ingeniería dirigida por modelos

  • 1. Ingeniería Dirigida por Modelos Introducción Vicente García Díaz – garciavicente@uniovi.es Universidad de Oviedo, 2012 Model Driven Engineering Research Group
  • 2. 2 Tabla de contenidos Introducción 1. Conceptos básicos 2. Ejemplos de aplicación 3. Terminología 4. El estándar Model-Driven Architecture 5. La plataforma Eclipse Modeling Project
  • 3.
  • 4. 4 Conceptos básicos Fuente: http://blog.drummondhouseplans.com/category/multi-family/
  • 5. 5 Conceptos básicos Fuente: http://www.flightglobal.com//
  • 6. 6 Conceptos básicos ¿Qué es un modelo? 1. Punto de referencia para imitarlo o reproducirlo 2. Ejemplar que por su perfección se debe seguir e imitar 3. Representación en pequeño de alguna cosa 4. Esquema teórico, generalmente matemático, de un sistema o de una realidad compleja, como la evolución económica de un país, que se elabora para facilitar su comprensión y el estudio de su comportamiento Fuente: http://www.rae.es/rae.html
  • 7. 7 Conceptos básicos ¿Modelos en el desarrollo software? • Por supuesto… Modelo Desarrollo Producto
  • 8. 8 Conceptos básicos Proceso típico de desarrollo • Las ingenierías clásicas se basan en el empleo de modelos para obtener un producto tras realizar un desarrollo ▫ No es posible automatizar el desarrollo completamente
  • 9. 9 Conceptos básicos Proceso de desarrollo de software • Peculiaridad: los productos software se pueden diseñar y crear sin “salir” del ordenador Modelo Desarrollo Producto • Informática  Información + Automática ¿Podríamos automatizar la etapa de desarrollo?
  • 10. 10 Conceptos básicos ¿Para qué se utiliza principalmente MDE? • Para crear modelos software • Dichos modelos definen los conceptos de un dominio determinado • Las tecnologías existentes englobadas en MDE permiten trabajar con los modelos como si fueran lenguajes de programación de alto nivel ▫ Generalmente lenguajes de dominio específico
  • 11. 11 Conceptos básicos Motivación • Crecimiento de la complejidad del software • No se reutiliza ni el conocimiento tecnológico ni del dominio • Se necesita industrializar el desarrollo del software • El término crisis del software sigue vigente The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem [Dijkstra, 1972]
  • 12. 12 Conceptos básicos Antecedentes • El nivel de abstracción de los lenguajes va en aumento ▫ Binario ▫ Ensamblador ▫ Procedimental ▫ Orientado a objetos • Hacia el espacio de la solución del problema • En los años 80 surgen las herramientas CASE ▫ No tuvieron mucho éxito
  • 13. 13 Conceptos básicos Objetivos • Reducir la complejidad de las plataformas actuales • Expresar los conceptos de los diferentes dominios de forma más apropiada Conceptos del dominio Conceptos del dominio Trabajo mental de los desarrolladores Conceptos de la tecnología utilizada Conceptos de la tecnología utilizada
  • 14.
  • 15. Ejemplos de aplicación Telefonía IP Fuente: [Kelly and Tolvanen, 2008]
  • 16. Ejemplos de aplicación Productos de seguros Fuente: [Kelly and Tolvanen, 2008]
  • 17. Ejemplos de aplicación Automatización del hogar Fuente: [Kelly and Tolvanen, 2008]
  • 18. Ejemplos de aplicación Aplicaciones para móviles Fuente: [Kelly and Tolvanen, 2008]
  • 19. Ejemplos de aplicación Relojes digitales Fuente: [Kelly and Tolvanen, 2008]
  • 20. Ejemplos de aplicación Sistemas de trazabilidad alimentaria 1.1 Pro ducto r ? FABRICA DE QUESOS 1.2 Tipo ? PROCESO BEYOS 1.3 Pes o ? 6.1 Lo te ? 7.1 Lo te Leche? 1.4 Temperatura? 6.2 Cantidad? 7.2 Cantidad? Fecha: 04/06/2008 1.5 Acidez? 6.2 PH? 7.3 Mas Leche? Versión: 0.017 1.6 Lo te Pro ductor? 7.4 Lo te Cuajo ? 1.7 Lo te INT->? 1. RECEPCION 7.5 Mas Cuajo ? LECHE 7.6 Lo te Fermento s? 6. 7.7 Mas Fermento s? 2.1 Pro ducto r ? PASTEURIZA 7.8 Lo te Calcio ? 2.2 Cantidad? 7.9 Mas Calcio ? 2.3 Lo te Pro ductor? 7.10 Lo te INT-> 2.4 Lo te INT->? 2. RECEPCION CUAJO 12.1 Lo te? 12.2 Nº Artículo s? 3.1 Pro ducto r ? 12.3 Cliente? 3.2 Cantidad? 3.3 Lo te Pro ductor? 7. CUAJADA 3.4 Lo te INT->? 3. RECEPCION FERMENTOS 13. ENVASADO 4.1 Pro ducto r ? Las etiquetas las irán REQUESÓN 4.2 Cantidad? colocando en las 4.3 Lo te Pro ductor? estanterías que 4.4 Lo te INT->? 4. RECEPCION quieran CALCIO 14.1 Cliente? 8.1 Lo te Cuajada? 14.2 Lo te? 8.2 Nº etiquetas deseadas? 14.3 Unidades? 5.1 Pro ducto r ? 5.2 Cantidad? ETIQUETAS RFID 5.3 Lo te Pro ductor? 5. RECEPCION 5.4 Lo te INT->? SAL 14. 8. COMERCIALIZ EMMOLDADO ACION 11.1 RFID Secado ? 11.3 Nº Co ntra-etiquetas? 11.4 Primera Co ntra-etiqueta 13.1 Cliente? 9.1 RFID Enmo ldado? 10.1 RFID Salado ? 11.5 Cliente? 13.2 Pes o ? 9.2 Lo te Sal? 13.3 Lo te? 13.4 Unidades? ETIQUETAS COMERCIALES 12. 9. SALADO 10. SECADO 11. ENVASADO COMERCIALIZ ACION
  • 21. Ejemplos de aplicación Videojuegos en entorno .NET Esto es un poco la idea del GADE4ALL, ¿Podríais cambiarlo por un par de imágenes del GADE4ALL y así hablamos un poco del proyecto? [Furtado, 2007]
  • 22.
  • 23. 23 Terminología El metamodelado • Relación en cascada entre modelos y metamodelos Elementos del describe describe mundo real Modelo Metamodelo (dominio)
  • 24. 24 Terminología Espacio conceptual Meta- metamodelo Subdominios <<instanceof>> Sintaxis Basado en Semántica abstracta estática Describe conceptos de Dominio Metamodelo Lenguaje de <<instanceof>> Sintaxis dominio concreta específico Modelo formal Semántica Respeta a
  • 25. 25 Terminología Beneficios del uso de un metamodelo • Clave de la ingeniería dirigida por modelos • Es imprescindible para: 1. Construir lenguajes de dominio específico 2. Validar modelos 3. Transformar modelos 4. Generar artefactos (código, documentación, etc.) 5. Integración de herramientas
  • 27. 27 Terminología Ejemplo de dominio: Redes de Petri Dominio de las Redes de Petri • Fueron definidas en los años 60 por Carl Adam Petri • Son una especialización de la teoría de autómatas que permite expresar eventos concurrentes • Tiene lugares, transiciones y arcos dirigidos • Áreas de aplicación: análisis de datos, diseño de software, fiabilidad, flujo de trabajo… P1 T1 17 P2 15 T2 4 3 4 6 P3 P1 P5
  • 28. 28 Terminología Ejemplo de dominio: Redes de Petri Un metamodelo para el dominio P1 T1 17 P2 15 T2 4 3 4 6 P3 P1 P5 PetriNet 0..* 1 1 Node Arc +Name : string +weight : int 0..* Place Transition
  • 29. 29 Terminología Ejemplo de dominio: Redes de Petri Un meta-metamodelo para el dominio Model Element PetriNet 0..* 1 1 Node Arc +Name : string +weight : int Typed Element Generalizable Element 0..* Place Transition Attribute Association Class
  • 30. 30 Terminología Ejemplo de dominio: Redes de Petri Mapeo entre sintaxis abstracta y concreta T1 PetriNet P1 15 17 P2 1 0..* 1 Node Arc +Name : string +weight : int 0..* Place Transition
  • 31. 31 Terminología Supermetamodelo (I) M3 Meta-metamodelo M2 Metamodelo M1 Modelo M0 Elementos del mundo real Instancia de Representado por
  • 32. 32 Terminología Supermetamodelo (II) MOF EBNF M3 MOF EBNF M2 UML, ODM, ... JAVA, C#, XML, ... M1 UML classes, objects, ... Programas informáticos M0 Elementos del mundo real Elementos del mundo real Instancia de Representado por
  • 33. 33 Terminología Dualidad de los espacios de modelado M3 MOF MO F M2 UML ODM Modelo UML de M1 la gramática de Modelo UML de un Modelo ODM de Java programa Java animales M0 N F EB Programa Java Gramática de EBNF Java
  • 34. 34 Terminología Ciclo de vida del desarrollo con MDE Tradicional MDE Requisitos Requisitos Texto Texto Análisis Análisis Modelo Modelo Diseño Diseño Modelo Modelo Codificación Codificación Código Código Pruebas Pruebas Código Código Despliegue Despliegue Paso manual Paso automático
  • 35. 35 Terminología Secuencia de pasos Modelo Modelo <<instanceof>> Metamodelo Modelo <<instanceof>> Reglas de Transformación transformación Modelo Reglas de Transformación transformación Artefactos textuales generados
  • 36. 36 Terminología ¿Cómo se generan los artefactos? (I) • Metamodelo (meta-metamodelo) + Plantillas Metamodelo Apply to Instancia del Plantillas Instance of metamodelo Based on Yields Especificación Código generado
  • 37. 37 Terminología ¿Cómo se generan los artefactos? (II) • Metamodelo (meta-metamodelo) + Plantillas Fuente: http://www.openarchitectureware.org/pub/documentation/4.3.1/openArchitectureWare-4.3.1-Reference.pdff
  • 38.
  • 39. 39 El estándar Model-Driven Architecture Introducción • http://www.omg.org/mda
  • 40. 40 El estándar Model-Driven Architecture Puntos de vista • Computation Independent Model (CIM) • Platform Independent Model (PIM) CIM • Platform Specific Model (PSM) • Implementation Specific Model (ISM) PIM PSM 1 PSM n … ISM 1 ISM n …
  • 41. 41 El estándar Model-Driven Architecture Arquitectura en cuatro capas Meta-metamodelo (M3) MOF Metamodelo (M2) UML ODM … Modelo (M1) Modelos UML Modelos ODM … Realidad (M0) Sistema
  • 42. El estándar Model-Driven Architecture Estándares relacionados (MOF) Meta-Object Facility (MOF)  ECORE ECORE META-METAMODEL • Ecore
  • 43. 43 El estándar Model-Driven Architecture Estándares relacionados (MOF) Empleo de MOF como origen de todo MOF Metamodelo origen Metamodelo destino Reglas de transformación (QVT) transformación Modelo origen Modelo destino
  • 44. 44 El estándar Model-Driven Architecture Estándares relacionados (UML) Unified Modeling Language (UML) • Estándar para ▫ Visualizar ▫ Especificar ▫ Documentar ▫ … • Independiente del lenguaje • Una combinación ▫ Fue diseñado por “The three amigos” ▫ James Rumbaugh, Ivar Jacobson, Grady Booch
  • 45. 45 El estándar Model-Driven Architecture Estándares relacionados (UML) Extensión de UML basada en Perfiles «metaclass» * 1 «metaclass» «metaclass» Attribute Class Operation 1 * «extends» «extends» «extends» stereotype <<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod PersistenceTime: (short, long) constraint context Entity tagged value inv: attribute->exists(isStereoKinded("PrimaryKey") <<Entity>> Empleado * 1 <<Entity>> Empresa -<<PrimaryKey>> nif : string -<<PrimaryKey>> cif : string -edad : int -name : string {PersistenceTime=short} -<<FinderMethod>>findByCif()
  • 46. 46 El estándar Model-Driven Architecture Estándares relacionados (XMI) XML Metadata Interchange (XMI) (I) • Sirve para serializar modelos • Permite que las herramientas se integren XMI 2.1 – MOF 2.0 XMI 1.3 – MOF 1.4 XMI 2.0 – XMI 1.1 – MOF 1.4 MOF 1.3 XMI 1.2 – MOF 1.4
  • 47. 47 El estándar Model-Driven Architecture Estándares relacionados (XMI) XML Metadata Interchange (XMI) (II)
  • 48. 48 El estándar Model-Driven Architecture Estándares relacionados (XMI) XML Metadata Interchange (XMI) (III)
  • 49. 49 El estándar Model-Driven Architecture Estándares relacionados (OCL) Object Constraint Language (OCL) (I) • Se utiliza para definir restricciones • Es parte de UML • Tipos ▫ Clase  invariant ▫ Precondiciones de una operación  precondition ▫ Postcondiciones de una operación  postcondition
  • 50. 50 El estándar Model-Driven Architecture Estándares relacionados (OCL) Object Constraint Language (OCL) (II) context Empresa context Coche inv: conductoresPotenciales = empleados->select(edad >= 18) inv: conductor.edad >= 18 Empresa poseedor Coche vehículos +contratar(entrada p : Persona) +conducir(entrada p : Persona) jefe context Coche::conducir(p: Persona) pre: (conductor==null) && (p.edad >= 18) post: conductor = p conductoresPotenciales empleados Persona conductor -edad : int context Empresa::contratar(p: Persona) pre: --none post: (empleados.size = empleados@pre.size + 1) && (empleados.includes(p)) Fuente: [Stahl and Völter, 2006]
  • 51. 51 El estándar Model-Driven Architecture Estándares relacionados (OCL) Object Constraint Language (OCL) (III) • Restricción en nivel Mn afecta al nivel Mn-1 «metaclass» «metaclass» UML::Class UML::Attribute -name : String -name : String -type : Type «metaclass» «metaclass» MM::PersonaDesconocida MM::ParametrosNumericos context PersonaDesconocida context ParametrosNumericos inv: name == “no identificada” inv: type.name == “Integer” || “desconocida”
  • 52. 52 El estándar Model-Driven Architecture Estándares relacionados (QVT) Query, Views, Transformations (QVT) (I) • Lenguaje de transformación de modelos • Compuesto de tres lenguajes con objetivos distintos • QVT Operation Mappings Language Relations Language ▫ Relacional Black Box Mappings ▫ Core ▫ Operacional Core Language
  • 53. 53 El estándar Model-Driven Architecture Estándares relacionados (QVT) Query, Views, Transformations (QVT) (II) • Lenguaje relacional ▫ Transformaciones  un conjunto de relaciones  Declarativo Fuente: [Mens, 2009]
  • 54. 54 El estándar Model-Driven Architecture Estándares relacionados (QVT) Query, Views, Transformations (QVT) (III) • Lenguaje operacional ▫ Transformaciones  un conjunto de operaciones  Imperativo Fuente: [Mens, 2009]
  • 55. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association [http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
  • 56. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  • 57. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  • 58. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  • 59. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  • 60. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  • 61. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  • 62. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature -nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  • 63. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature -generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind [http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
  • 64. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature -generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  • 65. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature -generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  • 66. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature -generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  • 67. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature -generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  • 68. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature -generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  • 69. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature -generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  • 70.
  • 71. 71 La Plataforma Eclipse Modeling Project Eclipse Modeling Project • Engloba todo lo relacionado con MDE en Eclipse The Eclipse Modeling Project (EMP) focuses on the evolution and promotion of model‐based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standards implementations • Todos tienen Eclipse Public Licence y han de ser Open Source • No está relacionado con el grupo OMG pero… • Se divide principalmente en: ▫ Desarrollo de sintaxis abstractas ▫ Desarrollo de sintaxis concretas ▫ Transformación de modelos ▫ Herramientas de desarrollo ▫ Desarrollo de nuevas tecnologías ▫ Agrupación de proyectos • http://www.eclipse.org/modeling
  • 72. 72 La Plataforma Eclipse Modeling Project Desarrollo de sintaxis abstractas • Eclipse Modeling Framework (EMF) ▫ Ecore ▫ Otros componentes:  Soporte para realizar transacciones sobre modelos  Validación de modelos  Consultas sobre modelos  Búsquedas sobre modelos  Comparación de modelos  Mecanismos de persistencia
  • 73. 73 La Plataforma Eclipse Modeling Project Desarrollo de sintaxis concretas • Graphical Modeling Framework (GMF) ▫ Servicio de sintaxis gráficas ▫ Permite crear un editor sobre el metamodelo Ecore ▫ Graphiti es una tecnología englobada dentro de GMF • Textual Modeling Framework (TMF) ▫ Servicio de sintaxis textuales ▫ Permite crear un editor sobre el metamodelo Ecore ▫ Xtext es una tecnología englobada dentro de TMF
  • 74. 74 La Plataforma Eclipse Modeling Project Transformación de modelados • Model to Model Transformation (M2M) ▫ Para transformar unos modelos en otros ▫ QVT, ATL, … • Model to Text Transformation (M2T) ▫ Para generar artefactos textuales ▫ Java Emitter Templates (JET), Xpand, etc…
  • 75. 75 La Plataforma Eclipse Modeling Project Herramientas de desarrollo • Model Development Tools (MDT) ▫ Proyectos basados en estándares de la industria  UML  XML Schema Definition  Object Constraint Language (OCL)  Business Process Modeling Notation (BPMN2)  eTrice  Papyrus …
  • 76. 76 La Plataforma Eclipse Modeling Project Desarrollo de nuevas tecnologías • Generative Modeling Technologies (GMT) ▫ Agrupa varios proyectos que aún están en fase experimental ▫ Muchos de ellos acaban formando parte de la lista principal de proyectos de EMP  ATL -> ahora en M2M  Xpand -> ahora en M2T  Xtext -> ahora en TMF
  • 77. 77 La Plataforma Eclipse Modeling Project Agrupación de proyectos • Modeling Amalgamation Project (Amalgam) ▫ Amalgamation -> Es el proceso de combinar o unir entidades en una única forma ▫ Su propósito es agrupar tecnologías de EMP y facilitar su uso, instalación e integración ▫ Es un Eclipse con un gran número de proyectos del EMP integrado
  • 78. La Plataforma Eclipse Modeling Project
  • 79. 79 La Plataforma Eclipse Modeling Project Instalación del entorno de desarrollo Instalación • Lo más fácil es descargar un Eclipse con todo • http://www.eclipse.org/downloads/packages/eclipse- modeling-tools/junosr1 (Eclipse Modeling Tools)
  • 80. La Plataforma Eclipse Modeling Project Mediante editor gráfico
  • 81. 81 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear un proyecto • Nuevo Proyecto  MDEWebMetamodelEditor
  • 82. 82 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear el metamodelo (I) • Nuevo elemento en la carpeta model  Web.ecore
  • 83. 83 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear el metamodelo (II)
  • 84. 84 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Visualizar el metamodelo
  • 85. 85 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear el modelo generador • Nuevo EMF Generator Model  Web.genmodel
  • 86. 86 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Configurar el modelo generador
  • 87. 87 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear JavaDoc Botón derecho en Web.genmodel Reload
  • 88. 88 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Especificar métodos (I)
  • 89. 89 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Especificar métodos (II) Cuerpo del método EOperation Documentación JavaDoc EParameter
  • 90. 90 La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Especificar métodos (III)
  • 91. 91 La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente) Generar el código de los modelos
  • 92. 92 La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente) Crear un proyecto
  • 93. 93 La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente) Crear el código fuente para la definición
  • 94. 94 La Plataforma Eclipse Modeling Project Definición de un modelo (plugin) Generar todos los artefactos
  • 95. 95 La Plataforma Eclipse Modeling Project Definición de un modelo (plugin) Crear el modelo mediante el editor
  • 96. 96 La Plataforma Eclipse Modeling Project Persistencia de modelos Guardar el modelo en formato XMI • El archivo My.web internamente es código XML (XMI) • También se puede persistir el modelo creado con Java
  • 97. 97 La Plataforma Eclipse Modeling Project Persistencia de modelos Cargar el modelo guardado en XMI
  • 98. 98 La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Java Emitter Templates • Los modelos se utilizan para obtener artefactos en base a lo que se haya modelado • Java Emitter Templates (JET) es una tecnología que permite transformar modelos a texto (M2T) • En concreto, con JET se hace traducción y generación ▫ Modelo  Clase Java  Texto • Tipos de elementos: ▫ Directivas  <%@ … %> ▫ Expresiones  <%= .. %> ▫ Scriplets  <% … %>
  • 99. 99 La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Preparar el proyecto para trabajar con JET • Desde el proyecto en el que se quiera generar artefactos…
  • 100. 100 La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Resumen de acciones a realizar • Estado de cómo quedará el proyecto al finalizar el proceso
  • 101. 101 La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Crear la plantilla
  • 102. 102 La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Generar artefactos desde la clase Java • Crear ConvertToHTML.java
  • 103. La Plataforma Eclipse Modeling Project Mediante interfaces Java anotadas
  • 104. La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Idea general de lo que se hará 1. Crear interfaces Java anotadas 2. Crear el modelo generador (web.genmodel) en base a las interfaces 3. Se obtiene el metamodelo Interfaces Java Modelo Metamodelo generador
  • 105. 105 La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Aspecto final del proyecto • Se crea un proyecto Java y se incluyen librerías para trabajar con Ecore y para trabajar con XMI
  • 106. 106 La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Elementos fundamentales de la API • Se utilizan comentarios JavaDoc para indicar • Algunas propiedades… ▫ abstract=“BOOLEAN” ▫ required=“BOOLEAN ▫ containment=“BOOLEAN” ▫ default=VALUE ▫ changeable=“BOOLEAN"
  • 107. 107 La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Código de las interfaces (I)
  • 108. 108 La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Código de las interfaces (II)
  • 109. 109 La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Generación del metamodelo • Cuando se crea el archivo web.genmodel  elegir como model importer las anotaciones Java • Se generará el archivo Ecore automáticamente
  • 110. La Plataforma Eclipse Modeling Project Programáticamente
  • 111. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Idea general de lo que se hará 1. Crear dinámicamente el metamodelo (modelo Ecore) 2. Crear dinámicamente un modelo a partir del metamodelo 3. Serializar el modelo 4. Deserializar el modelo Metamodelo Se crea el metamodelo Serializar de forma Modelo XMI dinámica Deserializar
  • 112. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Aspecto final del proyecto • Se crea un proyecto Java y se incluyen librerías para trabajar con Ecore y para trabajar con XMI
  • 113. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Elementos fundamentales de la API • Metamodelo • Modelo  API reflectiva basada en EObject ▫ eClass() ▫ eGet() y eSet() ▫ eContents() / eContainer()
  • 114. La Plataforma Eclipse Modeling Project Generación del metamodelo (I) Definición de un metamodelo (programáticamente)
  • 115. La Plataforma Eclipse Modeling Project Generación del metamodelo (II) Definición de un metamodelo (programáticamente)
  • 116. La Plataforma Eclipse Modeling Project Generación del metamodelo (III) Definición de un metamodelo (programáticamente)
  • 117. La Plataforma Eclipse Modeling Project Generación del metamodelo (IV) Definición de un metamodelo (programáticamente)
  • 118. La Plataforma Eclipse Modeling Project Generación del metamodelo (V) Definición de un metamodelo (programáticamente)
  • 119. La Plataforma Eclipse Modeling Project Generación de un modelo Definición de un metamodelo (programáticamente)
  • 120. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Serializar y deserializar
  • 121. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Resultado final
  • 123. 123 ¿Siguientes pasos? • Creación de lenguajes de dominio específico textuales basados en modelos • Creación de lenguajes de dominio específico gráficos basados en modelos