Desarrollo basado en patrones

32
MGT-350 INGENIERÍA DE SOFTWARE Y CONTROL DE CALIDAD DISEÑO BASADO EN PATRONES Por: Marvin Zumbado 18 Agosto 2012

description

 

Transcript of Desarrollo basado en patrones

Page 1: Desarrollo basado en patrones

MGT-350INGENIERÍA DE SOFTWARE Y

CONTROL DE CALIDAD

DISEÑO BASADO EN PATRONES

Por:Marvin Zumbado

18 Agosto 2012

Page 2: Desarrollo basado en patrones

Las primeras instancias para la reutilización de diseños abstractos aparecieron en la documentación y publicación de algoritmos fundamentales (Knuth. 1971)

Los patrones de diseño se derivaron de las ideas introducidas por Christopher Alexander (Alexander et ai, 1977), quien sugirió que existían ciertos patrones del diseño de edificios que eran comunes e inherentemente interesantes y efectivos

Patrones de Diseño(Design Patterns)

Page 3: Desarrollo basado en patrones

En 1987, Ward Cunningham y Kent Beck trabajaron con Smaltalk y diseñaron interfaces de usuario. Decidieron, para ello, utilizar alguna de las ideas de Alexander para desarrollar un lenguaje pequeño de patrones para servir de guía 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 catálogo de patrones de diseño y así sucesivamente se han ido agregando más patrones de diseño como de organización de código, de optimización de código, etc.

Un poco de historia

Page 4: Desarrollo basado en patrones

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es resuelva problemas similares de manera efectiva. Otra característica es que debe ser reutilizable.

Patrones de Diseño:¿Para qué sirven?

Page 5: Desarrollo basado en patrones

Los patrones y los lenguajes de patrones son formas de describir las mejores prácticas, buenos diseños 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.

Patrones de diseño

Page 6: Desarrollo basado en patrones

Patrones de arquitectura organización o esquema estructural

Patrones de diseño esquema para refinar los subsistemas o

componentes de un sistema software, o las relaciones entre ellos

Patrones de programación (idioms) Utiliza facilidades del lenguaje de programación

dado. Patrones de análisis

conjunto de prácticas Patrones organizacionales

estructura y prácticas de las organizaciones

Tipos de patrones

Page 7: Desarrollo basado en patrones

Patrones de programación concurrente.

Patrones de interfaz gráfica. Patrones de organización del

código. Patrones de optimización de

código. Patrones de robustez de código. Patrones de la fase de prueba.

Otros tipos de patrones menos comunes

Page 8: Desarrollo basado en patrones

Nombre Objetivo Contexto Aplicabilidad Solución Implementación Concecuencias Patrones relacionados

Elementos de un patrón

Page 9: Desarrollo basado en patrones

Encapsulación y abstracción: cada patrón encapsula un problema bien definido y su solución en un dominio particular.

Extensión y variabilidad: cada patrón debería ser abierto por extensión o parametrización por otros patrones

Generalidad y composición: cada patrón, una vez aplicado, genera un contexto resultante, el cual concuerda con el contexto inicial de uno o más de uno de los patrones del catálogo

Equilibrio: cada patrón debe realizar algún tipo de balance entre sus efectos y restricciones

Cualidades de un patrón de diseño

Page 10: Desarrollo basado en patrones

De creación Estructurales Comportamiento Concurrencia

Fábrica Abstracta

Adaptador Cadena de responsabilidad Objeto Activo

Constructor Virtual

Puente OrdenObstaculizar

Método de fabricación

Objeto compuesto

IntérpretePegue

Prototipo Envoltorio Iterador Mensajes (MDP)Instancia Única Fachada Mediador Doble candado

Peso ligero Recuerdo Eventos asincronos

Proxy Observador Suspencion vigilada

Módulo Estado CandadoEstrategia Monitor objectMétodo Plantilla ReactorVisitante Bloqueado

