patrones de diseÑo - departamento de...

27
Página 1 Patrones de Diseño Tecnología de Objetos PATRONES DE PATRONES DE DISEÑO DISEÑO

Upload: lenhu

Post on 29-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 1

Patrones de Diseño

Tecnología de Objetos

PATRONES DEPATRONES DEDISEÑODISEÑO

Page 2: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 2

Patrones de Diseño

Experiencia en Diseño

• Los analistas/diseñadores con granexperiencia aplican, de forma mayormenteintuitiva y automática, criterios precisos que,de forma global, solucionan de formaelegante y efectiva los problemas demodelado software de sistemas reales.

• Usualmente estos diseñadores utilizanmétodos, estructuras y subsistemas que son,a la vez, herramientas del diseño y partes dela solución final, de una manera quedíficilmente puede transmitirse, en un sentidoformal, a especialistas menos expertos.

Page 3: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 3

Patrones de Diseño

Problemas Repetidos

• Los “ingenieros de software” se enfrentancada día a multitud de problemas dedistinto calibre.

• La “efectividad” de un “ingeniero” semide por su rapidez y acierto en ladiagnosis, identificación y resolución detales problemas.

• El mejor “ingeniero” es el que másreutiliza la misma solución -matizada-para resolver problemas similares.

Page 4: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 4

Patrones de Diseño

Reinventar la Rueda

• La Orientación-a-Objetos propugna “noreinventar la rueda” en la pura codificaciónrespecto de la resolución de problemas. ¿Porque, entonces, reinventarla para el ataquegenérico a problemas comunes de análisis,diseño e implementación?

• Debe existir alguna forma de comunicar alresto de los “ingenieros” los resultadosencontrados tras mucho esfuerzo poralguno(s) de ellos.

• Se necesita, al fin, algún esquema de docu-mentación que permita tal comunicación.

Page 5: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 5

Patrones de Diseño

¿Documentación?

• La mera documentación de líneas de códigoresulta insuficiente, pues únicamentefomenta el uso de la técnica de “cut & paste”.

• El tipo de los problemas y soluciones adocumentar es muy variado:

– PROGRAMACIÓN– ANÁLISIS– ARQUITECTURA– GESTIÓN, ETC.

• Se necesita un formato de documentaciónúnico que aúne conceptualmente estosdistintos tipos.

Page 6: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 6

Patrones de Diseño

La Esencia del Diseño

• Los diseñadores bien-dotados poseen unsentido especial que “detecta” la completitud,en un sentido eminentemente arquitectónico,de un determinado diseño, conindependencia de las posibles métricas yparadigmas utilizados.

• Naturalmente lo ideal sería extraer laquintaesencia de estos afortunados diseñospara formular una suerte de “bálsamo defierabrás” que pudieran ingerir losdiseñadores noveles.

Page 7: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 7

Patrones de Diseño

Christopher Alexander

• Los trabajos de Alexander intentan identificary resolver, en un marco descriptivo formalaunque no-exacto, problemas esenciales enel dominio de la arquitectura.

• Ha parecido adecuado a los diseñadoressoftware trasladar muchas de las ideas deAlexander al dominio software.

• Alexander ha servido, en realidad, decatalizador de ciertas tendencias“constructivas” utilizadas en el diseño desistemas software.

Page 8: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 8

Patrones de Diseño

El Libro AIS

•• AA Pattern Language Pattern Language::TownsTowns//BuildingBuilding//ConstructionConstruction, de ChristopherAlexander, Sara Ishikawa, Murray Silverstein,Max Jacobson, Ingrid Fiksdahl-King y ShlomoAngel, 1977, Oxford University Press. 253patrones, con el formato específico pro-puesto por Alexander, se dan cita en estetexto, en el que además se propugna unaintegración del mejor-vivir con el medio físicocircundante: gente-gente-patrones-gente.Cuando se habla del “libro de Alexander” odel “libro AIS” (las iniciales de los primerosautores) se refieren a esta obra.

Page 9: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 9

Patrones de Diseño

La Calidad sin Nombre

• ¿Existe en verdad una parte común en losbuenos diseños, a veces tan dispares entresí? Christopher Alexander así lo afirma, y daa esta parte la elusiva calificación de “lacalidad que no se puede nombrar”.

