Sei sulla pagina 1di 49

Clase 6:

Frameworks parte I
Ingeniera de Software
Clase 1
Objetivos
2
Comprender la utilizacin de los frameworks en el
desarrollo de las aplicaciones actuales
Conocer los diferentes conceptos relacionados a los
frameworks
Conocer las implicancias y requerimientos para el
desarrollo de frameworks
Temas
3
Introduccin
Definicin de Framework
Qu brinda un framework?
Desarrollar o utilizar un framework?
Clasificacin de los frameworks
Contenedores
Introduccin
4
Patrones
Son estructuras reutilizables en la construccin de
aplicaciones, puede ser del tipo: arquitectnicos, de diseo,
dialectos o de cdigo, entre otros.
Patrn de Diseo
Es una solucin abstracta a un problema de diseo que
aparece muy frecuentemente, expresada mediante un
conjunto de relaciones e interacciones entre sus
componentes.

Introduccin
5
Arquitectura de Software
Se define como la estructura o estructuras del sistema, la
cual comprende elementos de software, las propiedades
externas visibles de estos elementos, y las relaciones entre
ellos
La arquitectura define la estructura a travs de
descomposicin del sistema en componentes / mdulos /
subsistemas
La comunicacin de componentes involucra:
Mecanismos de traspaso de datos
Control del flujo
Introduccin
6
Diseo arquitectnico
Tiene como objetivo principal desarrollar una estructura del
sistema modular representando las relaciones de control
entre los mdulos
Trata de no centrarse en los detalles y cdigo de los
procedimientos, sino centrarse en el software como un todo
Incluye las actividades bsicas de:
Estructuracin del sistema
Modelado del control
Descomposicin modular
Introduccin
7
Estilos arquitectnicos
Expresan esquemas de organizacin estructural esencial
para un sistema de software, que consta de sub-sistemas,
sus responsabilidades e interrelaciones
Son una transformacin que se impone al diseo de todo el
sistema
Algunos estilos:
De flujo de datos: Tuberas y filtros
De llamada y retorno: basado en componentes, modelo de capas
Centrados en datos: repositorios
Entre pares: orientado a servicios
Introduccin
8
Y framework?
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.
Introduccin
9
Framework
El trmino se podra traducir al espaol como armazn o
andamio, que viene a ser una estructura genrica que se
utiliza para colocar diversos elementos segn sean
necesarios
Tambin son conocidos como marco
de trabajo

Qu es un Framework?
10
Un framework (armazn / marco), es una abstraccin en la
que cierto cdigo comn provee una funcionalidad
genrica, que puede ser sobrescrita o especializada
deforma selectiva por medio de cdigo provisto por los
clientes del framework (desarrolladores de software)
Un framework es una solucin incompleta (no funcional)
pero a diferencia de los estilos arquitectnicos o los
patrones de diseo, es una solucin concreta
(implementada) a un problema recurrente (dominio) bien
conocido
Qu es un Framework?
11
Viene a ser:
Una aplicacin medio completada, reutilizable, que puede
especializarse para producir una aplicacin personalizada
Un conjunto de clases abstractas y concretas cooperando
que se emplean en un diseo reutilizable de un tipo
especfico de software
Una tcnica Orientada a Objetos de reutilizacin:
Reutilice el Diseo + Reutilice el Cdigo

Framework
12
Relacin con los patrones de diseo
Se complementan con los frameworks
Los patrones de diseo tienen una granularidad ms fina
que los frameworks
Un framework suele estar compuesto por una coleccin de
patrones de diseo

Framework
15
Relacin con la Arquitectura
Desde otro punto de vista, los frameworks son las
herramientas, mientras que la Arquitectura es el diseo
resultante:
Framework
16
Ventajas
Permite a los arquitectos y desarrolladores concentrar su
tiempo en lograr los requerimientos de la aplicacin, 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
aplicacin y aumenta la productividad de los
desarrolladores.
Framework
17
Ventajas
Un framework facilita el desarrollo de aplicaciones porque
generalmente este ya ha sido usado y probado en otros
sistemas, lo que reduce la probabilidad de introducir
errores accidentales en el sistema a desarrollar
Ejemplo:
Un equipo est desarrollando un sistema WEB para un banco: Al
usar un framework, el equipo puede enfocarse en implementar las
operaciones de retiro y transferencia de dinero, en lugar de tener
que enfocarse en la mecnica del manejo de las peticiones HTTP, el
manejo de las sesiones de los usuarios, el estado de la aplicacin,
etc.
Framework
18
Los frameworks estn conformados por zonas fras (frozen
spots) y zonas calientes (hot spots)


