arquitectura de software dirigida por modelos (model-driven architecture)

56
Arquitectura de Arquitectura de software dirigida software dirigida por modelos por modelos (Model-Driven (Model-Driven Architecture) Architecture) Liliana Favre Liliana Favre UNCPBA UNCPBA 2006 2006

Upload: edena

Post on 05-Jan-2016

29 views

Category:

Documents


0 download

DESCRIPTION

Arquitectura de software dirigida por modelos (Model-Driven Architecture). Liliana Favre UNCPBA 2006. METAMODELADO. Bibliografía. Las gráficas y especificaciones fueron extraídas de la siguiente bibliografía: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de software Arquitectura de software dirigida por modelosdirigida por modelos(Model-Driven Architecture)(Model-Driven Architecture)

Liliana FavreLiliana FavreUNCPBAUNCPBA

20062006

Page 2: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

METAMODELADOMETAMODELADO

Page 3: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

BibliografíaBibliografíaLas gráficas y especificaciones fueron extraídas de la siguiente

bibliografía:1. MDA: The Model Driven Architecture www.omg.org/mda, 2006

MOF: Meta Object facility (MOF ™) 1.4. formal/2002-04-03 www.omg-org/mof

2. OCL: OCL Specification. Version 2.0. Formal document: ptc/03-10-14 www.omg.org

3. UML: UML 2.0 Superstructure Specification. OMG formal/05-07-04 www.omg.org

4. UML: UML 2.0 Infrastructure Specification. OMG formal/05-07-04 www.omg.org

5. Warmer, J., Kleppe, A. The Object-Constraint Language. (Second Edition). Addison Wesley (2003)

6. Warmer, J., Kleppe,A., Bast, W. MDA Explained: The Model Driven Architecture™: Practice and Promise Addison Wesley (2003)

Page 4: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

METAMODELOSMETAMODELOS

Los lenguajes de programación basados en Los lenguajes de programación basados en texto se describen por gramáticas (BNF).texto se describen por gramáticas (BNF).

Los lenguajes de modelamiento como UML Los lenguajes de modelamiento como UML tienen, en general, una sintaxis gráfica que tienen, en general, una sintaxis gráfica que requiere otro tipo de descripciónrequiere otro tipo de descripción

MetamodeladoMetamodelado

Page 5: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Modelos, Lenguajes, Metamodelos y Metalenguajes

Un Un metamodelometamodelo es un modelo que define el lenguaje es un modelo que define el lenguajepara expresar un modelo.para expresar un modelo.

Un Un modelomodelo se expresa en un se expresa en un lenguaje.lenguaje.

Un Un lenguajelenguaje se define por un se define por un metamodelometamodelo..

Un Un metamodelometamodelo se expresa en un se expresa en un metalenguajemetalenguaje..

¿BNF es un metalenguaje?¿BNF es un metalenguaje?

Page 6: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Modelos, Lenguajes, Metamodelos y Metalenguajes

El metamodelo de un lenguaje es una descripción detodos los conceptos que pueden usarse en el mismo.Por ejemplo, los conceptos de package, clase , atributo y operaciones

aparecen en UML; los conceptos de métodos, constructores e interfaces en JAVA; los conceptos de tabla, columna, clave son parte de SQLCada elemento de un modelo es una instancia de una metaclaseen el metamodelo.Una clase define a sus objetos y una metaclase define a loselementos del modelo

Page 7: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Modelos, Lenguajes, Metamodelos y MetalenguajesMetamodelos basados en Metamodelos basados en

EntidadesEntidades RelacionesRelaciones SistemasSistemas

Modelos estáticos UMLModelos estáticos UML

ClasesClasesAsociaciones binariasAsociaciones binarias

Tipos de datosTipos de datosPackagePackage

Especificaciones OCLEspecificaciones OCL

Page 8: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Un ejemplo de metamodelo Un ejemplo de metamodelo UMLUML

Page 9: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Un ejemplo de metamodelo Un ejemplo de metamodelo UMLUML

context Packagecontext Packageself.class self.class --> forAll (e1,e2 / e1.name = e2.name implies e1 = e2)> forAll (e1,e2 / e1.name = e2.name implies e1 = e2)self.associationself.association-->forAll(a1,a2/ a1.name=a2.name implies a1=a2)>forAll(a1,a2/ a1.name=a2.name implies a1=a2)self.nestedPackagesself.nestedPackages-->>forAll(p1,p2 / p1.name = p2.name implies p1=p2)forAll(p1,p2 / p1.name = p2.name implies p1=p2)

