22
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

Introduccion MDA

Embed Size (px)

Citation preview

Page 1: Introduccion MDA

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

Liliana FavreLiliana FavreUNCPBAUNCPBA

20062006

Page 2: Introduccion MDA

Model-Driven Architecture (MDA)Model-Driven Architecture (MDA)

Es una evolución de estándares definidos por OMGEs una evolución de estándares definidos por OMG((Object Management GroupObject Management Group) para mejorar) para mejorarprocesos de desarrollo de sistemas de software dirigidosprocesos de desarrollo de sistemas de software dirigidospor modelos. por modelos. Ideas centrales en MDA Ideas centrales en MDA

Separar la especificación de la funcionalidad del Separar la especificación de la funcionalidad del sistema de su implementación sobre una plataforma sistema de su implementación sobre una plataforma en una tecnología específica.en una tecnología específica.

Controlar la evolución desde modelos abstractos a Controlar la evolución desde modelos abstractos a implementaciones tendiendo a aumentar el grado de implementaciones tendiendo a aumentar el grado de automatización.automatización.

Page 3: Introduccion MDA

Plataforma en MDAPlataforma en MDA

Plataforma Plataforma

Es un conjunto de subsistemas y tecnologías queEs un conjunto de subsistemas y tecnologías que

proveen un conjunto coherente de funcionalidadproveen un conjunto coherente de funcionalidad

que puede ser usada en cualquier aplicación sinque puede ser usada en cualquier aplicación sin

tener en cuenta detalles de cómo la tener en cuenta detalles de cómo la funcionalidadfuncionalidad

es implementadaes implementada

Page 4: Introduccion MDA

Modelos y MDAModelos y MDA

Distingue diferentes tipos de modelos:Distingue diferentes tipos de modelos:

CIM (Computation Independent Model)CIM (Computation Independent Model)

PIM (Platform Independent Model)PIM (Platform Independent Model)

PSM (Platform Specific Model)PSM (Platform Specific Model)

ISM (Implementation Specific Model)ISM (Implementation Specific Model)

Page 5: Introduccion MDA

Modelos y MDAModelos y MDA

Computation Independent Model (CIM)Computation Independent Model (CIM) Es una descripción de la lógica del negocio desde una Es una descripción de la lógica del negocio desde una

perspectiva independiente de la computación. Es un perspectiva independiente de la computación. Es un modelo del dominio modelo del dominio

Platform Independent ModelPlatform Independent Model Es una descripción de la funcionalidad del sistema en Es una descripción de la funcionalidad del sistema en

forma independiente de las características de forma independiente de las características de plataformas de implementación específicas. plataformas de implementación específicas.

Page 6: Introduccion MDA

Modelos y MDAModelos y MDA

Platform Specific Model (PSM)Platform Specific Model (PSM)

Es una descripción del sistema en términos deEs una descripción del sistema en términos de

una plataforma específicauna plataforma específica

Implementation Specific ModelImplementation Specific Model

Es una descripción (especificación) del sistema aEs una descripción (especificación) del sistema a

nivel de códigonivel de código

Page 7: Introduccion MDA

MDD (Model-Driven Development)MDD (Model-Driven Development)

PIMPIM

PSM

J2EE

PSM

REL

PSM

dotNET

CODE CODE CODE

Page 8: Introduccion MDA

Transformaciones y MDATransformaciones y MDA

La evolución desde modelos CIM a ISM es alcanzadaLa evolución desde modelos CIM a ISM es alcanzadapor:por: RefinamientosRefinamientos que permiten construir una que permiten construir una

especificación más específica a partir de una más especificación más específica a partir de una más abstracta (por ejemplo, PIM PSM, PSM ISM ) yabstracta (por ejemplo, PIM PSM, PSM ISM ) y

RefactoringsRefactorings que permiten transformar modelos en que permiten transformar modelos en un determinado nivel sin cambiar su funcionalidad, un determinado nivel sin cambiar su funcionalidad, pero mejorando algunos factores de calidad no pero mejorando algunos factores de calidad no funcionales (por ejemplo PIM PIM, PSM PSM, funcionales (por ejemplo PIM PIM, PSM PSM, ISM ISM)ISM ISM)

Page 9: Introduccion MDA

Metamodelos y MDAMetamodelos y MDA