Zonas Calientes (hot spots)
Las zonas calientes representan los puntos en los que es
posible aadir funcionalidad especifica de la aplicacin.
Los programadores modifican/personalizan el
comportamiento del framework aadiendo cdigo en las
zonas calientes
Framework
19
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 instanciacin del framework.
La instanciacin si es ejecutable
Framework
20
Zonas Fras (frozen spots)
Las zonas fras definen la arquitectura general de un
sistema de software: sus componentes bsicos y las
relaciones entre estos. Esas partes permanecen inalteradas
(congeladas) en cualquier instanciacin del framework
Framework
21
Zonas fras y zonas calientes
Qu brinda un Framework?
22
Inversin de Control (Inversion of Control / IoC)
El desarrollador ya no mantiene el flujo de control, es decir,
ste no es manejado por el invocador o por el cdigo
cliente, sino que es manejado por el framework en si mismo
Basada en el llamado Principio de Hollywood:
No nos llame, nosotros lo llamaremos
Qu brinda un Framework?
23
Inversin de Control
Qu brinda un Framework?
24
Comportamiento por defecto
El framework brinda cierto comportamiento por defecto, de
modo que el cliente puede decidir personalizar o aadir
funcionalidad en ciertos puntos o puede simplemente
conformarse con el comportamiento por defecto provisto
por el framework
Qu brinda un Framework?
25
Extensibilidad
Debe ser posible extender el framework, bien sea
sobrescribiendo cierto cdigo o aadiendo algn tipo de
extensin (hook / gancho) o plug-in. Es decir, debe ser
posible cambiar el comportamiento por defecto pre-
definido en el framework. En general, los puntos de
extensin deben estar muy claros
Hook = Hotspot = Plug-point
Puntos donde el framework puede
ser personalizado.

Qu brinda un Framework?
26
Extensibilidad
Los puntos fundamentales del diseo requieren conocimiento
del dominio.
Cmo encontrar los enganches adecuados?
Pocos o muchos enganches?
Cul debe ser el comportamiento asumido?
Alternativas para la implementacin:
Mtodo de las plantillas (Template Method)
Estrategia o Prototipo
Observador
Qu brinda un Framework?
27
Cdigo no-modificable del framework
El cdigo del framework en general no debera de poderse
modificar, los usuarios deben de poder extender el
framework pero no deberan de poder modificar su cdigo
interno (a menos que deseen de forma explcita arreglar
algn problema o colaborar en el desarrollo del
framework)
Frameworks de caja blanca y de
caja negra
28
Caja Blanca
Un framework caja blanca (white box) requiere que los
usuarios tengan conocimiento de la estructura y cdigo
interno del framework, generalmente vienen con el cdigo
fuente y normalmente su comportamiento se extiende por
medio del uso de subclases y herencia
Frameworks de caja blanca y de
caja negra
29
Caja Blanca
Frameworks de caja blanca y de
caja negra
30
Caja Negra
Un framework caja negra (black box) no requiere un
entendimiento o conocimiento profundo del funcionamiento
interno (estructura / cdigo) del framework. Generalmente
el framework se extiende por composicin y delegacin de
comportamiento entre objetos.

El ideal, el sueo de todo
desarrollador es hacer un
framework completamente caja
negra!
Frameworks de caja blanca y de
caja negra
31
Caja Negra

Utilizacin de Frameworks
32
Por ejemplo si se tiene que desarrollar una aplicacin WEB
(o un compilador, o una aplicacin de escritorio, o un editor
grfico o ...) tenemos las siguientes opciones:
Desarrollar desde cero y para esto es necesario
Tomar una aplicacin que ya est desarrollada y adaptarla a
las necesidades actuales de la aplicacin requerida
Utilizar un framework


