SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
1
Frameworks
(... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...)
(Arquitectura de Software para Practicantes)
Universidad de los Andes
Demián Gutierrez
Marzo 2013
Diseño Arquitectónico
Diseño
Arquitectónico
Arquitectura
del Software
Bibliotecas /
Componentes
Patrones de
Diseño
Clases /
Funciones
Frameworks
(Marcos)
Estilos
Arquitectónicos
3
¿Qué es un framework?
¿A quienes les gusta la TV?
¿Telenovelas?
¿Series de TV?
¿qué tiene que ver esto con el uso/desarrollo de frameworks?
4
¿Qué es un framework?
¿Telenovelas?
¿Series de TV?
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.
5
¿Qué es un framework?
Los hijos, niño y niña, de una familia acomodada, en la que
por alguna razón (usualmente un villano / villana) la niña
termina criándose con una familia humilde, y luego, cuando
los niños crecen y son adultos, la chica por azares de la vida
termina trabajando de servicio en la casa de la familia rica de
donde vino, y con el tiempo se enamora y conquista al
protagonista, que resulta ser el hijo de la dueña de casa, pero
en la etapa de mayor tensión a alguien se le ocurre decir “yo
soy tu madre” (o se vale “yo soy tu hija”) y entonces hay
dudas de que los dos enamorados sean hermanos, hasta que
finalmente resulta que la chica tiene otra media hermana, que
resulta ser la verdadera hermana del protagonista, que se
casa con la protagonista y todos viven felices para siempre...
por cierto, el villano termina muerto, loco o en la cárcel
¿Suena conocido?
6
¿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
7
¿Qué es un framework?
Un framework (armazón / marco), 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 provisto por los
clientes del framework
(desarrolladores de software / programadores)
Un framework es una solución incompleta
(no funcional) pero a diferencia de los estilos
arquitectónicos o los patrones de diseño,
es una solución concreta (implementada)
a un problema recurrente (dominio) bien conocido
8
¿Qué es un framework?
¿beneficios?
9
¿Cómo ayuda un framework?
Permite a los arquitectos y desarrolladores concentrar su tiempo
en lograr los requerimientos de la aplicación, 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 aplicación y
aumenta la productividad de los desarrolladores
Un framework facilita el desarrollo
de aplicaciones de software porque:
Un framework generalmente ya ha sido usado y probado en
otros sistemas, lo que reduce la probabilidad de introducir
errores accidentales en el sistema a desarrollar
10
¿Cómo ayuda un framework?
Ejemplo
Un equipo está desarrollando un sistema WEB para
un banco: Al usar un framework de desarrollo
WEB, el equipo puede enfocarse en implementar las
operaciones de retiro y transferencia de dinero, en
lugar de tener que enfocarse en la mecánica del
manejo de las peticiones HTTP, el manejo de las
sesiones de los usuarios, el estado de la aplicación,
etc.
Cantidad de trabajo que aporta valor para el cliente
versus
Cantidad de trabajo que sólo aporta infraestructura
11
¿Cómo se hacen? ¿Cómo se usan?
Principios Básicos
¿cómo?
12
Los frameworks están conformados por
zonas congeladas (frozen spots) y
zonas calientes (hot spots / hooks)*
Las zonas congeladas definen la arquitectura general de un
sistema de software: Sus componentes básicos y las
relaciones entre estos. Esas partes permanecen inalteradas
(congeladas) en cualquier instanciación del framework
Las zonas calientes representan los puntos en los que es
posible añadir funcionalidad especifica de la aplicación.
Los programadores modifican/personalizan el comportamiento
del framework añadiendo código en las zonas calientes
*Pree, W (1994), "Meta Patterns-A Means For Capturing the Essentials of Reusable
Object-Oriented Design", Proceedings of the 8th European Conference on Object-Oriented
Programming (Springer-Verlag): 150–162
Frameworks,
Zonas Frías y Zonas Calientes
13
Frameworks,
Zonas Frías y 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 “instanciación”
del framework
La instanciación si es ejecutable
14
Frameworks,
Zonas Frías y Zonas Calientes
Instanciación 1 Instanciación 2
frozen spots
Framework
hot spots
(hooks)
funcionalidad
añadida (Cliente)
15
Frameworks,
Zonas Frías y Zonas Calientes
Instanciación
IoC / Inversion of Control
(Inversión de Control)
...no nos llame,
nosotros lo llamamos...
Comportamiento
por defecto
Extensibilidad
16
Frameworks Caja Blanca y Caja Negra
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
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 por
composición y delegación de comportamiento entre
objetos
En el medio están todos los matices posibles...
(Caja Blanca y Caja Negra al mismo tiempo -> Caja Gris)
Másfácildeusar
Másdifícildeprogramar(Engeneral)
¡El ideal, el sueño de todo desarrollador es hacer un
framework completamente caja negra!
17
Un Ejemplo Caja Blanca
Un Framework “Caja Blanca” para desarrollar juegos
¿qué sucede con
draw()?
Zonas Frías
Zonas Calientes
Extensiones
La herencia
funciona como
mecanismo de
extensión en
tiempo de
“compilación”
18
Un Ejemplo Caja Negra
Un Framework “Caja Negra” para desarrollar juegos
Zonas Frías
Zonas Calientes
Extensiones
A diferencia de la
herencia, la
composición funciona
como mecanismo de
extensión en “tiempo
de ejecución”
19
Gracias
¡Gracias!

