SlideShare ist ein Scribd-Unternehmen logo
1 von 25
El presente y futuro                           de   la
reutilización de software
      Patrones de diseño de
            software




        Una breve introducción para principiantes
        
Antes de comenzar…
Quiero expresarles que este curso tiene el
propósito de dar a conocer los conceptos
que desde mi punto de vista, son
esenciales y con los cuales valdría la pena
sensibilizarse antes de empezar a utilizar
algún Patrón de diseño de software.


                                     Autor:
                        Yazmin Ruiz Bonilla
                             Coatzacoalcos, Ver. México
Agenda
 Conceptos previos
 Pros y contras de la reutilización
 Reutilización en el siglo XX vs XXI
 Reutilización de diseño y patrones de diseño
    de software
   El Café de las estrellas.
   Conclusión
   Preguntas
   Referencias
Conceptos previos




     ¿Qué es reutilizar?
Conceptos previos


Reutilizar es la acción de volver a utilizar
los bienes o productos. La utilidad puede
venir para el usuario mediante una acción
de mejora o restauración, o sin modificar
el producto si es útil para un nuevo
usuario.

                Wikipedia
Conceptos previos
      Ahora si…¿Qué es reutilización de
                 software?

“Se define la reutilización de software como
el uso de cualquier tipo de artefacto (también
llamado activo), o parte del mismo, creado
con anterioridad, en un nuevo proyecto.”


Nótese que los artefactos corresponden a los bienes o
productos de la definición general.
Conceptos previos
 Por si las dudas….mencionemos sólo
algunos artefactos, de acuerdo a ciertos
niveles:


Documental            Lógico               Físico

• Diagramas UML
                      • Código fuente      • Procedimientos
• Requisitos del
  sistema             • Bibliotecas de       almacenados
                        clases             • Páginas web
• Diseño de pruebas
• Manuales            • Diseños de bases   • Ejecutables
                        de datos
• Reglas de negocio
                      • Controles de
                        usuario.
                      • Servicios web
Ejecutables    Páginas web       Librerías




Controles     Procedimientos   Servicios web
               almacenados
Pros y Contras de la reutilización
¿Qué se espera con esta práctica?

 Reducción de costes de desarrollo
 Aumento de la calidad de los productos
 Aumento de la productividad
 Mejora en el mantenimiento y soporte
 Mejor control y planificación
Pros y Contras de la reutilización
(2)
¿Qué inconvenientes muestra?

 Dificultad del retorno de inversión (ROI)
 Temor al cambio
 Tecnología de reutilización sistemática
 insuficiente
La reutilización en el siglo XX
 Dificultad para representar artefactos de software
  en un repositorio de contenido.
 Reutilización a través de ingeniería inversa.
La reutilización en el siglo XXI
 No basta con reutilizar código fuente.
 Crea artefactos reutilizables con certeza
  de uso de al menos una vez más.
 Implementa tecnología de repositorios de
  contenidos.
 Trazabilidad total de las aplicaciones.
 Indexación de los proyectos finalizados,
  al repositorio de información.
Reutilización de diseño

 El siguiente nivel de reutilización por encima
 del código fuente son los diseños que
 previamente se hayan efectuado. Cuando
 hablamos de reutilización de software y de
 diseños de software enseguida se nos vienen
 a la cabeza los patrones de diseño.

      Patrón + Diseño
Patrones de Diseño de Software
Patrón
 Cada patrón describe un problema que ocurre
 una y otra vez en un entorno dado, describiendo
 el núcleo de la solución al problema de tal forma
 que pueda ser empleada un millón de veces sin
 hacerlo dos veces de la misma forma.
Diseño
 Es el proceso de definición de la arquitectura,
 componentes, interfaces y otras características
 de un producto, sistema o componente que
 resulta de este proceso.
Patrones de diseño de software
(2)
 “Los patrones de diseño son el esqueleto de
 las soluciones a problemas comunes en el
 desarrollo de software.”

                    Nombre




             Solución    Problema
