Patrones de Diseño en MDA

Slides:



Advertisements
Presentaciones similares
U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
Advertisements

INSTITUTO TECNOLÓGICO DE MORELIA JOSÉ MARIA MORELOS Y PAVÓN
Lenguaje Unificado de Modelado
TECNICATURA UNIVERSITARIA EN INFORMATICA
UML para programadores Java
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006.
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006.
INGENIERIA DE SOFTWARE II Clase Nº 7
Introducción a la Orientación a Objetos
Tipo de Dato Abstracto Tipos de datos:
UML.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Aspectos Avanzados de la Tecnología de Objetos
DIAGRAMA DE CLASE.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Análisis y Diseño orientado a objetos con UML.
Tema 10: Interfaces Antonio J. Sierra.
I Taller sobre Desarrollo de Software Dirigido por Modelos, MDA y Aplicaciones (DSDM'04) MDA Aplicado: Una Gramática de Grafos para la Transformación de.
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
Algunas Herramientas de Apoyo al Diseño de Software Agustín J. González ELO329: Diseño y programación orientados a objetos.
STARUML.
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
ING. PERCY OQUENDO CARREÑO PROCESO UNIFICADO DE DESARROLLO DE SOFTWARE.
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
Ingeniería de Software
Diagramas de Clase Angela Carrillo R..
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006.
Sesión 5 Herramientas de creación de DSL gráficos (GMF)
Como Desarrollar SW Distribuido de Calidad
Fundamentos de programación
Tema I Arquitectura de Software. Arquitectura de software es un conjunto de reglas que definen la estructura de un sistema y las relaciones entre sus.
Lenguajes de Programación Tema 3
Poder Expresivo de UML 2.0 para especificar arquitecturas de Software
CS-432: Ingeniería Moderna de Software Semana 3
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006.
Introducción al modelado Unificado
3.- Introducción a Patrones de Diseño
UML 2.0 Integrantes: Diana Carolina Valencia M. Jhon Fernando Lopez T. Carlos Alberto Castillo.
UML.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Eva Lleonart Martín Asunción García-Menacho Rovira
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
Diagrama de Clases ACI 570.
Diagrama de CLASES Alfredo Rodríguez Rojas
DEFINICIÓN DE OBJETO Un objeto es aquello que puede ser observado, estudiado y aprendido CARACTERÍSTICAS nos permiten conocerlos mediante la observación,
ANÁLISIS Y DISEÑO DE SISTEMAS II
Prof. Flor Narciso Departamento de Computación
29/01/031 OCL (Object Constraint Language) Juan Casas Cuevas Mercedes Arenas Fernández Laboratorio de Sistemas de Información Facultad de Informática.
Introducción a UML Departamento de Informática Universidad de Rancagua
Conceptos Fundamentales
Ingeniería de Requisitos
DIAGRAMA DE SECUENCIA Y ACTIVIDADES.
Programación IV Desarrollo orientado a Objetos con UML CLASE # 2 Tec. Christian Alexander Martínez Arteaga.
Taller de Sistemas de Programas Clase 6 Dpto. de Computación y T.I.
Integrantes: Dennys Quintero José Ortega Simón Fagundez Caracas 09 de Febrero de 2015.
Sandra Muñoz Blanca González Patricia Lázaro
Unified Modeling Language (Lenguaje de Modelamiento unificado)
DIAGRAMA DE PAQUETES Los diagramas de paquetes se usan para reflejar la organización de paquetes y sus elementos. Cuando se usan para representaciones,
Técnica: es un procedimiento o conjunto de procedimientos, (reglas normas o protocolos), que tienen como objetivo obtener un resultado determinado, ya.
Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Integrantes Miguel Betancourt Alexis Tacuri.  Activiti es una plataforma para la formación de flujos de trabajo y procesos empresariales dentro del.
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Modelado UML Diagrama de Clases
Estructura de Datos Departamento de Programación Universidad Metropolitana Contenido: UML. Envío de mensajes. Relaciones. Asociación. Agregación o composición.
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006.
Transcripción de la presentación:

Patrones de Diseño en MDA

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)

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.

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.

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.

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

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.

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

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.

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.

Relaciones entre Modelos y Metamodelos

Ejemplo: Patrón de Diseño Observer

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).

Patrón Observer : Diagramas de Clases y de Secuencia UML

Metamodelo del Patrón de Diseño Observer a nivel PIM

Patrón Observer- Metamodelo PIM : Diagrama de Clases

Patrón de Diseño Observer Metamodelo PIM: Restricciones Metaclase Subject Un sujeto, instancia de la metaclase Subject puede ser una clase o una interfaz. (self.oclIsTypeOf(Class) or self.oclIsTypeOf(Interface)

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->notEmpty( ) and self.parameter->select ( param | param.direction= #in and param.type= oclIsKindOf(Observer)) -> size( ) = 1

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) ) self.oclIsTypeOf(InterfaceRealization) implies ( self.contract.oclIsKindOf(Interface) and self.contract.oclIsTypeOf(Subject) and self.implementingClassifier.oclIsTypeOf(ConcreteSubject))

Metamodelo del Patrón de Diseño Observer a nivel PSM Eiffel

El Metamodelo del patrón Observer a nivel PSM Eiffel es una especialización del Metamodelo PSM EIFFEL

Metamodelo PSM Eiffel: EiffelClass

Metamodelo PSM Eiffel: Routine

Patrón Observer - Metamodelo PSM-Eiffel: Diagrama de Clases

Patrón de Diseño Observer Metamodelo PSM Eiffel : Restriciones AssocEndObserver [1]Este extremo de asociación tiene una multiplicidad cuyo rango será un subconjunto (posiblemente infinito) de los enteros no negativos. multiplicity.lower >= 0 and (self.multiplicity.upper > 0 or self.multiplicity.upper = #unlimited) [2]Deberá ser navegable. self.isNavigable( ) Operaciones Adicionales La rutina observadora isNavigable indica si este extremo de asociación es navegable. isNavigable = not class ->isEmpty()

Especificando Refinamientos en OCL: de PIM-UML a PSM-EIFFEL

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.

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”

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(Interface)) size()= targetModel.ownedElement  select(oclIsTypeOf(EiffelClass)) size()

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(Class)) 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, …

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(Interface)) 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, . . . ) )

Metamodelo del Patrón de Diseño Observer a nivel PSM JAVA

Metamodelo PSM Java: JavaClass

Metamodelo PSM Java: JavaInterface

Metamodelo PSM Java: JavaOperation

Patrón Observer - Metamodelo Java: Diagrama de Clases

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)

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.

Bibliografía Arnout, Karine (2004). “From Patterns to Components”. Ph. D. Thesis, Swiss Institute of Technology (ETH Zurich) http://se.inf.ethz.ch/people/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