Más contenido relacionado

La actualidad más candente

Partes de la pantalla de eclipse
Partes de la pantalla de eclipsePartes de la pantalla de eclipse
Partes de la pantalla de eclipselourdes9898
 
Requerimientos de sistemas y desarrollo de prototipo
Requerimientos de sistemas y desarrollo de  prototipoRequerimientos de sistemas y desarrollo de  prototipo
Requerimientos de sistemas y desarrollo de prototipoRicardo Gomez
 
Identificadores en Lógia de Programación
Identificadores en Lógia de ProgramaciónIdentificadores en Lógia de Programación
Identificadores en Lógia de Programaciónnormaroldano
 
Ingeniería del Software de Gestión. Tema 4
Ingeniería del Software de Gestión. Tema 4Ingeniería del Software de Gestión. Tema 4
Ingeniería del Software de Gestión. Tema 4Enrique Barreiro
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosFranklin Parrales Bravo
 
Instrucciones de control alternativas
Instrucciones de control alternativasInstrucciones de control alternativas
Instrucciones de control alternativasAbrirllave
 
Sistemas operativos libres
Sistemas operativos libresSistemas operativos libres
Sistemas operativos librescrosbycarbajal
 
Estructuras básicas para C++
Estructuras básicas para C++Estructuras básicas para C++
Estructuras básicas para C++Bryangio2002
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del softwareGiovani Ramirez
 
Sistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de CódigoSistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de CódigoJesus Castagnetto
 
Modelo De Desarrollo Evolutivo
Modelo De Desarrollo EvolutivoModelo De Desarrollo Evolutivo
Modelo De Desarrollo Evolutivocamilosena89
 
Análisis Semántico con Cup
Análisis Semántico con CupAnálisis Semántico con Cup
Análisis Semántico con CupLAUNASA NOVENO B
 
Segmentación Memoria Virtual
Segmentación Memoria VirtualSegmentación Memoria Virtual
Segmentación Memoria VirtualAna Brooks
 

La actualidad más candente (20)

Partes de la pantalla de eclipse
Partes de la pantalla de eclipsePartes de la pantalla de eclipse
Partes de la pantalla de eclipse
 
Requerimientos de sistemas y desarrollo de prototipo
Requerimientos de sistemas y desarrollo de  prototipoRequerimientos de sistemas y desarrollo de  prototipo
Requerimientos de sistemas y desarrollo de prototipo
 
Identificadores en Lógia de Programación
Identificadores en Lógia de ProgramaciónIdentificadores en Lógia de Programación
Identificadores en Lógia de Programación
 
Ingeniería del Software de Gestión. Tema 4
Ingeniería del Software de Gestión. Tema 4Ingeniería del Software de Gestión. Tema 4
Ingeniería del Software de Gestión. Tema 4
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
Instrucciones de control alternativas
Instrucciones de control alternativasInstrucciones de control alternativas
Instrucciones de control alternativas
 
Sistemas operativos libres
Sistemas operativos libresSistemas operativos libres
Sistemas operativos libres
 
Testlink
TestlinkTestlink
Testlink
 
Estructuras básicas para C++
Estructuras básicas para C++Estructuras básicas para C++
Estructuras básicas para C++
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del software
 
Unidad1 y 2
Unidad1 y 2Unidad1 y 2
Unidad1 y 2
 
Css - Tema 1
Css - Tema 1Css - Tema 1
Css - Tema 1
 
Resumen interfaces
Resumen interfacesResumen interfaces
Resumen interfaces
 
Sistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de CódigoSistemas para el Control de Versiones de Código
Sistemas para el Control de Versiones de Código
 
Modelo De Desarrollo Evolutivo
Modelo De Desarrollo EvolutivoModelo De Desarrollo Evolutivo
Modelo De Desarrollo Evolutivo
 
Ieee 12207
Ieee 12207Ieee 12207
Ieee 12207
 