Patrones de Diseño de Software
(4)
         Creación
         • Abstraen el proceso de creación de instancias.
           Inicialización y configuración de objetos.


         Estructurales
         • Separan la interfaz de la implementación. Se ocupan
           de como clases y objetos son utilizados para
           componer estructuras de mayor tamaño.

         Comportamiento
         • Describen la comunicación entre objetos. Atañen a
           los algoritmos y a la asignación de responsabilidades
           entre objetos.
Patrones de Diseño de Software
(3)
                                 Comportamien
    Creación        Estructura
                                     to
  • Factory     •   Adapter      • Command
    Method      •   Bridge       • Interpreter
  • Prototype   •   Composite    • Observer
  • Singleton   •   Decorator    • State
                •   Facade       • Strategy
                •   Proxy        • Template
                                   Method
                                 • Visitor
Café de las estrellas

Café de las estrellas es una
de las tiendas de café de
mayor éxito a nivel mundial en
torno a la cafetería.

Debido a su amplio
crecimiento, están luchando
por actualizar su sistema de
pedidos para que coincida con
su oferta de bebidas.
Café de las estrellas
   Cuando iniciaron en el negocio, el
   primer diseño de clases fue similar
   al siguiente:
                            Bebida
                        descripcion
                        getDescripcio
                        n()
                        Costo()



 DeLaCasa      Descafeinado           Expresso    GranoTostado


Costo()       Costo()                   Costo()   Costo()
Café de las estrellas

El café de las estrellas requiere ofrecer a sus
clientes algunos condimentos adicionales a
su café como: leche de soya, leche ligera,
mocha y rompope; sin embargo, debido al
diseño preliminar se ven en la necesidad de
levantar los pedidos de forma personalizada.
Café de las estrellas
                               Bebida
                            descripcion
                            getDescripcio
                            n()
                            Costo()




      ExpressoLiger   TostadoRompo            ExpressoSoya    GranoTostado
      o               pe                                      Soya
                          Costo()             Costo()             Costo()
      Costo()
                                                    DescafeinadoS       DesRompope
DeLaCasaRom DesRompope              DeLaCasaSoy
                                                    oya
p                                   a

                Costo()             Costo()             Costo()             Costo()
Costo()
Café de las estrellas
                        Bebida
                    descripcion
                    getDescripcio
                    n()
                                                            Decorador
                    Costo()


DeLaCasa        Expresso                                 GetDescripcion
                                                         ()

 Costo()        Costo()
                                    Rompope
 Descafeinado   GranoTostado        Bebida bebida()
                                    Costo()
 Costo()                            GetDesc()
                Costo()
                                        Soya             Ligera         Mocha
                                        Bebida bebida() Bebida bebida() Bebida bebida()
                                        Costo()         Costo()          Costo()
                                        GetDesc()       GetDesc()        GetDesc()
Conclusión
 Cuanto más arriba subamos en el
  ciclo de vida del software, más valor
  tiene el activo a reutilizar, puesto que
  se ha requerido un mayor poder de
  abstracción para crearlo; y más
  independientes somos de la
  plataforma tecnológica, evitando
  riesgos de obsolescencia.
 No es necesario “reinventar la
  rueda” en varias de nuestras
  aplicaciones. Hay mucho trabajo ya
  realizado, testeado y aceptado que
  en un entorno similar a nuestro
  problema ya aporta una solución
  satisfactoria. ¿Para qué voy a
  inventar un ladrillo si ya otro lo hizo y
  el mismo ya fue usado en la
  edificación de millones de
  estructuras con éxito?
Preguntas




            nimzay4@hotmail.com
Referencias
 [ALEX] “A pattern language”. Christopher Alexander
 et al. Oxford University Press, 1977.
 [FOWL] “Analysis Patterns: Reusable Object Models”.
 Martin Fowler. Addison-Wesley Professional, 1996.
 [FREE] “Head First Design Patterns”. Eric / Elisabeth
 Freeman.
 O’Reilly Media, 2004.
 [GAMM] “Design Patterns: Elements of Reusable
 Object-Oriented Software”. Eric Gamma et al.
 Addison-Wesley Professional, 1995.
 [TRC] http://www.reusecompany.com

Weitere ähnliche Inhalte

Was ist angesagt?

Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructuralesJuan Camilo
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareEsteban Espinel
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosDemián Gutierrez
 
