1. Analizar la problemática de requerimientos volátiles en mashups.
2. Brindar una solución de código que sea limpia y no invasiva ante este tipo de requerimientos.
3. Analizar y encontrar las tecnologías que mejor se ajusten en el desarrollo de la solución.
4. Desarrollar un mecanismo que permita controlar la activación/desactivación de una Funcionalidad Volátil de manera dinámica.
• Mashups
• Funcionalidad volátil
• Separación de Concerns
• Afinidad
• Mashups y funcionalidad volátil
• Interacción entre los componentes de un Mashup
• Implementación de Volatiler
• Conclusión
• Trabajo Futuro
Mashups
>
Qué
es
un
Mashup?
• El término Mashup proviene del mundo de la música
Cuando se combinan diferentes canciones se obtiene un remix.
• El Mashup en computación es algo similar, cuando
se combinan diferentes sistemas y se obtiene otro.
• Objetivo: Consumir y combinar datos de sitios muy
diferentes con el fin de construir aplicaciones nuevas e innovadoras.
• Diferentes Fuentes: tanto el contenido como los elementos
1. Desarrollo Manual (DM)
2. Desarrollo Asistido (DA)
Mashups
>
Desarrollo
Integración, proceso y visualización de las distintas fuentes en un determinado lenguaje elegido por el desarrollador.
• Ventajas
• Elección de lenguaje de programación • Alta flexibilidad
• Desventajas
• Orientado a desarrolladores calificados
Herramientas de desarrollo específicas
• Ventajas • Fácil
• Rápido
• Algunas herramientas: • Yahoo Pipes: disponible.
• IBM Mashup Center: disponible.
En
el
día
12
de
Agosto
de
2010
en
Ecuador
ocurrió
un
violento
sismo
de
7,2
grados
de
magnitud
que
sacudió
el
oriente
del
Ecuador
y
que
se
sintió
en
todo
el
país.
Este
terremoto
dejó
un
herido
y
causó
leves
daños
y
grietas
en
algunas
viviendas,
según
informes
oficiales.
Mashups
>
Ejemplo
Conceptos
relacionados
Conceptos
importantes:
•
Es
la
implementación
de
los
requerimientos
temporales
que
surgen
en
un
sistema
que
ya
está
funcionando
correctamente.
•
Esta
funcionalidad
estará
en
el
sistema
por
poco
tiempo.
Aparecen
de
manera
estacional,
o
ante
un
evento
inesperado.
•
Debemos
lograr
que
el
Mashup
Base
no
se
percate
de
la
ejecución
de
la
funcionalidad
nueva.
•
Separación
de
partes
(separation
of
concerns)
– Es un enfoque de diseño tradicional en el
desarrollo de aplicaciones.
•
Objetivo:
– División de responsabilidades
– Encapsulamiento
– Obliviousness
•
Cómo
lo
aplicamos?
– La funcionalidad volátil debe ser pensada como un
concern separado.
– El Mashup Base debe “ignorar” la funcionalidad
volátil
•
La
Afinidad
es
un
subconjunto
de
los
posibles
objetos
que
cumplen
con
cierta
condición.
•
Las
instancias
que
coinciden
con
la
condición
de
afinidad
son
afectadas
por
la
activación
del
servicio.
– Libros (junto con sus títulos y autores)
– Afinidad Libros Cuyos Autores sean Argentinos
– Servicio: Descuento por mes Bicentenario.
•
Una
correcta
metodología
de
desarrollo
utilizando
separación
de
concerns
resuelve
los
siguientes
problemas:
– Evita denigrar la calidad de una aplicación que
funciona correctamente.
– Integración sin acople a la aplicación base (sin
modificar).
– Aún usando potentes ambientes de administración
de configuraciones es muy difícil deshacer los
Objetivo:
Agregar
funcionalidades
volátiles
sin
deteriorar
la
calidad
del
código
del
Mashup
ya
existente
mediante
algún
mecanismo
no
invasivo
de
activación
y
desactivación.
Tenemos un Mashup Base en donde se puedan visualizar las farmacias de turno de la ciudad de La Plata en un mapa.
http://laplatafarmacias.appspot.com/
•
El
año
pasado
en
consecuencia
de
la
Epidemia
de
Gripe
A
,
se
produce
una
campaña
de
vacunación
contra
la
misma:
•
Nuevo
Requerimiento
:
Poder
visualizar
en
el
mismo
Mashup
las
farmacias
que
tienen
en
Stock
vacunas.
– Funcionalidad presente durante el período que dura
la campaña de vacunación.
– Se agrega funcionalidad sólo a las farmacias que
tengan vacunas en Stock.
Funcionalidad
Volátil
en
Mashups
>
Ejemplo
Lo
anterior
puede
simplificarse
como
n
•
Primer
Nivel:
– Absoluto.
– Determina si la funcionalidad volátil en cuestión está
activa.
•
Segundo
Nivel:
– Afinidad.
– Sólo se considera si el primer nivel está activo.
– Permite que la funcionalidad se manifieste sólo si se
Funcionalidad
Volátil
en
Mashups
>
Ejemplo
Qué
pasaría
si
pudiéramos
interceptar
el
request
antes
de
que
llegue
a
la
funcionalidad
y
el
Nuevo
requerimiento:
Ante
la
epidemia
de
la
gripe
A,
se
requiere
identificar
las
farmacias
que
tienen
la
vacuna
en
stock
durante
la
campaña
de
vacunación.
Condición
de
Afinidad:
– Presente en el sistema durante la campaña de
vacunación.
•
http://2.laplatafarmacias.appspot.com/
Implementación
de
Volatiler
1. La biblioteca no debe obligar a que la aplicación sea desarrollada con determinados frameworks.
2. El Mashup original no debe tener noción de F.V. asociadas.
3. La estrategia de agregado de F.V gira alrededor de los Filtros de Servlet, que permiten interceptar y modificar cada request y response. Poseen la
capacidad de comportarse como aspectos.
Implementación
de
Volatiler>
Filtros
de
Servlet
Niveles
de
Activación
usando
Volatiler
Nivel Externo de Activación Absoluta
– VolatileRegistry: sabe cuáles filtros están activados y él
permite activarlos y desactivarlos.
– Volatile Activator Console: permite administrar las F.V
de manera visual, sin redesplegar la aplicación.
Nivel Interno de Activación por Afinidad
– Se ejecuta si se cumplen ciertas condiciones en cada
• Farmacias de Diario el Día
– http://www.eldia.com.ar/farmacias.aspx
• Scrapper del diario el día:
– http://pipes.yahoo.com/epere4/farmaciasdeturnolaplata
• Farmacias de La Plata en Google Maps
– http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=20838314481226767
8923.00048df5b692cf166e496&t=h&z=11
• YQL que arma el RSS de las farmacias que están de turno y sus ubicaciones
– http://pipes.yahoo.com/epere4/farmaciasdeturnolaplatamapeadas
• http://2.laplatafarmacias.appspot.com/
• http://2.laplatafarmacias.appspot.com/admin/volatilityActivatorConsole
•
Existe
un
alto
dinamismo
de
los
Mashups
en
su
interacción
con
sistemas
de
terceros.
•
Se
brinda
una
solución
en
donde
la
funcionalidad
volátil
se
agrega
de
manera
independiente
del
Mashup
base
(concerns
independientes).
•
La
separación
de
concerns
permite
la
independencia
entre
el
Mashup
Base
y
la
funcionalidad
volátil.
•
Se
implementa
con
dos
niveles
de
activación
de
la
funcionalidad
volátil.
•
Los
Mashups
son
absolutamente
dependientes
de
las
decisiones
que
tomen
los
proveedores
de
las
fuentes
externas
que
lo
componen
(bugs,
fallas
técnicas,
cambios
tecnológicos
etc).
•
Las
herramientas
online
no
brindan
módulos
•
Problemas
de
los
proveedores
de
los
feeds
y
servicios:
• Fallas de sus sistemas: caída de Amazon Web Services.
• Cambios repentinos en la manera de consumir los feeds:
Google Maps cambió de RSS a archivos KML.