Clase 07a patrones_diseno

Preview:

Citation preview

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!