Patrones de Dise - PowerPoint PPT Presentation

About This Presentation
Title:

Patrones de Dise

Description:

'descripciones de objetos que se comunican y clases que son ... From Patterns to Components' ... Gamma E., Richard H., Ralph J. y Vlissides J. 'Design Patterns. ... – PowerPoint PPT presentation

Number of Views:94
Avg rating:3.0/5.0
Slides: 40
Provided by: lilianam
Category:
Tags: dise | patrones | patters

less

Transcript and Presenter's Notes

Title: Patrones de Dise


1
Patrones de Diseño en MDA
2
Patrones de Diseño
  • descripciones de objetos que se comunican y
    clases que son personalizadas para resolver un
    problema de diseño general en un contexto
    particular (Gamma y otros, 1995)

3
Patrones de Diseño
  • Los patrones de diseño describen soluciones a
    problemas de diseño recurrentes.
  • Un patrón de diseño nombra, abstrae e identifica
    los aspectos claves de una estructura de diseño
    común que lo hacen útil para crear un diseño
    orientado a objetos reusable.
  • Un patrón de diseño identifica las clases que
    participan y las instancias, sus roles y
    colaboraciones, y la distribución de
    responsabilidades.

4
Metamodelos de Patrones de Diseño
  • El metamodelo de un patrón de diseño dado,
    describe la familia de modelos que forman el
    espacio de soluciones de ese patrón.

5
Metamodelos de Patrones de Diseño en MDA
  • Metamodelos en tres niveles
  • PIM metamodelos de patrones definidos de manera
    independiente de cualquier plataforma o
    tecnología específicas.
  • PSM metamodelos de patrones definidos teniendo
    en cuenta una plataforma específica. Por ejemplo
    JAVA, EIFFEL.
  • ISM metamodelos de patrones que corresponden a
    un lenguaje de programación específico.

6
Metamodelos de Patrones de Diseño en MDA
  • Los Metamodelos de Patrones a nivel PIM son
  • especificados teniendo en cuenta
  • La estructura
  • Los participantes
  • Colaboraciones

7
Metamodelos de Patrones de Diseño en MDA
  • Metamodelos de Patrones a nivel PSM son
  • especificados teniendo en cuenta
  • El metamodelo a nivel PIM del patrón
  • Las características de la plataforma. Por ejemplo
    un metamodelo para la plataforma Java restringe
    la herencia, ya que Java no permite herencia
    múltiple, mientras que un metamodelo para la
    plataforma EIFFEL no tendrá esta restricción.

8
Metamodelos de Patrones de Diseño en MDA
  • Metamodelos de Patrones a nivel ISM son
  • especificados teniendo en cuenta
  • La gramática del lenguaje de programación
    específico

9
Especificación de los Metamodelos de Patrones de
Diseño
  • La especificación del espacio de soluciones de un
    patrón de diseño se logra a través de la
    especialización del metamodelo UML y la
    especificación de un conjunto de restricciones
    escritas en OCL.

10
Notación de los Metamodelos de Patrones de Diseño
  • Para la especificación de los metamodelos de los
    patrones se usa la notación de la especificación
    de UML de manera semi-formal usando la
    combinación de notación gráfica, lenguaje
    natural y lenguaje formal
  • Sintaxis abstracta diagrama de clases UML
    (metaclases que definen las construcciones y sus
    relaciones) junto con una descripción en lenguaje
    natural.
  • Restricciones son provistas usando el lenguaje
    OCL y un lenguaje natural.
  • Semántica el significado de las construcciones
    es definido usando lenguaje natural.

11
Relaciones entre Modelos y Metamodelos
12
Ejemplo Patrón de Diseño Observer
13
Patrón de Diseño Observer
  • El patrón de diseño Observer define una
    dependencia uno a muchos entre objetos de manera
    tal que cuando un objeto cambia de estado, todos
    sus dependientes son notificados y actualizados
    automáticamente (Gamma y otros, 1995).