• Alexander sostiene que existe un “algoinnombrable” que no puede ser modeladoúnicamente por medio de un conjunto arbi-trario de requerimientos. Los sistemasposeerían, así, una esencia cualitativa que lesotorgaría verdadera identidad y equilibraríasus fuerzas internas.

Page 10: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 10

Patrones de Diseño

Calidad Adjetivada

Si bien la calidad intrínseca de lossistemas reales no tiene nombre,éstos pueden adjetivarse, siempresegún Alexander, en razón de lascaracterísticas que tales poseen:vivos, completos, libres, exactos,vivos, completos, libres, exactos,despersonalizadosdespersonalizados y eternos y eternos.

Page 11: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 11

Patrones de Diseño

Soluciones Reutilizables

“Cada patrón describe un problema que“Cada patrón describe un problema queocurre una y otra vez en nuestroocurre una y otra vez en nuestroentorno, para describir después elentorno, para describir después elnúcleo de la solución a ese problema,núcleo de la solución a ese problema,de tal manera que esa solución puedade tal manera que esa solución puedaser usada más de un millón de vecesser usada más de un millón de vecessin hacerlo siquiera dos veces de lasin hacerlo siquiera dos veces de lamisma forma”.misma forma”.

Christopher Alexander

Page 12: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 12

Patrones de Diseño

Un Ejemplo Rural

Si nos fijamos en las construcciones de unadeterminada zona rural observaremos quetodas ellas poseen apariencias parejas(tejados de pizarra con gran pendiente, etc.),pese a que los requerimientos personales porfuerza han debido ser distintos. De algunamanera la esencia del diseño se ha copiadode una construcción a otra, y a esta esenciase plegan de forma natural los diversosrequerimientos. Diríase aquí que existe un“patrón” que soluciona de forma simple yefectiva los problemas de construcción en talzona.

Page 13: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 13

Patrones de Diseño

El Símil Textil

• Un patrón de diseño es “Una solución aUna solución aun problema en un determinadoun problema en un determinadocontextocontexto”. Tal solución es, empero, a lavez parte del “qué” y del “cómo” del sistemacompleto a construir: esto es, la pieza queconforma el patrón software es como la piezadel patrón de sastre que se utiliza paraconfeccionar vestidos y trajes, pues tal pieza,aparte de contener las especificaciones decorte y confección del producto final,representa a la vez, en apariencia, una partede tal producto textil.

Page 14: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 14

Patrones de Diseño

Patrón Documentario (I)

•• IntenciónIntención: sucinta descripción de lo que sepretende conseguir con el patrón.

•• También Conocido comoTambién Conocido como: otros nombres delmismo patrón.

•• MotivoMotivo: explicación justificativa de lanecesidad de que el patrón exista comoentidad autónoma.

•• AplicabilidadAplicabilidad: lista de usos para los queresulta especialmente adecuado el patrón quese describe.

Page 15: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 15

Patrones de Diseño

Patrón Documentario (II)

•• EstructuraEstructura: descripción gráfica de loscomportamientos, acciones y relaciones delos objetos que participan en el patrón.

•• ParticipantesParticipantes: diccionario de las partes quecomponen el patrón.

•• ColaboracionesColaboraciones: diccionario de las relacionese interacciones entre los participantes en unpatrón.

•• ConsecuenciasConsecuencias: detalle de los posiblesbeneficios y perjuicios que pueden derivarsedel uso del patrón.

Page 16: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 16

Patrones de Diseño

Patrón Documentario (III)

•• ImplementaciónImplementación: detalle de las posiblesimplementaciones y catálogo de lasdecisiones de diseño en la codificación desoluciones concretas basadas en el patrón.

•• Código de EjemploCódigo de Ejemplo: planteamiento de códigopráctico referido a un ejemplo (o ejemplos)suficientemente representativo del uso delpatrón.

•• Usos ConocidosUsos Conocidos: detalle de bibliotecas,productos y sistemas en que se ha utilizadoel patrón.

Page 17: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 17

Patrones de Diseño

Patrón Documentario (IV)

