psm

30
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

Transcript of psm

Page 1: psm

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

Liliana FavreLiliana FavreUNCPBAUNCPBA

20062006

Page 2: psm

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: psm

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: psm

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: psm

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: psm

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 deuna plataforma específica. Por ejemplo, .NET, una plataforma específica. Por ejemplo, .NET,

J2EE, relacional,…J2EE, relacional,…

Implementation Specific ModelImplementation Specific ModelEs una descripción (especificación) del sistema aEs una descripción (especificación) del sistema anivel de código. Por ejemplo, Java, C#, …nivel de código. Por ejemplo, Java, C#, …

Page 7: psm

MDAMDA

Clasificación de modelosClasificación de modelos

Independencia de plataformas específicasIndependencia de plataformas específicas

Transformación de modelos y refinamientoTransformación de modelos y refinamiento

Page 8: psm

Model-driven Development Model-driven Development (MDD)(MDD)

Un desarrollo MDD distingue al menos las siguientesUn desarrollo MDD distingue al menos las siguientes

etapas:etapas: Construir un PIM en un alto nivel de abstracción, Construir un PIM en un alto nivel de abstracción,

independiente de una tecnología específica.independiente de una tecnología específica. Transformar al PIM en uno o más modelos Transformar al PIM en uno o más modelos

dependientes de una paltaforma específica, dependientes de una paltaforma específica, denominados PSM. Por ejemplo, relacional, denominados PSM. Por ejemplo, relacional, J2EE, .NETJ2EE, .NET

Transformar los PSM a código.Transformar los PSM a código.

Page 9: psm

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

PIM

PSM

J2EE

PSM

REL

PSM

dotNET

CODECODE CODE

CIM

Page 10: psm

Transformaciones y MDATransformaciones y MDA

Una Una transformacióntransformación es el proceso para convertir es el proceso para convertirun modelo en un lenguaje en un modelo en otroun modelo en un lenguaje en un modelo en otrolenguaje.lenguaje. Refinamientos horizontalesRefinamientos horizontales Refinamientos verticalesRefinamientos verticales AntirefinamientosAntirefinamientos RefactoringsRefactorings PuentesPuentes

Page 11: psm

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 especificación que permiten construir una especificación

más específica a partir de una más abstractamás específica a partir de una más abstracta VerticalesVerticales (por ejemplo, PIM a PSM, PSM a ISM) (por ejemplo, PIM a PSM, PSM a ISM) HorinzontalesHorinzontales (por ejemplo, PIM a PIM, PSM a PSM) (por ejemplo, PIM a PIM, PSM a PSM)

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

Page 12: psm

Transformaciones y MDATransformaciones y MDA

Otras transformaciones:Otras transformaciones: PuentesPuentes entre diferentes PSMs, ISMs. Por entre diferentes PSMs, ISMs. Por

ejemplo de COBOL a JAVA, de J2EE ejemplo de COBOL a JAVA, de J2EE a .NET,…a .NET,…

Anti-refinamientosAnti-refinamientos que permiten construir que permiten construir

una especificación más abstracta a partir de una especificación más abstracta a partir de una más específica. Por ejemplo, de ISM a una más específica. Por ejemplo, de ISM a PSM, de PSM a PIM,….PSM, de PSM a PIM,….

Page 13: psm

Transformaciones en MDATransformaciones en MDA

Transformaciones automáticas

tooltool tooltoolPIMPIM PSMPSM ISMISM

Page 14: psm

MDA- Beneficios MDA- Beneficios

ProductividadProductividad

PortabilidadPortabilidad

InteroperabilidadInteroperabilidad

Evolución del softwareEvolución del software

Page 15: psm

Metamodelos y MDAMetamodelos y MDA

En MDA es crucial analizar, automatizar y transformarEn MDA es crucial analizar, automatizar y transformarmodelos:modelos: Mantener trazas y relaciones entre diferentes modelosMantener trazas y relaciones entre diferentes modelos Lograr interoperabilidad en diferentes nivelesLograr interoperabilidad en diferentes niveles

Descripciones precisas de la semántica de los modelosDescripciones precisas de la semántica de los modelos

MetamodelosMetamodelos

Page 16: psm

Modelos, Transformaciones y Modelos, Transformaciones y MetamodelosMetamodelos

OMG provee un framework conceptual y estándaresOMG provee un framework conceptual y estándarespara expresar modelos, relaciones y transformacionespara expresar modelos, relaciones y transformacionesmodelo-a-modelo.modelo-a-modelo.

UML/OCLUML/OCL ModelosModelos

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

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

Page 17: psm

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 18: psm

Transformaciones y metamodelosTransformaciones y metamodelos

““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 19: psm

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

MemberisFinalisStatic

MethodisAbstractisNativeisSyncronizedisConstructor

JavaClassisPublicisAbstractisFinal

**

* +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: psm

Especificación de Especificación de transformacionestransformaciones

como contratos OCLcomo contratos OCLTRANSFORMATION TRANSFORMATION

transformationNametransformationNamePARAMETERS<parameterList>PARAMETERS<parameterList>PRE: <preconditionList>PRE: <preconditionList>POST: <postconditionList>POST: <postconditionList>Additional OperationsAdditional Operationsdef:…def:…def:…def:…ENDEND

Page 21: psm

EjemploEjemploBON-Metamodel BON-Metamodel

simplificadosimplificado

1 0..1

