3. 3
¿Qué es un framework?
¿A quienes les gusta la TV?
¿Telenovelas?
¿Series de TV?
¿qué tiene que ver esto con el uso/desarrollo de frameworks?
4. 4
¿Qué es un framework?
¿Telenovelas?
¿Series de TV?
En el cine, la TV y la literatura
existe un concepto similar.
La idea consiste en tomar una plantilla de una
historia y reusarla (repetirla) una y otra vez,
en diferentes contextos,
con diferentes personajes, en distintas épocas, etc.
Eso se puede ver como un “framework” para
escribir historias.
5. 5
¿Qué es un framework?
Los hijos, niño y niña, de una familia acomodada, en la que
por alguna razón (usualmente un villano / villana) la niña
termina criándose con una familia humilde, y luego, cuando
los niños crecen y son adultos, la chica por azares de la vida
termina trabajando de servicio en la casa de la familia rica de
donde vino, y con el tiempo se enamora y conquista al
protagonista, que resulta ser el hijo de la dueña de casa, pero
en la etapa de mayor tensión a alguien se le ocurre decir “yo
soy tu madre” (o se vale “yo soy tu hija”) y entonces hay
dudas de que los dos enamorados sean hermanos, hasta que
finalmente resulta que la chica tiene otra media hermana, que
resulta ser la verdadera hermana del protagonista, que se
casa con la protagonista y todos viven felices para siempre...
por cierto, el villano termina muerto, loco o en la cárcel
¿Suena conocido?
6. 6
¿Qué es un framework?
El término framework se podría
traducir al español como
armazón o andamio, que
viene a ser una estructura
genérica que se utiliza para
colocar diversos elementos
según sean necesarios
7. 7
¿Qué es un framework?
Un framework (armazón / marco), es una abstracción en la
que cierto código común provee una funcionalidad
genérica, que puede ser sobrescrita o especializada de
forma selectiva por medio de código provisto por los
clientes del framework
(desarrolladores de software / programadores)
Un framework es una solución incompleta
(no funcional) pero a diferencia de los estilos
arquitectónicos o los patrones de diseño,
es una solución concreta (implementada)
a un problema recurrente (dominio) bien conocido
9. 9
¿Cómo ayuda un framework?
Permite a los arquitectos y desarrolladores concentrar su tiempo
en lograr los requerimientos de la aplicación, en lugar de tener
que hacerlo en los detalles (infraestructura) de bajo nivel
necesarios para obtener un sistema funcional
Todo esto reduce el tiempo total de desarrollo de la aplicación y
aumenta la productividad de los desarrolladores
Un framework facilita el desarrollo
de aplicaciones de software porque:
Un framework generalmente ya ha sido usado y probado en
otros sistemas, lo que reduce la probabilidad de introducir
errores accidentales en el sistema a desarrollar
10. 10
¿Cómo ayuda un framework?
Ejemplo
Un equipo está desarrollando un sistema WEB para
un banco: Al usar un framework de desarrollo
WEB, el equipo puede enfocarse en implementar las
operaciones de retiro y transferencia de dinero, en
lugar de tener que enfocarse en la mecánica del
manejo de las peticiones HTTP, el manejo de las
sesiones de los usuarios, el estado de la aplicación,
etc.
Cantidad de trabajo que aporta valor para el cliente
versus
Cantidad de trabajo que sólo aporta infraestructura
12. 12
Los frameworks están conformados por
zonas congeladas (frozen spots) y
zonas calientes (hot spots / hooks)*
Las zonas congeladas definen la arquitectura general de un
sistema de software: Sus componentes básicos y las
relaciones entre estos. Esas partes permanecen inalteradas
(congeladas) en cualquier instanciación del framework
Las zonas calientes representan los puntos en los que es
posible añadir funcionalidad especifica de la aplicación.
Los programadores modifican/personalizan el comportamiento
del framework añadiendo código en las zonas calientes
*Pree, W (1994), "Meta Patterns-A Means For Capturing the Essentials of Reusable
Object-Oriented Design", Proceedings of the 8th European Conference on Object-Oriented
Programming (Springer-Verlag): 150–162
Frameworks,
Zonas Frías y Zonas Calientes
13. 13
Frameworks,
Zonas Frías y Zonas Calientes
Los frameworks en si mismos no son
usualmente ejecutables
La idea es rellenar los “hot spots”
necesarios para satisfacer unos
requerimientos particulares dentro de un
contexto de funcionamiento particular
El proceso anterior se llama “instanciación”
del framework
La instanciación si es ejecutable
14. 14
Frameworks,
Zonas Frías y Zonas Calientes
Instanciación 1 Instanciación 2
frozen spots
Framework
hot spots
(hooks)
funcionalidad
añadida (Cliente)
15. 15
Frameworks,
Zonas Frías y Zonas Calientes
Instanciación
IoC / Inversion of Control
(Inversión de Control)
...no nos llame,
nosotros lo llamamos...
Comportamiento
por defecto
Extensibilidad
16. 16
Frameworks Caja Blanca y Caja Negra
Un framework caja blanca (white box) requiere que los
usuarios tengan conocimiento de la estructura y código
interno del framework, generalmente vienen con el
código fuente y normalmente su comportamiento se
extiende por medio del uso de subclases y herencia
Un framework caja negra (black box) no requiere un
entendimiento o conocimiento profundo del
funcionamiento interno (estructura / código) del
framework. Generalmente el framework se extiende por
composición y delegación de comportamiento entre
objetos
En el medio están todos los matices posibles...
(Caja Blanca y Caja Negra al mismo tiempo -> Caja Gris)
Másfácildeusar
Másdifícildeprogramar(Engeneral)
¡El ideal, el sueño de todo desarrollador es hacer un
framework completamente caja negra!
17. 17
Un Ejemplo Caja Blanca
Un Framework “Caja Blanca” para desarrollar juegos
¿qué sucede con
draw()?
Zonas Frías
Zonas Calientes
Extensiones
La herencia
funciona como
mecanismo de
extensión en
tiempo de
“compilación”
18. 18
Un Ejemplo Caja Negra
Un Framework “Caja Negra” para desarrollar juegos
Zonas Frías
Zonas Calientes
Extensiones
A diferencia de la
herencia, la
composición funciona
como mecanismo de
extensión en “tiempo
de ejecución”