Publicado el 29 de Abril del 2020
419 visualizaciones desde el 29 de Abril del 2020
2,9 MB
72 paginas
Creado hace 13a (30/06/2011)
Frameworks y Componentes
(... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...)
Universidad de los Andes
Demián Gutierrez
Abril 2010
1
Frameworks
Diseño Arquitectónico
Diseño
Arquitectónico
Arquitectura
del Software
Estilos
Arquitectónicos
Frameworks
(Marcos)
Patrones de
Diseño
Bibliotecas /
Componentes
Clases /
Funciones
¿Qué es un Framework?
¿A quienes les gusta
la TV?
¿Telenovelas?
¿Series de TV?
¿Qué tiene que ver esto con el uso de frameworks o componentes?
4
¿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
5
¿Qué es un Framework?
¿Telenovelas?
¿Series de TV?
En el cine, la TV y la literatura existe un
concepto similar, la idea es que es posible
tomar una plantilla particular 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.
6
¿Qué es un Framework?
Un framework (armazon), 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 con funcionalidad
específica provisto por los clientes del framework
(desarrolladores de software / programadores)
Un framework es una solución incompleta (no
funcional) pero concreta (a diferencia de los estilos
arquitectónicos o los patrones de diseño) a un problema
recurrente bien conocido
¡La Búsqueda de la Generalidad y la Reusabilidad!
7
¿Cómo ayuda un framework al desarrollo de
software?
Un framework facilita el desarrollo de software
permitiendo a los diseñadores y
programadores dedicar su tiempo a lograr los
requerimientos de software en lugar de lidiar
con los detalles de bajo nivel necesarios
para obtener un sistema funcional
De esta forma se puede reducir el tiempo total
de desarrollo de la aplicación
8
¿Cómo ayuda un framework al desarrollo de
software?
Por ejemplo, un equipo que esta
desarrollando un sistema WEB bancario al
usar un framework de desarrollo WEB
puede enfocarse en el desarrollo de las
operaciones de retiro y transferencias de
dinero en lugar de tener que enfocarse en
la mecánica del manejo de las peticiones
HTTP o el manejo de las sesiones de los
usuarios y el estado de la aplicación
9
¿Frameworks y Arquitectura de Software?
Un framework es una forma de
reutilizar una arquitectura de
software
¿Qué relación tiene un framework
con los estilos arquitectónicos?
¿Qué relación tienen un framework
con otros aspectos del diseño y
Arquitectura de Software?
10
¿Frameworks y Arquitectura de Software?
Estilos
Arquitectónicos
Visión estructural y/o dinámica de
cómo debería ser un sistema, no
utilizable o ejecutable directamente
(“out of the box”)
M
e
n
o
r
n
v
e
i
l
d
e
a
b
s
t
r
a
c
c
ó
n
i
Patrones de
Diseño
Visión estructural y/o dinámica de
cómo se pueden resolver ciertos
problemas comunes de diseño, no
utilizable o ejecutable directamente
(“out of the box”)
definen
Clases /
Funciones
Se diseñan usando (entre otras cosas)
Frameworks
(Marcos)
Bibliotecas /
Componentes
Definen la
Arquitectura
Utilizan
Implementan
Implementación y
funcionalidad concreta,
utilizable directamente
desde el código de la
aplicación implementada
Aplicación
implementan
¿Frameworks, y la teoría de las zonas frías y
las zonas calientes?
Según Pree, los frameworks están conformados por
zonas congeladas (frozen spots) and zonas calientes
(hot spots)
Las partes congeladas definen la arquitectura
general de un sistema de software, es decir, sus
componentes básicos y las relaciones entre estos.
Esas partes permanecen inalteradas (congeladas) en
cualquier instanciación del framework
Las partes calientes representan los puntos en los que
los programadores pueden añadir su propio código
para añadir la funcionalidad especifica de su propio
proyecto
Pree, W (1994), "Meta Patterns-A Means For Capturing the Essentials of Reusable Object-
12
Oriented Design", Proceedings of the 8th European Conference on Object-Oriented
Programming (Springer-Verlag): 150–162
¿Qué es un Framework?
Los frameworks en si mismos no son
usualmente ejecutables (a diferencia de un
programa o una aplicación).
La idea es que el framework es utilizado en
una aplicación particular, que rellena 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.
13
¿Frameworks, y la teoría de las zonas frías y
las zonas calientes?
Framework
frozen spots
comportamiento
por defecto
)
C
o
I
(
l
i
I
o
r
t
n
o
C
e
d
n
ó
s
r
e
v
n
hot spots
(hooks)
funcionalidad
añadida (Cliente)
Instanciación 1
Instanciación 2
14
¿Frameworks caja blanca y caja negra?
M
á
s
d
i
f
í
c
i
l
d
e
p
r
o
g
r
a
m
a
r
(
E
n
g
e
n
e
r
a
l
)
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
En el medio están todos los matices posibles...
(Caja Blanca y Caja Negra al mismo tiempo -> Caja Gris)
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
componiendo y delegando comportamiento entre
objetos (Muchos de los cuales son las extensiones del
usuario)
M
á
s
f
á
c
i
l
d
e
u
s
a
r
¡El ideal, el sueño de todo desarrollador es hacer un
framework completamente caja negra!
15
Frameworks: Caja Blanca, Caja Negra
y Ejemplos...
EJEMPLO:
¡Implementemos un
Solitario!
16
¿Frameworks y Arquitectura de Software?
Un solitario es un juego
en el que hay:
Cartas: Unidades
básicas que se
mueven de un lado a
otro, bien sea de
forma separada o en
grupos
Bases: Lugares
donde poner cartas,
aplican reglas sobre
que cartas se
pueden poner /
quitar
Pilas: Grupos de
cartas, generalmente
sobre una base (o en
movimiento, a modo
de un grupo de
cartas). Aplican
reglas sobre que
cartas se pueden
quitar o añadir de/a
una pila
17
¿Frameworks y Arquitectura de Software?
El objetivo del juego es acomodar
las cartas de cierta forma o
eliminar todas las cartas de las
mesa, siguiendo una serie de
reglas predefinidas que dicen que
cartas se pueden mover de una pila
a otra...
18
¿Frameworks y Arquitectura de Software?
Prácticamente, se pueden definir un
conjunto infinito de posibles reglas y
juegos distintos usando el mismo principio
Sólo acepta una “A”
de cualquier color
N O
O
K
19
¿Frameworks y Arquitectura de Software?
Una pila que sólo acepta
cartas con valor
descendiente y color alterno
SI
O
N
N
O
20
¿Frameworks y Arquitectura de Software?
Una pila de la que
sólo se puede sacar
la carta del tope o
grupos de cartas que
lleguen alternando su
color con valor
descendente al tope
NO
S I
SI
21
¿Frameworks y Arquitectura de Software?
Si vamos a programar un juego de
solitario hay dos opciones:
1) Programar un sólo juego en especifico, con
reglas especificas
2) Programar una serie de clases (framework)
que permitan luego “configurar” las reglas
fácilmente para así poder crear cualquier solitario
que se requiera
Para la opción 2, a continuación una posible
implementación:
22
¿Frameworks y Arquitectura de Software?
MainFrame
representan la IU del
solitario
Utilitarios y clases
base de Swing
Es la clase encargada
de cargar las cartas
del disco
Panel en el que se dibujan
las cartas (o que “contiene”
el solitario)
Utilitarios en general
Objetos del Solitario, Cartas,
Pilas, “Dibujables”, etc
El código de este ejemplo va adjunto a las
transparencias, son los proyectos
CardGames01 y CardGames02
23
¿Frameworks y Arquitectura de Software?
GamePanel se
encarga de dibujar las
pilas de cartas (que a
su vez dibujan las
cartas individuales) así
como de manejar los
eventos del ratón
Los eventos del ratón se
manejan de forma genérica
por parte de GamePanel,
es decir, las reglas de que
cartas se pueden quitar de
una pila o poner en otra no
están implementadas en
esta clase
Las reglas de las pilas
están implementadas en
cada una de las pilas. Por
ejemplo borrowCards es
invocado para ver si es
posible quitar un grupo de
cartas de una pila,
acceptCards es invocado
para ver si es posible
poner un grupo de cartas
en una pila particular. Toda
la lógica y la verificación se
implementa en estos dós
métodos de las distintas
pilas
Ver diagramas de secuencia
de las siguientes láminas
para entender el proceso completo de tomar de una pila y poner en otra
24
¿Frameworks y Arquitectura de Software?
Si el puntero no está
sobre una pila
srcStack es nulo
Si no se permite (por
tmpStack es nulo
reglas) mover las
cartas selecionadas,
Lo que sucede cuando el usuario
aprieta el ratón (sobre una pila)
25
¿Frameworks y Arquitectura de Software?
Si el ratón no se libera
sobre una pila tgtStack
será nulo
Si acceptCards retorna
falso, quiere decir que
la pila por sus “reglas”
no aceptó las cartas, y
origen
que deben ser
devueltas a la pila de
Lo que sucede cuando el usuario libera el ratón (sobre una pila)
26
¿Frameworks y Arquitectura de Software?
Es decir, desde el punto de vista de GamePanel (ver
diagramas anteriores) toda la lógica de si es posible
sacar una o más cartas de una pila o poner una o más
cartas en una pila está implementada en la clase Stack,
específicamente en los mét
Comentarios de: Frameworks y Componentes (... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...) (0)
No hay comentarios