source.target 2

Model

Relationship

Static Relationship

Inheritance

Message

Aggregation Association

Static Abstraction

Dynamic Abstraction

Class name:String

Cluster

Object Object Cluster

feature

parameters

Routine

Attribute

* abstractions

Abstraction

parameters

constraints

type

Page 22: psm

EjemploEjemploMetamodel UML Metamodel UML

simplificadosimplificado

owningPackage * 0..1 ownedMember

NameSpace Packageable Element

Package

PackageableElement

Page 23: psm

EjemploEjemploMetamodel UML Metamodel UML

simplificadosimplificado

subsettedProperty

ownedEnd 0..1

memberEnd

1..*

opposite

0..1

* nestedClassifier

0..1 * ownedOperatio n

Property class ownedAttribute

redefinedProperty

0..1 *

superclasss

Classifier

Class

Structural Feature

Association

Classifier

Classifier Relationship

Operation

0..1

Type isDerived:Boolean isComposite:Boolean aggregation….

Page 24: psm

EjemploEjemploMetamodel UML Metamodel UML

simplificadosimplificado

postcondition *

precondition *

ownedParameter

type 0..1

0..1

0..1

0..1

Behavioral Feature

Operation Parameter

Constraint

Type

Page 25: psm

Especificación de Especificación de transformacionestransformaciones

TRANSFORMATIONTRANSFORMATION BASIC PACKAGE BASIC PACKAGE PARAMETERSPARAMETERS source: UMLMetamodel :: Packagesource: UMLMetamodel :: Package target: BON-PSM-Metamodel :: Modeltarget: BON-PSM-Metamodel :: Model

PRE: PRE: -- source es un Package simple, que sólo contiene clases y -- source es un Package simple, que sólo contiene clases y

asociacionesasociaciones source.ownedMember -> source.ownedMember -> forAll (s / s.oclIsTypeOf (Class) or forAll (s / s.oclIsTypeOf (Class) or

s.oclIsTypeOf(Association))s.oclIsTypeOf(Association))

POSTPOST:….:….

Page 26: psm

Especificación de Especificación de transformacionestransformaciones

POST: POST: -- -- para cada clase en source existe una clase para cada clase en source existe una clase

target que tienetarget que tiene--el mismo nombre--el mismo nombresource.ownedMember ->source.ownedMember ->select (oclIsTypeOf (Class)) -> select (oclIsTypeOf (Class)) -> forAll(classSource|target.abstractions->forAll(classSource|target.abstractions->select(oclIsTypeOf (Class)) ->select(oclIsTypeOf (Class)) ->exists(classTarget|classSource.name=exists(classTarget|classSource.name= classTarget.name )classTarget.name )and …and …

Page 27: psm

Especificación de Especificación de transformacionestransformaciones

--para cada clase en el conjunto de superclases de--para cada clase en el conjunto de superclases de

--source existe una relación de herencia en el target con--source existe una relación de herencia en el target con

--el mismo nombre --el mismo nombre

classSource.superclasses -> classSource.superclasses ->

forAll (classParent |forAll (classParent |

target.relationships–>select(oclIsTypeOf(inheritance) ->target.relationships–>select(oclIsTypeOf(inheritance) ->

exists (rel | (rel.name = classParent.name)))exists (rel | (rel.name = classParent.name)))

and …and …

Page 28: psm

Especificación de Especificación de transformacionestransformaciones

--para cada operación/atributo en source --para cada operación/atributo en source --existe una rutina/atributo en el target…--existe una rutina/atributo en el target…classSource.ownedOperation -> classSource.ownedOperation -> forAll (op |target.abstractions ->forAll (op |target.abstractions ->select(oclIsTypeOf(Routine)->select(oclIsTypeOf(Routine)->exists(op1| operTransf (op, op1)))exists(op1| operTransf (op, op1)))andandclassSource.ownedAttribute -> classSource.ownedAttribute -> forAll (at| target.abstractions ->forAll (at| target.abstractions ->select(oclIsTypeOf(Attribute))->select(oclIsTypeOf(Attribute))->exists(at1|attribTransf(at, at1))) )exists(at1|attribTransf(at, at1))) )

Page 29: psm

Especificación de Especificación de transformacionestransformaciones

POST: POST: --para cada asociación en source existe --para cada asociación en source existe

una en target..una en target..source.ownedMember->source.ownedMember->select(oclIsTypeOf(Association) ->select(oclIsTypeOf(Association) ->forAll (assoc|forAll (assoc|exists(assoc1|assocTransf (assoc, assoc1))exists(assoc1|assocTransf (assoc, assoc1))……Additional OperationsAdditional Operations

Page 30: psm

Especificación de Especificación de transformacionestransformaciones

Additional Operationsdef:operTransf(O:Package::operation,F:Model::feature): Boolean =if O.stereotype.name = ´constructor´then F.name = ´make´ else F.name = O.name endifand (F.type.conformsTo.O.type)and O.parameters -> size () <= F.parameters ->size()and Sequence { 1..(O.parameters ->size())} -> forAll (i:Integer |F.parameters -> (at(i).name = O.parameters -> at(i).name) andO.parameters ->at(i).type.conformsTo.(F.parameters->at(i).type))def:attribTransf(S:Package::Attribute,T:Model::Attribute):Booleandef:assocTransf(S:Package::Association,T:Model::Association):Boolean.END-TRANSFORMATION