Está en la página 1de 32

MGT-350 INGENIERA DE SOFTWARE Y CONTROL DE CALIDAD

DISEO BASADO EN PATRONES Por: Marvin Zumbado 18 Agosto 2012

Patrones de Diseo (Design Patterns)


Las primeras instancias para la reutilizacin de diseos abstractos aparecieron en la documentacin y publicacin de algoritmos fundamentales (Knuth. 1971) Los patrones de diseo se derivaron de las ideas introducidas por Christopher Alexander (Alexander et ai, 1977), quien sugiri que existan ciertos patrones del diseo de edificios que eran comunes e inherentemente interesantes y efectivos

Un poco de historia
En 1987, Ward Cunningham y Kent Beck trabajaron con Smaltalk y disearon interfaces de usuario. Decidieron, para ello, utilizar alguna de las ideas de Alexander para desarrollar un lenguaje pequeo de patrones para servir de gua a los programadores. De 1990 en adelante varios autores como Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides (nombrados el grupo de los cuatro) realizan un catlogo de patrones de diseo y as sucesivamente se han ido agregando ms patrones de diseo como de organizacin de cdigo, de optimizacin de cdigo, etc.

Patrones de Diseo: Para qu sirven?


Los patrones de diseo son la base para la bsqueda de soluciones a problemas comunes en el desarrollo de software y otros mbitos referentes al diseo de interaccin o interfaces. Un patrn de diseo es una solucin a un problema de diseo. Para que una solucin sea considerada un patrn debe poseer ciertas caractersticas. Una de ellas es resuelva problemas similares de manera efectiva. Otra caracterstica es que debe ser reutilizable.

Patrones de diseo
Los patrones y los lenguajes de patrones son formas de describir las mejores prcticas, buenos diseos y encapsulan la experiencia de tal forma que es posible que otras personas puedan reutilizar dicha experiencia. Proporciona un esquema para refinar los subsistemas o componentes de un sistema software, o las relaciones entre ellos.

Tipos de patrones
Patrones de arquitectura
organizacin o esquema estructural

Patrones de diseo
esquema para refinar los subsistemas o componentes de un sistema software, o las relaciones entre ellos

Patrones de programacin (idioms)


Utiliza facilidades del lenguaje de programacin dado.

Patrones de anlisis
conjunto de prcticas

Patrones organizacionales
estructura y prcticas de las organizaciones

Otros tipos de patrones menos comunes


Patrones de programacin concurrente. Patrones de interfaz grfica. Patrones de organizacin del cdigo. Patrones de optimizacin de cdigo. Patrones de robustez de cdigo. Patrones de la fase de prueba.

Elementos de un patrn

Nombre Objetivo Contexto Aplicabilidad Solucin Implementacin Concecuencias Patrones relacionados

Cualidades de un patrn de diseo

Encapsulacin y abstraccin: cada patrn encapsula un problema bien definido y su solucin en un dominio particular. Extensin y variabilidad: cada patrn debera ser abierto por extensin o parametrizacin por otros patrones Generalidad y composicin: cada patrn, una vez aplicado, genera un contexto resultante, el cual concuerda con el contexto inicial de uno o ms de uno de los patrones del catlogo Equilibrio: cada patrn debe realizar algn tipo de balance entre sus efectos y restricciones

De creacin

Estructurales

Comportamiento

Concurrencia

Fbrica Abstracta

Cadena de responsabilidad Objeto Activo Constructor Virtual Puente Orden Obstaculizar Mtodo de Objeto compuesto Intrprete fabricacin Pegue Prototipo Envoltorio Iterador Mensajes (MDP) Instancia nica Fachada Mediador Doble candado Peso ligero Recuerdo Eventos asincronos Proxy Observador Suspencion vigilada Mdulo Estado Candado Estrategia Monitor object Mtodo Plantilla Reactor Visitante Bloqueado Lectura-Escritura Scheduler Manejo de Hilos Almacenamiento

Adaptador

Ventajas y Desventajas
Ventajas: Permiten reutilizar soluciones de problemas comunes. Estn probados y son lo suficientemente flexibles para adaptarse. Desventajas: Su elevado nmero (falta de catalogacin). Su complejidad. Poca definicin.

Tipos de Patrones
Adaptador: Adapta la interfaz de una clase a la interfaz esperada por sus clientes, favorece la reutilizacin (de la clase adaptada) y permite la colaboracin con interfaces incompatibles. Tambin se conoce como Wrapper.

Tipos de Patrones
Decorador: Permite aadir responsabilidades adicionales a un objeto de forma dinmica. Los decoradores proporcionan una alternativa flexible a la subclasificacin para aadir funcionalidad.

Tipos de Patrones
Estado: Es un patrn de comportamiento para objetos. Se debe usar si el comportamiento de un objetodepende de su estado, y se ve modificado en tiempo de ejecucin. Permite que un objeto cambie su comportamiento cuando cambia su estado interno, tal y como si el objeto cambiase de clase.

Tipos de Patrones

Tipos de Patrones
Singular (singleton): (instancia nica) est diseado para restringir la creacin de objetos pertenecientes a una clase o el valor de un tipo a un nico objeto. Su intencin consiste en garantizar que una clase slo tenga una instancia y proporcionar un punto de acceso global a ella

Tipos de Patrones

Tipos de Patrones
Iterador: Proporciona una forma de acceder secuencialmente a los elementos de una coleccin sin mostrar la representacin interna de la misma. Permite definir diversos recorridos sobre una estructura, admitiendo el uso simultneo de la misma por parte de varios clientes.

Tipos de Patrones

Tipos de Patrones
Chain of Responsibility (Cadena de responsabilidad): Permite establecer la lnea que deben llevar los mensajes para que los objetos realicen la tarea indicada.

Tipos de Patrones

Tipos de Patrones
Composite. Combina objetos en estructuras de rbol para representar jerarquas de partetodo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos.

Tipos de Patrones
Facade. Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Define una interfaz de alto nivel que hace que el subsistema se ms fcil de usar.

Tipos de Patrones
Prototype. Especifica los tipos de objetos a crear por medio de una instancia prototpica, y crear nuevos objetos copiando este prototipo.

Tipos de Patrones
Proxy: se utiliza como intermediario para acceder a un objeto, permitiendo controlar el acceso a l. Necesitamos crear objetos que consumen muchos recursos, pero no queremos instanciarlos a no ser que el cliente lo solicite o se cumplan otras condiciones determinadas.

Tipos de Patrones
Flyweight. Usa el compartimiento para permitir un gran nmero de objetos de grano fino de forma eficiente.

Tipos de Patrones
Bridge. Desvincula una abstraccin de su implementacin, de manera que ambas puedan variar de forma independiente.
Abstraccion Implementacion OperacionImpl()

Operacion()

imp.OperacionImpl()

OperacionRedefinida

ImplementaA

ImplementaB

OperacionImpl()

OperacionImpl()

CONCLUSIONES

La nocin de un patrn como un concepto reutilizable ha sido desarrollada en varias reas adems del diseo software, que incluye gestin de configuraciones, diseo de interfaces de usuario y escenarios de interacciones El uso de patrones es una forma efectiva de reutilizacin. Se puede afirmar que slo ingenieros de software experimentados que tengan un conocimiento profundo de patrones pueden utilizarlos de forma efectiva. Estos desarrolladores pueden reconocer situaciones genricas en las que se puede aplicar un patrn. Los programadores sin experiencia, aun cuando hayan ledo libros sobre patrones, siempre encontrarn difcil decidir si pueden reutilizar un patrn o si necesitan desarrollar una solucin de propsito especfico.

MUCHAS GRACIAS