Sunteți pe pagina 1din 45

escuela tcnica superior de ingeniera informtica

Introduccin a los Patrones de Diseo

Departamento de Lenguajes y Sistemas Informticos

Ingeniera del Software II

El Camino
Qu es un Patrn de Diseo (PD) Qu no es un PD

Qu es un Patrn de Diseo
Qu es el diseo?Qu es un patrn? Qu es un patrn de diseo? El diseo es una actividad
El cmo frente al qu Hacerlo correcto frente a hacer lo correcto Asignar responsabilidades a las clases

Es una actividad difcil?


Debe serlo pues est bien remunerada Un martillo no te hace un buen arquitecto. Conocer un lenguaje OO no te hace un buen diseador (aunque es imprescindible) Los requisitos no funcionales son conflictivos

Qu es un Patrn de Diseo
Algunas propiedades no funcionales Reutilizacin Facilidad de modificacin Facilidad de comprensin Robustez Eficiencia Facilidad de uso En ocasiones es ms importante el aspecto de la calidad que el aspecto funcional Las tcnicas para conseguir la calidad estn menos desarrolladas que las utilizadas para conseguir la funcionalidad

Qu es un Patrn de Diseo
Caminos posibles durante el desarrollo de un proyecto software
Aspectos no funcionales

Deseable

Previsin de entregas

Habitual

Aspectos funcionales

Qu es un Patrn de Diseo
Por lo tanto el diseador debe
Encontrar una solucin que consiga el equilibrio ptimo entre las propiedades no funcionales
Si damos el mismo documento de requisitos a 10 diseadores, obtendremos 10 diseos diferentes

Qu diferencia hay entre los diseadores expertos y los novatos?


Recetas para los problemas habituales. No estn reinventando la rueda continuamente Utilizan recetas exitosas

Cmo se describen estas recetas?

Qu es un Patrn de Diseo
Orgenes de los PP.DD Definiciones Clasificacin Ejemplo: PD Singleton

Qu es un Patrn de Diseo
Orgenes de los PP.DD Definiciones Clasificacin Ejemplo: PD Singleton

Qu es un PD

Orgenes de los PP.DD

Christopher Alexander (Viena, 1936)

1977 1979

Qu es un PD
Ward Cunnighan

Orgenes de los PP.DD

Kent Beck

OOPSLA 87

1. 2. 3. 4. 5.

Window per Task Few Panes Standard Panes Nouns and Verbs Short Menus

Qu es un PD

Orgenes de los PP.DD 1990. Erich Gamma asiste a una charla de Bruce Andersen en un taller del OOPSLA, titulada Architecture Handbook. Esta realizando su tesis doctoral y necesita desarrollar un Framework C++ para aplicaciones grficas multiplataforma (ET++)

1991. Andersen organiza un taller donde Gamma coincide con:

Richard Helm

Ralph Johnson

John Vlissides

Qu es un PD

Orgenes de los PP.DD 1993. Beck y Booch sufragan un retiro en las montaas de colorado. Nace el HillSide

1994. Hillside organiza la primera edicin del PLOP (Patterns Languages of Program Design). La banda de los cuatro venden ms de 750 ejemplares de su libro (10 veces ms que cualquier libro hasta entonces)

Qu es un PD

Orgenes de los PP.DD Lecciones aprendidas Los PP.DD han surgido tomando ideas de otras disciplinas (la arquitectura las toma a su vez de la Biologa) Los PP.DD han tenido su origen en la Academia y no en la industria (es de los pocos ejemplos) Las tesis doctorales sirven para algo El mundo anglosajn suele hacer un uso intensivo de los grupos de presin en todos los mbitos

Qu es un PD
Orgenes de los PP.DD Definiciones Clasificacin Ejemplo: PD Singleton

Qu es un PD
Definiciones

De manera general
Patrn: Modelo que sirve de muestra para sacar otra cosa igual (RAE)

Patrn de diseo: Una solucin general a un problema general que puede adaptarse a un problema concreto
http://www.textile-creation-club.com/esp/patrones.htm

Qu es un PD
Definiciones

En Arquitectura
Cada patrn describe un problema que ocurre una y otra vez en nuestro entorno. Tambin describe el ncleo de la solucin al problema, de forma que puede utilizarse un milln de veces sin hacer dos veces lo mismo

