Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Frameworks
Diseo Arquitectnico
Arquitectura
del Software
Diseo
Arquitectnico
Estilos
Arquitectnicos
Frameworks
(Marcos)
Patrones de
Diseo
Bibliotecas /
Componentes
Clases /
Funciones
Qu es un Framework?
Qu es un Framework?
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.
Qu es un Framework?
Un framework (armazon), es una abstraccin en la que
cierto cdigo comn provee una funcionalidad genrica
que puede ser sobrescrita o especializada de forma
selectiva por medio de cdigo con funcionalidad
especfica provisto por los clientes del framework
(desarrolladores de software / programadores)
Un framework es una solucin incompleta (no
funcional) pero concreta (a diferencia de los estilos
arquitectnicos o los patrones de diseo) a un problema
recurrente bien conocido
Patrones de
Diseo
Frameworks
(Marcos)
Bibliotecas /
Componentes
Definen la
Arquitectura
definen
Clases /
Funciones
Implementan
Implementacin y
funcionalidad concreta,
utilizable directamente
desde el cdigo de la
aplicacin implementada
Utilizan
Aplicacin
implementan
Qu es un Framework?
comportamiento
por defecto
hot spots
(hooks)
Instanciacin 1
funcionalidad
aadida (Cliente)
Instanciacin 2
14
Ms fcil de usar
15
EJEMPLO:
Implementemos un
Solitario!
16
Un solitario es un juego
en el que hay:
Cartas: Unidades
bsicas 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 aadir de/a
una pila
17
NO
O
K
19
NO
SI
O
N
20
SI
SI
21
Utilitarios y clases
base de Swing
Es la clase encargada
de cargar las cartas
del disco
Utilitarios en general
23
Si no se permite (por
reglas) mover las
cartas selecionadas,
tmpStack es nulo
25
Si el ratn 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
que deben ser
devueltas a la pila de
origen
27
Acepta cartas de
colores intercalados
28
29
30
Define la interfaz de
una pequea clase
que establece un
comportamiento de
aceptacin de cartas
31
El mtodo addAcceptRule
recibe una instancia de
una regla y la aade a la
lista de reglas a verificar al
momento de solicitarle a la
pila que acepte una carta
o un grupo de cartas.
El mtodo acceptCards
funciona de la forma
tradicional, slo que
ejecuta la cadena de
reglas aadidas y si todas
pasan, entonces acepta la
carta o el grupo de cartas
Las clases verdes definen una regla de aceptacin, por ejemplo DescendantAcceptRule que slo
acepta cartas con valores consecutivos descendientes, que se pueden encadenar con otras reglas,
como SameColorAcceptRule, para obtener una pila que solo acepta cartas descendientes
consecutivas en valor del mismo color
32
TODO:
Los ejemplos del Juego de
Cartas Caja Negra an no
estn disponibles (para el
jueves los tengo)
Diagramas de secuencia del
Juego de Cartas Caja Negra
35
37
39
40
Sin Framework
Con Framework
43
45
Componentes
Diseo Arquitectnico
Arquitectura
del Software
Diseo
Arquitectnico
Estilos
Arquitectnicos
Frameworks
(Marcos)
Patrones de
Diseo
Bibliotecas /
Componentes
Clases /
Funciones
Componentes?
Componentes?
Sin embargo...
Recuerda usted las
siguientes
transparencias?
52
Bosquejar los
Requerimientos
del
Sistema
Buscar
Componentes
Reutilizables
(COTS)
(Ej. Aplicaciones
Listas o Casi
Listas)
Modificar
Requerimientos
Acorde a los
Componentes
Encontrados
Diseo
Arquitectnico
Buscar
Componentes
Reutilizables
(COTS)
(Ej. Libreras,
Frameworks u
otros)
Disear el
Sistema
Utilizando los
Componentes
Reutilizados
Modificar
Componentes
Encontrados
Modificar
Componentes
Encontrados
Componentes?
Componentes?
Cualquier tipo de recurso [elemento] de software que
pueda ser reutilizado (por ejemplo, mdulos o
cdigo, diseos, especificaciones de requerimientos,
conocimiento de un dominio, experiencia de
desarrollo o documentacin, etctera)
Hooper and Chester, 1991
Los componentes de software son definidos como
mdulos de software reutilizables,
auto-contenidos, pre-probados, pre-fabricados
que ejecutan funciones especficas y enpaquetan
datos y procedimierntos
56
Componentes?
En general, un componente debe tener las siguientes
caractersticas:
Debe ser autocontenido:
Un componente no debe requierir la reutilizacin de
otros componentes para cumplir su funcin, debe
tener todo lo necesario para poder funcionar.
Sin embargo, es posible que un componente pueda
depender de otros componentes para poder
funcionar.
57
Componentes?
En general, un componente debe tener las siguientes
caractersticas:
58
Componentes?
En general, un componente debe tener las siguientes
caractersticas:
59
Componentes?
En general, un componente debe tener las siguientes
caractersticas:
60
Componentes?
En general, un componente debe tener las siguientes
caractersticas:
Deben ser mantenidos para facilitar una
reutilizacin sistemtica:
Es necesario saber quin es el propietario del
componente, quin lo mantiene (Lo mantienen?),
quin brinda soporte (Hay soporte? De qu tipo?),
cul es la calidad del componente, etctera.
No vale la pena utilizar un componente con defectos
o que no tenga mucha actividad o que no se le haga
mantenimiento de forma adecuada (mantener
componentes es costoso, al igual que los
frameworks)
61
Componentes?
En general, un componente debe tener las siguientes
caractersticas:
62
63
Bien...
Pero en este punto,
Cul es la diferencia entre
un framework y un
componente?
64
Primero:
Tenga bien claro el contexto y
el para qu necesita el
framework...
...y luego considere lo
siguiente...
66
Qu es un Patrn de Diseo?
Verifique que el framework/componente est siendo utilizado
por otros desarrolladores, busque que opinan otros equipos
de desarrollo, que problemas han enfrentado, etctera
Qu otros frameworks/componentes similares existen?
Cmo se comparan entre si frameworks/componentes
similares? Qu opciones hay?
Asegrese que el framework/componente est siendo
mantenido activamente, revise los registros de bugs y los
tiempos entre las correcciones. Revise los tiempos entre
releases, el tiempo desde que se liber la ltima versin, la
actividad del repositorio de cdigo, etctera*
*Si el ltimo release fue hace ms de un ao ao y medio
probablemente no hay mucha actividad (aplican sus excepciones) 67
Qu es un Patrn de Diseo?
Qu es un Patrn de Diseo?
Qu es un Patrn de Diseo?
El framework/componente es open source / free software
(son dos cosas diferentes) o es propietario? Cules son las
ventajas / desventajas de cualesquiera de las tres opciones
en el contexto de uso del framework? (Esto tambin va
asociado al punto de la documentacin)*
Cunto cuesta? Cul es la forma de pago? El cliente
puede correr con los costos? El equipo de desarrollo puede
correr con los costos (libre para desarrollo / pago para uso)?
Es adecuado el framework/componente para el
contexto/aplicacin en el que se necesita utilizar?
(Quiz esto es lo primero que se debera considerar)
*Esto es importante porque puede ser la diferencia entre poder
parchar y extender internamente el framework en caso de ser
necesario (o no, si no es al menos cdigo abierto)
70
Gracias
Gracias!
72