SlideShare una empresa de Scribd logo
1 de 32
MGT-350
INGENIERÍA DE SOFTWARE Y
   CONTROL DE CALIDAD

   DISEÑO BASADO EN PATRONES


              Por:
        Marvin Zumbado

                         18 Agosto 2012
Patrones de Diseño
          (Design Patterns)


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
Un poco de historia

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.
Patrones de Diseño:
          ¿Para qué sirven?

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


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.
Tipos de 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
Otros tipos de patrones menos
           comunes

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.
Elementos de un patrón


Nombre
Objetivo
Contexto
Aplicabilidad
Solución
Implementación
Concecuencias
Patrones relacionados
Cualidades de un patrón de diseño


 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
De creación         Estructurales     Comportamiento     Concurrencia
Fábrica Abstracta   Adaptador        Cadena           de
                                     responsabilidad     Objeto Activo
Constructor Virtual Puente           Orden               Obstaculizar
Método           de Objeto compuesto Intérprete
fabricación                                              Pegue
Prototipo           Envoltorio       Iterador            Mensajes (MDP)
Instancia Única     Fachada          Mediador            Doble candado
                    Peso ligero      Recuerdo            Eventos asincronos
                    Proxy            Observador          Suspencion
                                                         vigilada
                    Módulo           Estado              Candado
                                     Estrategia          Monitor object
                                     Método Plantilla    Reactor
                                     Visitante           Bloqueado
                                                         Lectura-Escritura
                                                         Scheduler
                                                         Manejo de Hilos
                                                         Almacenamiento
Ventajas y Desventajas

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.
Tipos de 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
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.
    Abstraccion                                        Implementacion
    Operacion()                                        OperacionImpl()


                       imp.OperacionImpl()


 OperacionRedefinida                         ImplementaA          ImplementaB
                                             OperacionImpl()      OperacionImpl()
CONCLUSIONES


 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.
MUCHAS GRACIAS

Más contenido relacionado

La actualidad más candente

Modelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareModelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareWilliam Matamoros
 
Elementos de diagramas de objetos
Elementos de diagramas de objetosElementos de diagramas de objetos
Elementos de diagramas de objetosJorge Reyes
 
Ingenieria de requerimientos 1
Ingenieria de requerimientos 1Ingenieria de requerimientos 1
Ingenieria de requerimientos 1jmpov441
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMicky Jerzy
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del softwareGiovani Ramirez
 
Del modelo del negocio al modelo de requisitos
Del modelo del negocio al modelo de requisitosDel modelo del negocio al modelo de requisitos
Del modelo del negocio al modelo de requisitosYAMILA GASCON
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentesmartin
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupXochitl Saucedo Muñoz
 
Analisis y diseño diagrama de caso de uso
Analisis y diseño diagrama de caso de usoAnalisis y diseño diagrama de caso de uso
Analisis y diseño diagrama de caso de usoYovana Connie Roca Avila
 
Ingenieria de software basada en componentes
Ingenieria de software basada en componentesIngenieria de software basada en componentes
Ingenieria de software basada en componentesTensor
 
Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesAndresRealp1
 
Modelos de los sistemas distribuidos
Modelos de los sistemas distribuidosModelos de los sistemas distribuidos
Modelos de los sistemas distribuidosMargarita Labastida
 
Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)katherine revelo gomez
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREjose_rob
 

La actualidad más candente (20)

Modelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareModelos o Ciclos de vida de software
Modelos o Ciclos de vida de software
 
Elementos de diagramas de objetos
Elementos de diagramas de objetosElementos de diagramas de objetos
Elementos de diagramas de objetos
 
Ingenieria de requerimientos 1
Ingenieria de requerimientos 1Ingenieria de requerimientos 1
Ingenieria de requerimientos 1
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de Software
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del software
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
Del modelo del negocio al modelo de requisitos
Del modelo del negocio al modelo de requisitosDel modelo del negocio al modelo de requisitos
Del modelo del negocio al modelo de requisitos
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rup
 
Modelos concurrentes
Modelos concurrentesModelos concurrentes
Modelos concurrentes
 
Analisis y diseño diagrama de caso de uso
Analisis y diseño diagrama de caso de usoAnalisis y diseño diagrama de caso de uso
Analisis y diseño diagrama de caso de uso
 
Ingenieria de software basada en componentes
Ingenieria de software basada en componentesIngenieria de software basada en componentes
Ingenieria de software basada en componentes
 
Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentes
 
Modelos de los sistemas distribuidos
Modelos de los sistemas distribuidosModelos de los sistemas distribuidos
Modelos de los sistemas distribuidos
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)
 
Diagrama de secuencia UML
Diagrama de secuencia UMLDiagrama de secuencia UML
Diagrama de secuencia UML
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 
Metodología Rup
Metodología RupMetodología Rup
Metodología Rup
 

Destacado

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 
patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web. Diana Luna
 
Introducción al Diseño Arquitectónico Basado En Patrones
Introducción al Diseño Arquitectónico Basado En PatronesIntroducción al Diseño Arquitectónico Basado En Patrones
Introducción al Diseño Arquitectónico Basado En PatronesJoemmanuel Ponce
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónicoDamián Rotta
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseñolandeta_p
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentesjose_macias
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesUlises Cruz
 
Diseño WEBAPPS
Diseño WEBAPPSDiseño WEBAPPS
Diseño WEBAPPSPSMIJIN
 

Destacado (9)

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Webapps
WebappsWebapps
Webapps
 
patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web.
 
Introducción al Diseño Arquitectónico Basado En Patrones
Introducción al Diseño Arquitectónico Basado En PatronesIntroducción al Diseño Arquitectónico Basado En Patrones
Introducción al Diseño Arquitectónico Basado En Patrones
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentes
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 
Diseño WEBAPPS
Diseño WEBAPPSDiseño WEBAPPS
Diseño WEBAPPS
 