Tcnica de descripcin Par problema-solucin Recurrente Slo el ncleo, no es una solucin completa Reutilizable

Qu es un PD
Definiciones

En Ingeniera del Software (Gamma95, pg. 360)


A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in OO systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of object and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.

Qu es un PD
Definiciones

En Ingeniera del Software (Larman, pag. 204)


Un patrn es un par problema/solucin con nombre que se puede aplicar en nuevos contextos con consejos acerca de cmo aplicarlo en nuevas situaciones y discusiones sobre sus compromisos

Existe consenso en:


Par (problema, solucin) Reutilizar conocimiento Problemas recurrentes (Cundo se considera recurrente?)

Qu es un PD
Orgenes de los PP.DD Definiciones Clasificacin Ejemplo: PD Singleton

Clasificacin

Plantilla de descripcin de la GoF


1. Nombre y clasificacin: expresa sucintamente la esencia del patrn 2. Intencin: frase corta que responde a qu hace y qu resuelve 3. Tambin conocido como: otros nombres conocidos para el PD 4. Motivacin: un escenario que ilustra como el PD resuelve un problema concreto 5. Aplicabilidad: otras situaciones en las que resulta aplicable el PD 6. Estructura: diagramas de clases 7. Participantes: responsabilidad de cada clase participante 8. Colaboraciones: diagrama de colaboracin y/o de secuencias 9. Consecuencias: ventajas e inconvenientes 10.Implementacin: dificultades, tcnicas y trucos a tener en cuenta al aplicar el PD 11.Cdigo de ejemplo: ejemplo de implementacin y de uso del PD 12.Usos conocidos: ejemplos de uso en sistemas reales 13.Patrones relacionados: diferencias con los patrones ms relacionados

Clasificacin
Catlogo de la GoF

Creacional

Fbrica Abstracta, Mtodo Fbrica, Constructor, Prototipo, Singular

Estructural

Adaptador, Puente, Compuesto, Decorador, Fachada, Peso Mosca, Apoderado

De Comportamiento

Cadena de Responsabilidad, Comando, Iterador, Mediador, Memento, Observador, Estado, Estrategia, Visitante, Mtodo Plantilla

Clasificacin

Relaciones entre patrones

Clasificacin
Catlogo de Grand

Parte de la de Gamma y la extiende con 9 categoras ms:


Fundamentales Particionamiento Concurrencia GRASP GUI Organizacin del cdigo Optimizacin del cdigo Robustez Prueba

Qu es un PD
Orgenes de los PP.DD Definiciones Clasificacin Ejemplo: PD Singleton

Ejemplo de PD: Singleton


1. Nombre y clasificacin: Singleton. Creacional 2. Intencin: Garantizar que una clase slo tenga una instancia y proporcionar un punto de acceso global a ella 3. Tambin conocido como: Singular, nico. 4. Motivacin: Registro discrecional de las llamadas a mtodos. Adicionalmente, registrar mensajes de depuracin

Ejemplo de PD: Singleton


5. Aplicabilidad: Usaremos este patrn cuando:
Deba haber exactamente una instancia de una clase y deba ser accesible a los clientes desde un punto de acceso conocido.
Acceso al archivo de configuracin de una aplicacin Gestor de impresin Una fbrica de objetos

6. Estructura:
Singleton -instance : Singleton = null -Singleton() +getInstance() : Singleton if (instance == null) instance= new Singleton(); return instance;

Ejemplo de PD: Singleton


7. Participantes: Singleton: define una operacin de clase getInstance que permite a los clientes acceder a su instancia nica y adems es responsable de su creacin 8. Colaboraciones: Los clientes acceden a la nica instancia solamente a travs de la operacin getInstance
Singleton s= Singleton.getInstance() s.op1(); .

Se suelen emplear estereotipos para simplificar los diagramas de secuencia y colaboracin

Ejemplo de PD: Singleton


9. Implementacin:
Ocultar el constructor Definir getInstance como esttico Pueden ser necesarias operaciones de terminacin (depende de la gestin de memoria del lenguaje) En ambientes concurrentes es necesario usar mecanismos que garanticen la atomicidad del mtodo getInstance Si se desea garantizar la unicidad a nivel de sistema, se puede hacer uso de semforos 10.Consecuencias: Reduce el espacio de nombres Rompe el esquema habitual de creacin de objetos

