clase 07a patrones_diseno

24
1 Patrones de Diseño (...o bien, que tiene que ver la costura con el software...) (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013

Upload: demian-gutierrez

Post on 13-Jun-2015

404 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Clase 07a patrones_diseno

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

Page 2: Clase 07a patrones_diseno

Diseño Arquitectónico

Diseño Arquitectónico

Arquitectura del Software

Bibliotecas /Componentes

Patrones de Diseño

Clases / Funciones

Frameworks(Marcos)

EstilosArquitectónicos

Page 3: Clase 07a patrones_diseno

3

¿qué es un patrón?

¿qué es un patrón de diseño?

¿Qué es un Patrón de Diseño?

Page 4: Clase 07a patrones_diseno

4

¿Qué es un Patrón de Diseño?

En la costura se utilizan patrones de diseño

Page 5: Clase 07a patrones_diseno

5

También se usan en ingeniería civil

¿Qué es un Patrón de Diseño?

arco viga

colgante

atirantado

Page 6: Clase 07a patrones_diseno

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

Page 7: Clase 07a patrones_diseno

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

Page 8: Clase 07a patrones_diseno

8

¿qué tiene que ver todo esto con la Ingeniería del Software?

Ingeniería del Software y Patrones de Diseño

Page 9: Clase 07a patrones_diseno

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

Page 10: Clase 07a patrones_diseno

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

Page 11: Clase 07a patrones_diseno

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?

Page 12: Clase 07a patrones_diseno

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?

Page 13: Clase 07a patrones_diseno

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?

Page 14: Clase 07a patrones_diseno

14

Después de todo...

...ustedes probablementeya conocen

varios patrones de diseño...

Ingeniería del Software y Patrones de Diseño

Page 15: Clase 07a patrones_diseno

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?

Page 16: Clase 07a patrones_diseno

16

Un patrón muy conocidoIterator / Iterador

Iterator<MOrder> itt = collection.iterator();

while (itt.hasNext()) { MOrder order = itt.next(); // do something with order}

Page 17: Clase 07a patrones_diseno

17

Ejemplo: Problema

Cliente 1Cliente 2

Cliente N

subsistema

¿qué problema hay aquí?

Page 18: Clase 07a patrones_diseno

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

Page 19: Clase 07a patrones_diseno

19

Ejemplo: SoluciónPatrón Fachada (Ejemplo en el Libro)

Ejemplo:

Facade(171 / --95--)

¿cómo se describe unpatrón de diseño?

Page 20: Clase 07a patrones_diseno

20

Ejemplo: SoluciónPatrón Iterador (Ejemplo en el Libro)

Hay otroslibros

muy buenostambién

Page 21: Clase 07a patrones_diseno

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

Page 22: Clase 07a patrones_diseno

22Adaptado de: Gamma, Helm, Johnson, Vlissides, Design Patterns, Addison-Wesley 1ra. Edición

¿Relaciones Entre los DistintosPatrones de Diseño?

Page 23: Clase 07a patrones_diseno

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?

Page 24: Clase 07a patrones_diseno

24

Gracias

¡Gracias!