Clase 6:
Frameworks parte I
Clase 1
Objetivos
2
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:
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:
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:
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
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:
Framework
12
Framework
13
Framework
14
Framework
15
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:
Framework
18
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
Framework
21
Qu brinda un Framework?
22
Qu brinda un Framework?
23
Inversin de Control
Qu brinda un Framework?
24
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
Qu brinda un Framework?
26
Extensibilidad
Los puntos fundamentales del diseo requieren conocimiento
del dominio.
Qu brinda un Framework?
27
28
29
30
31
Utilizacin de Frameworks
32
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:
Utilizacin de Frameworks
35
Opcin 3
Tomar una framework (para desarrollar aplicaciones WEB):
Utilizacin de Frameworks
36
Desarrollar un framework?
37
Desarrollar un framework?
38
Desarrollar un framework?
39
Diseo de frameworks
40
Arquitectura:
Diseo de frameworks
41
Casos
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:
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:
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
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
48
Contenedores
49
Contenedores
50
Contenedores
51
Spring
Pico
NFactory
Resumen
52
Un
Preguntas?
53