psm
-
Upload
george-breagan-minaya-silencio -
Category
Documents
-
view
52 -
download
8
Transcript of psm
Arquitectura de software Arquitectura de software dirigida por modelosdirigida por modelos(Model-Driven Architecture)(Model-Driven Architecture)
Liliana FavreLiliana FavreUNCPBAUNCPBA
20062006
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.
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
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)
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.
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#, …
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
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.
MDD (Model-Driven Development)MDD (Model-Driven Development)
PIM
PSM
J2EE
PSM
REL
PSM
dotNET
CODECODE CODE
CIM
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
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.
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,….
Transformaciones en MDATransformaciones en MDA
Transformaciones automáticas
tooltool tooltoolPIMPIM PSMPSM ISMISM
MDA- Beneficios MDA- Beneficios
ProductividadProductividad
PortabilidadPortabilidad
InteroperabilidadInteroperabilidad
Evolución del softwareEvolución del software
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
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)
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”
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
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
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
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
EjemploEjemploMetamodel UML Metamodel UML
simplificadosimplificado
owningPackage * 0..1 ownedMember
NameSpace Packageable Element
Package
PackageableElement
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….
EjemploEjemploMetamodel UML Metamodel UML
simplificadosimplificado
postcondition *
precondition *
ownedParameter
type 0..1
0..1
0..1
0..1
Behavioral Feature
Operation Parameter
Constraint
Type
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:….:….
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 …
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 …
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))) )
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
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