Análisis orientado a objetos y uml
Análisis orientado a objetos y umlAnálisis orientado a objetos y uml
Análisis orientado a objetos y umlSena
 
Introduccion uml
Introduccion umlIntroduccion uml
Introduccion umlninguna
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSJonathan Hidalgo Nolasco
 
Arquitectura de software orientada a patrones
Arquitectura de software orientada a patronesArquitectura de software orientada a patrones
Arquitectura de software orientada a patronesGustavo De la Cruz Tovar
 
Metodologia orientada a objeto - libro
Metodologia orientada a objeto -  libroMetodologia orientada a objeto -  libro
Metodologia orientada a objeto - librotaninof
 
Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Ozzy Bull
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
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
 

Was ist angesagt? (18)

Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicos
 
Análisis orientado a objetos y uml
Análisis orientado a objetos y umlAnálisis orientado a objetos y uml
Análisis orientado a objetos y uml
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Introduccion uml
Introduccion umlIntroduccion uml
Introduccion uml
 
Guia Yahveh
Guia YahvehGuia Yahveh
Guia Yahveh
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
 
Arquitectura de software orientada a patrones
Arquitectura de software orientada a patronesArquitectura de software orientada a patrones
Arquitectura de software orientada a patrones
 
Metodologia orientada a objeto - libro
Metodologia orientada a objeto -  libroMetodologia orientada a objeto -  libro
Metodologia orientada a objeto - libro
 
Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4
 
Introducción a UML
Introducción a UMLIntroducción a UML
Introducción a UML
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 

Andere mochten auch

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 de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñOgueste39de6
 
Patrones de Diseño y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y FrameworksDaniel Cam Urquizo
 
Patrones de diseño en POO
Patrones de diseño en POOPatrones de diseño en POO
Patrones de diseño en POOEl Taller Web
 
Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...Software Guru
 
patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web. Diana Luna
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseñoMario Solarte
 

Andere mochten auch (9)

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 de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Patrones De DiseñO
Patrones De DiseñOPatrones De DiseñO
Patrones De DiseñO
 
Patrones de Diseño y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y Frameworks
 
Patrones de diseño en POO
Patrones de diseño en POOPatrones de diseño en POO
Patrones de diseño en POO
 
Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...Artesanos de software: El uso e implementación de patrones de diseño en siste...
Artesanos de software: El uso e implementación de patrones de diseño en siste...
 
patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web.
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseño
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 

Ähnlich wie Patrones diseño y reutilización software

Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Inteligencia De Negocios En Sql Server 2008
Inteligencia De Negocios En Sql Server 2008Inteligencia De Negocios En Sql Server 2008
Inteligencia De Negocios En Sql Server 2008Eduardo Castro
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007JuancaPompilla
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloSoftware Guru
 
Hacm40 eq2-rational rose
Hacm40 eq2-rational roseHacm40 eq2-rational rose
Hacm40 eq2-rational roseklef258
 
Kleer yoseki coding dojo - Pre-Smalltalk 2012
Kleer   yoseki coding dojo - Pre-Smalltalk 2012Kleer   yoseki coding dojo - Pre-Smalltalk 2012
Kleer yoseki coding dojo - Pre-Smalltalk 2012Diogenes Moreira
 
Face de base de datos.tmp
Face de base de datos.tmpFace de base de datos.tmp
Face de base de datos.tmpninguna
 
Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...
Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...
Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...Carlos Lorenzetti
 
Guia Proyecto RediseñO Web
Guia Proyecto RediseñO WebGuia Proyecto RediseñO Web
Guia Proyecto RediseñO WebBoris Sanchez
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ijjegonzalezf
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakubDemian Raschkovan
 

Ähnlich wie Patrones diseño y reutilización software (20)

Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Metodologia De Desarrollo De Software
Metodologia De Desarrollo De SoftwareMetodologia De Desarrollo De Software
Metodologia De Desarrollo De Software
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Inteligencia De Negocios En Sql Server 2008
Inteligencia De Negocios En Sql Server 2008Inteligencia De Negocios En Sql Server 2008
Inteligencia De Negocios En Sql Server 2008
 
Ruby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos RealesRuby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos Reales
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vuelo
 
Oracle
OracleOracle
Oracle
 