Utilizacin de Frameworks
33
Opcin 1
Desarrollar desde cero (from scratch) y para esto es
necesario:
Definir la arquitectura del software
(arquitectura general, estilos arquitectnicos, etc.)
Codificar, validar y probar la arquitectura
Codificar la funcionalidad propia del software (aunque esto
algunas veces se hace mezclado con el paso anterior)
Encontrar errores y problemas en la arquitectura, refinar la
arquitectura, rehacer parte de la funcionalidad, hacer refactors
en el cdigo, etc.
Utilizacin de Frameworks
34
Opcin 2
Tomar una aplicacin WEB que ya est desarrollada y
adaptarla a las necesidades actuales de la aplicacin
requerida:
Comprender la aplicacin (framework) existente
Usar la arquitectura ya definida / refinada y codificar la
funcionalidad...
Esta opcin en realidad no implica un framework en si mismo,
pero es una primera buena aproximacin
Utilizacin de Frameworks
35
Opcin 3
Tomar una framework (para desarrollar aplicaciones WEB):
Comprender / aprender a usar el framework
Usar la arquitectura ya definida / refinada en el framework y
codificar la funcionalidad...
Aprender a vivir con las limitaciones del framework y resistir la
tentacin de desarrollar un framework propio
Utilizacin de Frameworks
36
Tiempo ganado por el uso de frameworks
Desarrollar un framework?
37
Vale la pena desarrollar un framework?
... depende ...
Crear un framework es en parte ms arte que ciencia...
Generalmente no es buena idea crear un framework, es
preferible buscar uno ya existente que resuelva el problema
que se trata de abordar
Desarrollar un framework puede ser un proceso muy costoso
(o lento), de modo que es necesario asegurarse que se
tendr el adecuado retorno de inversin
Desarrollar un framework?
38
De las opciones 1 y 2 anteriormente explicadas,
probablemente la 2 termine en el desarrollo de un
framework (a largo plazo)
Simplemente se trata de hacer un clculo adecuado de la
relacin costo beneficio, recuerde que en muchos casos el
objetivo principal es resolver el problema del cliente no
desarrollar un framework
Desarrollar un framework?
39
Habilidades para desarrollarlos
Disee / desarrolle software (fundamental)
Practique la programacin (muy importante)
Trabaje con los problemas de diseo, cometa errores,
reconozca los errores cometidos, encuentre soluciones, etc.
Use patrones de diseo
Use frameworks ya existentes
Vea el cdigo de frameworks ya existentes (extienda
frameworks)
Diseo de frameworks
40
Conocimiento del Dominio :
Para cules aplicaciones ser el Framework?
Qu es comn a todas ellas?
Arquitectura:
Las mayores y mas crticas decisiones tcnicas
Qu se requiere, adems de las clases?
Diseo Orientado a Objetos:
Reutilizacin del Diseo: Patrones
Inversin de Control + Bsqueda de enganches apropiados
Diseo de frameworks
41
Conocimiento del Dominio
Tambin conocido como Anlisis o Modelado.
Decisiones significativas comunes:
Conceptos principales del dominio modelado.
Operaciones principales.
Casos de Uso: Cmo realizan los usuarios tareas
comunes?
Diseo de frameworks
42
Arquitectura
El conjunto de decisiones significativas acerca de la
estructura del software, su divisin en componentes y
subsistemas y sus interfaces, as como los lineamientos para
integrarlos
Decisiones significativas comunes:
Lenguaje de programacin, sistema operativo, hardware
Uso de las principales liberaras externas o aplicaciones
Conceptos principales: Tipos de mdulos e interfaces
Comunicacin y sincronizacin entre mdulos
Modelo de Seguridad
Diseo de frameworks
43
Proceso de diseo
Clasificacin de Frameworks
44
Horizontales:
Infraestructuras de comunicaciones
Interfaces de usuario
Entornos visuales
Plataformas de componentes distribuidos, etc
Verticales:
Telecomunicaciones (TINA, MultiTEL)
Fabricacin
Multimedia (JMF), etc.
Clasificacin de Frameworks
45
Generales
Programacin de GUIs
Entornos de programacin visual
Programacin de redes
Software de base
Infraestructuras de comunicaciones
Plataformas de componentes
De Empresa
Especficos de un dominio, a medida
Clasificacin de Frameworks
46
En JAVA:
De persistencia
Hibernate
iBatis
De interfaz grfica de
usuario
Struts
Java Server Faces y todos sus
hermanos y derivados
De publicacin de documentos
Cocoon
En PHP:
Zend
Symfony
Laravel
CodeIgniter
Contenedores
47
Contenedores o containers describe cualquier componente
que puede contener otros componentes dentro de s mismo.
Dependiente de su funcin puede ser sofisticados como los
web containers o especficos como los applets Java o
frames.
Algunos autores definen a los contenedores como
frameworks dentro de los cuales se ejecuta objetos y cdigo
de aplicacin
Se puede decir que son frameworks para el ensamblado de
componentes de diversos orgenes
Contenedores
50
Contenedores pesados y livianos
A los contenedores del estilo EJB 2.1 (tecnologa Java de
componentes) se les denomin pesados por todo el trabajo
adicional necesario para poder hacer uso de ellos y
adems porque requieren de una gran maquinaria para
funcionar.
Esta maquinaria extra hace que el tiempo de arranque de
la aplicacin sea extenso y aumenta el requerimiento de
memoria.
Contenedores
51
Contenedores pesados y livianos
Tambin influyen en el nombre de liviano o pesado lo
complejo que es aprender a usar la tecnologa y qu tan
fciles probar los componentes desarrollados con ella.
En consecuencia, se les llama livianos a los que requieren
pocos recursos para funcionar, son simples de aprender,
rpidos y fciles de probar.
Ejemplos:
Spring
Pico
NFactory
Resumen
52
Un framework es una abstraccin en la que cierto
cdigo comn provee una funcionalidad genrica, que
puede ser sobrescrita o especializada deforma
selectiva por medio de cdigo provisto por los clientes
del framework (desarrolladores de software)
Es una tcnica orientada a objetos.
Los frameworks tienen zonas fras y zonas calientes.
Puede comprender aplicaciones casi completas y
reutilizables
Permite la creacin de Componentes
Implementado con muchos patrones de diseo
Se implementan sobre muchos dominios de aplicacin.
Preguntas?
53
Cules son las fortalezas y debilidades que
ve en un framework?

Potrebbero piacerti anche