patrones de diseÑo - departamento de...
TRANSCRIPT
Página 1
Patrones de Diseño
Tecnología de Objetos
PATRONES DEPATRONES DEDISEÑODISEÑO
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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)
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.
Página 24
Patrones de Diseño
Patrones Estructurales
• Adapter• Bridge• Composite• Decorator• Facade• Flyweight• Proxy
Página 25
Patrones de Diseño
Patrones de Comportamiento
• Chain of Responsibility• Command• Interpreter• Iterator• Mediator• Memento• Observer• State, Strategy• Template Method• Visitor
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.
Página 27
Patrones de Diseño
Patrones de Diseño Software
PREGUNTASPREGUNTASPREGUNTAS