Partes de Una Pagina Web
Partes de Una Pagina WebPartes de Una Pagina Web
Partes de Una Pagina Web
 
AnáLisis De Algoritmos1
AnáLisis De Algoritmos1AnáLisis De Algoritmos1
AnáLisis De Algoritmos1
 
Análisis Semántico con Cup
Análisis Semántico con CupAnálisis Semántico con Cup
Análisis Semántico con Cup
 
Segmentación Memoria Virtual
Segmentación Memoria VirtualSegmentación Memoria Virtual
Segmentación Memoria Virtual
 

Destacado (20)

Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Clase 03 XP
Clase 03 XPClase 03 XP
Clase 03 XP
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacion
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 01 agilidad
Clase 01 agilidadClase 01 agilidad
Clase 01 agilidad
 
Clase 05b pruebas introduccion
Clase 05b pruebas introduccionClase 05b pruebas introduccion
Clase 05b pruebas introduccion
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtual
 
Clase 01 presentacion
Clase 01 presentacionClase 01 presentacion
Clase 01 presentacion
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cleda
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebas
 
Clase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemploClase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemplo
 
Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Clase 04a requerimientos introduccion
Clase 04a requerimientos introduccionClase 04a requerimientos introduccion
Clase 04a requerimientos introduccion
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitectura
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicos
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 

Similar a Framework para desarrollo de software: zonas frías y calientes

Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introductionMiguel Pastor
 
Paradigmas programacion
Paradigmas programacionParadigmas programacion
Paradigmas programacionLuis Peralta
 
Ingeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosIngeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosWilfredo Mogollón
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modularguestb97266b9
 
Programacion Basica
Programacion Basica Programacion Basica
Programacion Basica Yoconditap
 
Presentación de programacion
Presentación  de programacionPresentación  de programacion
Presentación de programacionlajokito
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareJose Luis Bugarin Peche
 
Sesion 6 2 diseño análisis arquitectural
Sesion 6 2 diseño   análisis arquitecturalSesion 6 2 diseño   análisis arquitectural
Sesion 6 2 diseño análisis arquitecturalJulio Pari
 
Introducción a la programación visual
Introducción a la programación visualIntroducción a la programación visual
Introducción a la programación visualmiguelangelvillelli
 
Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Roger Campos
 
Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoJamil Cajamarca
 

Similar a Framework para desarrollo de software: zonas frías y calientes (20)

Clase 09c seleccion
Clase 09c seleccionClase 09c seleccion
Clase 09c seleccion
 
Patrones de-diseño
Patrones de-diseñoPatrones de-diseño
Patrones de-diseño
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introduction
 
Paradigmas programacion
Paradigmas programacionParadigmas programacion
Paradigmas programacion
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Ingeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosIngeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetos
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Programacion Basica
Programacion Basica Programacion Basica
Programacion Basica
 
Presentación de programacion
Presentación  de programacionPresentación  de programacion
Presentación de programacion
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de Software
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Sesion 6 2 diseño análisis arquitectural
Sesion 6 2 diseño   análisis arquitecturalSesion 6 2 diseño   análisis arquitectural
Sesion 6 2 diseño análisis arquitectural
 
Introducción a la programación visual
Introducción a la programación visualIntroducción a la programación visual
Introducción a la programación visual
 
Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#
 
Ingeniería Inversa de Código Fuente
Ingeniería Inversa de Código FuenteIngeniería Inversa de Código Fuente
Ingeniería Inversa de Código Fuente
 
prueva
pruevaprueva
prueva
 
Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertido
 

Más de Demián Gutierrez

Más de Demián Gutierrez (7)

Clase 04 diseno_ui
Clase 04 diseno_uiClase 04 diseno_ui
Clase 04 diseno_ui
 
Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)
 
Clase 14a uml_estados
Clase 14a uml_estadosClase 14a uml_estados
Clase 14a uml_estados
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 04b requerimientos documentacion
Clase 04b requerimientos documentacionClase 04b requerimientos documentacion
Clase 04b requerimientos documentacion
 
Clase 02 Scrum
Clase 02 ScrumClase 02 Scrum
Clase 02 Scrum
 

Último

SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 

Último (20)

SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 