•• Patrones RelacionadosPatrones Relacionados: referencias a otrospatrones que bien son directamenteutilizados por el descrito bien representansoluciones complementarias osuplementarias al mismo.

Page 18: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 18

Patrones de Diseño

Catálogos de Patrones

Si aceptamos que los patrones puedenresultar útiles en el desarrollo desoftware, el siguiente paso es reunirlosen catálogos de forma que resultenaccesibles mediante distintos criterios,pues lo que necesitamos no es tansólo la completa descripción de cadauno de los patrones sino,esencialmente, la correspondenciaentre un problema real y un patrón (oconjunto de patrones) determinado.

Page 19: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 19

Patrones de Diseño

La Curva de Aprendizaje

• Lo que se pretende con un catálogo depatrones no es favorecer al diseñador experto(que quizás no necesite en absoluto de lospatrones), sino más bien ayudar al diseñadorinexperto a adquirir con cierta rapidez lashabilidades de aquél, como tambiéncomunicar al posible cliente, si es el caso, lasdecisiones de diseño de forma clara yautosuficiente.

• Un Catálogo de Patrones es un medio paracomunicar la experiencia de forma efectiva,reduciendo lo que se conoce como “curva deaprendizaje” del diseño.

Page 20: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 20

Patrones de Diseño

El Libro GOF

• Existen varios catálogos de patrones pero lacapacidad de elección todavía se basa en elconocimiento completo de los mismos.

• El catálogo de patrones más famoso es elcontenido en el libro “Design PatternsDesign Patterns::Elements of Reusable ObjectElements of Reusable Object--OrientedOriented Software Software”, de Erich Gamma,Richard Helm, Ralph Johnson y JohnVlissides, 1995, Addison-Wesley, 0-201-63361-2, también conocido como el LIBROLIBROGOFGOF (Gang-Of-Four Book).

Page 21: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 21

Patrones de Diseño

Tipos de Patrones

SEGÚN EL LIBRO GOF:SEGÚN EL LIBRO GOF:•• De CreaciónDe Creación: abstraen el proceso de

creación de instancias.•• EstructuralesEstructurales: se ocupan de cómo

clases y objetos son utilizados paracomponer estructuras de mayortamaño.

•• De ComportamientoDe Comportamiento: atañen a losalgoritmos y a la asignación deresponsabilidades entre objetos.

Page 22: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 22

Patrones de Diseño

Patrones de Creación (I)

• Abstract Factory: provee un interfaz paracrear familias de objetos dependientes orelacionados sin necesidad de especificarsus clases concretas (p.e.: widgets endistintas plataformas)

• Builder: separa la construcción de un objetocomplejo de su representación, de tal maneraque el mismo proceso de construcción puedecrear diferentes representaciones (p.e.:conversores de formatos de texto)

Page 23: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 23

Patrones de Diseño

Patrones de Creación (II)

• Factory Method: define un intefaz para crearun objeto, pero deja que las subclasesdecidan qué clase instanciar. Este patróndelega la instanciación de una clase a sussubclases (como un constructor virtual).

• Prototype: especifica las clases de objetos acrear usando un ejemplar prototípico, y creanuevos objetos copiando este prototipo.

• Singleton: asegura que una clase sólo tendráuna instancia, y provee un punto global deacceso a la misma.

Page 24: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 24

Patrones de Diseño

Patrones Estructurales

• Adapter• Bridge• Composite• Decorator• Facade• Flyweight• Proxy

Page 25: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 25

Patrones de Diseño

Patrones de Comportamiento

• Chain of Responsibility• Command• Interpreter• Iterator• Mediator• Memento• Observer• State, Strategy• Template Method• Visitor

Page 26: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 26

Patrones de Diseño

Breves Notas

• ¿Patrones como moda?Mejor como Intención.

• ¿Patrones como solución?Mejor como núcleo desoluciones.

• ¿Patrones como normas?Mejor como sugerencias.

Page 27: PATRONES DE DISEÑO - Departamento de Informáticadi002.edv.uniovi.es/~cueva/investigacion/lineas/patrones/Patrone... · Página 3 Patrones de Diseño Problemas Repetidos • Los

Página 27

Patrones de Diseño

Patrones de Diseño Software

PREGUNTASPREGUNTASPREGUNTAS