En MDA es crucialEn MDA es crucial Mantener trazas y relaciones entre diferentes Mantener trazas y relaciones entre diferentes

modelosmodelos Lograr interoperabilidad en diferentes nivelesLograr interoperabilidad en diferentes niveles

MetamodelosMetamodelos

Page 10: Introduccion MDA

Modelos, Transformaciones y Modelos, Transformaciones y MetamodelosMetamodelos

Estándares de OMGEstándares de OMG

UML/OCLUML/OCL ModelosModelos

MOFMOF MetamodelosMetamodelos(Meta Object Facility)(Meta Object Facility)

QVT QVT TransformacionesTransformaciones(Query-View-Transformation)(Query-View-Transformation)

Page 11: Introduccion MDA

Arquitectura de metamodeladoArquitectura de metamodelado

Arquitectura de metamodelado de 4 niveles:Arquitectura de metamodelado de 4 niveles: Meta-metamodelo Meta-metamodelo (MOF) MOF(MOF) MOF Metamodelo Metamodelo (Metamodelo UML, SPEM) SPEM(Metamodelo UML, SPEM) SPEM Modelo Modelo (UML, RUP) RUP(UML, RUP) RUP Objetos Objetos “ “es-una-instancia”es-una-instancia”

Page 12: Introduccion MDA

MOF (Meta Object MOF (Meta Object Facility)Facility)

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 13: Introduccion MDA

MOF (Meta Object MOF (Meta Object Facility)Facility)

Se describen mediante:Se describen mediante: Modelos estáticos UMLModelos estáticos UML

ClasesClases Asociaciones binariasAsociaciones binarias Tipos de datosTipos de datos PackagePackage

Especificaciones OCLEspecificaciones OCL

Page 14: Introduccion MDA

MetamodeloMetamodeloEspecificaciones OCLEspecificaciones OCL

Page 15: Introduccion MDA

MetamodeloMetamodeloEspecificaciones OCLEspecificaciones OCL

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 16: Introduccion MDA

Transformaciones y Transformaciones y metamodelosmetamodelos

““es-instancia-de”es-instancia-de”

RefinamientoRefinamiento

PIM-PSMPIM-PSM

Refinamiento PIM-PIMmetamodeloRefinamiento PIM-PIMmetamodelo

PSM- PSMmetamodelo PSM- PSMmetamodelo

““es-instancia-de”es-instancia-de”PIMPIM

PSMPSM

MetamodeloMetamodelo

PIMPIM

MetamodeloMetamodelo

PSMPSM

Page 17: Introduccion MDA

HERRAMIENTAS CASE HERRAMIENTAS CASE

CASE-UMLCASE-UMLRational Rose, Argo/UML, Together, UModel,Rational Rose, Argo/UML, Together, UModel,MagicDraw, MetaEdit+, PoseidonMagicDraw, MetaEdit+, Poseidon

CASE-Tiempo Real CASE-Tiempo Real Rapsody, Rational Rose Real Time, RapidRMARapsody, Rational Rose Real Time, RapidRMA

CASE-MDACASE-MDAOptimalJ, AndroMDA, Ameos, Together Architect,OptimalJ, AndroMDA, Ameos, Together Architect,Codagen, ArcStyler, MDE Studio, ObjecteeringCodagen, ArcStyler, MDE Studio, Objecteering

Page 18: Introduccion MDA

Herramientas CASE-MDAHerramientas CASE-MDA

Unas 120 herramientas CASE se basan en UML Unas 120 herramientas CASE se basan en UML yy

sólo un 10% soporta parcialmente MDA.sólo un 10% soporta parcialmente MDA.

Limitaciones en procesos de:Limitaciones en procesos de: ingeniería directa (forward engineering)ingeniería directa (forward engineering) ingeniería reversa (reverse engineering)ingeniería reversa (reverse engineering) transformaciones (refinamientos, refactoring)transformaciones (refinamientos, refactoring) análisis de consistenciaanálisis de consistencia No proveen asistencia en reenginería de No proveen asistencia en reenginería de

sistemas legacysistemas legacy

Page 19: Introduccion MDA

MDA y ReingenieríaMDA y Reingeniería

Refactoring

CIM

Relationship

Class

Classifier

AssociationEnd

Target

AdapterAdaptee

TargetAdapter1..*