Similar a Desarrollo basado en patrones

Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado2008PA2Info3
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo2008PA2Info3
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoFYaskelly Yedra
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo2008PA2Info3
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañanaale abad aguilar
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Karloz Dz
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoIsrael Rey
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Monografia patrones de diseño proxy (3.0)
Monografia   patrones de diseño proxy (3.0)Monografia   patrones de diseño proxy (3.0)
Monografia patrones de diseño proxy (3.0)finger10
 

Similar a Desarrollo basado en patrones (20)

Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo
 
chuy
chuy chuy
chuy
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Introducción Patrones de Diseño
Introducción Patrones de DiseñoIntroducción Patrones de Diseño
Introducción Patrones de Diseño
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
U5.pptx
U5.pptxU5.pptx
U5.pptx
 
Clase ii patrones de diseño
Clase ii patrones de diseñoClase ii patrones de diseño
Clase ii patrones de diseño
 
Monografia patrones de diseño proxy (3.0)
Monografia   patrones de diseño proxy (3.0)Monografia   patrones de diseño proxy (3.0)
Monografia patrones de diseño proxy (3.0)
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 

Más de Marvin Zumbado

Administración de equipos de proyectos rp ma-mz-lp (1)
Administración de equipos de proyectos rp ma-mz-lp (1)Administración de equipos de proyectos rp ma-mz-lp (1)
Administración de equipos de proyectos rp ma-mz-lp (1)Marvin Zumbado
 
Implementacion del departamento de help desk marvin zumbado
Implementacion del departamento de help desk   marvin zumbadoImplementacion del departamento de help desk   marvin zumbado
Implementacion del departamento de help desk marvin zumbadoMarvin Zumbado
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoMarvin Zumbado
 
Sistemas información geográfica
Sistemas información geográficaSistemas información geográfica
Sistemas información geográficaMarvin Zumbado
 
Project management institute
Project management instituteProject management institute
Project management instituteMarvin Zumbado
 
Análisis de seguridad de la información para betmaker
Análisis de seguridad de la información para betmakerAnálisis de seguridad de la información para betmaker
Análisis de seguridad de la información para betmakerMarvin Zumbado
 

Más de Marvin Zumbado (13)

Administración de equipos de proyectos rp ma-mz-lp (1)
Administración de equipos de proyectos rp ma-mz-lp (1)Administración de equipos de proyectos rp ma-mz-lp (1)
Administración de equipos de proyectos rp ma-mz-lp (1)
 
Iso 27k abril 2013
Iso 27k   abril 2013Iso 27k   abril 2013
Iso 27k abril 2013
 
Implementacion del departamento de help desk marvin zumbado
Implementacion del departamento de help desk   marvin zumbadoImplementacion del departamento de help desk   marvin zumbado
Implementacion del departamento de help desk marvin zumbado
 
Feng shui
Feng shui Feng shui
Feng shui
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
Tienda virtual
Tienda virtual Tienda virtual
Tienda virtual
 
Sistemas información geográfica
Sistemas información geográficaSistemas información geográfica
Sistemas información geográfica
 
Rei
ReiRei
Rei
 
Project management institute
Project management instituteProject management institute
Project management institute
 
Oracle
Oracle Oracle
Oracle
 
Crystal
CrystalCrystal
Crystal
 
Análisis de seguridad de la información para betmaker
Análisis de seguridad de la información para betmakerAnálisis de seguridad de la información para betmaker
Análisis de seguridad de la información para betmaker
 
Val it
Val itVal it
Val it
 

Desarrollo basado en patrones

  • 1. MGT-350 INGENIERÍA DE SOFTWARE Y CONTROL DE CALIDAD DISEÑO BASADO EN PATRONES Por: Marvin Zumbado 18 Agosto 2012
  • 2. Patrones de Diseño (Design Patterns) 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
  • 3. Un poco de historia 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.
  • 4. Patrones de Diseño: ¿Para qué sirven? 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.
  • 5. Patrones de diseño 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.
  • 6. Tipos de 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
  • 7. Otros tipos de patrones menos comunes 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.
  • 8. Elementos de un patrón Nombre Objetivo Contexto Aplicabilidad Solución Implementación Concecuencias Patrones relacionados
  • 9. Cualidades de un patrón de diseño 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
  • 10. De creación Estructurales Comportamiento Concurrencia Fábrica Abstracta Adaptador Cadena de responsabilidad Objeto Activo Constructor Virtual Puente Orden Obstaculizar Método de Objeto compuesto Intérprete fabricación Pegue Prototipo Envoltorio Iterador Mensajes (MDP) Instancia Única Fachada Mediador Doble candado Peso ligero Recuerdo Eventos asincronos Proxy Observador Suspencion vigilada Módulo Estado Candado Estrategia Monitor object Método Plantilla Reactor Visitante Bloqueado Lectura-Escritura Scheduler Manejo de Hilos Almacenamiento
  • 11.
  • 12. Ventajas y Desventajas 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.
  • 13. Tipos de 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.
  • 14.
  • 15.
  • 16. 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.
  • 17. 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.
  • 19. 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
  • 21. 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.
  • 23. 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.
  • 25. 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.
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 29. Tipos de Patrones Flyweight. Usa el compartimiento para permitir un gran número de objetos de grano fino de forma eficiente.
  • 30. Tipos de Patrones Bridge. Desvincula una abstracción de su implementación, de manera que ambas puedan variar de forma independiente. Abstraccion Implementacion Operacion() OperacionImpl() imp.OperacionImpl() OperacionRedefinida ImplementaA ImplementaB OperacionImpl() OperacionImpl()
  • 31. CONCLUSIONES  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.