Title: Arquitectura de software dirigida por modelos (Model-Driven Architecture)
1Arquitectura de software dirigida por
modelos(Model-Driven Architecture)
- Liliana Favre
- UNCPBA
- 2006
2Model-Driven Architecture (MDA)
- Es una evolución de estándares definidos por OMG
- (Object Management Group) para mejorar
- procesos de desarrollo de sistemas de software
dirigidos - por modelos.
- Ideas centrales en MDA
- Separar la especificación de la funcionalidad
del sistema de su implementación sobre una
plataforma en una tecnología específica. - Controlar la evolución desde modelos abstractos a
implementaciones tendiendo a aumentar el grado de
automatización.
3Plataforma en MDA
- Plataforma
- Es un conjunto de subsistemas y tecnologías que
- proveen un conjunto coherente de funcionalidad
- que puede ser usada en cualquier aplicación sin
- tener en cuenta detalles de cómo la funcionalidad
- es implementada
4Modelos y MDA
- Distingue diferentes tipos de modelos
- CIM (Computation Independent Model)
- PIM (Platform Independent Model)
- PSM (Platform Specific Model)
- ISM (Implementation Specific Model)
5Modelos y MDA
- Computation Independent Model (CIM)
- Es una descripción de la lógica del negocio desde
una perspectiva independiente de la computación.
Es un modelo del dominio - Platform Independent Model
- Es una descripción de la funcionalidad del
sistema en forma independiente de las
características de plataformas de implementación
específicas.
6Modelos y MDA
- Platform Specific Model (PSM)
- Es una descripción del sistema en términos de
- una plataforma específica. Por ejemplo, .NET,
J2EE, relacional, - Implementation Specific Model
- Es una descripción (especificación) del sistema a
- nivel de código. Por ejemplo, Java, C,
7MDA
- Clasificación de modelos
- Independencia de plataformas específicas
- Transformación de modelos y refinamiento
8Model-driven Development (MDD)
- Un desarrollo MDD distingue al menos las
siguientes - etapas
- Construir un PIM en un alto nivel de abstracción,
independiente de una tecnología específica. - Transformar al PIM en uno o más modelos
dependientes de una paltaforma específica,
denominados PSM. Por ejemplo, relacional, J2EE,
.NET - Transformar los PSM a código.
9MDD (Model-Driven Development)
CIM
PIM
PSM J2EE
PSM REL
PSM dotNET
CODE
CODE
CODE
10Transformaciones y MDA
- Una transformación es el proceso para convertir
- un modelo en un lenguaje en un modelo en otro
- lenguaje.
- Refinamientos horizontales
- Refinamientos verticales
- Antirefinamientos
- Refactorings
- Puentes
11Transformaciones y MDA
- La evolución desde modelos CIM a ISM es alcanzada
- por
- Refinamientos que permiten construir una
especificación más específica a partir de una más
abstracta - Verticales (por ejemplo, PIM a PSM, PSM a
ISM) - Horinzontales (por ejemplo, PIM a PIM, PSM a PSM)
- Refactorings que permiten transformar modelos en
un determinado nivel (PIM, PSM, ISM) sin cambiar
su funcionalidad, pero mejorando algunos factores
de calidad no funcionales.
12Transformaciones y MDA
- Otras transformaciones
- Puentes entre diferentes PSMs, ISMs. Por ejemplo
de COBOL a JAVA, de J2EE a .NET, -
- Anti-refinamientos que permiten construir una
especificación más abstracta a partir de una más
específica. Por ejemplo, de ISM a PSM, de PSM a
PIM,.
13Transformaciones en MDA
- Transformaciones automáticas
tool
tool
PIM
PSM
ISM
14MDA- Beneficios
- Productividad
- Portabilidad
- Interoperabilidad
- Evolución del software
15Metamodelos y MDA
- En MDA es crucial analizar, automatizar y
transformar - modelos
- Mantener trazas y relaciones entre diferentes
modelos - Lograr interoperabilidad en diferentes niveles
- Descripciones precisas de la semántica de los
modelos - Metamodelos
16Modelos, Transformaciones y Metamodelos
- OMG provee un framework conceptual y estándares
- para expresar modelos, relaciones y
transformaciones - modelo-a-modelo.
- UML/OCL Modelos
- MOF
Metamodelos - (Meta Object Facility)
- QVT
Transformaciones - (Query-View-Transformation)
17Arquitectura de metamodelado
- Arquitectura de metamodelado de 4 niveles
- Meta-metamodelo
- (MOF)
MOF - Metamodelo
- (Metamodelo UML, SPEM)
SPEM - Modelo
- (UML, RUP)
RUP - Objetos
-
es-una-instancia
18Transformaciones y metamodelos
Metamodelo PIM
PIM
es-instancia-de
Refinamiento PIM-PSM
Refinamiento PIM-PIMmetamodelo
PSM- PSMmetamodelo
Metamodelo PSM
PSM
es-instancia-de
19MDA y Reingeniería
20Especificación de transformacionescomo contratos
OCL
- TRANSFORMATION transformationName
- PARAMETERSltparameterListgt
- PRE ltpreconditionListgt
- POST ltpostconditionListgt
- Additional Operations
- def
- def
- END
21EjemploBON-Metamodel simplificado
22EjemploMetamodel UML simplificado
23EjemploMetamodel UML simplificado
24EjemploMetamodel UML simplificado
25Especificación de transformaciones
- TRANSFORMATION BASIC PACKAGE
- PARAMETERS
- source UMLMetamodel Package
- target BON-PSM-Metamodel Model
- PRE
- -- source es un Package simple, que sólo contiene
clases y asociaciones - source.ownedMember -gt
- forAll (s / s.oclIsTypeOf (Class) or
s.oclIsTypeOf(Association)) - POST.
-
26Especificación de transformaciones
- POST
- -- para cada clase en source existe una clase
target que tiene - --el mismo nombre
- source.ownedMember -gt
- select (oclIsTypeOf (Class)) -gt
- forAll(classSourcetarget.abstractions-gt
- select(oclIsTypeOf (Class)) -gt
- exists(classTargetclassSource.name
- classTarget.name
)and -
27Especificación de transformaciones
- --para cada clase en el conjunto de superclases
de - --source existe una relación de herencia en el
target con - --el mismo nombre
- classSource.superclasses -gt
- forAll (classParent
- target.relationshipsgtselect(oclIsTypeOf(inheritan
ce) -gt - exists (rel (rel.name classParent.name)))
- and
28Especificación de transformaciones
- --para cada operación/atributo en source
- --existe una rutina/atributo en el target
- classSource.ownedOperation -gt
- forAll (op target.abstractions -gt
- select(oclIsTypeOf(Routine)-gt
- exists(op1 operTransf (op, op1)))
- and
- classSource.ownedAttribute -gt
- forAll (at target.abstractions -gt
- select(oclIsTypeOf(Attribute))-gt
- exists(at1attribTransf(at, at1))) )
29Especificación de transformaciones
- POST
- --para cada asociación en source existe una en
target.. - source.ownedMember-gt
- select(oclIsTypeOf(Association) -gt
- forAll (assoc
- exists(assoc1assocTransf (assoc, assoc1))
-
- Additional Operations
30Especificación de transformaciones
- Additional Operations
- defoperTransf(OPackageoperation,FModelfeatu
re) Boolean - if O.stereotype.name constructor
- then F.name make else F.name O.name endif
- and (F.type.conformsTo.O.type)
- and O.parameters -gt size () lt F.parameters
-gtsize() - and Sequence 1..(O.parameters -gtsize()) -gt
forAll (iInteger - F.parameters -gt (at(i).name O.parameters -gt
at(i).name) and - O.parameters -gtat(i).type.conformsTo.(F.parameters
-gtat(i).type)) - def
- attribTransf(SPackageAttribute,TModelAttribu
te)Boolean - def
- assocTransf(SPackageAssociation,TModelAssoci
ation)Boolean. - END-TRANSFORMATION