Hacm40 eq2-rational rose
Hacm40 eq2-rational roseHacm40 eq2-rational rose
Hacm40 eq2-rational rose
 
Swreng
SwrengSwreng
Swreng
 
Astema3
Astema3Astema3
Astema3
 
Kleer yoseki coding dojo - Pre-Smalltalk 2012
Kleer   yoseki coding dojo - Pre-Smalltalk 2012Kleer   yoseki coding dojo - Pre-Smalltalk 2012
Kleer yoseki coding dojo - Pre-Smalltalk 2012
 
Face de base de datos.tmp
Face de base de datos.tmpFace de base de datos.tmp
Face de base de datos.tmp
 
Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...
Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...
Tesis Doctoral - Caracterización Formal y Análisis Empírico de Mecanismos Inc...
 
Guia Proyecto RediseñO Web
Guia Proyecto RediseñO WebGuia Proyecto RediseñO Web
Guia Proyecto RediseñO Web
 
Mos Kitt Quo Vadis
Mos Kitt Quo VadisMos Kitt Quo Vadis
Mos Kitt Quo Vadis
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Oracle
OracleOracle
Oracle
 
Docker ECS en AWS
Docker ECS en AWS Docker ECS en AWS
Docker ECS en AWS
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakub
 

Patrones diseño y reutilización software

  • 1. El presente y futuro de la reutilización de software Patrones de diseño de software Una breve introducción para principiantes 
  • 2. Antes de comenzar… Quiero expresarles que este curso tiene el propósito de dar a conocer los conceptos que desde mi punto de vista, son esenciales y con los cuales valdría la pena sensibilizarse antes de empezar a utilizar algún Patrón de diseño de software. Autor: Yazmin Ruiz Bonilla Coatzacoalcos, Ver. México
  • 3. Agenda  Conceptos previos  Pros y contras de la reutilización  Reutilización en el siglo XX vs XXI  Reutilización de diseño y patrones de diseño de software  El Café de las estrellas.  Conclusión  Preguntas  Referencias
  • 4. Conceptos previos ¿Qué es reutilizar?
  • 5. Conceptos previos Reutilizar es la acción de volver a utilizar los bienes o productos. La utilidad puede venir para el usuario mediante una acción de mejora o restauración, o sin modificar el producto si es útil para un nuevo usuario. Wikipedia
  • 6. Conceptos previos Ahora si…¿Qué es reutilización de software? “Se define la reutilización de software como el uso de cualquier tipo de artefacto (también llamado activo), o parte del mismo, creado con anterioridad, en un nuevo proyecto.” Nótese que los artefactos corresponden a los bienes o productos de la definición general.
  • 7. Conceptos previos Por si las dudas….mencionemos sólo algunos artefactos, de acuerdo a ciertos niveles: Documental Lógico Físico • Diagramas UML • Código fuente • Procedimientos • Requisitos del sistema • Bibliotecas de almacenados clases • Páginas web • Diseño de pruebas • Manuales • Diseños de bases • Ejecutables de datos • Reglas de negocio • Controles de usuario. • Servicios web
  • 8. Ejecutables Páginas web Librerías Controles Procedimientos Servicios web almacenados
  • 9. Pros y Contras de la reutilización ¿Qué se espera con esta práctica?  Reducción de costes de desarrollo  Aumento de la calidad de los productos  Aumento de la productividad  Mejora en el mantenimiento y soporte  Mejor control y planificación
  • 10. Pros y Contras de la reutilización (2) ¿Qué inconvenientes muestra?  Dificultad del retorno de inversión (ROI)  Temor al cambio  Tecnología de reutilización sistemática insuficiente
  • 11. La reutilización en el siglo XX  Dificultad para representar artefactos de software en un repositorio de contenido.  Reutilización a través de ingeniería inversa.
  • 12. La reutilización en el siglo XXI  No basta con reutilizar código fuente.  Crea artefactos reutilizables con certeza de uso de al menos una vez más.  Implementa tecnología de repositorios de contenidos.  Trazabilidad total de las aplicaciones.  Indexación de los proyectos finalizados, al repositorio de información.
  • 13. Reutilización de diseño El siguiente nivel de reutilización por encima del código fuente son los diseños que previamente se hayan efectuado. Cuando hablamos de reutilización de software y de diseños de software enseguida se nos vienen a la cabeza los patrones de diseño. Patrón + Diseño
  • 14. Patrones de Diseño de Software Patrón Cada patrón describe un problema que ocurre una y otra vez en un entorno dado, describiendo el núcleo de la solución al problema de tal forma que pueda ser empleada un millón de veces sin hacerlo dos veces de la misma forma. Diseño Es el proceso de definición de la arquitectura, componentes, interfaces y otras características de un producto, sistema o componente que resulta de este proceso.
  • 15. Patrones de diseño de software (2) “Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software.” Nombre Solución Problema
  • 16. Patrones de Diseño de Software (4) Creación • Abstraen el proceso de creación de instancias. Inicialización y configuración de objetos. Estructurales • Separan la interfaz de la implementación. Se ocupan de como clases y objetos son utilizados para componer estructuras de mayor tamaño. Comportamiento • Describen la comunicación entre objetos. Atañen a los algoritmos y a la asignación de responsabilidades entre objetos.
  • 17. Patrones de Diseño de Software (3) Comportamien Creación Estructura to • Factory • Adapter • Command Method • Bridge • Interpreter • Prototype • Composite • Observer • Singleton • Decorator • State • Facade • Strategy • Proxy • Template Method • Visitor
  • 18. Café de las estrellas Café de las estrellas es una de las tiendas de café de mayor éxito a nivel mundial en torno a la cafetería. Debido a su amplio crecimiento, están luchando por actualizar su sistema de pedidos para que coincida con su oferta de bebidas.
  • 19. Café de las estrellas Cuando iniciaron en el negocio, el primer diseño de clases fue similar al siguiente: Bebida descripcion getDescripcio n() Costo() DeLaCasa Descafeinado Expresso GranoTostado Costo() Costo() Costo() Costo()
  • 20. Café de las estrellas El café de las estrellas requiere ofrecer a sus clientes algunos condimentos adicionales a su café como: leche de soya, leche ligera, mocha y rompope; sin embargo, debido al diseño preliminar se ven en la necesidad de levantar los pedidos de forma personalizada.
  • 21. Café de las estrellas Bebida descripcion getDescripcio n() Costo() ExpressoLiger TostadoRompo ExpressoSoya GranoTostado o pe Soya Costo() Costo() Costo() Costo() DescafeinadoS DesRompope DeLaCasaRom DesRompope DeLaCasaSoy oya p a Costo() Costo() Costo() Costo() Costo()
  • 22. Café de las estrellas Bebida descripcion getDescripcio n() Decorador Costo() DeLaCasa Expresso GetDescripcion () Costo() Costo() Rompope Descafeinado GranoTostado Bebida bebida() Costo() Costo() GetDesc() Costo() Soya Ligera Mocha Bebida bebida() Bebida bebida() Bebida bebida() Costo() Costo() Costo() GetDesc() GetDesc() GetDesc()
  • 23. Conclusión  Cuanto más arriba subamos en el ciclo de vida del software, más valor tiene el activo a reutilizar, puesto que se ha requerido un mayor poder de abstracción para crearlo; y más independientes somos de la plataforma tecnológica, evitando riesgos de obsolescencia.  No es necesario “reinventar la rueda” en varias de nuestras aplicaciones. Hay mucho trabajo ya realizado, testeado y aceptado que en un entorno similar a nuestro problema ya aporta una solución satisfactoria. ¿Para qué voy a inventar un ladrillo si ya otro lo hizo y el mismo ya fue usado en la edificación de millones de estructuras con éxito?
  • 24. Preguntas nimzay4@hotmail.com
  • 25. Referencias [ALEX] “A pattern language”. Christopher Alexander et al. Oxford University Press, 1977. [FOWL] “Analysis Patterns: Reusable Object Models”. Martin Fowler. Addison-Wesley Professional, 1996. [FREE] “Head First Design Patterns”. Eric / Elisabeth Freeman. O’Reilly Media, 2004. [GAMM] “Design Patterns: Elements of Reusable Object-Oriented Software”. Eric Gamma et al. Addison-Wesley Professional, 1995. [TRC] http://www.reusecompany.com