Este documento introduce los conceptos básicos de la reutilización de software y los patrones de diseño. Explica que la reutilización reduce costos y mejora la calidad al permitir el uso repetido de artefactos de software. También cubre los pros y contras de la reutilización, así como su evolución entre los siglos XX y XXI. Finalmente, presenta el caso de una cafetería que mejora su sistema de pedidos aplicando el patrón Decorator para agregar condimentos adicionales a las bebidas.
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
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()
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?
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