context context AssociationEndAssociationEndsource = source = self.otherEnd.targetself.otherEnd.target and target = and target = otherEnd.sourceotherEnd.source

Page 10: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo- Metamodelo SQL Ejemplo- Metamodelo SQL simplificado simplificado

Page 11: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Modelos, Lenguajes, Metamodelos y Metalenguajes

Un metalenguaje es un lenguaje y puede serUn metalenguaje es un lenguaje y puede serdefinido por un metamodelodefinido por un metamodelo

MetalenguajeMetalenguaje Meta-metamodelo Meta-metamodeloMeta-meta lenguaje Meta-meta- metamodeloMeta-meta lenguaje Meta-meta- metamodelo…………………… ………………………………………… ……………………..............(meta)(meta)i i metalenguaje (meta)metalenguaje (meta)ii metamodelo metamodelo

El estándar definido por OMG usa 4 nivelesEl estándar definido por OMG usa 4 niveles

Page 12: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de 4 nivelesArquitectura de 4 niveles

OMG usa una arquitectura de 4 niveles para sus

estándares:

MO: Modelo de instancias

M1: Modelo del sistema

M2: Metamodelo

M3: Meta-metamodelo

Page 13: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de 4 niveles Arquitectura de 4 niveles

Page 14: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de 4 nivelesArquitectura de 4 niveles

Page 15: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de 4 nivelesArquitectura de 4 niveles

Page 16: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de 4 nivelesArquitectura de 4 niveles

Page 17: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Meta Object facility Meta Object facility (MOF)(MOF)

MOF captura la diversidad de estándares deMOF captura la diversidad de estándares de

modelamiento para integrar diferentes tipos demodelamiento para integrar diferentes tipos de

modelos y metadatos e intercambiarlos entremodelos y metadatos e intercambiarlos entre

diferentes herramientas.diferentes herramientas.

.

Page 18: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

MOF

MOF usa un framework de modelamiento que esun subconjunto del núcleo de UML. Los 4construcciones de modelamiento son:

Clases, que modelan metaobjetos MOF. Asociaciones que modelan relaciones binarias entre

metaobjetos. Tipos de datos, que modelan otros datos (por ejemplo

tipos primitivos, tipos externos, etc). Packages, que modularizan los modelos.

Page 19: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

MOF(Meta Object Facility)

Construcciones en MOF

Asociaciones

Association-end

Multiplicidades

Agregación

Agregación asociación

Agregación atributo

Page 20: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

MOF(Meta Object Facility)

MOF soporta dos tipos de agregaciones:

Non-aggregate No impone restricciones sobre las

multiplicidades de las relaciones. No impone restriccciones sobre el origen de las

instancias en la relación. La relación no impacta sobre el ciclo de vida

de las instancias.

Page 21: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

MOF(Meta Object Facility)

Composite Es asimétrica, identifica a un “todo” y sus “partes”. Una instancia no puede ser componente de más de un

“composite” a la vez. Una instancia no puede ser componente de sí misma, sus

componentes, las componentes de sus componentes. Cuando un “composite” es eliminado, todos sus componentes

y las componentes de sus componentes son también eliminadas.

El “composite” y las partes, junto con los links que forman la composición, deben pertenecer al mismo package más externo

Page 22: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

MOF(Meta Object Facility)

Construcciones en MOFTipos de datos

Tipos primitivos Tipos constructoresPackages Generalización de packages Anidamiento de packages Importación de packages Clustering

Page 23: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

MOF(Meta Object Facility)

Constraints y consistencia

El modelo MOF define un elemento llamado

Constraint que puede ser usado para adjuntar

reglas de consistencia a componentes del

Metamodelo.

En MOF son expresados en OCL.

Page 24: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de 4 niveles y Arquitectura de 4 niveles y UML 1.xUML 1.x

El metamodelo UML 1.x era compatible pero no

se alineaba estrictamente a la arquitectura de 4

niveles en la que cada metamodelo es una

instancia de un meta-metamodelo.

UML 2.0 está alineado con MOF, es una

instancia de MOF. El núcleo de UML y de MOF

comparten los elementos de metamodelado.