14
Patrón Observer Diagramas de Clases y de
Secuencia UML
15
Metamodelo del Patrón de Diseño Observer a
nivel PIM
16
Patrón Observer- Metamodelo PIM Diagrama de
Clases
17
Patrón de Diseño ObserverMetamodelo PIM
Restricciones
  • Metaclase Subject
  • Un sujeto, instancia de la metaclase Subject
    puede
  • ser una clase o una interfaz.
  • (self.oclIsTypeOf(Class) or self.oclIsTypeOf(Inter
    face)

18
Patrón de Diseño Observer Metamodelo PIM
Restricciones
  • Metaclase Attach
  • 1 Esta operación cambia el estado del sujeto.
  • not self.isQuery
  • 2 Esta operación tiene un conjunto no vacío de
    parámetros y uno de ellos debe ser de entrada
    (direction in) y del tipo Observer.
  • self.parameter-gtnotEmpty( ) and
  • self.parameter-gtselect ( param
    param.direction in and
  • param.type oclIsKindOf(Observer)) -gt size( ) 1

19
Patrón de Diseño Observer Metamodelo PIM
Restriciones
  • Metaclase RelationshipSubject
  • Una instancia de esta relación está restringida a
    ser una generalización o una realización de
    interfaz.
  • self.oclIsTypeOf( Generalization) or
    (self.oclIsTypeOf(InterfaceRealization))
  • and
  • self.oclIsTypeOf(Generalization) implies (
  • self.general.oclIsKindOf(Class)
  • and self.general.oclIsTypeOf(Subject)
  • and self.specific.oclIsTypeOf(ConcreteSubject)
    )
  • and
  • self.oclIsTypeOf(InterfaceRealization) implies (
  • self.contract.oclIsKindOf(Interface) and
  • self.contract.oclIsTypeOf(Subject)
  • and self.implementingClassifier.oclIsTypeOf(Concre
    teSubject))

20
Metamodelo del Patrón de Diseño Observer a
nivel PSM Eiffel
21
  • El Metamodelo del patrón Observer a nivel PSM
    Eiffel es una especialización del Metamodelo PSM
    EIFFEL

22
Metamodelo PSM Eiffel EiffelClass
23
Metamodelo PSM Eiffel Routine
24
Patrón Observer - Metamodelo PSM-Eiffel Diagrama
de Clases
25
Patrón de Diseño Observer Metamodelo PSM Eiffel
Restriciones
AssocEndObserver 1Este extremo de asociación
tiene una multiplicidad cuyo rango será un
subconjunto (posiblemente infinito) de los
enteros no negativos. multiplicity.lower gt 0
and (self.multiplicity.upper gt 0 or
self.multiplicity.upper unlimited) 2Deberá
ser navegable. self.isNavigable( ) Operaciones
Adicionales La rutina observadora isNavigable
indica si este extremo de asociación es
navegable. isNavigable not class -gtisEmpty()
26
Especificando Refinamientos en OCLde PIM-UML a
PSM-EIFFEL
27
Reglas de Transformación
  • La especificación de los metamodelos en los tres
    niveles, permite construir la definición de
    transformación de modelo a modelo.
  • Las reglas de transformación que constituyen una
    definición de transformación describen como puede
    transformarse un modelo en un lenguaje origen en
    un modelo en un lenguaje destino.

28
Reglas de transformación
  • En el caso del patrón de diseño observer, las
    reglas usan los
  • metamodelos definidos en los distintos niveles
    para definir las
  • transformaciones.
  • Transformación PIM-PSM
  • Metamodelo Origen UML especializado del patrón
    Observer
  • Metamodelo Destino UML especializado del patrón
    Observer en una plataforma específica.
  • Transformación PSM-ISM
  • Metamodelo Origen UML especializado del patrón
    Observer en una plataforma específica.
  • Metamodelo Destino UML especializado del patrón
    Observer en un lenguaje de programación
    específico

29
Transformación de PIM-UML A PSM-EIFFEL
  • Transformation PIM-UML TO PSM-EIFFEL
  • parameters
  • sourceModel Design Pattern Metamodel Package
  • targetModel Design Pattern Metamodel-EIFFEL
    Project
  • pre
  • -- El paquete SourceModel no importa otros
    paquetes.
  • sourceModel.importedElement ? isEmpty
  • post
  • -- el número de clases del modelo target es igual
    al número de clases más el número de interfaces
    del modelo source.
  • sourceModel.ownedMember? select(oclIsTypeOf(Class)
    )? size()
  • sourceModel.ownedElement? select(oclIsTypeOf(Inter
    face))? size()
  • targetModel.ownedElement ? select(oclIsTypeOf(Eiff
    elClass))? size()

30
Transformación de PIM-UML A PSM-EIFFEL
  • post
  • -- Para cada clase en sourceModel existe una
    clase Eiffel en targetModel tal que
  • sourceModel.ownedElement ? select(oclIsTypeOf(Clas
    s))?
  • forAll ( sourceClass targetModel.ownedElement ?
  • select(oclIsTypeOf(EiffelClass))? exists (
    targetClass
  • -- sourceClass y targetClass tienen el mismo
    nombre y
  • sourceClass.name targetClass.name and
  • -- tienen el mismo conjunto de operaciones y
  • sourceClass.member ? select (oclIsTypeOf(Operation
    ))
  • targetClass.member ? select (oclIsKindOf(Routine))
    and
  • -- tienen las mismas clases padres y las mismas
    clases hijas,

31
Transformación de PIM-UML A PSM-EIFFEL
  • post
  • -- Para cada interface en sourceModel existe una
    clase Eiffel en targetModel tal que
  • sourceModel.ownedElement ? select(oclIsTypeOf(Inte
    rface))?
  • forAll ( sourceInterface /targetModel.ownedElement
    ?
  • select(oclIsTypeOf(EiffelClass))? exists (
    targetClass /
  • -- sourceInterface y targetClass tienen el mismo
    nombre y
  • sourceInterface.name targetClass.name and
  • -- tienen el mismo conjunto de operaciones y
  • sourceInterface.member ? select
    (oclIsTypeOf(Operation))
  • targetClass.member ? select (oclIsKindOf(Routine))
    and
  • -- tienen las mismas clases padres y las mismas
    clases hijas,
  • . . . ) )

32
Metamodelo del Patrón de Diseño Observer a
nivel PSM JAVA
33
Metamodelo PSM Java JavaClass
34
Metamodelo PSM Java JavaInterface
35
Metamodelo PSM Java JavaOperation
36
Patrón Observer - Metamodelo Java Diagrama de
Clases
37
Patrón Observer Metamodelo PSM-Java
Restricciones
  • Metaclase Subject
  • Un sujeto, instancia de la metaclase Subject
    puede
  • ser una clase Java o una interfaz Java.
  • (self.oclIsTypeOf(JavaClass) or
  • self.oclIsTypeOf(JavaInterface)

38
Metamodelos de patrones de diseño Ventajas
  • Un metamodelo UML para un patrón de diseño
    permite detectar la presencia de un patrón en un
    modelo.
  • La especificación de los metamodelos en los tres
    niveles, permite construir la definición de
    transformaciones de modelo a modelo, logrando una
    generación de código más completa.

39
Bibliografía
  • Arnout, Karine (2004). From Patterns to
    Components. Ph. D. Thesis, Swiss Institute of
    Technology (ETH Zurich) http//se.inf.ethz.ch/peop
    le/arnout/publications/arnout_phd_thesis.pdf
  • Gamma y Otros (1996). Gamma E., Richard H., Ralph
    J. y Vlissides J. Design Patterns. Elements of
    reusable Object-Oriented Software.
    Addisson-Wesley.
  • MDA (2006). The Model Driven Architecture.
    www.omg.org/mda
  • Meyer (1997). Meyer, Bertrand. Object-Oriented
    Software Construction. Prentice Hall PTR, 1997.
  • OCL (2006). Object Constraint Language. Version
    2.0. OMG Available Specification
    formal/06-05-01. www.omg.org
  • UML (2006). Unified Modeling Language
    Superstructure. Version 2.0. OMG Specification
    formal/05-07-04 www.omg.org
Write a Comment
User Comments (0)
About PowerShow.com