Anda di halaman 1dari 53

Ingeniera de Software

Clase 6:
Frameworks parte I

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
13

Relacin con la Arquitectura

Framework
14

Relacin con la Arquitectura

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 predefinido 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)

28

Frameworks de caja blanca y de


caja negra
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

29

Frameworks de caja blanca y de


caja negra
Caja Blanca

30

Frameworks de caja blanca y de


caja negra
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!

31

Frameworks de caja blanca y de


caja negra
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 :

Arquitectura:

Para cules aplicaciones ser el Framework?


Qu es comn a todas ellas?
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

Software de base

Programacin de GUIs
Entornos de programacin visual
Programacin de redes
Infraestructuras de comunicaciones
Plataformas de componentes

De Empresa

Especficos de un dominio, a medida

Clasificacin de Frameworks
46

En JAVA:
De persistencia

De interfaz
usuario

Hibernate
iBatis

grfica

de

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
48

Patrn de Inyeccin de Dependencias


Es una tcnica que como su nombre lo indica busca facilitar
la resolucin de dependencias entre objetos.

El patrn en cuestin propone introducir una nueva clase


(Inyector), que funcionando en forma similar a un Factory, se
encargue de resolver las dependencias, permitindonos
adicionalmente separar interface de implementacin

Contenedores
49

Patrn de Inyeccin de Dependencias

Los denominados framework de inyeccin de dependencias,


a grandes rasgos proveen alguna clase con funcionalidad
anloga a la del Inyector. En general todos los frameworks
ofrecen dos formas de resolucin de dependencias, por
constructores o por setters.

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?

Anda mungkin juga menyukai