1

1..*

1

AssocEndAdapter1

1

1

1

AssocEndAdaptee

1

1

1

1

Adapter

1

1..*

1

1..*

0..*1 0..*1

Adaptee

0..*

1

0..*

1

AdapteeAdapter

0..*

1

0..*

1

1

0..*

1

0..*

Association

Generalization

{or}

Class

Generalization

Attribute

Target Adaptee

TargetAdapter

1..*

1

1..*

1

Adaptees

AdapteeAdapter

1

0..*

1

0..*

GetAdaptees

SetAdaptees

Adapter

1

1..*

1

1..*

0..*1 0..*1

0..*

1

0..*

1

11 11

1

1

1

1 Operation

<instance of> PIM <instance of>

Components

Rules

PIM Metamodel PIM Metamodel

PSM

Domain Model

Refactoring

Rules + Strategies

OCL Constraints

Patterns

ISM

DataType (Java_Library)

TypedElement

JavaParameter

Field

Member

isFinalisStatic

Method

isAbstractisNativeisSyncronizedisConstructor

**{ordered}

*

+localAtt

*

Interface+declaringInterface

**

JavaClass

isPublicisAbstractisFinal

**

* +client*

1..*

1

1..*

+javaExceptions

1

0..*

0..1

+declaredClass

0..*

+declaringClass

0..1

+declaringClass

+declaringInterface

Usage

Realization

OpaqueExpression(from Kernel)

Abstraction

0..10..10..10..1

DirectedRelationship(from Kernel)

DependencyNamedElement*1..* *

+supplier

1..*

*1..* *

+client

1..*

PSM Metamodel

Usage

Realization

Substitution Classifier

1*

+contract

1*

*

1

*

1

OpaqueExpression(from Kernel)

Abstraction0..1 0..1

+mapping

0..1 0..1

DependencyNamedElement*

1..**

+supplier

1..*

*1..* *

+client

1..*

OCL Constraints

OCL Constraints

<instance of>

PSM Metamodel

<instance of>

Rules + Strategies

Member

isFinalisStatic

Method

isAbstractisNativeisSyncronizedisConstructor

JavaClass

isPublicisAbstractisFinal

**

* +client*

0..*

0..1

+declaredClass

0..*

+declaringClass

0..1

Interface+declaredInterface

+declaringInterface

**

+declaringClass

+declaredClass

NewClass

ISM Metamodel

OCL Constraints

OCL Constraints

ISM Metamodel

<instance of> <instance of>

Refactoring

Rules + Strategies

OCL Constraints

Components

Rules

Page 20: Introduccion MDA

Curso: Arquitectura de software Curso: Arquitectura de software dirigida por modelosdirigida por modelos

Los contenidos del curso se centran Los contenidos del curso se centran en:en:

Conceptos de modelado de software bajo

el enfoque propuesto por el estándar del Object

Management Group (OMG)denominado MDA

(Model Driven Architecture). Análisis de técnicas básicas para el desarrollo

de herramientas CASE basadas en MDA.

Page 21: Introduccion MDA

CONTENIDOCONTENIDOPARTE I PARTE I

UML (Unified Modeling Language)UML (Unified Modeling Language) OCL (Object Constraint Language)OCL (Object Constraint Language) MetamodeladoMetamodelado

MOF (Meta Object Facility)MOF (Meta Object Facility) Cómo construir metamodelosCómo construir metamodelos

Semántica de UMLSemántica de UML

Page 22: Introduccion MDA

CONTENIDOCONTENIDO

PARTE IIPARTE II MDA (Model-Driven Architecture)MDA (Model-Driven Architecture)

CIM, PIM, PSM, ISMCIM, PIM, PSM, ISM Transformaciones de modelos y metamodeladoTransformaciones de modelos y metamodelado Refinamiento y refactoringRefinamiento y refactoring Evolución de software y MDAEvolución de software y MDA

Herramientas CASE basadas en MDAHerramientas CASE basadas en MDA Técnicas para el desarrollo de CASE basadas en Técnicas para el desarrollo de CASE basadas en

UML/MDAUML/MDA Ingeniería directa, ingeniería reversa Ingeniería directa, ingeniería reversa Refactoring, patrones de reinmgeniería wrapping,…Refactoring, patrones de reinmgeniería wrapping,…