Desarrollo basado en patrones
-
Upload
marvin-zumbado -
Category
Documents
-
view
3.135 -
download
0
description
Transcript of Desarrollo basado en patrones
MGT-350INGENIERÍA DE SOFTWARE Y
CONTROL DE CALIDAD
DISEÑO BASADO EN PATRONES
Por:Marvin Zumbado
18 Agosto 2012
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)
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
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?
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
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
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
Nombre Objetivo Contexto Aplicabilidad Solución Implementación Concecuencias Patrones relacionados
Elementos de un patrón
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
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
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
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
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
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
Tipos de 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
Tipos de 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
Tipos de 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
Tipos de 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
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
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
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 número de objetos de grano fino de forma eficiente.
Tipos de 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()
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
MUCHAS GRACIAS