patrones diseño y arquitectura
TRANSCRIPT
![Page 1: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/1.jpg)
Patrones de diseñoJoan Sebastián Ramírez Pérez
2016
![Page 2: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/2.jpg)
Agenda
¿Qué son patrones de diseño?Patrones POSAPatrones GOFBibliografía
![Page 3: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/3.jpg)
¿Qué son patrones de diseño?
![Page 4: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/4.jpg)
“Cada patrón describe un problema que ocurre una y otra vez en nuestro medio ambiente y, a continuación describe el núcleo de la solución a ese problema, de tal manera que se puede utilizar esta solución un millón de veces, sin tener que hacerlo de la misma manera dos veces”
1977, A Pattern Language, Christopher Alexander
![Page 5: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/5.jpg)
“ Un patrón es principalmente una forma de masticar consejos sobre un
tema”
– Martin Fowler
![Page 6: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/6.jpg)
“Un patrón describe un problema de diseño recurrente, que surge en contextos específicos de diseño, y presenta un esquema genérico probado para la solución de este.El esquema de la solución describe un conjunto de componentes, responsabilidades y relaciones entre de éstos, y formas en que dichos componentes colaboran entre sí.”
– Buschmann
![Page 7: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/7.jpg)
¿Qué es un patrón de software?
Solución probada a un problema recurrente.Solución reutilizable a un problema común en un contexto dado.
![Page 8: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/8.jpg)
Consideraciones importantes
Un patrón de diseño no es un silver bullet.Un patrón de diseño no depende de un lenguaje de programación.El patrón de diseño en si es la solución, no el problema.
![Page 9: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/9.jpg)
¿Por qué usar patrones de diseño?• Vocabulario y entendimiento común para el
diseño de software.
• Suministra alternativas de diseño para tener un software flexible y reutilizable.
• Construir arquitecturas de software complejas y heterogéneas.
• Favorece la vida y mantenibilidad del software desarrollado.
![Page 10: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/10.jpg)
¿Cuando debo usar un patrón de diseño?
Cuando tengo el mismo problema al cual responde el patrón.Cuando conozco el efecto colateral que conlleva el patrón de diseño y es viable la aparición de este efecto.
![Page 11: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/11.jpg)
Patrones POSA (Pattern Oriented Software
Architecture)
![Page 12: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/12.jpg)
Objetivos patrones POSA
Presentar y dar el esquema de arquitectura de software orientada a patrones (Pattern Oriented Software Architecture)Mostrar un lenguaje de patrones que facilitará el diseño de la arquitectura de software a partir de los diferentes patrones.
![Page 13: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/13.jpg)
Estructura patrones POSA
El volumen 1 de POSA se enfoca a los patrones fundamentales de arquitectura de software El volumen 2 de POSA se enfoca a la arquitectura del software para manejo de concurrencia y de gestión con la redEl volumen 3 de POSA se enfoca a patrones para la arquitectura de recursos de computación El volumen 4 de POSA conjunta los patrones de cómputo distribuido y conocidos por la comunidad (incluyendo GoF, PEAA, EIP) El volumen 5 de POSA se enfoca a tratar un modelo para definir lenguajes de patrones
![Page 14: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/14.jpg)
Distribución POSA
Del fango a la
estructura
- Capas
- Tubería-filtros
- Pizarra
Sistemas distribuidos - Broker (p. ej. CORBA, DCOM, Web
Services, WWW)
Sistemas interactivos- Model-View-Controller-
Presentation-Abstraction-Control
Sistemas adaptables
- Reflection: metanivel que hace al
software consciente de sí mismo.
- Microkernel: núcleo de
funcionalidad mínima.
![Page 15: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/15.jpg)
Categoría patrones POSA
Patrones de Arquitectura: Layers, MVC, EDA, etc. Patrones de Diseño: Factory Method, Façade, Strategy, Observer, etc.Idioms/Modismos: Manejo de memoria, uso del lenguaje, convenciones de nombrado, etc.
![Page 16: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/16.jpg)
Patrón Layers (Capas)Problema:
Diseñar un sistema cuya característica dominante sea una mezcla de problemas de alto nivel y de bajo nivel El flujo de comunicación consta de peticiones que van del nivel más superior al nivel inferior, y las respuestas en sentido inverso
Contexto:Una aplicación grande que requiere descomposición
Solución:Estructurar aplicaciones que puedan ser descompuestas en grupos de subtareas, en las que cada grupo de subtareas está en un nivel particular de abstracción
![Page 17: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/17.jpg)
Participantes patrón Layers
![Page 18: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/18.jpg)
Patrón Broker (Mediador)
Patrón para estructurar sistemas distribuidos usando el desacoplamiento de componentes y que interactúan entre ellos a través de invocación a servicios remotos. El mediador coordina la comunicación de solicitudes del cliente al servidor y coordina el retorno del resultado del servidor al cliente, procurando la transparencia en el formato de datos y el protocolo de transporte.
![Page 19: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/19.jpg)
Ejemplo Broker
![Page 20: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/20.jpg)
Modelo-Vista-Controlador
MVC es un patrón de diseño orientado a objetos.Divide una aplicación de software dado en tres partes interconectadas. Especifica el uso de clases para dividir nuestra aplicación:
Lógica del negocio -> datos persistentesLógica de presentación -> como visualizamos los datosFlujo de la aplicación -> a través del controlador
![Page 21: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/21.jpg)
Patrones GOF
![Page 22: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/22.jpg)
Clasificación de los patrones GOF
• Propósito
• Refleja lo que hace un patrón
• Se divide en Patrones de Creación , Estructura y Comportamiento
• Alcance
• Especifica si el patrón se aplica principalmente a clases u objetos
• Patrones de Clase y de Objeto
![Page 23: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/23.jpg)
Clasificación patrones GOF
![Page 24: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/24.jpg)
Patrones creacionales• Factory Method
Crea una instancia de varias clases derivadas
• Abstract Factory
Crea una instancia de varias familias de clases
• Builder
Separa la construcción de un objeto de su representación
• Prototype
Genera una instancia y la inicializa, que puede ser copiada o
clonada.
• Singleton
Una clase de la cual solo puede existir una única instancia
![Page 25: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/25.jpg)
Patrones de estructura
• Adapter: relaciona interfaces de diferentes clases.
• Bridge: separa la interfaz de un objeto de su
implementación.
• Composite: una estructura de árbol de objetos simples
y compuestos.
• Decorator: añadir responsabilidades a los objetos
dinámicamente.
• Facade: una única clase que representa todo un
subsistema.
• Flyweight: una instancia usada para compartir de
manera eficiente.
• Proxy: un objeto que representa a otro objeto.
![Page 26: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/26.jpg)
Patrones de comportamiento
• Chain of responsability: una manera de pasar una
petición a una cadena de objetos.
• Command: encapsula una petición de comandos
como un objeto.
• Interpreter: una manera de incluir elementos del
lenguaje en un programa.
• Iterator: acceso secuencial a los elementos de una
colección
• Mediator: define una comunicación simplificada entre
clases
![Page 27: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/27.jpg)
Patrones de comportamiento
• Memento: captura y restaura el estado interno de un
objeto.
• Observer: una forma de notificar cambios a varias
clases.
• State: altera el comportamiento de un objeto cuando
cambia de estado.
• Strategy: encapsula un algoritmo dentro de una clase.
• Template method: difiere los pasos exactos de un
algoritmos a una subclase.
• Visitor: define una nueva operación a una clase sin
cambiarla.
![Page 28: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/28.jpg)
Bibliografía
![Page 29: Patrones diseño y arquitectura](https://reader034.vdocumento.com/reader034/viewer/2022042506/58ecee791a28abd7118b457f/html5/thumbnails/29.jpg)
Bibliografía• Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John(1995). Design Patterns: Elements of Reusable Object-Oriented Software. Reading, Massachusetts: Addison Wesley Longman, Inc.
• Larman, C.: UML y Patrones: Introducción al análisis y diseño orientado a objetos, 2 ed. Prentice Hall. 2005.
• Buschmann, Frank et al.: Pattern Oriented Software Architecture, Volume 1: A System of Patterns, Willey & Sons, 1996.