Page 25: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Especificación de UML 2.0

La especificación de UML 2.0 está organizada endos documentos:UML 2.0 InfrastructureDefine las construcciones de lenguaje fundacionalesrequeridas por UML 2.0. Es un núcleo de metalenguaje que puede ser reusado para definir otros metamodelos ymecanismos de extensión para UML UML 2.0 SuperstructureComplementa a UML 2.0 Infrastructure. Define construcciones anivel de usuario requeridas por UML 2.0

Page 26: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Especificación de UML 2.0

La infraestructura de UML se define enInfrastructure Library: Define un núcleo de metalenguaje que puede ser

reusado para definir variedad de metamodelos, como MOF, UML, CWM.

Page 27: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Especificación de UML Especificación de UML 2.02.0

Alinea arquitecturalmente a UML, MOF y XMI

Permite la creación de dialectos a través de profiles y de nuevos lenguajes(familias de lenguajes) basados en el núcleo del metalenguaje.

Page 28: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

UML 2.0 InfrastructureCore Package

Core Package

Es un metamodelo completo diseñado para lograr alta

reusabilidad, donde otros metamodelos en el mismo

nivel importan o especializan sus metaclases

Page 29: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

UML 2.0 Superstructure

La superestructura de UML está especificada en

el package PACKAGE que está dividido en un

número de packages que especifican modelos

estructurales y de comportamiento.

Page 30: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

UML 2.0 SuperstructureUML 2.0 SuperstructurePackagePackage

Page 31: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UMLEl metamodelo de UML Packages - Estructura Packages - Estructura

Page 32: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UMLEl metamodelo de UML Packages - Classes Packages - Classes

Page 33: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UMLEl metamodelo de UML Package-Kernel-Root Package-Kernel-Root

DiagramDiagram

Page 34: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UMLEl metamodelo de UML Package-Kernel-Root Package-Kernel-Root

DiagramDiagram

Page 35: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UML El metamodelo de UML Kernel-OperacionesKernel-Operaciones

Page 36: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UML El metamodelo de UML Kernel-OperacionesKernel-Operaciones

Una operación es un Una operación es un featurefeature de de comportamientocomportamiento

que especifica nombre, parámetros y que especifica nombre, parámetros y constraintsconstraints

para invocar un comportamiento para invocar un comportamiento asociado.asociado.

Page 37: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UML El metamodelo de UML Kernel-OperacionesKernel-Operaciones

Page 38: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UML El metamodelo de UML Kernel-OperacionesKernel-Operaciones

Page 39: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UML El metamodelo de UML Kernel-OperacionesKernel-Operaciones

Page 40: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UML El metamodelo de UML Kernel-OperacionesKernel-Operaciones

Page 41: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UML El metamodelo de UML Kernel-OperacionesKernel-Operaciones

Page 42: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UMLEl metamodelo de UMLKernel-Diagrama de Kernel-Diagrama de

multiplicidadesmultiplicidades

Page 43: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo de UMLEl metamodelo de UMLKernel-Diagrama de Kernel-Diagrama de

multiplicidadesmultiplicidades

Page 44: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Metamodelo OCLMetamodelo OCLKernelKernel

Page 45: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Las reglas que especifican si un tipo conforma aLas reglas que especifican si un tipo conforma a

otro son especificadas en OCL.otro son especificadas en OCL.

La operación La operación conformsTo(c:Classifier):BooleanconformsTo(c:Classifier):Boolean,,

evalúa True si self conforam a c. evalúa True si self conforam a c.

Reglas para tipos individualesReglas para tipos individuales

Page 46: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 47: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 48: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 49: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 50: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 51: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 52: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 53: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

El metamodelo OCLEl metamodelo OCLKernelKernel

Page 54: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

La relación entre los La relación entre los metamodelos de UML y OCLmetamodelos de UML y OCLUna expresión OCL en los Una expresión OCL en los

metamodelosmetamodelos

referencia a elementos de un modelo referencia a elementos de un modelo UML.UML.

Los elementos referenciados son Los elementos referenciados son instancias deinstancias de

metaclasesmetaclases

Page 55: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

La relación entre los La relación entre los metamodelos de UML y OCLmetamodelos de UML y OCL

Page 56: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

La relación entre los La relación entre los metamodelos de UML y OCLmetamodelos de UML y OCL