Arquitectura de software
dirigida por modelos
(Model-Driven Architecture)
Liliana Favre
UNCPBA
2006
Model-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.
Plataforma 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
Modelos y MDA
Distingue diferentes tipos de modelos:

CIM (Computation Independent Model)

PIM (Platform Independent Model)

PSM (Platform Specific Model)

ISM (Implementation Specific Model)
Modelos 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.
Modelos 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#, …
MDA

Clasificación de modelos

Independencia de plataformas específicas

Transformación de modelos y refinamiento
Model-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.
MDD (Model-Driven Development)
CIM
PIM
PSM
PSM
J2EE
PSM
REL
dotNET
CODE
CODE
CODE
Transformaciones 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
Transformaciones 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.
Transformaciones 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,….
Transformaciones en MDA
PIM
tool
PSM
tool
Transformaciones automáticas
ISM
MDA- Beneficios

Productividad

Portabilidad

Interoperabilidad

Evolución del software
Metamodelos 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
Modelos, Transformaciones y
Metamodelos
OMG provee un framework conceptual y estándares
para expresar modelos, relaciones y transformaciones
modelo-a-modelo.
UML/OCL
Modelos
MOF
(Meta Object Facility)
Metamodelos
QVT
Transformaciones
(Query-View-Transformation)
Arquitectura 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”
Transformaciones y metamodelos
Metamodelo
PIM
“es-instancia-de”
PIM
Refinamiento
Refinamiento PIM-PIMmetamodelo
PIM-PSM
PSM- PSMmetamodelo
Metamodelo
PSM
PSM
“es-instancia-de”
MDA y Reingeniería
Especificación de transformaciones
como contratos OCL
TRANSFORMATION transformationName
PARAMETERS<parameterList>
PRE: <preconditionList>
POST: <postconditionList>
Additional Operations
def:…
def:…
END
Ejemplo
BON-Metamodel simplificado
M odel
*
s o u r c e .ta r ge t
2
a b stra c tio n s
A b s t r a c tio n
D y n a m ic
A b s tr a c t io n
O b jec t
S t a t ic
A b s tr a c t io n
O b jec t
C lu s t e r
C la s s
C lu s t e r
n a m e :S trin g
0 ..1
fe a tu r e
typ e
R e la tio n s h ip
S t a t ic
R e la tio n s h ip
1
p a ra m e te rs
A t tr ib u t e
M e ss a g e
R outine
p a ra m e te rs
I n h e r ita n c e
A g g r e g a t io n
A s s oc ia tio n
c o n s tr a in ts
Ejemplo
Metamodel UML simplificado
N am eSpace
Package
Packageable
E lem ent
o w ningP ackag e
*
0..1
o w nedM em ber
PackageableE lem ent
Ejemplo
Metamodel UML simplificado
Structural
Feature
C lassifier
C lass
class
0..1
Property
ow n edA ttribute
red efin edP roperty
*
superclasss
isD erived:B oolean
isC om posite:B oolean
aggregation… .
0..1
C lassifier
m em b erEnd
0..1
* O peration
ow n edO peratio n
0 ..1
*
C lassifier
nestedC lassifier
A ssociation
ow n edEnd 0..1
subsettedProp erty
opposite
R elationship
T ype
1..*
Ejemplo
Metamodel UML simplificado
B ehavioral Feature
O peration
0..1
0..1
0..1
o w nedP aram eter
Param eter
precondition
*
C onstraint
postcondition
*
type
T ype
0..1
Especificació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 ->
forAll (s / s.oclIsTypeOf (Class) or s.oclIsTypeOf(Association))
POST:….
Especificación de transformaciones
POST:
-- para cada clase en source existe una clase target que tiene
--el mismo nombre
source.ownedMember ->
select (oclIsTypeOf (Class)) ->
forAll(classSource|target.abstractions->
select(oclIsTypeOf (Class)) ->
exists(classTarget|classSource.name=
classTarget.name )and …
Especificació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 ->
forAll (classParent |
target.relationships–>select(oclIsTypeOf(inheritance) ->
exists (rel | (rel.name = classParent.name)))
and …
Especificación de transformaciones
--para cada operación/atributo en source
--existe una rutina/atributo en el target…
classSource.ownedOperation ->
forAll (op |target.abstractions ->
select(oclIsTypeOf(Routine)->
exists(op1| operTransf (op, op1)))
and
classSource.ownedAttribute ->
forAll (at| target.abstractions ->
select(oclIsTypeOf(Attribute))->
exists(at1|attribTransf(at, at1))) )
Especificación de transformaciones
POST:
--para cada asociación en source existe una en target..
source.ownedMember->
select(oclIsTypeOf(Association) ->
forAll (assoc|
exists(assoc1|assocTransf (assoc, assoc1))
…
Additional Operations
Especificación de transformaciones
Additional Operations
def:operTransf(O:Package::operation,F:Model::feature): 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 -> size () <= F.parameters ->size()
and Sequence { 1..(O.parameters ->size())} -> forAll (i:Integer |
F.parameters -> (at(i).name = O.parameters -> at(i).name) and
O.parameters ->at(i).type.conformsTo.(F.parameters->at(i).type))
def:
attribTransf(S:Package::Attribute,T:Model::Attribute):Boolean
def:
assocTransf(S:Package::Association,T:Model::Association):Boolean.
END-TRANSFORMATION
Descargar

Arquitectura de software dirigida por modelos