Ejemplo de PD: Singleton


11.Cdigo de ejemplo: Tracer 12.Usos conocidos: Clase java.lang.Runtime, java.lang.Math, java.util.Collections Clase Environment de MS.NET 13.Patrones relacionados: Fbrica abstracta Mtodo Fbrica Prototipo Object Pool [Grand98]. Cuando se desea tener un nmero determinado de instancias. Cuando la creacin de una instancia es muy costosa e interesa reutilizar la instancia.

El Camino
Qu es un Patrn de Diseo (PD) Qu no es un PD

El camino
Bibliotecas Frameworks Idioms Antipatrones Refactorizaciones

Bibliotecas (Toolkits)
Tambin conocidas como libreras y Toolkits Conjunto de clases diseado para ser reutilizados: TADs, manejo de perifricos, grficos, gestin de documentos XML. Pueden verse como el equivalente en OO de las bibliotecas de subrutinas Influencia baja en el diseo de la aplicacin cliente Una cuestin clave de su diseo reside en conseguir facilidad de uso para el mximo nmero de escenarios sin complicar la interfaz ni reducir el rendimiento Bibliotecas vs PP.DD
Son comparables?
Qu contienen? Cul es su tamao medio?

El Camino
Bibliotecas Frameworks Idioms Antipatrones Refactorizaciones

En el origen de los tiempos


Un framework era un entorno de desarrollo (IDE) Componentes habituales:
Editor de textos Ayuda integrada Compilador Biblioteca de controles visuales Biblioteca de controles datos

Constituan un marco de trabajo para el desarrollo de aplicaciones Visual Basic populariz el concepto en la industria

Qu es un framework hoy
Conjunto de clases parcialmente funcional para un dominio de aplicacin Slo les falta aquello que es propio del problema Ejemplos: AWT, Swing, Struts, Junit, Compact Framework, James (genuinamente andaluz) Gran influencia baja en el diseo de la aplicacin cliente Frameworks vs PP.DD
Son comparables?
Qu contienen? Cul es su tamao medio?

El principio de Hollywood

El principio de Hollywood

Main() { i1 = new I1(); i2 = new I2(); i1 = i2.m(i1.g()); }

Ventajas e inconvenientes

Reutilizacin de diseo y cdigo

Es difcil encontrar el framework apropiado

Experiencia del diseador Es difcil usar ms de un framework al mismo del framework tiempo Costes de produccin Son difciles de construir y reducidos de aprender a usar

El camino
Bibliotecas Frameworks Idioms Antipatrones Refactorizaciones

Idioms
Una forma caracterstica de utilizar un LP [Fiadeiro] Patrn de bajo nivel especfico de un LP. Describen soluciones a problemas de implementacin de un determinado LP [Buschmann] gestin de memoria en C++ Idiom K-R: while (*dest++=*src++) Para algunos, el Singleton no es un patrn de diseo Una coleccin de idioms conforman un estilo Las diferencias entre PP.DD e idioms son difusas Algunos PP.DD de hoy sern idioms maana
Iterator, singleton [Gamma] interface [Grand]

Los PP.DD son casi independientes del L.P

El camino
Bibliotecas Frameworks Idioms Antipatrones Refactorizaciones

Antipatrones
Se aprende ms de los errores que de los aciertos Intentan reutilizar conocimiento de modo similar a los PP.DD Capturan experiencia The blob Poltergeists Cut and paste Spaguetti code .

El camino
Bibliotecas Frameworks Idioms Antipatrones Refactorizaciones

Refactorizaciones
M. Fowler las ha popularizado No siempre se consigue un diseo adecuado qu hacer en tales situaciones? Nada. En ocasiones es lo ms rentable Refactorizar en las sucesivas operaciones de mantenimiento La refactorizacin mantiene invariable la funcionalidad Estan organizadas en catlogos Muchas de ellas estn muy relacionadas con PP.DD Pull-up. Muy relacionada con el PD Template Method

!Gracias!
Podemos mejorar esta leccin?
Mndanos un email a aruiz@us.es Visite la web de la asignatura www.lsi.us.es

S-ar putea să vă placă și