Framework para desarrollo de software: zonas frías y calientes

  • 1. 1 Frameworks (... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...) (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013
  • 2. Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks (Marcos) Estilos Arquitectónicos
  • 3. 3 ¿Qué es un framework? ¿A quienes les gusta la TV? ¿Telenovelas? ¿Series de TV? ¿qué tiene que ver esto con el uso/desarrollo de frameworks?
  • 4. 4 ¿Qué es un framework? ¿Telenovelas? ¿Series de TV? 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.
  • 5. 5 ¿Qué es un framework? Los hijos, niño y niña, de una familia acomodada, en la que por alguna razón (usualmente un villano / villana) la niña termina criándose con una familia humilde, y luego, cuando los niños crecen y son adultos, la chica por azares de la vida termina trabajando de servicio en la casa de la familia rica de donde vino, y con el tiempo se enamora y conquista al protagonista, que resulta ser el hijo de la dueña de casa, pero en la etapa de mayor tensión a alguien se le ocurre decir “yo soy tu madre” (o se vale “yo soy tu hija”) y entonces hay dudas de que los dos enamorados sean hermanos, hasta que finalmente resulta que la chica tiene otra media hermana, que resulta ser la verdadera hermana del protagonista, que se casa con la protagonista y todos viven felices para siempre... por cierto, el villano termina muerto, loco o en la cárcel ¿Suena conocido?
  • 6. 6 ¿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
  • 7. 7 ¿Qué es un framework? Un framework (armazón / marco), 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 provisto por los clientes del framework (desarrolladores de software / programadores) Un framework es una solución incompleta (no funcional) pero a diferencia de los estilos arquitectónicos o los patrones de diseño, es una solución concreta (implementada) a un problema recurrente (dominio) bien conocido
  • 8. 8 ¿Qué es un framework? ¿beneficios?
  • 9. 9 ¿Cómo ayuda un framework? Permite a los arquitectos y desarrolladores concentrar su tiempo en lograr los requerimientos de la aplicación, 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 aplicación y aumenta la productividad de los desarrolladores Un framework facilita el desarrollo de aplicaciones de software porque: Un framework generalmente ya ha sido usado y probado en otros sistemas, lo que reduce la probabilidad de introducir errores accidentales en el sistema a desarrollar
  • 10. 10 ¿Cómo ayuda un framework? Ejemplo Un equipo está desarrollando un sistema WEB para un banco: Al usar un framework de desarrollo WEB, el equipo puede enfocarse en implementar las operaciones de retiro y transferencia de dinero, en lugar de tener que enfocarse en la mecánica del manejo de las peticiones HTTP, el manejo de las sesiones de los usuarios, el estado de la aplicación, etc. Cantidad de trabajo que aporta valor para el cliente versus Cantidad de trabajo que sólo aporta infraestructura
  • 11. 11 ¿Cómo se hacen? ¿Cómo se usan? Principios Básicos ¿cómo?
  • 12. 12 Los frameworks están conformados por zonas congeladas (frozen spots) y zonas calientes (hot spots / hooks)* Las zonas congeladas definen la arquitectura general de un sistema de software: Sus componentes básicos y las relaciones entre estos. Esas partes permanecen inalteradas (congeladas) en cualquier instanciación del framework Las zonas calientes representan los puntos en los que es posible añadir funcionalidad especifica de la aplicación. Los programadores modifican/personalizan el comportamiento del framework añadiendo código en las zonas calientes *Pree, W (1994), "Meta Patterns-A Means For Capturing the Essentials of Reusable Object-Oriented Design", Proceedings of the 8th European Conference on Object-Oriented Programming (Springer-Verlag): 150–162 Frameworks, Zonas Frías y Zonas Calientes
  • 13. 13 Frameworks, Zonas Frías y 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 “instanciación” del framework La instanciación si es ejecutable
  • 14. 14 Frameworks, Zonas Frías y Zonas Calientes Instanciación 1 Instanciación 2 frozen spots Framework hot spots (hooks) funcionalidad añadida (Cliente)
  • 15. 15 Frameworks, Zonas Frías y Zonas Calientes Instanciación IoC / Inversion of Control (Inversión de Control) ...no nos llame, nosotros lo llamamos... Comportamiento por defecto Extensibilidad
  • 16. 16 Frameworks Caja Blanca y Caja Negra 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 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 por composición y delegación de comportamiento entre objetos En el medio están todos los matices posibles... (Caja Blanca y Caja Negra al mismo tiempo -> Caja Gris) Másfácildeusar Másdifícildeprogramar(Engeneral) ¡El ideal, el sueño de todo desarrollador es hacer un framework completamente caja negra!
  • 17. 17 Un Ejemplo Caja Blanca Un Framework “Caja Blanca” para desarrollar juegos ¿qué sucede con draw()? Zonas Frías Zonas Calientes Extensiones La herencia funciona como mecanismo de extensión en tiempo de “compilación”
  • 18. 18 Un Ejemplo Caja Negra Un Framework “Caja Negra” para desarrollar juegos Zonas Frías Zonas Calientes Extensiones A diferencia de la herencia, la composición funciona como mecanismo de extensión en “tiempo de ejecución”