clase 07a patrones_diseno
TRANSCRIPT
1
Patrones de Diseño(...o bien, que tiene que ver la costura con el software...)
(Arquitectura de Software para Practicantes)
Universidad de los AndesDemián Gutierrez
Marzo 2013
Diseño Arquitectónico
Diseño Arquitectónico
Arquitectura del Software
Bibliotecas /Componentes
Patrones de Diseño
Clases / Funciones
Frameworks(Marcos)
EstilosArquitectónicos
3
¿qué es un patrón?
¿qué es un patrón de diseño?
¿Qué es un Patrón de Diseño?
4
¿Qué es un Patrón de Diseño?
En la costura se utilizan patrones de diseño
5
También se usan en ingeniería civil
¿Qué es un Patrón de Diseño?
arco viga
colgante
atirantado
6
¿Christopher Alexander?Patrones de Diseño en el Área de Arquitectura (Civil)
http://www.patternlanguage.com/leveltwo/ca.htm
aunque conste que sigo pensando que la comparacióndel software con la ingeniería civil es muy desafortunada
Trabajó en el desarrollo de patrones arquitectónicos
(para ingeniería civil, no para ingeniería de software)
Su libro “A Pattern Language” (1977) contiene 253 patrones
que pueden ser aplicados a las áreas de la construcción civil y
del urbanismo
7
¿Christopher Alexander?Patrones de Diseño en el Área de Arquitectura (Civil)
Christopher Alexander defineun patrón de diseño como:
“una descripción detallada de una solucióna un problema recurrente
dentro del contexto de un edificio o urbanismo”
Cada patrón describe un problemaque ocurre una y otra vez
en un determinado contextoy describe una solución al problema
de tal manera que esta soluciónpuede ser utilizada millones de veces
de forma recurrente
8
¿qué tiene que ver todo esto con la Ingeniería del Software?
Ingeniería del Software y Patrones de Diseño
9
El diseño orientado a objetos es una tarea compleja, en especial si se buscan altos niveles de reusabilidad, mantenibilidad,
calidad interna, etc
No es buena idea resolver todos los problemas desde cero,
usualmente es mejor reutilizar soluciones(conceptos, experiencias, etc)
que ya han funcionado en el pasado*
Ingeniería del Software y Patrones de Diseño
*aunque algunas veces es buena idea reinventar la rueda ;-)
10
Los arquitectos / programadores experimentados suelen hacer buenos diseños, porque conocen (de forma consciente o no) la forma de resolver los problemas comunes
de diseño
Los diseñadores inexpertos generalmente suelen confundirse o no conocer todas las
posibles soluciones a un problema, de modo que usualmente tienen que generar
soluciones desde cero
Ingeniería del Software y Patrones de Diseño
11
Tiene sentido tratar de utilizar patrones para diseñar e implementar software
Es lógico pensar que existen problemas típicos (con sus
respectivas soluciones típicas) que se repiten a lo largo de
diferentes sistemas
¿Qué es un Patrón de Diseño?
12
Gamma, Helm, Johnson, Vlissides,Design Patterns,Addison-Wesley
1ra. Edición
Un libro clásico de la década de los 90, escrito por “The Gang of Four”,
que describe a detalle un conjunto de 23 patrones
de diseño
Desde entonces se han realizado incontables publicaciones sobre patrones de diseño
¿Qué es un Patrón de Diseño?
13
Advertencia:El libro de Patrones de Diseño de GoF
no utiliza UML para describir los patrones, utiliza OMT
(Object Modeling Technique)
La notación de OMT es muy parecida a la de Diagramas de Clases de UML,
pero con algunas diferencias menores
http://en.wikipedia.org/wiki/Object-modeling_technique
¿Qué es un Patrón de Diseño?
14
Después de todo...
...ustedes probablementeya conocen
varios patrones de diseño...
Ingeniería del Software y Patrones de Diseño
15
Un patrón muy conocido
Iterator<MOrder> itt = collection.iterator();
while (itt.hasNext()) { MOrder order = itt.next(); // do something with order}
¿suena esto conocido?
¿cómo se llama?
16
Un patrón muy conocidoIterator / Iterador
Iterator<MOrder> itt = collection.iterator();
while (itt.hasNext()) { MOrder order = itt.next(); // do something with order}
17
Ejemplo: Problema
Cliente 1Cliente 2
Cliente N
subsistema
¿qué problema hay aquí?
18
Ejemplo: SoluciónPatrón Fachada
...ocultar una interfaz compleja distribuida a lo largo de múltiples objetos detrás de un único objeto...
Cliente 1 Cliente 2 Cliente N
subsistema
Fachada
19
Ejemplo: SoluciónPatrón Fachada (Ejemplo en el Libro)
Ejemplo:
Facade(171 / --95--)
¿cómo se describe unpatrón de diseño?
20
Ejemplo: SoluciónPatrón Iterador (Ejemplo en el Libro)
Hay otroslibros
muy buenostambién
21
¿Cómo se Dividen los Patrones de Diseño?(Según GoF)
Patrones de Creación:
Se relacionan con los procesos de creación de objetos(¿Cómo se obtienen y construyen los objetos?)
Patrones Estructurales:
Definen estructuras típicas entre clases y objetos(¿Cómo se acoplan, relacionan, componen
y comunican un conjunto de clases?)
Patrones de Comportamiento:
Caracterizan la forma en que los objetosse distribuyen responsabilidades
22Adaptado de: Gamma, Helm, Johnson, Vlissides, Design Patterns, Addison-Wesley 1ra. Edición
¿Relaciones Entre los DistintosPatrones de Diseño?
23
William J. Brown, Raphael C. Malveau, Hays W.
McCormick, Thomas J. Mowbray
Wiley / 1ra. Edición
Si el concepto de patrones (buenas soluciones a problemas
conocidos) resulta interesante, puede que sea aún más
interesante el concepto de “anti-patrón” (errores comunes
solucionando problemas conocidos)
¿Qué es un Anti-Patrón?
24
Gracias
¡Gracias!