Lectura-EscrituraScheduler Manejo de HilosAlmacenamiento Específico

Page 11: Desarrollo basado en patrones
Page 12: Desarrollo basado en patrones

Ventajas: Permiten reutilizar soluciones de

problemas comunes. Están probados y son lo suficientemente

flexibles para adaptarse. Desventajas:

Su elevado número (falta de catalogación).

Su complejidad. Poca definición.

Ventajas y Desventajas

Page 13: Desarrollo basado en patrones

Adaptador: Adapta la interfaz de una clase a la interfaz esperada por sus clientes, favorece la reutilización (de la clase adaptada) y permite la colaboración con interfaces incompatibles. También se conoce como Wrapper.

Tipos de Patrones

Page 14: Desarrollo basado en patrones
Page 15: Desarrollo basado en patrones
Page 16: Desarrollo basado en patrones

Decorador: Permite añadir responsabilidades adicionales a un objeto de forma dinámica. Los decoradores proporcionan una alternativa flexible a la subclasificación para añadir funcionalidad.

Tipos de Patrones

Page 17: Desarrollo basado en patrones

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

Tipos de Patrones

Page 18: Desarrollo basado en patrones

Tipos de Patrones

Page 19: Desarrollo basado en patrones

Singular (singleton): (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto. Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella

Tipos de Patrones

Page 20: Desarrollo basado en patrones

Tipos de Patrones

Page 21: Desarrollo basado en patrones

Iterador: Proporciona una forma de acceder secuencialmente a los elementos de una colección sin mostrar la representación interna de la misma. Permite definir diversos recorridos sobre una estructura, admitiendo el uso simultáneo de la misma por parte de varios clientes.

Tipos de Patrones

Page 22: Desarrollo basado en patrones

Tipos de Patrones

Page 23: Desarrollo basado en patrones

Chain of Responsibility (Cadena de responsabilidad): Permite establecer la línea que deben llevar los mensajes para que los objetos realicen la tarea indicada.

Tipos de Patrones

Page 24: Desarrollo basado en patrones

Tipos de Patrones

Page 25: Desarrollo basado en patrones

Composite. Combina objetos en estructuras de árbol para representar jerarquías de parte-todo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos.

Tipos de Patrones

Page 26: Desarrollo basado en 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 más fácil de usar.

Tipos de Patrones

Page 27: Desarrollo basado en patrones

Prototype. Especifica los tipos de objetos a crear por medio de una instancia prototípica, y crear nuevos objetos copiando este prototipo.

Tipos de Patrones

Page 28: Desarrollo basado en 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

Page 29: Desarrollo basado en patrones

Flyweight. Usa el compartimiento para permitir un gran número de objetos de grano fino de forma eficiente.

Tipos de Patrones

Page 30: Desarrollo basado en patrones

Bridge. Desvincula una abstracción de su implementación, de manera que ambas puedan variar de forma independiente.

Tipos de Patrones

AbstraccionOperacion()

OperacionRedefinida

ImplementacionOperacionImpl()

ImplementaA

OperacionImpl()

ImplementaB

OperacionImpl()

imp.OperacionImpl()

Page 31: Desarrollo basado en patrones

La noción de un patrón como un concepto reutilizable ha sido desarrollada en varias áreas además del diseño software, que incluye gestión de configuraciones, diseño de interfaces de usuario y escenarios de interacciones

El uso de patrones es una forma efectiva de reutilización.

Se puede afirmar que sólo ingenieros de software experimentados que tengan un conocimiento profundo de patrones pueden utilizarlos de forma efectiva. Estos desarrolladores pueden reconocer situaciones genéricas en las que se puede aplicar un patrón.

Los programadores sin experiencia, aun cuando hayan leído libros sobre patrones, siempre encontrarán difícil decidir si pueden reutilizar un patrón o si necesitan desarrollar una solución de propósito específico.

CONCLUSIONES

Page 32: Desarrollo basado en patrones

MUCHAS GRACIAS