Tesis Jordan Pascual Espada PDF
Tesis Jordan Pascual Espada PDF
Tesis Jordan Pascual Espada PDF
TESIS DOCTORAL
“Diseño de objetos virtuales colaborativos orientados
a servicios en el marco de Internet de las cosas”
Presentado por
Jordán Pascual Espada
1
TESIS DOCTORAL
“Diseño de objetos virtuales colaborativos orientados
a servicios en el marco de Internet de las cosas”
Presentado por
Jordán Pascual Espada
Para la obtención del título de Doctor en Informática
Dirigido por
Doctor D. Juan Manuel Cueva Lovelle
Doctor D. Oscar Sanjuán Martínez
Oviedo, 2012
3
RESUMEN
La idea general que hay detrás de “Internet de las cosas” es sencilla: cualquier “cosa”, es
decir, cualquier objeto convenientemente etiquetado, podrá ser capaz de interactuar o
comunicarse con otros objetos y sistemas, ya sea utilizando Internet, redes privadas u
otros mecanismos de comunicación.
Una pieza clave en el desarrollo del Internet de las cosas son los teléfonos móviles
inteligentes, conocidos como Smartphones. A día de hoy millones de usuarios utilizan
asiduamente sus Smartphones para interactuar con diversos tipos de objetos físicos o
dispositivos electrónicos de su entorno. En la mayoría de los casos, el proceso de
interacción entre el Smartphone y los objetos físicos o dispositivos está gestionado por
una aplicación software específica. Debido a las características de este tipo de aplicaciones,
en la mayoría de casos deben de ser desarrolladas como aplicaciones nativas
específicamente para la plataforma móvil destino.
5
Por último, las herramientas y aplicaciones desarrolladas siguiendo las especificaciones
presentadas han servido para evaluar y verificar diversos aspectos de la propuesta.
PALABRAS CLAVE
Internet de las cosas, Objeto virtual, Teléfonos móviles inteligentes, Navegador web móvil,
Servicios web, Aplicaciones web, Información de contexto, Control remoto, Dispositivos
móviles.
7
ABSTRACT
The main idea behind the “Internet of the things” is quite simple: any properly tagged
object will be able to interact or communicate with other objects and systems via Internet,
private networks or any other form of communication. Intelligent cell phones, known as
Smartphones, are a key element in the development of the Internet of the things.
Nowadays, millions of users use their Smartphones to interact with all kinds of physical
objects or electronic devices in their environment. In most cases, the interaction process
between the Smartphone and the physical objects or devices is managed by a specific
software application. Due to these application’s features, they often have to be developed
specifically as native applications for the target mobile platform. The use of native
software applications in the interaction process between Smartphones and physical
objects has several unwelcomed consequences, like high costs and development hardships
caused by the replication of developments in different mobile platforms. On the other
hand, the actual native application’s management implies a series of secondary processes,
like the download, installation and configuration. These processes are inappropriate for
systems that are based on occasional or precise interaction with physical objects or
devices, as secondary actions could take more time than the interaction process itself.
The exposed problems have been the motivation for the development of this doctoral
thesis, which defines a model applied to the development of mobile applications that base
a strong part of their functionality in the interaction with physical objects or nearby
electronic devices. The proposed model is not attached to any mobile platform or specific
development technology, so it allows the development of valid mobile applications for
multiple platforms. Also, the proposal includes optimizations related to the development
of this type of applications, such as the abstraction in the management of the hardware
elements of the device that allows communication and the capture of context information.
The proposed model dramatically reduces the time used in the secondary processes,
making the developed applications optimal for their use in occasional interaction based
systems with objects or electric devices. The proposed model is the result of three
interaction processes, and each of one has resulted in significant modifications in the
architecture and characteristics of the proposal, looking for the best way of reaching this
goals. The final version of the model is based on a specification that combines with web
technologies. The resulting web applications are partially executed in the client device
itself, and also in the remote server. This mixed execution method allows web applications
to manage the client device’s hardware elements, aiming to perform communication or
capturing context information.
Finally, the tools and applications developed by following the proposed specifications have
helped to speed up the experiments performed to evaluate and verify several aspects of
the proposal.
9
KEYWORDS
Internet of things, Virtual object, Smartphones, Mobile web browser, Web services,
Web applications, Context information, Remote control, Mobile devices.
11
AGRADECIMIENTOS
Esta Tesis ha sido un largo camino en que han participado de manera directa o
indirecta muchas personas, me gustaría expresar mi agradecimiento a todas ellas.
En primer lugar quisiera agradecer todo el apoyo recibido por parte de mis
directores Dr. D. Juan Manuel Cueva Lovelle y Dr. D. Oscar Sanjuán Martínez. Gracias
a los dos por sus orientaciones, ánimos y por haber estado dispuestos a ayudarme
siempre que he necesitado.
Gracias a todos.
13
ÍNDICE
PARTE I: PLANTEAMIENTO DEL PROBLEMA ................. 1
Capítulo 1: Introducción ................................................................................................................................2
1.1 Introducción ...........................................................................................................................................2
1.2 Motivaciones...........................................................................................................................................3
1.3 Hipótesis...................................................................................................................................................6
1.4 Objetivos de la tesis .............................................................................................................................7
1.5 Organización del documento ........................................................................................................ 11
Capítulo 2: Metodología y desarrollo de la investigación ............................................................. 12
2.1 Introducción ........................................................................................................................................ 12
2.2 Metodología de trabajo ................................................................................................................... 13
2.3 Desarrollo temporal de la investigación .................................................................................. 15
15
5.5 Adaptadores .........................................................................................................................................47
Capíulo 6: Información de contexto .......................................................................................................48
6.1 Introducción .........................................................................................................................................48
6.2 Frameworks para el desarrollo de aplicaciones ...................................................................50
6.3 La información de contexto en la web.......................................................................................55
17
PARTE I
1
Capítulo 1
CAPÍTULO 1
INTRODUCCIÓN
1.1 INTRODUCCIÓN
Durante este capítulo se presenta la justificación y los objetivos de esta tesis doctoral.
2
Introducción
1.2 MOTIVACIONES
A medida que la tecnología avanza, aumenta la variedad de objetos físicos que, de alguna
manera, pasan a formar parte de algunos tipos de sistemas de información. Los nuevos
avances tecnológicos no sólo influyen en los propios objetos físicos, también lo hacen en
las posibilidades de interacción y colaboración de estos con otros objetos físicos y
aplicaciones informáticas.
El término “Internet of things” el cual suele traducirse al español como “Internet de las
cosas” se atribuye originalmente al Auto-ID Lab sucesor del MIT (Instituto tecnológico de
Massachusetts) Auto-ID Center, con mención especial a Kevin Ashton en 19991 y a David L.
Brock en 2001 [Brock, 2001]. La idea general que hay detrás de Internet de las cosas es
sencilla: cualquier “cosa”, es decir, cualquier objeto convenientemente etiquetado, podrá
ser capaz de comunicarse con otros objetos y sistemas, ya sea utilizando Internet, redes
privadas u otros mecanismos de comunicación [Kortuem et al., 2010 ; Yan et al., 2008].
El Smartphone o teléfono móvil inteligente se está perfilando como una de las piezas
claves en el acercamiento de los usuarios a los sistemas que permiten la interacción con
objetos físicos [Thompson, 2005]. La buena acogida de los Smartphones en la sociedad y
sus destacadas características técnicas de comunicación y procesamiento han propiciado
que cada vez se usen para realizar un mayor número de tareas. Muchas de estas nuevas
tareas implican la interacción con objetos físicos de diversos tipos, los sistemas que
permiten la realización de este tipo de tareas estarían enmarcados en el Internet de las
cosas [Kanma et al., 2003 ; Nichols & Myers, 2006].
A día de hoy millones de usuarios utilizan asiduamente sus Smartphones para interactuar
con diversos tipos de objetos físicos de su entorno, como por ejemplo: identificar
productos en el supermercado, controlar remotamente los electrodomésticos de su hogar
[Nichols & Myers, 2006] [Piyare & Tazil, 2011 ; Juan et al., 2011] o interactuar con
quioscos proveedores de servicios en las llamadas “Smart Cities” o ciudades inteligentes
[Ferreira & Afonso, 2011 ; Sanchez et al., 2011 ; Naphade et al., 2011].
1 "I could be wrong, but I'm fairly sure the phrase ‘Internet of Things’ started life as the title of a
presentation I made at Procter & Gamble (P&G) in 1999", Kevin Ashton, RFID Journal, 22 June 2009.
2 http://www.androidmarket.com
3 http://www.apple.com/itunes/
3
Capítulo 1
4 https://market.android.com/details?id=com.samsung.remoteTV
4
Introducción
Motivados en parte por los problemas expuestos se han realizado numerosas propuestas
tanto de carácter científico como comercial, que tratan de minimizar el impacto de algunos
de los aspectos negativos derivados de utilización de aplicaciones software nativas
para la interacción con objetos físicos. Entre ellas existen formas muy
diferentes de atajar varios de los problemas detectados. Numerosos frameworks
[De & Moessner, 2009 ; Dey et al., 2001 ; Johnson, 2007] y plataformas [PhoneGap, 2011]
ofrecen soporte al desarrollo de aplicaciones móviles multiplataforma, de esta forma
consiguen simplificar los desarrollos y reducir los costes, aunque muchas de estas
propuestas no cubren la totalidad de la funcionalidad requerida para implementar los
mecanismos de interacción con los objetos físicos [Espada et al., 2012 ; Schmidt, 1999].
Para dotar del dinamismo requerido por algunos sistemas varios autores han realizado
propuestas basadas en diferentes fundamentos, como: aplicaciones móviles
fundamentadas en modelos basados en agentes (Agent-based model, ABM, multiagent
systems) [Karnouskos & Tariq, 2009] o distintas clases de sistemas distribuidos
[Weerawarana et al., 2005 ; Meng et al., 2011]. Varias de las propuestas analizadas
resultan muy útiles para reducir el efecto de alguno de los problemas detectados, pero
ninguna de ellas ofrece una solución global que combata de manera eficaz el conjunto de
los problemas identificados.
Así pues, se trata de desarrollar una propuesta que proporcione una solución global y
flexible al conjunto de problemas que afectan a los desarrolladores y usuarios de
aplicaciones móviles que interactúan con objetos físicos. Desde el punto de vista de los
desarrolladores la solución debería tener muy en cuenta los problemas derivados de la
heterogeneidad entre plataformas móviles, permitiendo que un único desarrollo pueda ser
utilizado en múltiples plataformas. Desde la perspectiva de los usuarios la propuesta
debería ofrecer soluciones a las deficiencias derivadas de la necesidad de gestionar un
gran número de aplicaciones y también a la falta de dinamismo en los procesos de
interacción, entendiendo por falta de dinamismo la necesidad de realizar tareas
repetitivas como la instalación y configuración de aplicaciones cuando se interactúa con
un objeto por primera vez o cuando se pretende compartir una aplicación con otros
usuarios.
5
Capítulo 1
1.3 HIPÓTESIS
6
Introducción
Las aplicaciones generadas a partir de esta propuesta deben favorecer la experiencia del
usuario, sin requerir para su uso pesados procesos de instalación o configuración.
Tampoco deben hacer caer sobre el usuario la carga de trabajo derivada de la gestión de
demasiadas aplicaciones. Las características de estas aplicaciones tienen que contribuir a
potenciar los aspectos dinámicos requeridos en muchos de los sistemas que basan parte
de su funcionalidad en la interacción ocasional con objetos físicos. Por lo tanto las
aplicaciones desarrolladas a partir de esta propuesta deben ofrecer un rápido acceso a los
usuarios.
Para el desarrollo de esta tesis, se plantean los siguientes objetivos de índole general:
7
Capítulo 1
Desarrollar una especificación que permita crear aplicaciones móviles aptas para
ser usadas en distintas plataformas móviles.
8
Introducción
La especificación propuesta permite desarrollar aplicaciones móviles que basan una parte
importante de su funcionalidad en la utilización de los elementos hardware del
dispositivo, tales como: sensores de aceleración, cámaras de fotos, bluetooth, etc. La
especificación abstrae los factores dependientes de las plataformas móviles específicas,
posibilitando que las aplicaciones generadas puedan ser directamente utilizadas en
distintas plataformas móviles, como: iOS, Android, WebOS, Windows Phone, Symbian, etc.
El factor dinámico de las aplicaciones que siguen la especificación propuesta elimina los
procesos de instalación y hace énfasis en simplificar y agilizar tanto el acceso a las
aplicaciones como su difusión. Gracias a estas características se libera a los usuarios de
unos de los problemas tradicionalmente asociados al uso de las aplicaciones móviles
nativas, la necesidad de gestionar (descargas en servidores y tiendas de aplicaciones,
instalaciones, actualizaciones, etc) un elevado número de aplicaciones ya que la mayoría
de los sistemas que interactúan con objetos físicos requieren el uso de una aplicación
móvil específica.
9
Capítulo 1
10
Introducción
11
Capítulo 2
CAPÍTULO 2
METODOLOGÍA Y DESARROLLO DE LA
INVESTIGACIÓN
2.1 INTRODUCCIÓN
12
Metodología y desarrollo de la investigación
El punto inicial de la investigación coincide con el inicio del trabajo fin de máster en la
especialización de investigación de la titulación Máster y Doctorado en Ingeniería Web ,
realizado en la Escuela de Ingeniería Informática de Oviedo (Campus de los Catalanes),
Universidad de Oviedo. A partir de los conocimientos adquiridos durante los cursos
académicos 2008/2009 y 2009/2010 se presentó una primera propuesta de estructura
para los objetos virtuales colaborativos basados en servicios, la especificación
propuesta se utilizo para implementar un sistema de gestión de tickets de cine. Las
experiencias de dicho proyecto sirvieron para obtener diversos puntos de vista que
permitieron expandir la investigación hacia otras áreas y mejorar la arquitectura inicial.
Las carencias detectadas, tanto en la propuesta inicial, como en los sistemas relacionados
propuestos por otros autores se tomaron como motivación para la presente tesis doctoral.
Para llevar a cabo la investigación se ha optado por un enfoque iterativo e incremental. Así
en cada interacción, se desarrollaron prototipos y se modificó el modelo propuesto hasta
llegar al finalmente expuesto. Se han realizado varias publicaciones de reconocido
prestigio con el objetivo de obtener una valiosa retroalimentación por parte de la
comunidad científica, que han servido para ayudar a desarrollar este trabajo en la línea
adecuada.
13
Capítulo 2
14
Metodología y desarrollo de la investigación
15
Capítulo 2
16
Metodología y desarrollo de la investigación
Abril 2012 El artículo Mobile Web-based system for remote control electronic
devices and smart objects es enviado para su posible publicación a la revista IEEE
Internet Computing, con un último factor de impacto en el índice Journal
Citationn Reports de 2.514. En este artículo se presenta una arquitectura que
permite a las aplicaciones distribuidas especificar procesos de comunicación
básicos de manera sencilla, estos procesos se apoyan en los elementos hardware
de comunicación de los dispositivos móviles como Wi-Fi o Bluetooth. En el trabajo
se muestra un prototipo web capaz de controlar un centro multimedia vía Wi-Fi
17
Capítulo 2
18
Metodología y desarrollo de la investigación
PARTE II
19
Capítulo 3
CAPÍTULO 3
INTERNET DE LAS COSAS
3.1 INTRODUCCIÓN
Internet nació conectando personas a través de máquinas. Ahora una parte importante de
su red, conecta máquinas que hablan entre ellas para cumplir una tarea sin necesitar al
hombre. El siguiente paso es la llamada Internet de las cosas.
Las posibilidades que ofrece Internet de las cosas para facilitar la vida de las personas y
automatizar muchas de las tareas que realizamos actualmente son enormes, por ejemplo,
es posible que el frigorífico envié un mensaje al teléfono si se acaba la leche, monitorizar a
pacientes clínicos vía Internet y una multitud de aplicaciones prácticas que en la
actualidad empiezan a ver la luz y que en breve impactarán de lleno en nuestra vida
cotidiana.
Aunque la idea fundamental es simple, su aplicación resulta difícil. Con el paso de los años,
la comunicación entre objetos ha evolucionado, se han sumando nuevas técnicas y
mejorando las ya existentes que comprenden desde etiquetar objetos a través de tags
RFID a añadir microprocesadores para dotarlos de más inteligencia y capacidad de
reacción. No se trata sólo de conseguir que los objetos hablen, sino de que interactúen
entre si y dotarlos de inteligencia.
20
Internet de las cosas
3.2 PRECURSORES
El concepto de Internet de las cosas proviene principalmente de dos fuentes: el MIT Auto-
ID Center y la International Telecommunications Union.
El término "Internet de las cosas" se acuñó hace unos 10 años por los fundadores del MIT
Auto-ID Center, con mención especial a Kevin Ashton en 19995 y David L. Brock en 20016.
El aumento de la reputación del Auto-ID Center se produjo en septiembre de 2003, cuando
se realizó el lanzamiento oficial de la Red EPC (Electronic Product Code) - una
infraestructura de tecnología abierta que permite identificar automáticamente objetos y
rastrearlos. El simposio contó en aquel entonces con el apoyo de más de 90 grandes
empresas de todo el mundo que abarcaban un gran número de sectores: alimentación,
bienes de consumo, transporte y laboratorios farmacéuticos, entre otros. A partir de ese
momento comenzó a considerarse al RFID (Radio-frequency identification) como una
tecnología clave para el crecimiento económico en los próximos años.
El concepto de "Internet de las cosas" entró en foco de atención mundial en 2005 cuando
la International Telecommunications Union publicó el primer informe sobre el tema7 . El
informe adopta un enfoque global y sugería que, en un futuro, Internet de las cosas
conectaría objetos repartidos por todo mundo, tanto de una forma sensorial como
inteligente a través de la combinación de los avances tecnológicos en la identificación de
objetos, redes de sensores, sistemas integrados y la nanotecnología [ITU, 2005].
5 I could be wrong, but I'm fairly sure the phrase ‘Internet of Things’ started life as the title of a
presentation Imade at Procter & Gamble (P&G) in 1999, Kevin Ashton, RFID Journal, 22 June 2009
6 David L. Brock, MIT Auto-ID Center, MIT-AUTOID-WH-002, "The Electronic Product Code",
January 2001
7 The Internet of Things", ITU, November 2005
21
Capítulo 3
Internet de las cosas tiene como ideal que prácticamente todas las “cosas” que hay en este
mundo físico pueda convertirse en objetos conectados a Internet u otras redes
[ITU, 2005]. Uno podría preguntarse si realmente todas las cosas necesitan disponer de un
mini computador que las mantenga conectadas al actual Internet, la respuesta es no. Por
ejemplo, un bien de consumo como un yogurt se podría considerar integrado en Internet
de las cosas cuando se encuentra etiquetado con una etiqueta RFID que permita a otros
dispositivos obtener información acerca del estado producto, composición, ciclo de vida,
etc. [Meyer et al., 2009].
Existen otro tipo de objetos que poseen una elevada capacidad de comunicación con su
entorno o con otras aplicaciones. Este tipo de objetos sí suelen contar con un mini
computador y una conexión a la red. Ejemplos de estos objetos son las redes de sensores
que pueden ser accedidas desde cualquier lugar del mundo.
Los analistas suelen describir dos modos básicos de comunicación en Internet de las cosas:
cosa-persona y cosa-cosa [Global, 2008].
Cosa – persona: Las comunicaciones de este tipo abarcan una serie tecnologías y
aplicaciones en las cuales las personas interactúan con cosas y viceversa. Las más
comunes son el acceso a distancia, control remoto y monitorización. También existen
cosas que informan a las personas de cambios en su estado, datos recogidos, etc. Los
objetos con ese comportamiento suelen denominarse "Blogjects", esta palabra es un
neologismo creado por Julian Bleecker para referirse a objetos que comunican sus
experiencias.
Cosa – Cosa: Abarca tecnologías y aplicaciones en donde objetos interactúan sin que
ningún humano haya iniciado la interacción ni sea receptor o intermediario. Los
objetos pueden controlar otros objetos, tomar medidas correctivas y realizar
notificaciones a las personas según sea necesario.
22
Internet de las cosas
Éstas son algunas de las tendencias más populares dentro de Internet de las cosas
[Global, 2005]:
Los teléfonos móviles como "ventanas de las cosas cotidianas". Los dispositivos
móviles como teléfonos y PDAs pueden mostrar información acerca de los objetos
etiquetados con códigos de barras y etiquetas RFID, gracias a la incorporación de
lectores y cámaras. Estos dispositivos pueden conectarse con los servidores vía
Internet u otros protocolos para identificar: personas, lugares y objetos. Así, un
teléfono podría mostrar detalles sobre un producto identificado: atributos, origen,
precio, garantía, opiniones, su manual de usuario, dónde comprarlo, cómo reciclar, etc.
Los teléfonos móviles como "los mandos a distancia del entorno". Entre los usos
comunes de los teléfonos móviles en países como Japón ya se encuentran tareas como
la realización de pagos y el uso como mandos a distancia para equipos multimedia. Los
teléfonos pueden convertirse también en un medio para controlar cualquier
dispositivo cercano o lejano como pueden ser cerraduras, sistemas de seguridad, luces,
etc.
23
Capítulo 3
24
Internet de las cosas
3.5 TECNOLOGÍAS
3.5.1 Introducción
Internet de las cosas es una revolución tecnológica que posiblemente marcará el futuro de
la informática y las comunicaciones. El desarrollo técnico de Internet de las cosas depende
de una combinación en el avance de varios desarrollos:
3.5.2 Identificación
Ya sea en el mundo físico, dentro de una red privada o en Internet es necesario establecer
mecanismos para que los objetos puedan ser identificados. La identificación tiene una
especial importancia ya que personas, aplicaciones y otros dispositivos han de poder
establecer contacto con los objetos. Esta tarea no será posible si no se localiza un objeto
concreto o no se puede hacer referencia a él.
Los objetos pueden ser localizados o identificados a través de varios mecanismos. Algunos
de los más populares son:
2. Por la ubicación.
Existen varias tendencias para establecer los identificadores de objetos. Estas tendencias
dependen en gran medida del tipo de red en la que se trabaje. Una técnica extendida
consiste en utilizar cadenas miembro de espacios de nombres globales o locales como
identificadores de objetos. [Grønbæk, 2008].
25
Capítulo 3
El Servicio de nombres de objetos ONS (Object Naming Service) es parte de la Red EPC
Global. La oficina de estadísticas ofrece resolución de nombres para Electronic Product
Codes (EPC) [Armenio et al., 2007] es decir, la dirección de la interfaz para el propietario
del EPC [EPCglobal , 2008].
o De sólo lectura.
Las razones del crecimiento del uso de esta tecnología han sido el abaratamiento de los
costes y el establecimiento de estándares ampliamente aceptados. Entre los más
influyentes se encuentran el "EPC Network", una colección de hardware y estándares
software para el uso de RFID en diversas industrias. El EPC Electronic Product Code está
considerado como la siguiente generación de códigos de barras.
El RFID cuenta en la actualidad con una amplia aceptación, cada vez es más común ver este
sistema implantado en distintos objetos cotidianos. Los teléfonos móviles están
comenzando a incluir lectores RFID debido al tremendo éxito de esta tecnología y sus
potenciales usos en el día a día. Las primeras aplicaciones de RFID incluyen, entre otras, la
gestión en las cadenas de suministros y la prevención de la falsificación en la industria
farmacéutica. Las etiquetas RFID pueden incluso implantase debajo de la piel en humanos
para uso médico o realizar identificaciones de personal8.
8 http://www.wired.com/techbiz/it/magazine/17-03/st_best
26
Internet de las cosas
La capacidad de detectar cambios en el estado físico de las cosas es también esencial para
el registro de los cambios en el ambiente. En este sentido, los sensores desempeñan un
papel fundamental en la reducción de la brecha entre lo físico y lo virtual ya que hacen
posible que las cosas puedan percibir los cambios en su entorno físico. Los sensores
recogen los datos de su entorno y toda esta información genera concienciación sobre el
contexto y puede ser aplicada en la toma de decisiones.
Entre las capacidades con las que suelen contar estos elementos se encuentran la
recolección de datos (sensores), la toma de decisiones y la interacción con personas u
objetos. En ocasiones, a estos sistemas también se les denomina Networked embedded
Devices (NEDs) o Smart objects /devices [Carabelea & Boissier, 2003]. La característica
principal de estos objetos es que tienen embebidos dispositivos electrónicos con
capacidad de computación y comunicación. Dichas características pueden convertir
objetos cotidianos en elementos inteligentes, automatizando la toma de decisiones y
9 http://www.netgarment.com/content/
27
Capítulo 3
Los sistemas embebidos se utilizan cada vez de una manera más generalizada. Están
siendo incluidos en una amplia variedad de objetos como: equipos electrónicos, vehículos,
maquinaria industrial, dispositivos médicos, etc.
A medida que los avances técnicos permitan que los sensores y computadores tengan
tamaños más reducidos, menor consumo y mejor eficiencia resultara más sencillo
embeberlos en un mayor abanico de objetos físicos.
28
Internet de las cosas
Los sistemas que forman parte de Internet de las cosas pueden ser clasificados de diversas
maneras, una de ellas es analizando su inteligencia. Principalmente son dos cualidades las
que definen la inteligencia de un objeto, la primera es el nivel de inteligencia y la segunda
la localización de la misma.
Notificación. Un mayor nivel de inteligencia implica que una cosa puede notificar a
otros dispositivos o personas que ha detectado determinados eventos y/o problemas,
por ejemplo: que se ha caído, que la temperatura es demasiado alta, etc. El objeto no
posee el control de su actividad pero sí es capaz de informar cuándo se producen
ciertas situaciones.
Toma de decisiones. Los objetos con mayor nivel de inteligencia son aquellos que
pueden auto-administrarse, estos objetos son capaces de tomar decisiones en
momentos concretos por sí mismos, con o sin intervención externa dependiendo del
contexto. En este caso, el producto podría tener un control total sobre sí mismo sin
requerir la colaboración de personas [Kärkkäinen et al, 2003].
29
Capítulo 3
No significa que estos dos enfoques tengan que aplicarse siempre de manera excluyente
sino que pueden aparecer soluciones intermedias. Por ejemplo, el proyecto Collaborative
Business items (CoBis) [Collaborative, 2007 ; Decker et al., 2006] combina la inteligencia
en los propios objetos con la inteligencia a través de la red. Las redes de CoBis están
formadas por dispositivos inteligentes que intercambian información entre sí. Esta
información es analizada por cada dispositivo para realizar la toma de decisiones. Una
posible aplicación de los CoBis es la de servir como controladores de seguridad en el
almacenaje de productos químicos. En este caso los “bidones inteligentes” intercambian
información con otros bidones cercanos basándose en su contenido, temperatura, etc. Con
los datos intercambiados y la inteligencia de cada bidón el sistema es capaz de establecer
si hay una incompatibilidad de productos o si se está generando una situación
potencialmente peligrosa en el almacén.
30
Internet de las cosas
3.7 ESTÁNDARES
Por otra parte, sí que existen varias normas y estándares con un gran peso y aceptación
que regulan algunos sectores relacionados con Internet de las cosas. Por ejemplo, debido
principalmente a los mandatos de Walmart Metro y otros grandes minoristas, el estándar
Electronic Product Code global (EPCglobal) se convirtió en la pila estándar de facto en el
comercio minorista y de la industrias de bienes de consumo [Thiesse et al., 2009] . Los
minoristas no sólo venden bienes de consumo, por lo que el estándar EPC continúa
expandiéndose a otros sectores industriales, como el textil o productos farmacéuticos, etc.
La implantación de estas tecnologías a otro tipo de industrias se sigue impulsando, gracias
a la disponibilidad de abrir implementaciones de la pila de EPC [Flörkemeier et al., 2006].
Las normas que regirán el desarrollo de Internet de las cosas deberían estar diseñadas
para soportar una amplia gama de aplicaciones. El número de requisitos es muy grande
debido a la diversificación de la industria y de los sectores que aplicarían estas
tecnologías, así como a las necesidades del medio ambiente, de la sociedad y de las
personas. A través de múltiples procesos y consensos se trata de desarrollar modelos de
datos normalizados, interfaces y protocolos comunes, haciendo la definición inicial en un
nivel abstracto, y posteriormente realizando especificaciones para distintas plataformas o
tecnologías. También el uso de ontologías y la semántica juegan un importante papel
dentro de la evolución de Internet de las cosas, ayudando a eliminar las ambigüedades
resultantes de errores humanos y las diferencias entre interpretaciones debido a los
diferentes lenguajes. Las normas son especialmente necesarias en temas de comunicación
e intercambio de información entre las cosas, entornos, y sus homólogos de la nube virtual
[Sundmaeker et al., 2010]. Además, el diseño de normas para Internet de las cosas debe
tener en cuenta medidas eficientes con respecto al uso de energía y capacidades de las
31
Capítulo 3
redes, así como respetar las limitaciones de otros reglamentos existentes como el que
restringe el uso de las bandas de frecuencia.
32
El teléfono inteligente
CAPÍTULO 4
EL TELÉFONO INTELIGENTE
4.1 INTRODUCCIÓN
El avance de tecnología dentro del sector de los teléfonos móviles ha hecho que estos
dispositivos cada vez posean características más avanzadas. Características que los
capacitan para desarrollar un mayor número de tareas: alta capacidad de computación,
sensores de luz, sonido y movimiento, receptores GPS, cámaras, lectores RFID, conexión a
Internet, Bluetooth, Near Feald Communication, etc.
Tanto por la buena acogida de los Smartphones en la sociedad como por el aumento de sus
características técnicas de este tipo de dispositivos, se ha propiciado que cada vez se usen
más y para realizar un mayor número de tareas. Muchas de estas nuevas tareas asociadas
a los Smartphones están directamente relacionadas con Internet de las cosas.
En este capítulo se realizará una revisión sobre los aspectos clave que potencian el uso del
Smartphone, se revisaran los siguientes puntos:
Comercio móvil.
33
Capítulo 4
4.2 SERVICIOS
Los dispositivos móviles deben ser considerados como un participante más dentro de la
arquitectura orientada a servicios. Los teléfonos inteligentes suelen tomar el papel de
consumidores de servicios en la mayoría de modelos de negocio que observamos en la
actualidad, ya sea accediendo a servicios específicos vía Bluetooth, o a servicios web
convencionales. Que los teléfonos móviles sean consumidores de servicios es lo más
común pero no es la única posibilidad [Rohs & Gfeller, 2004]. Gracias a la capacidad de
computación avanzada y la disposición de varios protocolos de comunicación (Internet,
Wi-Fi, Bluetooth, etc.) estos dispositivos poseen un gran potencial y versatilidad para ser
utilizados como proveedores de servicios. Por ejemplo, el teléfono podría actuar como
proveedor de servicios para otros dispositivos que se encontrasen cerca de él o
variar los servicios que ofrece dependiendo del contexto en el que se encuentre
[Espada et al., 2011c].
Los teléfonos móviles inteligentes tienen un gran potencial para servir como herramienta
de acceso a servicios electrónicos o a aplicaciones que residen en una ubicación específica.
Los servicios específicos ya existen en numerosos puntos como: quioscos de información
electrónica, catálogos de productos, etc. La integración de los teléfonos móviles puede
mejorar aun más la interacción con esta clase de servicios. Mediante el uso de información
almacenada en los teléfonos, los servicios específicos podrían adaptarse de manera
automática a un usuario en particular. Además, los usuarios pueden almacenar la
información resultante de la interacción con un servicio en su teléfono inteligente para
realizar futuras consultas (por ejemplo, la descarga de un mapa). Se puede aumentar la
eficiencia para la realización de ciertas tareas ya que varios usuarios podrían acceder al
mismo tiempo a un servicio específico [Toye et al., 2005] por ejemplo: consultar la
información sobre un objeto en un museo.
34
El teléfono inteligente
4.3 APLICACIONES
Entre las capacidades más difundidas de los teléfonos móviles dentro del contexto de
Internet de las cosas se encuentran el enlace con objetos o servicios y el control o
monitorización de objetos.
Los dispositivos móviles pueden reconocer objetos etiquetados con códigos de barras y
etiquetas RFID, el teléfono y la cámara pueden colaborar para identificar elementos sin
etiquetar como a las personas, lugares y demás objetos. Normalmente la información del
objeto reconocido se coteja con un servidor, de esta forma un teléfono puede dar detalles
sobre el producto incluyendo sus atributos, origen, precio, garantía, opiniones, manual del
usuario, compra, reciclaje, etc.
La extensión de Internet de las cosas promete un mundo más inteligente, donde hay un
alto grado de interacción entre personas y objetos. Entre las formas de interacción más
básicas se encuentran: la solicitud de información sobre los objetos y la ejecución de
acciones asociadas a los mismos. Para realizar estas acciones existen varios métodos,
actualmente la gran mayoría de ellos se basan en una especie de código integrado en el
objeto. Algunos de estos marcadores se pueden analizar mediante diferentes sistemas de
comunicación inalámbrica (por ejemplo las etiquetas RFID o Bluetooth beacons
[Fuhrmann & Harbaum, 2003]), otros sistemas se basan en marcadores visuales que
suelen ser analizados utilizando cámaras o escáneres, como pueden ser los códigos de
barras [Adelmann et al., 2006] o los códigos 2D [Rohs & Gfeller, 2004].
Los teléfonos móviles integran además de cámaras una amplia gama de canales de
comunicación adicionales: Bluetooth, WLAN, Wi-Fi. Otros sistemas no requieren
marcadores para reconocer e identificar un objeto, sino que lo hacen a través de su
apariencia, es decir, utilizando el reconocimiento de objetos visuales de una imagen
tomada con la cámara. Con estos sistemas, tomando una foto de un objeto sería suficiente
para identificarlo o solicitar su información. Si bien esta visión está lejos de convertirse en
realidad, los recientes avances en el campo de la visión por ordenador han dado lugar a
35
Capítulo 4
métodos que permiten reconocer ciertos tipos de objetos de manera muy fiable y
utilizarlos como "hipervínculo" hacia la información digital.
Cierto tipo de objetos no son apropiados para colocar marcadores, esto incluye lugares de
interés turístico y grandes edificios. Usar estos métodos de reconocimiento aporta varias
ventajas a la hora de reconocer un objeto, como sería el caso de un monumento que está a
cientos de metros de distancia; pero incluso si el objeto está cerca, los marcadores pueden
ser más prácticos que un código de barras o una etiqueta RFID fijado sobre la etiqueta de
un objeto, en un museo sería difícil tener acceso a un código de barras si la habitación
estuviese llena de gente. Sin embargo si se pudiese identificar el objeto mediante una foto
del mismo, la identificación podría realizarse desde cualquier punto de la sala. Además el
etiquetado habitual de los objetos es a menudo difícil de lograr. Un ejemplo de ello son los
carteles de publicidad en exteriores. Si una empresa anunciante diseña un cartel-
hipervínculo debería instalar una etiqueta RFID o Bluetooth en cada panel de publicidad o
adjuntar un código de barras a cada uno de ellos, lo que requiere un sistema normalizado y
posiblemente un aumento en los costos de instalación y mantenimiento. Dicho esto, el
reconocimiento de objetos tiene algunas restricciones. En la actualidad resulta imposible
distinguir dos objetos muy similares, por ejemplo, dos versiones ligeramente diferentes
del mismo producto. Por otra parte, la indexación y búsqueda visual eficiente
entre millones de características constituye todavía un problema sin resolver
[Quack et al., 2008].
Los Smartphones pueden ser utilizados como mandos a distancia de multitud de “cosas”.
En la actualidad muchos de estos dispositivos permiten su utilización como mandos a
distancia en equipos audiovisuales o computadores. Con la evolución de Internet de las
cosas el número de objetos con dispositivos electrónicos embebidos y conectados a la red
aumentará enormemente; Por lo que los teléfonos podrían convertirse en un medio para
controlar la mayoría de los objetos cercanos o distantes que se encuentren conectados a la
red: puertas, cerraduras, sistemas de seguridad, luces, aparatos y equipos de oficina.
Cada vez se están elaborando más propuestas de sistemas que permiten controlar objetos
remotamente desde dispositivos móviles; una de las ventajas de este control remoto es
que puede realizarse tanto de manera “cercana” como a través de Internet. Gran parte de
estas propuestas se centran en entornos residenciales, permitiendo establecer conexión
con la red domestica y controlar los dispositivos que la integran desde cualquier lugar
[Fasbender et al., 2008].
36
El teléfono inteligente
Tanto desde el ámbito empresarial como desde la investigación se están utilizando cada
vez más los teléfonos móviles para tareas de monitorización de objetos y redes. Por
ejemplo dentro del ámbito de la salud MobiCare es una arquitectura que da soporte
eficientemente a un gran rango de servicios médicos [Chakravorty , 2006]. Los sensores
toman datos de multitud de parámetros médicos, los cuales se conectan a través de una
interfaz Wireless para comunicar sus mediciones al teléfono móvil del paciente y de este
se envía al servidor.
37
Capítulo 4
Los mecanismos de pago utilizados por el comercio móvil son prácticamente iguales a los
utilizados en un pago electrónico tradicional [Chang et al., 2009].
2. Tarjeta de crédito / débito – El pago con tarjeta de crédito es la forma más popular
de pago electrónico.
38
El teléfono inteligente
4.5 COMUNICACIONES
Los mecanismos de comunicación inalámbrica más extendidos con los que cuentan los
Smartphones son Wi-Fi [Wi-Fi, 2010] y Bluetooth [Bluetooth, 2009], aunque no son los
únicos. Los dos son estándares de redes inalámbricas y ofrecen conectividad a través de
ondas de radio. La principal diferencia entre ellos es el uso “ideal”; Bluetooth surge para
sustituir los cables, mientras que la utilización más demandada del Wi-Fi, es la de
proporcionar acceso inalámbrico a Internet o redes de área local. Las características
técnicas de ambos estándares los capacitan para realizar descubrimientos e interacción
con objetos y servicios [Fajardo et al., 2008] pero dependiendo de los objetos o servicios a
los que se quiera acceder y del contexto, una tecnología se podría perfilar más eficiente y
adecuada que la otra.
4.5.1 Bluetooth
Bluetooth resulta muy útil cuando se pretende realizar una interconexión entre dos o más
objetos que están cercanos y no hay necesidad de transferir datos muy pesados, dentro del
mundo de Internet de las cosas hay muchos objetos que incorporan la tecnología
Bluetooth. Esta tecnología resulta adecuada para varios tipos de comunicaciones:
4.5.2 Wi-Fi
Dependiendo del caso las conexiones Wi-Fi pueden establecerse a más de 100 metros de
distancia de un nodo. Actualmente Wi-Fi es también la comunicación base de muchos
productos electrónicos y electrodomésticos, lo que permite que se incorporen a la red
domestica o proporcionarles acceso a Internet. Dentro del mundo de Internet de las cosas
hay muchos objetos que incorporan esta tecnología y resulta adecuada tanto para la
interacción puntual con un objeto, como para la creación de redes en las que varios
objetos necesitan comunicarse entre sí de manera continuada. Prácticamente todos los
objetos que se conectan a Internet cuentan con esta tecnología, la conexión a la red de
estos objetos aporta la ventaja de que puedan ser controlados o monitorizados desde
fuera del hogar a través de servidores remotos.
39
Capítulo 4
A medida que el RFID ganó popularidad en la industria, surgió un segundo estándar que
está estrechamente relacionado con él. Near Field Communication (NFC) [Ecma, 2005]
denota una tecnología que permite la integración de la funcionalidad RFID en los
dispositivos personales, tales como teléfonos móviles. Por el momento el número de
teléfonos con tecnología NFC disponibles en el mercado es todavía escaso, algo que puede
cambiar en un futuro muy cercano. Por otro lado, la presencia de etiquetas EPC está
aumentado rápidamente. Sin embargo, las dos normas no han sido desarrolladas para ser
compatibles entre sí [Wiechert et al., 2009].
Near Field Communication fue aprobado como un estándar ISO / IEC el 8 de diciembre de
2003 y más tarde como un estándar ECMA. Es un protocolo basado en una interfaz
inalámbrica. La comunicación se realiza entre dos entidades. El protocolo establece
conexión wireless entre las aplicaciones de la red y los dispositivos electrónicos a
distancias cortas. Combina la funcionalidad de un dispositivo lector RFID y etiqueta RFID
en un solo circuito integrado.
La tecnología NFC no está pensada para ser utilizada en una transmisión masiva de datos,
como puede darse con las tecnologías Wi-Fi o Bluetooth, sino para el intercambio rápido
de unos pocos bits de información, lo estrictamente necesario para que identifique y valide
al usuario. La comunicación entre dispositivos NFC se realiza a través de un diálogo: a una
petición del dispositivo iniciador responde él dispositivo destino, debiendo responder
antes de recibir otra petición.
1. Smart Card emulación. Este modo permite el uso del dispositivo NFC como tarjeta
de crédito, de contacto o de billete electrónico entre otros.
Los beneficios de la NFC más mencionados en las publicaciones e industria son: pago
seguro, compra de entradas, rápida transferencia de datos entre dispositivos, vinculación
40
El teléfono inteligente
entre dispositivos tales como otros teléfonos o accesorios y la descarga de información por
ejemplo mediante carteles inteligentes [NFC, 2012 ; GSM, 2007]. Otro punto
importante a señalar es que existe la implementación de servicios de pago sin contacto por
medio de: Visa VisaWave, MasterCard PayPass, y American Express express pay
[Wiechert et al., 2009]. Por lo que se está impulsando el uso comercial de esta tecnología.
41
Capítulo 5
CAPÍTULO 5
INTERACCIÓN REMOTA CON ELEMENTOS
FÍSICOS
5.1 INTRODUCCIÓN
42
Interacción remota con elementos físicos
43
Capítulo 5
La forma más habitual de habilitar el uso de los Smartphones como controles remotos de
otros dispositivos electrónicos es mediante la utilización de aplicaciones nativas, las cuales
han sido especialmente diseñadas para ese propósito. Estas aplicaciones se ejecutan en los
Smartphones con el fin de habilitar la comunicación entre usuarios y otros dispositivos
electrónicos. Las tiendas de aplicaciones móviles más populares contienen muchas
aplicaciones de este tipo, como por ejemplo: LG TV Remote, Samsung Remote, DSLR
Remote Controller, AV Controller Yamaha, Logitech Squeezebox Controller, entre otras. La
aceptación de este tipo de aplicaciones se refleja en el número de usuarios y en la cantidad
de valoraciones positivas recibidas. La utilización de la aplicación Samsung Remote para la
plataforma Android se incremento en más de 750.000 usuarios en los últimos seis meses
del año 2011 [Samsung, 2011].
Las aplicaciones móviles nativas están diseñadas para un dispositivo específico o un grupo
de dispositivos de la misma plataforma. En la actualidad hay una gran variedad de
modelos de Smartphones, con diferentes especificaciones y características: tamaño de
pantalla, memoria, capacidad de procesamiento y sistema operativo (iOS, Android, WebOs,
Windows Phone, Symbian, etc). Esta heterogeneidad entre dispositivos móviles hace que
en muchos casos los fabricantes se vean obligados a desarrollar una versión de la misma
aplicación para cada plataforma. Por otro lado, la primera vez que un usuario utiliza una
aplicación nativa para interactuar con otro dispositivo electrónico, emplea gran parte del
tiempo total en la descarga e instalación de la aplicación. La utilización de las aplicaciones
nativas puede implicar una gran pérdida de tiempo en escenarios donde los usuarios
interactúan de manera ocasional con otros dispositivos, como por ejemplo: dispositivos
proveedores de servicios en las ciudades o establecimientos, los electrodomésticos de una
habitación de hotel, etc.
44
Interacción remota con elementos físicos
Las aplicaciones web y las aplicaciones nativas son muy diferentes técnicamente. Las
aplicaciones nativas corren sobre el propio sistema operativo del dispositivo, en cambio
las aplicaciones web se ejecutan en un servidor externo que envía varios tipos de archivos
(HTML, CSS, Scripts) a un navegador web móvil. Dependiendo de los objetos y de la
funcionalidad de la aplicación, esta puede ser desarrollada como una aplicación web o no.
Las aplicaciones nativas tienen varias características que resultan difíciles de imitar por
parte de las aplicaciones web [Espada et al., 2012]. Una de estas características es la
gestión de los componentes hardware del dispositivo cliente, como por ejemplo los
sensores, GPS y los elementos de comunicación Wi-Fi y Bluetooth [Gossweiler et al., 2010].
45
Capítulo 5
Entre los diferentes tipos de sistemas de control remoto, podemos identificar aquellas
propuestas que se basan en la utilización de servidores y servicios para construir un
ambiente centralizado capaz de gestionar dispositivos heterogéneos. En la mayoría de los
casos los dispositivos pertenecientes al entorno centralizado están conectados a algún
componente o servidor que actúa como controlador [Xu et al., 2009]. En estos sistemas el
elemento controlador que gestiona el entorno centralizado suele proporcionar interfaces
de usuario basadas en tecnologías web. Los interfaces web facilitan que cualquier
dispositivo con un navegador pueda controlar remotamente cualquiera de los dispositivos
que forman el entorno centralizado [Filibeli et al., 2007]. Esta clase de sistemas requieren
de un entorno centralizado en el que los dispositivos hayan sido asociados a un elemento
hardware específico como por ejemplo un servidor, en el caso de Ethernut [Fibelli et al.,
2007] este componente se denomina "Ethernut Home Server" (EHS). El servidor es el
responsable de coordinar y controlar los dispositivos electrónicos que forman parte del
ambiente centralizado. Existen varias alternativas comerciales basadas en arquitecturas
de carácter similar. Los fabricantes RHUB [RHUB, 2012], Z-Wave [Z-Wave, 2012] y la
ZigBee Alliance [ZigBee Alliance, 2012] entre otros, comercializan diferentes tipos de
componentes electrónicos que pueden ser utilizados en la creación de entornos
centralizados. Varios de estos componentes ofrecen la posibilidad de gestionar el entorno
a través de interfaces web.
46
Interacción remota con elementos físicos
5.5 ADAPTADORES
47
Capítulo 6
CAPÍTULO 6
INFORMACIÓN DE CONTEXTO
6.1 INTRODUCCIÓN
Aunque no se haya podido llegar a una definición totalmente aceptada, la mayoría de los
autores tiene conceptos similares sobre a lo que nos estamos refiriendo al citar la
información de contexto. Normalmente en el ámbito de los sistemas informáticos la
información de contexto hace referencia a toda aquella información que proviene del
mundo real. Los dispositivos electrónicos actuales permiten capturar varios tipos de
información de contexto, como la localización, el nivel de luz, la orientación del dispositivo,
la temperatura ambiente, etc. En la mayoría de los casos ésta se obtiene utilizando unos
sensores específicos y otros elementos hardware.
48
Información de contexto
49
Capítulo 6
Existen varios frameworks que provén soporte para simplificar tanto la implementación
como otros aspectos relacionados con la integración de la información de contexto en las
aplicaciones software.
Los sistemas sensibles al contexto han sido objeto de muchas investigaciones desde hace
más de una década. Muchos de estos enfoques se han centrado en aplicaciones específicas
sensibles al contexto, tales como guías de turismo [Cheverst et al., 1999] o asistentes de
recomendación personal [Riva & Toivonen, 2006]. Como contraste a estos sistemas
fuertemente acoplados se han derivado otra clase de propuestas que abordan la gestión de
información de contexto de una forma más genérica e independiente de la lógica de
negocio de los sistemas. La mayoría de estas propuestas podrían catalogarse como
frameworks que proporcionan diferentes tipos de apoyos al desarrollo de sistemas que
emplean información de contexto. Estos entornos de trabajo acostumbran a ofrecer
soporte a la captura de información de contexto y en muchas ocasiones también a un
conjunto de características adicionales como la interpretación o la difusión de la misma.
A continuación se realizará una revisión de varios de los frameworks más relevantes que
ofrecen soporte al desarrollo de aplicaciones sensibles al contexto. Los frameworks
citados presentan varias características específicas que resultan de especial interés para el
desarrollo de este trabajo de investigación. Aunque ninguna de las propuestas analizadas
comparte la totalidad de sus objetivos con esta tesis, si que permiten obtener una visión
general sobre algunas características comunes como pueden ser distintos mecanismos
empleados en la gestión de información de contexto y los componentes que ofrecen
soporte a otras tareas o funcionalidades complementarias.
Context Toolkit [Salber et al., 1999 ; Dey, 2000] Es uno de los frameworks pioneros en
ofrecer soporte al desarrollo de aplicaciones sensibles al contexto. Esta propuesta
introduce el concepto de widgets en los sistemas sensibles al contexto. Un widget o un
interactor es una abstracción que facilita la separación de la semántica de la aplicación de
bajo nivel de las entradas que manejan los detalles de la aplicación. El método de
interacción por widgets se basa en la realización de una consulta que obtiene una
respuesta, de esta forma las aplicaciones obtienen la información sobre los cambios
producidos. Los widgets tienen un interfaz externo común que permite a las aplicaciones
utilizarlos de manera similar. Estos interfaces permiten a las aplicaciones subscribirse a
determinados cambios o eventos de un sensor, así como recuperar datos capturados
anteriormente.
50
Información de contexto
6.2.2 Gaia
Gaia [Román et al., 2002] ofrece un enfoque experimental que desplaza la mayor parte de
la computación sensible al contexto a redes accesibles desde infraestructuras middleware.
Gaia se basa en un middleware distribuido que soporta el desarrollo y la ejecución de
aplicaciones portables sensibles al contexto. El componente middleware es capaz de
gestionar varios dispositivos electrónicos que forman parte de una misma red y están
concentrados en un espacio físico. Los dispositivos que forman parte de la red podrán ser
proveedores o consumidores de información de contexto. El componente middleware
provee puntos de entrada uniformes y abstractos a los servicios básicos, estos puntos de
entrada serán utilizados por los dispositivos consumidores.
6.2.3 CoBrA
Context Broker Architecture (CoBrA) [Chen at al., 2003 ; Chen et al., 2004]. Es una
arquitectura basada en agentes. En este enfoque los mensajes se envían a un tablero de
mensajes compartido “Backboard”. Los procesos pueden suscribirse a este tablero para
recibir todos los mensajes que han sido escritos o únicamente aquellos que coinciden con
un patrón específico. Los patrones de coincidencias pueden variar en los diferentes
sistemas.
51
Capítulo 6
6.2.4 Sentient
Sentient [Biegel & Cahill, 2004] es un framework que ha sido diseñado principalmente
para facilitar el desarrollo de aplicaciones móviles sensibles al contexto. Este framework
permite gestionar datos procedentes de uno o varios sensores de manera eficiente y
sencilla. Las aplicaciones basadas en Sentient liberan al usuario de escribir el código
complejo que suele acompañar a la gestión de los sensores y demás elementos hardware.
Una de las características más resaltables de esta propuesta es que provee mecanismos
para fusionar la información procedente de varios sensores, permitiendo crear contextos
de más alto nivel.
6.2.5 COMODE
Esta propuesta posee varias características destacables, entre las que se encuentran la
orientación a la reutilización de los componentes más básicos y la simplificación del
proceso de desarrollo de aplicaciones sensibles al contexto. La generación de aplicaciones
mediante la utilización de la propuesta requiere manejar un entorno de desarrollo propio
que requiere un proceso de aprendizaje. Actualmente, la especificación no contempla un
conjunto significativo de tipos de información de contexto y las aplicaciones generadas
están destinadas a una plataforma móvil específica.
6.2.6 Conclusiones
Los objetivos con los que los frameworks analizados fueron desarrollados no coinciden
por completo con los de esta tesis aunque si que comparten el eje central sobre el que se
orientan el resto de características y funcionalidades: la gestión de la información de
contexto.
52
Información de contexto
Aspectos positivos:
Aspectos negativos:
53
Capítulo 6
54
Información de contexto
CAMB [Gasimov et al., 2010] es un navegador web HTML móvil sensible al contexto
complementado con un framework de desarrollo de aplicaciones web. El objetivo de
CAMB es adaptar las interfaces de usuario de las páginas web HTML dependiendo de un
conjunto predeterminado de situaciones o ambientes. Esta propuesta centra el empleo de
la información de contexto en la presentación de las páginas web. CAMB no ha sido
concebido para que los desarrolladores manejen la información de contexto de manera
genérica, es decir no independiza la gestión de la información de contexto del objetivo de
la plataforma. En esta plataforma un desarrollador no puede utilizar la información de
contexto para cualquier finalidad, como por ejemplo en los procesos de la lógica de
negocio de la aplicación.
55
Capítulo 6
6.3.2 CRITERIA
Noltes [Noltes, 2008] propone un sistema compuesto por dos plug-in, uno en el lado del
cliente y otro en el lado del servidor web. El plug-in cliente se ejecuta en el teléfono móvil
y se encarga de capturar diversos tipos de información de contexto utilizando los
elementos hardware del dispositivo móvil, la información capturada se encapsula y se
remite al plug-in instalado en el servidor. Esta información de contexto se envía utilizando
un protocolo específico basado en HTTP. El plug-in del servidor recibe y procesa la
información de contexto, posteriormente la información puede emplearse para diversas
tareas.
6.3.3 SENSE-SATION
La plataforma web de SENSE-SATION presenta una API sencilla, que permite recuperar la
información de contexto capturada desde teléfono utilizando pocas peticiones. Abstrae la
gestión de los sensores del teléfono utilizando sensores virtuales, por lo que el desarrollo
de las aplicaciones web que utilizan esta plataforma resulta relativamente simple.
Esta plataforma cuenta con numerosos aspectos destacables, entre los que cabe
mencionar: el elevado número de tipos de información de contexto que maneja y la
simplicidad del API que permite gestionar la información de contexto. El aspecto más
cuestionable de la plataforma es la necesidad de utilizar la aplicación web propia de
SENSE-SATION como vinculo de unión entre el dispositivo móvil y las aplicaciones
desarrolladas. Este aspecto genera lentitud, pérdida de control y una fuerte dependencia
56
Información de contexto
que puede no resultar adecuada para algunos tipos de aplicaciones web. Por otro lado, el
acceso a los mecanismos hardware de los dispositivos suele acarrear un fuerte consumo
de recursos de computación y batería. La utilización de una aplicación que se ejecuta
continuamente, incluso momentos en los que no se requiere ningún intercambio de
información de contexto, puede no resultar demasiado eficiente.
CAB Context-aware web browser [Coppola et al., 2010] surge como evolución de la
propuesta MoBe [Coppola et al., 2005], un framework para el desarrollo de aplicaciones
móviles sensibles al contexto. El objetivo de este navegador web sensible al contexto es
utilizar la información de contexto capturada por el dispositivo móvil cliente para permitir
realizar búsquedas refinadas de contenidos web. Aunque en un futuro plantean ampliar
los objetivos de la propuesta para adaptarla al intercambio de información de contexto en
las redes sociales y otro tipo de aplicaciones Web 2.0. El objetivo de este navegador no es
ofrecer un mecanismo genérico que permita a los desarrolladores de aplicaciones web
manejar la información de contexto capturada por el dispositivo cliente.
6.3.6 Protocolos
57
Capítulo 6
contexto, sobre todo la ubicación. La mayor parte de estos protocolos han sido diseñados
específicamente para promover el intercambio de información de contexto entre las
aplicaciones web y los navegadores web. Algunos de los protocolos más relevantes son:
Secure User Plane location [Goze et al., 2007] Mobile Location Protocol [Mobile, 2002]
Presence Information Data Format [Sugano et al., 2004] y HTTP Enabled Location Delivery
[Barnes, 2008]. Las características más destacables de estos protocolos son la seguridad y
el rendimiento. El aspecto negativo más notorio de estos protocolos respecto a los
objetivos de esta tesis, es que todos ellos manejan un conjunto de tipos de información de
contexto muy reducido, principalmente la ubicación.
Uno de los aspectos positivos mas señalado de PhoneGap es el gran número de tipos de
información de contexto que maneja, mucho mayor que el de la mayoría de los sistemas
similares. La utilización de las tecnologías web en el desarrollo permite ahorrar costes. A
pesar de ser una plataforma muy completa PhoneGap no ha sido diseñada en base a los
mismos objetivos que esta tesis ya que no presenta un sistema que ofrezca un buen
soporte a los elementos hardware de comunicación de los dispositivos. PhoneGap
tampoco hace énfasis en el acceso ágil y rápido a las aplicaciones, el proceso de instalación
y gestión es muy similar al de las aplicaciones nativas.
6.3.8 Conclusiones
Desde hace años las aplicaciones web móviles se han utilizado como alternativa para
reducir las consecuencias negativas derivadas de la heterogeneidad entre plataformas
móviles, ya que las aplicaciones web pueden ser utilizadas casi en la totalidad de las
plataformas móviles. El desarrollo de las aplicaciones web móviles respondía a objetivos
de reducción de coste y esfuerzo: una única aplicación podía ser ejecutada en todas las
plataformas, era más fácil de mantener y en la mayoría de los casos el proceso de
desarrollo seria más rápido que el de una aplicación nativa.
58
Información de contexto
Varias alternativas web analizadas en este apartado cumplen con objetivos significativos
de esta tesis. Estas aplicaciones web móviles se pueden construir de manera simple, son
ligeras y multiplataforma. En general las tecnologías web disponen de muchas
herramientas y componentes reutilizables, como gestores de contenidos, frameworks, etc.
Estas posibilidades unidas a la simplicidad de los lenguajes web, favorecen que en gran
parte de los casos el desarrollo de aplicaciones web sea más rápido que el de las
aplicaciones nativas. Las aplicaciones web no están sujetas a los criterios y normas que
cada fabricante impone en sus tiendas de aplicaciones (Google Play, App Store, BlackBerry
App World, etc), por este motivo las aplicaciones web pueden pasar a producción o ser
actualizadas de manera directa. Las aplicaciones distribuidas en general plantean un
acceso ligero y dinámico, en condiciones normales la carga de un sitio web consume
tiempos relativamente bajos. El enfoque de las aplicaciones distribuidas es óptimo para
conseguir suprimir los procesos de instalación y configuración requeridos en las
aplicaciones nativas. De esta forma se consigue aumentar el dinamismo en aplicaciones
que se utilizan de manera puntual, a la vez que no se sobrecarga innecesariamente el
dispositivo móvil con multitud de aplicaciones.
Gran parte de las alternativas analizadas no cumplen con uno de los objetivos
fundamentales de esta tesis: no facilitan la gestión de la mayoría de los elementos
hardware del dispositivo móvil. Casi todos los sistemas analizados solo consiguen manejar
un pequeño grupo de tipos de información de contexto, principalmente la ubicación. La
gestión de los elementos hardware del dispositivo resulta imprescindible para establecer
comunicaciones con dispositivos electrónicos cercanos y captura de la información de
contexto. Por otro lado, las alternativas web que sí que cumplen con este segundo objetivo
no cumplen con los primeros, pues solamente pueden ser ejecutadas en plataformas y
entornos con requerimientos concretos.
59
Capítulo 6
60
PARTE III
DESARROLLO DE LA PROPUESTA
61
Capítulo 7
CAPÍTULO 7
OBJETOS VIRTUALES V.1.0 STDD
7.1 INTRODUCCIÓN
La primera versión de los objetos virtuales comenzó a desarrollarse a mediados del 2009.
Desde su inicio hasta principios del 2011 la propuesta ha estado en desarrollo y en
constante evolución.
62
Objetos virtuales v1.0 STDD
Sin embargo, muchos sistemas emplean dispositivos como “contenedores genéricos” que
ejecutan aplicaciones, las cuales gestionan la interacción con otros objetos (Fig.7.1). Nos
referimos a dispositivos como contenedores genéricos cuando la parte física del
dispositivo no tiene una gran relevancia en el proceso de interacción, únicamente debe
cumplir unos requisitos mínimos. Por ejemplo: un televisor inteligente ejecuta
aplicaciones software que son dependientes de su parte física (pantalla, conexiones,
altavoces, etc), sin embargo este televisor puede interactuar con otro dispositivo
electrónico que ejecuta una aplicación de control remoto, esta aplicación tendrá un
funcionamiento similar independientemente de que el dispositivo electrónico controlador
sea un ordenador portátil, un teléfono móvil, una PDA, etc. En este caso basta con que el
dispositivo contenedor cumpla con los requerimientos técnicos (capacidad de
computación, elementos de comunicación, etc) y utilice una parte virtual (aplicación
software) adecuada. A este componente software capaz de hacer que un dispositivo
interactué con objetos o elementos físicos se la ha denominado objeto virtual. Un
dispositivo no específico que contiene un objeto virtual se puede convertir en un
integrante activo de un sistema que basa una parte de su funcionalidad en la interacción
con objetos físicos [Espada et al., 2011b].
En esta investigación se ha definido el término objeto virtual dentro del ámbito de Internet
las cosas como:
63
Capítulo 7
7.2 MODELO
Capa de aplicación: en esta capa se incluyen los mecanismos necesarios para que
el objeto virtual pueda interactuar con usuarios y aplicaciones. La forma clásica de
interacción con los usuarios es mediante una interfaz gráfica. La interacción con
otras aplicaciones u objetos suele hacerse a través de un catálogo de servicios.
Capa de acceso a datos: almacenan los datos necesarios para operar con el objeto
virtual.
Un objeto virtual STDD resulta conceptualmente similar a una aplicación nativa: código
ejecutable, interfaces de usuario, datos, etc. La principal diferencia radica en que los
objetos virtuales STDD no se instalan y ejecutan sobre el sistema operativo del dispositivo
móvil, sino que son directamente interpretados por una aplicación especialmente
diseñada para este propósito. Este enfoque permite orientar a los objetos virtuales hacia
la consecución de los objetivos propuestos en esta tesis:
Figura 7.1 – (1) Las aplicaciones nativas se instalan en el sistema operativo del dispositivo móvil. (2) El modelo
propuesto para los objetos virtuales no depende de la plataforma ni instalación sobre el sistema operativo.
64
Objetos virtuales v1.0 STDD
El objeto virtual no es una aplicación típica que se instala y ejecuta sobre el propio sistema
operativo del dispositivo, sino que requiere de una aplicación específica que lo interprete
Esta aplicación contenedora deberá estar instalada en un dispositivo móvil que cumpla
con los requisitos de computación y capacidades de comunicación.
En los últimos años los Smartphones se han convertido en elementos de uso frecuente
para la mayoría de personas. El avance tecnológico en estos dispositivos es muy rápido,
cada vez cuentan con más mejoras técnicas que han permitido ampliar su funcionalidad
hasta el punto de convertirlos en pequeños computadores. El consumo de servicios a
través del teléfono móvil tiene una gran importancia en países como Japón y este tipo de
dispositivos prometen ser una pieza clave en la evolución de Internet de las cosas. Aunque
otros dispositivos electrónicos serían capaces de ejecutar y gestionar objetos virtuales, el
teléfono móvil es el que tiene unas características más adecuadas para ser el destinatario
principal.
65
Capítulo 7
7.3 ARQUITECTURA
En este apartado se hará una introducción sobre varios conceptos y elementos, con el
objetivo de ofrecer una idea global sobre las partes del sistema propuesto y la función que
cumple cada elemento.
Para que los objetos virtuales puedan ser consumidos por cualquier tipo de dispositivo se
necesita:
66
Objetos virtuales v1.0 STDD
El primer paso para comenzar a utilizar un objeto virtual una vez se dispone de su
código es cargarlo en el Gestor STDD. Cuando el objeto virtual se encuentra
cargado el usuario puede seleccionarlo y comenzar a interpretarlo, el resultado
será una interfaz gráfica rica por medio de la cual el usuario realizará invocaciones
a las acciones implementadas en la lógica del objeto virtual.
Los objetos virtuales que hayan sido cargados en el dispositivo deben ser
almacenados y mostrarse de manera ordenada al usuario para que este pueda
gestionarlos, es decir: eliminarlos, copiarlos y transferirlos siempre que la
naturaleza del objeto lo permita.
Un objeto virtual puede ser consumido por una persona de dos maneras:
67
Capítulo 7
Existe otra forma de consumir objetos virtuales, consistente en invocar directamente los
servicios que este ofrece, los cuales se especifican en su catálogo de servicios, esta sería la
forma de interacción que utilizaría una aplicación para comunicarse con el objeto virtual.
La ejecución local se produce cuando un usuario abre un objeto virtual que ha sido
cargado en su propio dispositivo, consta de los siguientes pasos (Fig.7.2):
2. Cada vez que se lanza un evento en la interfaz gráfica el Gestor STDD recoge la
información correspondiente a la acción que debe ejecutarse, nombre del método,
parámetros que recibe y fichero de código donde se encuentra.
3. El Gestor STDD se sincroniza con el almacén de datos del objeto virtual, busca y
ejecuta el método en el archivo de código que le ha sido indicado. En caso de que el
método tenga algún tipo de retorno este es almacenado.
68
Objetos virtuales v1.0 STDD
Durante la interacción de un usuario con un objeto virtual estos cuatro pasos se repiten en
forma de bucle.
7.3.4.2 Descubrimiento
Una vez cargados en el Gestor STDD los objetos virtuales tienen dos estados:
Activo: podrá ser consumido de manera local y de forma remota, por lo que resultará
visible para cualquier dispositivo que se encuentre en el radio de cobertura.
Figura 7.3 - El dispositivo A descubre un objeto virtual STDD activo que se encuentra alojado en el Dispositivo B.
Nombre.
69
Capítulo 7
Una vez descubiertos los objetos virtuales el dispositivo cliente los almacena en una lista,
el proceso seguido para el consumo de objetos virtuales STDD de manera remota es el
siguiente (Fig.7.4):
Figura 7.4 - El dispositivo A ejecuta de forma remota un objeto virtual STDD activo que se encuentra alojado en el
Dispositivo B.
1. Cuando se abre a uno de los objetos virtuales que han sido previamente descubiertos,
se informa al Gestor STDD de que es necesaria la interfaz pública del objeto “Cinema
Ticket” alojado en el Dispositivo B.
3. El servidor envía todos los archivos necesarios para que el dispositivo A pueda
interpretar la interfaz grafica. Una vez recibida la interfaz gráfica pública, el Gestor
STDD la interpreta y la muestra por pantalla. Si el usuario manipula alguno de los
elementos de la interfaz como por ejemplo un botón, pueden lanzarse eventos que
requieran la ejecución de código, en este caso el código ejecutable no se encuentra en
el dispositivo por lo que el Gestor STDD tendrá que trasladar la petición al dispositivo
servidor.
4. Cada vez que se lanza un evento en la interfaz gráfica el Gestor STDD recoge la
información correspondiente a la acción que debe ejecutarse, nombre del método y
parámetros que recibe, posteriormente realiza una petición al servidor.
70
Objetos virtuales v1.0 STDD
5. El Gestor STDD del dispositivo B recibe la petición para ejecutar la acción. De igual
manera que cuando los objetos se ejecutaban localmente se sincroniza con el almacén
de datos del objeto virtual, busca y ejecuta el método en el archivo de código que le ha
sido indicado. En caso de que el método tenga algún tipo de retorno éste es
almacenado.
6. Los cambios en la interfaz gráfica tanto pública como privada pueden ser provocados
desde el código ejecutable, por lo que cada vez que se ejecuta un método puede que se
hayan realizado cambios de interfaz gráfica. El Gestor STDD del dispositivo B envía el
retorno del método (en caso de que lo haya) y la nueva interfaz pública en caso de que
haya habido modificaciones en ella, para que sea cargada de nuevo en el cliente.
A continuación se explicará lo que ocurre desde que el cliente lanza un evento hasta que
percibe el resultado de la acción asociada (Fig.7.5).
Figura 7.5 - El dispositivo A ejecuta una acción de forma remota en un objeto virtual STDD que se encuentra
alojado en el Dispositivo B.
1. Al abrir uno de los objetos virtuales cargados en el dispositivo, se muestra por pantalla
su interfaz gráfica pública principal, que ha sido enviada previamente junto con los
recursos asociados. Si el usuario manipula alguno de los elementos de la interfaz, como
por ejemplo un botón, pueden lanzarse eventos que requieran la ejecución de código.
71
Capítulo 7
2. Cada vez que se lanza un evento en la interfaz gráfica, el Gestor STDD recoge la
información correspondiente a la acción que debe ejecutarse, nombre del método,
parámetros que recibe, fichero de código donde se encuentra.
3. El Gestor STDD del cliente envía una llamada al Gestor STDD del servidor, indicándole
que acción debe ejecutar.
4. El Gestor STDD del servidor se sincroniza con el almacén de datos del objeto virtual,
busca y ejecuta el método indicado en la petición recibida. En caso de que el método
tenga algún tipo de retorno éste es almacenado. Los cambios en la interfaz gráfica
pública también se realizan desde el código ejecutable, por lo que cada vez que se
ejecuta un método pueden realizarse cambios en ella. El Gestor STDD pregunta al
código a través de unos métodos predefinidos cual es la interfaz gráfica pública actual.
5. El servidor envía a una respuesta al cliente, la cual contiene la interfaz gráfica pública
que debe mostrar (si es que ha habido cambios) en consecuencia con la acción que
acaba de ejecutarse.
Durante la interacción de un usuario con un objeto virtual estos pasos se repiten en forma
de bucle.
72
Objetos virtuales v1.0 STDD
7.4.1 Estructura
La estructura del objeto virtual STDD está compuesta por un conjunto de archivos
(Fig.7.6).
Interfaces 1..* Ficheros XML de tipo interfaz gráfica STDD. Cada uno representa
Gráficas una pantalla.
Interfaces Interfaces para que las acciones del objeto virtual puedan ser
accedidas por aplicaciones y otros objetos virtuales.
API 0..* Describe acciones que pueden ser directamente invocadas por
otros objetos virtuales STDD.
Tabla 7.1 – Conjunto de ficheros que forman la estructura del objeto virtual STDD
73
Capítulo 7
Figura 7.6 - Ejemplo de un conjunto de archivos que forman un objeto virtual STDD.
74
Objetos virtuales v1.0 STDD
75
Capítulo 7
7.4.3 Interfaces
La misión de las interfaces es que el objeto virtual pueda comunicarse con otros objetos,
usuarios y aplicaciones.
Se dispone de tres tipos de interfaces distintas que pueden incluirse en el objeto virtual
STDD: Interfaces gráficas, WSDL y API-STDD. Cada una de ellas tiene un propósito
específico y no tienen por qué contener los mismos servicios. No resulta obligatorio
introducir los tres tipos de interfaces, habrá que adaptarse a la naturaleza del objeto
virtual que se esté modelando.
Figura 7.7 - La interacción con los usuarios locales y remotos se realiza por medio de las Interfaces gráficas
privadas y públicas.
76
Objetos virtuales v1.0 STDD
Servicios Web - WSDL: son las siglas de Web Services Description Language, un
formato XML que se utiliza para describir servicios Web. Su misión es mostrar los
servicios que el objeto desea publicar para que otras aplicaciones puedan acceder a ellos a
través de Internet. El servidor web implementado en el Gestor STDD pública el catálogo de
servicios para que estos puedan ser invocados por otras aplicaciones, siempre y cuando el
usuario propietario del objeto virtual lo autorice (Fig.7.8).
Figura 7.8 - Las aplicaciones pueden conocer las acciones asociadas al objeto virtual a través de su catálogo de
servicios WSDL.
APIs: es un descriptor de servicios con un propósito similar al del WSDL, con la diferencia
de que los servicios públicos descritos pueden ser consumidos únicamente por otros
objetos virtuales STDD que se encuentren cargados en el dispositivo (Fig.7.9).
Figura 7.9 - Los objetos virtuales STDD se pueden comunicar entre sí utilizando las acciones descritas en sus APIs.
Este tipo de interfaces tienen como objetivo comunicar a las personas con los objetos
virtuales. Cada fichero XML describe exclusivamente una pantalla, la cual puede mostrarse
durante la ejecución del objeto virtual STDD. Durante la ejecución es posible que se
produzcan varias transiciones entre pantallas, por lo que pueden incluirse varios ficheros
de interfaz gráfica.
El formato utilizado para la definición de las interfaces gráficas es igual para las de tipo
privado y público.
77
Capítulo 7
7.4.4.1 Sintaxis
Existe un gran conjunto de elementos que pueden ser utilizados para componer las
interfaces gráficas, los más comunes son los siguientes:
Nombre Descripción
Layout La pantalla: es el objeto principal que contiene al resto.
TextView Cadena de texto.
EditText Cajón editable donde el usuario puede introducir texto.
ImageView Imagen.
Button Botón
RadioButton Botón selección excluyente.
CheckBox Botón selección Activo / Inactivo.
Tabla 7.4 – Elementos gráficos comunes.
78
Objetos virtuales v1.0 STDD
Los elementos gráficos pueden ser combinados con una serie de propiedades:
Propiedad Descripción
Elemento
id Identificador único, cadena que identifica de manera única a un elemento, este
identificador se utilizará para hacer referencia al objeto desde otras
propiedades.
text Texto asociado al elemento. Esta propiedad solo tiene valor en ciertos
elementos, TextView, Button, RadioButton… no lo tiene por ejemplo en un
ImageView.
color Color de texto en formato RGB (0-256, 0-256, 0-256). Si no se específica esta
propiedad el color por defecto será el blanco.
size Tamaño de la fuente del texto, solo está activo en aquellos tipos de objetos que
contienen elementos textuales.
action/onClick Especifica que acción debe invocarse al pulsar sobre el elemento. Aunque lo
más común es que este atributo se aplique sobre elementos de tipo Button,
también puede incluirse en otro tipo de elementos.
onTouch Especifica que acción debe invocarse al pasar el foco por el área del elemento.
file Ruta del fichero imagen, exclusivo para objetos del tipo ImageView.
xcrollBars Introducir barras de Scroll en el elemento.
width Ancho del elemento.
height Largo del elemento.
background Fondo del elemento, puede asignarse la ruta de una imagen o un color en
formato RGB (0-256, 0-256, 0-256). Si no se específica este atributo, el color por
defecto será el negro.
visible Define si el elemento esta visible en pantalla. Toma un valor booleano, por
defecto si se omite tomara el valor true.
enabled Define si el elemento esta activo. Toma un valor booleano por defecto si se
omite toma el valor true.
Posicionamiento
79
Capítulo 7
A continuación se muestra un posible contenido del archivo .XML que representa una
interfaz gráfica muy simple, la cual está formada por varios de los elementos descritos en
las tablas anteriores (Fig.7.10).
Para indicar que no se quiere usar una cadena literalmente sino que se está invocando a
una acción que requiere ejecución de código el valor del atributo debe comenzar por el
carácter ‘#’ y tener el formato: #[paquete.clase]/método(parámetro, parámetro).
Por ejemplo:
<TextView
id="3"
text="#com.entrada.entradaAvatar.Entrada/getSynopsis()">
</TextView>
El código asociado a ciertos atributos puede ejecutarse antes de que se produzca la carga
de la interfaz gráfica, si el método tiene retorno éste se incluirá en el valor del atributo
correspondiente (Fig.7.11).
80
Objetos virtuales v1.0 STDD
Figura 7.11 - Código de la interfaz gráfica que hace referencia al código ejecutable. A la derecha se muestra la
interpretación en la pantalla del dispositivo
En el caso de que el método al que se hace referencia reciba parámetros existen dos
variantes.
<TextView
id="3"
text="#com.entrada.entradaAvatar.Entrada/getText(int:4)">
</TextView>
<EditText
id="2"
text="Tu nombre aqui"
width="20%"
height="10%">
</EditText>
<Button
id="3"
below="2"
width="20%"
height="10%"
action="#setNombre(String:?2)">
</Button>
81
Capítulo 7
Ventajas
Al utilizar una descripción relativa para establecer las posiciones de los elementos en
la interfaz ésta puede visualizarse de manera muy similar en dispositivos con distintas
resoluciones y tamaños de pantalla.
Permite construir interfaces ricas para los objetos virtuales STDD. Desde el punto de
vista del cliente es como si se tratase de una aplicación instalada en su terminal.
7.4.4.2 WSDL
WSDL son las siglas de Web Services Description Language, un formato XML que se utiliza
para describir servicios Web.
WSDL describe la interfaz pública de los servicios Web. Está basado en XML y describe la
forma de comunicación. Es decir, los requisitos del protocolo y los formatos de los
mensajes necesarios para interactuar con los servicios listados en su catálogo. Las
operaciones y mensajes que soporta se describen de forma abstracta y se ligan después al
protocolo concreto de red y al formato del mensaje.
El objeto virtual STDD puede incluir este tipo de interfaz pública para que otras
aplicaciones puedan interactuar con él accediendo directamente a sus acciones.
Opcionalmente puede incluirse un archivo XML que describa las acciones asociadas al
objeto virtual STDD con el propósito de que éstas puedan ser directamente ejecutadas por
otros objetos STDD que se encuentren cargados en el dispositivo.
La manera de describir las acciones públicas a las cuales otros objetos pueden acceder
será mediante un descriptor XML con el siguiente formato:
82
Objetos virtuales v1.0 STDD
La lógica de negocio del objeto virtual STDD está encapsulada en el fichero de código, el
cual puede hacer uso de un fichero de persistencia si fuese necesario.
Dentro de un mismo objeto virtual STDD se ofrece la posibilidad de incluir varios ficheros
de código, cada uno en un lenguaje de programación para que el código pueda ser
ejecutado por dispositivos que tengan distintos sistemas operativos. El propio Gestor
STDD será el encargado de seleccionar el código fuente que sea adecuado para el
dispositivo en cuestión.
El fichero de código puede estar formado por un conjunto de paquetes, clases y librerías
como si se tratara de un programa ordinario en el lenguaje de programación adecuado.
Como consideraciones adicionales deben de tenerse en cuenta los siguientes puntos:
Aquellas clases que vayan a ser accedidas desde las interfaces deben heredar de la
clase base STDD. Esta clase ofrece un catálogo de métodos que permiten: modificar o
cambiar la interfaz gráfica actual, controlar la persistencia de atributos y acceder a los
elementos hardware del dispositivo que permiten capturar información de contexto y
realizar acciones de comunicación.
Aquellos métodos que vayan a ser accedidos desde cualquiera de las interfaces deben
ser declarados como públicos.
Los atributos que necesiten ser persistentes deben declararse de una manera
particular, utilizando los métodos de soporte a la persistencia que ofrece la clase
STDD.
Las clases que vayan a ser directamente referenciadas desde las interfaces de
usuario.
Las clases que necesiten gestionar los elementos hardware del dispositivo.
83
Capítulo 7
Figura 7.12 - La interfaz gráfica hace referencia a un método público contenido en el código ejecutable.
7.4.5.1.2 Persistencia
Como resulta habitual, los atributos de una clase se inicializan cada vez que se crea una
nueva instancia de ésta, este proceso se repite cada vez que se carga un objeto virtual
STDD. Si alguno de los datos usados es tratado como persistente mantendrá su valor sin
importar las veces que el objeto virtual STDD se cargue, se duplique o se transfiera.
Para comenzar a utilizar la persistencia hay que hacer una llamada en el constructor al
constructor de la clase base enviándole como parámetro una cadena de texto que actuará
como token de seguridad. Esta cadena será autogenerada por una aplicación y se
procesará cuando se realicen lecturas o escrituras en el almacén de datos, con el fin de
comprobar que el código del servicio que está intentando acceder al almacén de datos es
quien debe ser y que el almacén al que se accede es el que ha sido asociado inicialmente a
el código y no otro.
El almacén de datos guarda pares: clave, valor, el valor almacenado puede ser cualquier
tipo de dato u objeto, incluso propio, siempre y cuando éste sea serializable, para acceder
a los elementos almacenados es necesario apoyarse en los métodos que implementa la
clase STDD.
84
Objetos virtuales v1.0 STDD
saveDataString(key,String) loadDataString()
saveDataInt(key,int) loadDataInt()
saveDataFloat(key,float) loadDataFloat()
saveDataChar(key,char) loadDataChar()
saveDataArrayString(key,String[]) loadDataString()
saveDataArrayInt(key,int[]) loadDataArrayInt()
saveDataArrayFloat(key,float[]) loadDataArrayFloat()
saveDataArrayChar(key,char[]) loadDataArrayChar()
saveDataObject(key,Object) loadDataObject()
saveDataList(key,List<T>) loadDataList()
saveData HasMap (key, HasMap<K,V>) saveDataList(key,List)
Tabla 7.6 – Métodos de la clase base STDD para la gestión de la persistencia.
En el siguiente ejemplo se crea una clase STDD, (es decir que será directamente accedida
desde una interfaz) la cual tiene un atributo nombre de tipo String que será tratado como
persistente.
Para realizar estos cambios es necesario utilizar los siguientes métodos que se encuentran
implementados en la clase base STDD.
85
Capítulo 7
Método Descripción
En el siguiente ejemplo se crea una clase STDD, la cual hace varias modificaciones a la
interfaz gráfica. Desde el método DesaparecerNombre() modifica la propiedad visible del
elemento con id = 3 estableciéndole el valor false.
86
Objetos virtuales v1.0 STDD
La clase base STDD contiene varios métodos que pueden ser utilizados para gestionar el
manejo de los elementos hardware del dispositivo cliente. A través de llamadas a los
métodos de la clase base STDD se realizan invocaciones directas al API de la plataforma
(Fig.7.13), permitiendo de esta forma crear una capa de abstracción que permite el manejo
de los elementos hardware del dispositivo cliente.
Figura 7.13 – El código del objeto virtual utiliza los métodos de la clase base STDD para gestionar los elementos
hardware del dispositivo.
A continuación se listan algunos de los métodos de la clase STDD que habilitan la gestión
de los elementos hardware del dispositivo cliente:
Método Descripción
87
Capítulo 7
88
Objetos virtuales v1.0 STDD
Método Descripción
89
Capítulo 7
El fichero contiene pares de elementos clave: valor. Las claves identifican a cada valor, por
lo que deben de ser únicas, el valor puede ser cualquier tipo de objeto que sea serializable.
La ejecución local se produce cuando un usuario ejecuta un objeto virtual STDD cargado
en su propio dispositivo.
Para que un objeto virtual STDD pueda ser ejecutado de manera local es necesario que se
cumplan las siguientes condiciones:
2. El fichero descriptor del STDD debe haber sido definida una interfaz privada principal.
<code android="Ticket12A78CHJ12_android.apk"
java="Ticket12A78CHJ12_j2me.jar"/>
Para que un objeto virtual STDD pueda ser ejecutado remotamente desde otro terminal es
necesario que se cumplan las siguientes condiciones:
Dispositivo Servidor:
90
Objetos virtuales v1.0 STDD
2. En el fichero descriptor del objeto virtual STDD cargado, debe haber sido definido una
interfaz pública.
<code android="Ticket12A78CHJ12_android.apk"
java="Ticket12A78CHJ12_j2me.jar"/>
Dispositivo Cliente:
2. Descubrir el servicio.
Para que un objeto virtual STDD pueda ser transferido a otro dispositivo ha de
especificarse esta posibilidad en su fichero de configuración por medio de la propiedad
transferable, la cual puede tomar el valor YES/NO:
Las posibilidades a la hora de realizar las transferencias dependen del valor de otras dos
propiedades, además de la antes mencionada transferable. Si el objeto virtual STDD es
considerado como único tampoco debería permitirse su copia.
<id unique="YES">12A78CHJ12</id>
<transferable>YES</transferable>
<copy>NO</copy>
Otra posible forma de intercambio sería transfiriendo al cliente una copia del objeto
virtual STDD. Para poder realizar este tipo de envío habría que especificar en el fichero de
configuración que el objeto no es único y permite copiarse además de transferirse.
<id unique="NO">1</id>
<transferable>YES</transferable>
<copy>YES</copy>
Este último ejemplo permitiría realizar los dos tipos de transferencia, dando a elegir entre
enviar los archivos originales del objeto virtual STDD o una copia de los mismos.
91
Capítulo 7
En este apartado se hará una descripción de las funciones del Gestor STDD, detallando su
comportamiento y explicando los módulos principales que forman esta aplicación, no
obstante la descripción que aquí se realiza no tiene por qué ser la única implementación
posible. El Gestor STDD se podría optimizar y ampliar con nuevos módulos o
funcionalidades, siempre y cuando maneje los objetos virtuales DDTS de forma estándar y
siga poseyendo todas las responsabilidades que se le atribuyen en esta especificación.
El primer paso para comenzar a utilizar un objeto virtual es cargarlo en el Gestor STDD.
Para ello los ficheros que forman la estructura del objeto deben encontrarse ubicados en el
dispositivo cliente.
Cartera de objetos: el Gestor STDD dispone de una lista a la que denominaremos “cartera
de objetos”, una vez se cargan los ficheros correspondientes al objeto, este aparecerá en
esa lista, que un objeto aparezca en esta lista significa que está listo para ser usado. El
usuario puede administrar esta lista añadiendo nuevos objetos, eliminando o copiando los
existentes.
92
Objetos virtuales v1.0 STDD
Para introducir un nuevo objeto en la cartera de objetos el Gestor STDD procesa el fichero
XML de configuración, el cual contiene las propiedades del objeto virtual (Fig.7.14).
El cargador (Loader) es el módulo del Gestor STDD encargado de procesar los ficheros de
configuración. Este módulo realiza varias comprobaciones sobre el archivo:
Contiene todas las propiedades de carácter obligatorio (nombre, id, ruta del código
ejecutable y al menos una interfaz).
Todas las propiedades tienen un valor que encaja dentro del rango esperado.
Si las comprobaciones son positivas el cargador crea una entrada, en la que almacena
todas las propiedades del objeto (nombre, id, transferible, copiable, rutas a interfaces y
ficheros de código, etc.), tanto las descritas en el fichero de configuración como las que
toman un valor por defecto.
Las ejecuciones de código comienzan una vez el objeto virtual está cargado en el
dispositivo, el Gestor STDD es el encargado de seleccionar el fichero de código ejecutable
adecuado en caso de que el objeto virtual contenga varios, si no se encuentra un código
ejecutable compatible con el sistema operativo o características del dispositivo no
resultara posible interpretar el objeto.
93
Capítulo 7
Ejecución de código: el acceso a las clases y métodos del código ejecutable debe de
realizarse mediante la carga dinámica de clases, concretamente esta aplicación
Gestor STDD está construida para correr sobre la plataforma Android, por lo que
utiliza el cargador de clases DEXClassLoader similar al ClassLoader de java.
94
Objetos virtuales v1.0 STDD
La interpretación de los objetos comienza cuando el Gestor STDD procesa las interfaces
que el objeto virtual contiene y muestra por la pantalla del dispositivo de una forma
adecuada los elementos gráficos que hay declarados en ellas. Los elementos de las
interfaces pueden estar ligados a acciones que el objeto virtual contiene en su código, por
ello la interpretación puede implicar también que se realicen llamadas al código
ejecutable.
3. El lanzador carga el código ejecutable, lo sincroniza con el almacén de datos (si es que
el objeto virtual lo posee) e invoca el método correspondiente.
5. Los pasos anteriores (3-4) se repiten tantas veces como llamadas haya al código
ejecutable dentro de la interfaz gráfica. Una vez se han ejecutado los fragmentos de
código, el intérprete puede finalizar el procesamiento de la interfaz gráfica, como
resultado genera un “elemento de interfaz” por cada elemento descrito en el XML. Los
elementos de interfaz son descripciones de controles: botones, listas, imágenes, etc.
95
Capítulo 7
El Gestor STDD actúa como un contendor de objetos virtuales, sería lógico que a menudo
un usuario poseyese varios objetos virtuales en un mismo momento, por lo que deben
ofrecerse mecanismos para que sean almacenados.
Los objetos virtuales deben tener carácter persistente, es decir, una vez cargados tienen
que estar disponibles. Cuando se carga un objeto virtual el Gestor STDD genera su entrada
correspondiente, la cual debe guardarse en un almacén de datos persistente. Cada vez que
el Gestor STDD comienza una nueva ejecución accede al almacén de datos para recuperar
las entradas de los objetos virtuales que deben estar cargados en el dispositivo.
Se pueden realizar ciertas operaciones contra los objetos virtuales cargados, todos ellos
pueden ser eliminados y de manera opcional pueden ser transferidos, copiados o
modificados. Si un objeto virtual posee una de estas tres últimas propiedades lo indicara
de manera específica en su fichero de configuración. Esta información también se
almacena en la entrada correspondiente al objeto, ya que en ella se han copiado todos los
valores de su configuración.
Eliminar: Las entradas de la cartera de objetos pueden ser eliminadas. Existen dos
tipos de eliminación. La primera solo elimina la entrada correspondiente al objeto
virtual del Gestor STDD, por lo que podría volver a ser cargado a partir de sus ficheros.
La segunda es una eliminación total que borra todos los archivos y ficheros
correspondientes al objeto virtual.
o Expiración: algunos objetos asignan una fecha a esta propiedad, esto significa
que al llegar a la fecha señalada el Gestor STDD realiza de forma automática un
borrado total sobre el objeto en cuestión.
96
Objetos virtuales v1.0 STDD
Copiar: los objetos virtuales no únicos pueden ser copiados, la copia consiste en
replicar los archivos que forman el objeto y posteriormente cargar en la cartera la
copia realizada.
Los objetos virtuales cargados pueden encontrarse en estado activo o inactivo, que un
objeto este activo significa que puede ser descubierto y ejecutado de forma remota por
otro dispositivo. No todos los objetos pueden ser invocados de forma remota sino que
debe ser especificado en su fichero de configuración. Además el objeto debe incluir una
interfaz gráfica pública principal que utilizarán para este tipo de ejecución.
Para poder ejecutar remotamente un objeto virtual el primer paso consiste en descubrir el
dispositivo servidor; una vez establecido el contacto con el dispositivo se solicita a su
Gestor STDD una lista con los objetos virtuales que se encuentran cargados y pueden ser
ejecutados de forma remota.
97
Capítulo 7
4. Partiendo de la lista de entradas se generan unos nuevos tipos de entradas con una
información más limitada, las cuales contienen el nombre, identificador y el icono
del objeto virtual, así como los datos del dispositivo servidor.
7. Una vez añadidas las entradas, el usuario cliente puede visualizar los objetos
virtuales descubiertos y seleccionar uno de ellos para comenzar la ejecución
remota.
La ejecución remota comienza cuando el cliente selecciona uno de los objetos virtuales que
ha descubierto; al hacer la selección envía una petición al dispositivo servidor, el cual le
envía la interfaz gráfica pública principal correspondiente al objeto y los recursos
asociados a ella en caso de que los tenga. Una vez el cliente dispone de la interfaz pública,
la interpreta como si se tratara de una ejecución local.
98
Objetos virtuales v1.0 STDD
Figura 7.18 - Esquema del proceso: Ejecución remota 1 de objetos virtuales STDD.
1. Para comenzar la ejecución remota del objeto virtual el Intérprete carga el fichero
correspondiente a la interfaz pública principal. Una vez cargado, comienza a
procesar el fichero XML, el cual define que controles deben representarse en la
pantalla.
99
Capítulo 7
Figura 7.19 - Esquema del proceso: Ejecución remota 2 de objetos virtuales STDD.
4. De igual manera que cuando se ejecuta un objeto de forma local el lanzador carga
el código ejecutable, lo sincroniza con el almacén de datos (si es que el objeto
virtual lo posee) e invoca el método correspondiente.
100
Objetos virtuales v1.0 STDD
101
Capítulo 7
7.6.1 Introducción
El prototipo del objeto virtual entrada de cine será ejecutado sobre un dispositivo móvil
Android que cuenta con una implementación básica del Gestor STDD, aplicación necesaria
para la interpretación de los objetos virtuales STDD.
El primer paso consiste en obtener todos los detalles del objeto que debemos modelar,
este análisis se divide en tres pasos.
Acciones, que usuarios, aplicaciones u otros objetos pueden realizar y en las que el
objeto que estamos diseñando interviene de algún modo. Las acciones vendrían a ser
similares a los casos de uso de una aplicación convencional. Se diferencian dos tipos de
acciones, aquellas que solo el usuario propietario del objeto las puede ejecutar y las
públicas que son ejecutadas por otros usuarios externos o aplicaciones.
Datos y recursos asociados: una vez conocidas las acciones, puede que algunas
requieran incluir recursos como: fotos, videos, etc.
7.6.2.1.1 Acciones
102
Objetos virtuales v1.0 STDD
Las dos acciones básicas anteriores podrían por si solas definir un objeto entrada de cine,
aun así se añadirán más acciones para conseguir un objeto más completo.
Dentro de este apartado contemplamos que acciones serán realizadas por el usuario
dueño de la entrada, y cuales por usuarios externos u otras aplicaciones.
Para dar soporte a las acciones definidas anteriormente es necesario contar con una serie
de datos:
Dato Tipo
Canjear entrada
Estos datos podrían variar dependiendo del método que se utilice para canjear/validar la
entrada.
Dato Tipo
103
Capítulo 7
Dato Tipo
En este apartado se le asignara valor a una serie de propiedades asociadas al objeto virtual
STDD. Estas propiedades resultan especialmente importantes a la hora de establecer la
identidad y comportamiento del objeto.
name X
edit NO: Indica que no se pueden editar los ficheros o recursos que
componen el objeto, si se detecta alguna modificación el objeto
quedaría inutilizado.
7.6.2.1 Introducción
En este apartado se describirán los pasos seguidos para el desarrollo concreto del objeto
virtual STDD entrada de cine.
104
Objetos virtuales v1.0 STDD
El objeto virtual contará con un dato de carácter persistente de clave “usada”, será de tipo
booleano y tomara como valor inicial false. El almacén de datos se genera utilizando la
aplicación de datos contenida en el kit de desarrollo. El resultado será: un archivo info.obj
y una clave que debe introducirse en la llamada al constructor de la clase base STDD.
La lógica de negocio ira encapsulada dentro del fichero de código, en este caso la
implementación se realizará únicamente en java ya que las pruebas con el prototipo se
realizaran sobre dispositivos Android.
En primer lugar declaramos todos los atributos no persistentes que tiene el objeto:
entrada, ID, nombre, posición en la sala, horario y código identificador del cine. Además de
estos atributos habrá que añadir el valor “usada” que tendrá carácter persistente; este
valor indica si la entrada ya ha sido usada o no. ¿Por qué es persistente? El objeto virtual
puede cambiar de dispositivo o ser eliminado y vuelto a cargar, este valor no puede
reiniciarse tomando de nuevo su valor inicial (false), los cambios realizados sobre el valor
“usada” deben de ser persistentes.
public EntradaCine(){
/** Constructor con el token de seguridad
105
Capítulo 7
return false;
} else {
throw new Exception("This ticket has already been used");
}
}
// GETTERS
public String getNombre() {
return nombre;
}
106
Objetos virtuales v1.0 STDD
7.6.2.3 Interfaces
Las interfaces privadas se visualizan cuando el objeto virtual está siendo ejecutado por su
propietario. En este caso declararemos una única interfaz gráfica privada desde la que el
usuario puede ver toda la información relativa a su entrada e iniciar la acción de canjearla.
107
Capítulo 7
Para darle un mejor aspecto a la interfaz hemos añadido un método que devolverá la
imagen del botón que se utiliza para canjear el ticket. El nuevo método devolverá la
referencia a una imagen distinta si la entrada esta usada o si no lo está (Fig.7.20).
Las interfaces gráficas públicas se visualizan cuando el objeto está siendo ejecutado de
forma remota por otro usuario. En este caso se declarará una única interfaz gráfica
pública, desde la que los usuarios remotos podrán ver información relativa a la película
(no a la entrada).
En este caso la propia imagen actuará como botón para pasar a la siguiente fotografía
(Fig.7.21).
108
Objetos virtuales v1.0 STDD
Figura 7.21 - Interfaz gráfica pública del objeto virtual STDD entrada de cine.
Los valores que toman las propiedades más importantes tienen que ver con el
comportamiento que le ha sido asignado al objeto virtual STDD durante la fase de análisis.
Propiedades como: único, copiable, transferible, etc. El resto de propiedades son
referencias a ficheros y recursos. El fichero de configuración para el objeto virtual entrada
de cine es el siguiente.
109
Capítulo 7
El archivo correspondiente al objeto entrada de cine podría adquirirse por uno de estos
medios (Fig.7.22):
Los objetos cargados aparecen en una lista al abrir el Gestor STDD. Para abrir un objeto
virtual el usuario tiene que seleccionarlo en la lista. La siguiente pantalla le llevará a un
menú general desde donde puede abrir el objeto y realizar las acciones de tipo general:
borrar, enviar… solo aquellas que hayan sido especificadas por el desarrollador (Fig.7.23).
110
Objetos virtuales v1.0 STDD
Figura 7.23 - Transición de pantallas: selección y apertura del objeto virtual STDD entrada de cine.
Para utilizar la entrada el usuario debe pulsar en el botón Ticket Swap cuando se
encuentre cerca del servidor del cine; esta acción iniciará la sincronización con el servidor
para tratar de validar la entrada de cine. Si se finaliza con éxito la validación el valor Used
de la entrada cambia a true y el servidor dará luz verde para entrar en la sala de cine
(Fig.7.24).
Figura 7.24 - Validación del objeto virtual STDD entrada de cine contra el servidor de la sala de cine.
111
Capítulo 7
Figura 7.25 - Transferencia entre dispositivos del objeto virtual STDD entrada de cine.
Como el objeto virtual tiene habilitada una interfaz gráfica pública otros usuarios pueden
descubrirlo, siempre que se encuentre en estado activo. Para activarlo hay que seleccionar
la entrada en la lista de objetos cargados y pulsar el botón Active. Una vez hecho esto
otros usuarios pueden descubrir el objeto virtual entrada y ejecutarlo de forma remota.
Desde la visión del usuario que no es dueño del objeto virtual, la perspectiva sería la
siguiente: el usuario puede descubrir objetos virtuales alojados en otros dispositivos, una
vez descubiertos estos objetos se le muestran en una lista de manera muy similar a los
objetos virtuales propios. Al pulsar sobre uno de los objetos descubiertos se inicia la
interacción con el servidor y la interfaz pública del objeto se muestra en pantalla
(Fig.7.26).
Figura 7.26 - Descubrimiento y conexión remota al objeto virtual STDD entrada de cine.
112
Objetos virtuales v2.0 Distribuidos
CAPÍTULO 8
OBJETOS VIRTUALES V2.0 DISTRIBUIDOS
La primera versión de la propuesta Objetos Virtuales v1.0 STDD presentaba una serie de
deficiencias. Las deficiencias más visibles se encontraban en el ámbito de la seguridad,
debido a que el modelo propuesto caía en la necesidad de intercambiar módulos de código
ejecutable de manera frecuente. A pesar de barajar varios enfoques capaces de combatir
varias de las potenciales deficiencias de seguridad, se llegó a la conclusión de que el
modelo planteado no era óptimo y debía ser rediseñado. Otro de los aspectos que
contribuyó a tomar esta decisión fueron los notables costes de desarrollo necesarios para
generar objetos virtuales multiplataforma, ya que una parte importante del objeto virtual
(la lógica de negocio) debía ser implementada en varios lenguajes de programación para
garantizar la compatibilidad de este con distintas plataformas.
Por lo tanto, se planteó una segunda fase de diseño que tenía como objetivo solucionar los
problemas detectados en la versión inicial de la propuesta, a través del desarrollo de un
nuevo modelo que se adaptase de una manera más óptima al cumplimiento de los
objetivos fijados en esta tesis.
Figura 8.1 – Evolución del modelo Objetos virtuales STDD a Objetos virtuales distribuidos.
113
Capítulo 8
Pero no toda la lógica de negocio del objeto virtual puede ser ejecutada en la parte del
servidor. Algunas acciones, como las que implican la gestión de los elementos hardware
del dispositivo deben ser ejecutadas en el propio dispositivo cliente. Para ello, la
especificación definirá un conjunto propio de etiquetas denominado “elementos de
contexto", las cuales indicarán al dispositivo cliente que debe ejecutar un determinado
proceso. Estos procesos estarán definidos en el dispositivo cliente de antemano, cada uno
de ellos implicará utilizar el API de la plataforma para gestionar uno de los elementos
hardware del dispositivo, sensores, GPS, Bluetooth, etc. A través de este modelo el objeto
virtual que se ejecuta remotamente en el servidor web será capaz de definir acciones que
empleen los elementos hardware del propio dispositivo cliente.
Para poder ejecutar los objetos virtuales distribuidos el dispositivo cliente deberá ejecutar
una versión modificada del antiguo Gestor STDD, renombrado como visor de objetos
virtuales distribuidos. Esta aplicación permitirá solicitar e interpretar las interfaces
gráficas XML de los objetos virtuales distribuidos. Una de las responsabilidades del visor
de objetos será detectar las etiquetas XML especiales “elementos de contexto", utilizadas
para indicar que se debe proceder a la ejecución de una de las tareas predefinidas que
gestionan los elementos hardware del dispositivo. La lógica de estas nuevas tareas estará
definida en el propio visor de objetos virtuales. Tras la ejecución de la tarea específicada
por el elemento de contexto el visor de objetos virtuales distribuidos remitirá la respuesta
generada al objeto virtual alojado en el servidor de objetos virtuales distribuidos.
Mediante este procedimiento el objeto virtual podrá incluir en sus procesos de negocio
acciones que empleen las respuestas generadas por las tareas especificas ejecutadas en el
dispositivo cliente. Estas respuestas serán dependientes del tipo de tarea que se haya
ejecutado, por ejemplo: si la tarea ha consultado el valor actual del sensor de aceleración
la respuesta será una cadena de texto, si se ha tomado una fotografía con la cámara del
dispositivo la respuesta será un fichero png, si se ha realizado un escaneo en busca de
dispositivos Bluetooth la respuesta será una lista con los nombres y direcciones de los
dispositivos descubiertos (Fig.8.2).
10 http://tomcat.apache.org/
114
Objetos virtuales v2.0 Distribuidos
Figura 8.2 - (1) El visor de objetos virtuales distribuidos realiza una petición al servidor. (2) El servidor responde
con un fichero XML que contiene elementos gráficos comunes y elementos de contexto. (3) El intérprete procesa
el contenido del fichero XML, representado el interfaz por pantalla y ejecutando las tareas programadas
correspondientes a los elementos de contexto. (4) Las tareas programadas utilizan los elementos hardware del
dispositivo para capturar información de contexto o para comunicar al cliente con otros dispositivos. (5) El
resultado de la ejecución de la tarea es procesado y enviado al servidor de objetos virtuales distribuidos.
115
Capítulo 8
Uno de los cambios más significativos en la estructura del objeto virtual afecta a la
definición de las interfaces gráficas de usuario. Los ficheros que definen estas interfaces
estarán alojados en la parte del servidor y serán transmitidos al dispositivo cliente para
que éste los interprete. La aplicación encargada de realizar el procesamiento de los
interfaces será el visor de objetos virtuales distribuidos. Como resultado del
procesamiento se cargara en la pantalla del dispositivo cliente el interfaz de usuario, a
partir de la interacción del usuario con determinados elementos de esta interfaz (pulsar
un botón, marcar un CheckBox, etc) se generarán respuestas que serán enviadas al
servidor de objetos virtuales distribuidos. Como en este nuevo modelo los objetos
virtuales siempre se ejecutan de manera remota, deja de tener justificación la utilización
de interfaces privadas (si se accede desde el propio dispositivo) y públicas (si se accede
remotamente desde el otro dispositivo). Los objetos virtuales distribuidos contendrán un
único tipo de interfaces de usuario, el control de acceso a éstas podrá ser implementado en
la lógica de negocio del propio objeto, mediante contraseñas, validaciones, etc.
116
Objetos virtuales v2.0 Distribuidos
Interfaces 1..* Ficheros XML de tipo interfaz gráfica STDD. Cada uno representa
Gráficas una pantalla.
Interfaces Interfaces para que las acciones del objeto virtual puedan ser
accedidas por aplicaciones y otros objetos virtuales.
Tabla 8.1 – Conjunto de ficheros que forman la estructura del objeto virtual distribuido .war .
117
Capítulo 8
La versión anterior de la propuesta definía un gran conjunto de elementos que podían ser
utilizados para componer las interfaces de usuario, entre los que se encuentran: layouts,
TextView, EditText, ImageView, etc.
118
Objetos virtuales v2.0 Distribuidos
119
Capítulo 8
Nombre Descripción
magneticfield Obtiene el valor actual registrado por el sensor de campo magnético.
Cada uno de los elementos definidos podrá ser combinado con un conjunto de atributos
propios los cuales permiten especificar diversos detalles, estos atributos se especificarán
en el apartado 9.4 Etiquetas XML de contexto.
Los elementos de contexto se incluirán en los ficheros XML que definen las interfaces de
usuario:
<EditText
id="4"
width="100%"
below="3"
marginTop="20"
size="17">
</EditText>
<camera
id="5"
receiver="imagen.xml">
</camera>
<Button
id="6"
width="100%"
height="10%"
bellow="6"
action="#procesarUsuario(string:4)"
margin="20">
120
Objetos virtuales v2.0 Distribuidos
8.3 CONCLUSIONES
121
Capítulo 9
CAPÍTULO 9
OBJETOS VIRTUALES V3.0 EN LA WEB
9.1 INTRODUCCIÓN
Figura 9.1 – Evolución del modelo Objetos virtuales distribuidos a Objetos virtuales en la web.
122
Objetos virtuales v3.0 En la web
gran parte de las tecnologías web actuales. Esta nueva versión de la propuesta presenta
una especificación de diseño de un Navegador Web Sensible al contexto que adopta parte
de las funcionalidades propias de la arquitectura de los Objetos Virtuales v2.0
Distribuidos (Fig.9.2).
Figura 9.2 – Comparación entre los Objetos virtuales Distribuidos y los Objetos virtuales En la web. Las partes
resaltadas señalan los componentes comunes o equivalentes presentes en ambos modelos.
123
Capítulo 9
9.2 MODELO
Cliente. En el otro lado está el navegador web sensible al contexto, esta aplicación
es la responsable de procesar las etiquetas XML de contexto. Cuando el navegador
sensible al contexto procesa una etiqueta XML de contexto conocida, notifica al usuario
el requerimiento. Si el usuario acepta el requerimiento significa que permite al
navegador web sensible al contexto gestionar el elemento hardware concreto capaz de
satisfacerlo. Una vez el usuario acepta un requerimiento, el navegador web sensible al
contexto ejecuta la tarea programada de contexto asociada a la etiqueta XML de
contexto concreta. Por lo general las tareas programadas de contexto gestionan alguno
de los elementos hardware del dispositivo, con el objetivo de capturar información de
contexto o realizar algún tipo de comunicación. Cuando el navegador sensible al
contexto finaliza la tarea programada de contexto remite el resultado a la aplicación
web (Fig.9.4).
Esta versión del navegador web sensible al contexto está basada en parte de la
arquitectura del visor de objetos virtuales distribuidos. El navegador web sensible al
contexto ha sido específicamente diseñado para visualizar aplicaciones web, a
diferencia del antiguo componente este navegador permite procesar lenguajes web
(HTML, CSS, Javascript) de la misma forma que un navegador tradicional (Internet
Explorer, Chrome, Safari, etc). Sin embargo cuando el navegador web sensible al
contexto procesa una etiqueta XML de contexto lo hace de una forma similar al visor
de objetos virtuales.
124
Objetos virtuales v3.0 En la web
Figura 9.3 - (1) El navegador sensible al contexto realiza una petición al servidor web (2) El servidor web
responde con una página web HTML que contiene etiquetas XML de contexto. (3) El navegador web sensible al
contexto procesa el contenido del fichero HTML y ejecuta las tareas programadas de contexto correspondientes.
(4) Las tareas programadas de contexto utilizan los elementos hardware del dispositivo para capturar la
información de contexto, el resultado es procesado y enviado al servidor web.
Figura 9.4 - Diagrama de secuencia simplificado. Procesamiento de una petición de información de contexto.
125
Capítulo 9
Esta propuesta define un conjunto abierto de etiquetas XML de contexto, en el que tienen
cabida la mayoría de los tipos de información de contexto y acciones de comunicación que
los Smartphones actuales son capaces de manejar. Seguramente no todos los dispositivos
móviles serán capaces de dar soporte al conjunto completo de etiquetas XML de contexto
definido, el factor de compatibilidad será dependiente de las características técnicas del
dispositivo en cuestión. El navegador web sensible al contexto será el encargado de
notificar al usuario si existe algún requerimiento especial por parte de la aplicación web
que el dispositivo móvil cliente no esté en condiciones de satisfacer, por ejemplo debido a
que no dispone del hardware adecuado, o que el elemento hardware necesario no está
preparado; un caso típico seria la ausencia de cobertura GPS cuando una aplicación web
solicita la localización actual.
126
Objetos virtuales v3.0 En la web
Las etiquetas XML de contexto enmarcadas en esta categoría sirven para especificar
requerimientos de información de contexto que podríamos denominar como básicos.
Estos requerimientos solicitan información de contexto que será obtenida utilizando los
elementos hardware del dispositivo. Una vez completado el proceso de obtención de la
información de contexto, esta será enviada a la aplicación web sin aplicar sobre ella
ningún tipo de procesamiento.
Posición.
<magneticfield/>
Obtiene el valor actual registrado por el sensor de campo magnético. Este valor consta de
tres componentes, los cuales contienen el valor de la fuerza del campo geomagnético a lo
largo de los ejes X, Y y Z; el valor de las mediciones esta expresado en µT microteslas.
Este sensor es útil para detectar la cercanía de ciertos objetos metálicos.
Figura 9.5 - Las líneas de la fuerza del campo magnético de la Tierra son mostradas en un corte longitudinal que
pasa a través del eje magnético
<proximity/>
Obtiene el valor actual registrado por el sensor de proximidad. Los sensores de
proximidad son capaces de detectar algunos objetos físicos cercanos sin que llegue a
producirse contacto alguno. Este sensor suele estar localizado cerca del altavoz del
teléfono. El valor de su medición esta expresado en cm.
<orientation/>
Obtiene el valor actual registrado por el sensor de orientación. Este valor está compuesto
por tres coordenadas que expresan la orientación del dispositivo en los ejes X, Y y Z; el
valor de las mediciones está expresado en grados.
127
Capítulo 9
Figura 9.6 - Representación gráfica de los ejes de referencia tomados por el sensor de orientación del dispositivo.
128
Objetos virtuales v3.0 En la web
Movimiento
<accelerometer/>
Es el sensor de movimiento más utilizado. Obtiene el valor actual de la aceleración del
dispositivo en los ejes X, Z y Y; el valor de la aceleración se expresa con números enteros
que pueden tomar valores negativos dependiendo de la orientación de la aceleración.
Figura 9.7 - Representación gráfica de los ejes de referencia tomados por el sensor de aceleración del dispositivo.
<gravity/>
Obtiene el valor actual registrado por el sensor de gravedad. La medición se expresa en
un valor decimal m/s^2.
Entorno
<lightSensor/>
Obtiene el valor actual del sensor de luz del dispositivo. La luz ambiental se expresa en un
número decimal comprendido entre 0 y 1.
<temperature/>
Obtiene el valor actual del sensor de temperatura. La medición se expresa en un valor
entero que indica los grados.
Multimedia
<audiocapture/>
Obtiene una grabación de audio utilizando el micrófono del dispositivo. El usuario es el
encargado de indicar cuál es el momento de inicio y de fin de la grabación. El resultado de
la acción será un fichero de audio preferentemente en formato ogg o wav, aunque puede
variar dependiendo de las características del dispositivo.
Los atributos opcionales propios de esta etiqueta son útiles para configurar el proceso de
grabación de audio permitiendo personalizar factores como el tipo de formato preferente
y el tiempo máximo de grabación.
129
Capítulo 9
<camera/>
Utiliza la cámara del dispositivo para tomar una foto. El resultado de la acción será un
fichero de tipo imagen preferentemente en formato jpeg / jpg, aunque puede variar
dependiendo de las características del dispositivo.
Los atributos opcionales propios de esta etiqueta son útiles para configurar la cámara de
fotos antes de que se tome la fotografía permitiendo personalizar factores como el tipo de
formato preferente.
Localización
<location/>
Obtiene la localización actual del dispositivo. La localización actual está definida por las
coordenadas geográficas latitud y longitud ambos valores se expresan como números
decimales separados por una coma.
Los atributos opcionales propios de esta etiqueta permiten especificar la fuente de la
localización seleccionando entre Wi-Fi o GPS.
Figura 9.8 - En algunos casos el procesamiento de la información de contexto básica reduce la información
capturada exclusivamente al contenido útil.
130
Objetos virtuales v3.0 En la web
Multimedia
<camerabarcode/>
Utiliza la cámara del dispositivo como escáner visual para decodificar un código de barras
lineal. El resultado de la acción será una cadena de texto con la información contenida en
el código de barras.
<cameraqrcode/>
Utiliza la cámara del dispositivo como escáner visual para decodificar un código QR, estos
códigos almacenan información en una matriz de puntos bidimensional. El resultado de
la acción será una cadena de texto con la información contenida en el código QR.
131
Capítulo 9
< audiocaptureSpeech/>
Utiliza el micrófono del dispositivo para capturar la voz de las personas y traducirla a
texto. El usuario es el encargado de indicar cuál es el momento de inicio y de fin de la
grabación. El resultado de la acción será una cadena de texto con el contenido de la
grabación aplicando técnicas de reconocimiento de voz.
Los atributos de esta etiqueta permiten configurar el idioma de entrada que se utilizará
en el proceso de reconocimiento de las palabras en la grabación de audio.
<bluetooth/>
Utiliza el módulo de comunicaciones Bluetooth del dispositivo para realizar diferentes
acciones, entre las que se encuentran: emparejamientos, escaneos en busca de
dispositivos cercanos, conexiones, desconexiones, recepción y envío de datos.
<wi-fi/>
Utiliza el módulo de comunicaciones Wi-Fi del dispositivo para realizar diferentes
acciones, entre las que se encuentran: escaneos en busca de dispositivos cercanos,
conexiones a dispositivos ad-hoc, desconexiones, recepción y envío de datos.
<nfc/>
Utiliza el módulo de comunicaciones NFC del dispositivo para realizar procesos de lectura
y escritura de etiquetas.
Los usuarios visualizan los requerimientos expresados por las etiquetas XML de contexto
contenidas en la capa de presentación de la aplicación web o el objeto virtual como
botones, estos controles tienen unas características diferentes a las del propio código
HTML por ello se encuentran fuera del propio proceso de visualización de la página web.
Estos botones expresan de manera visual utilizando un icono identificativo (aunque puede
ser modificado) el tipo de información de contexto o acción de comunicación que está
siendo requerida por parte de la aplicación web. Cuando el usuario presiona sobre uno de
estos botones está dando su consentimiento expreso para que el navegador sensible al
132
Objetos virtuales v3.0 En la web
133
Capítulo 9
Las peticiones POST que encapsulan la información de contexto capturada por los
elementos hardware del dispositivo contienen un código de identificación presente en
todas las cabeceras HTTP, denominamos a este código como DSK (Device Session Key)
“Clave de sesión de dispositivo”. Este código se utiliza para que los servicios o aplicaciones
que procesan la información de contexto puedan identificar al dispositivo que ha remitido
la información y también desde qué sesión lo ha hecho, algo similar al objeto session que
se aplica en las aplicaciones web.
El DSK no sólo está adjunto en todas las cabeceras de las peticiones POST que transmiten
información de contexto sino que también lo está en todas las peticiones del navegador
web sensible al contexto. De esta forma se puede relacionar de manera relativamente
simple a un usuario que accede a la aplicación web con la información de contexto que
está siendo recibida en un momento determinado.
El DSK está formado por una combinación de caracteres que se obtienen a partir del
código Imei único del dispositivo más un identificador que corresponde a la sesión actual
del hilo de navegación. Procesando el DSK la aplicación web es capaz de saber si dos
peticiones provienen de una misma sesión, incluso si provienen de un mismo dispositivo
aunque sea en sesiones diferentes.
Figura 9.10 - El DSK se forma a partir de la combinación del identificador único del dispositivo y él identificador de
sesión del navegador.
134
Objetos virtuales v3.0 En la web
9.3.4.3 Identificador
El atributo ID puede añadirse de manera opcional a las etiquetas XML de contexto. Si las
etiquetas contienen este atributo su valor también viaja junto al DSK en las cabeceras de
las peticiones POST que remiten la información de contexto a la aplicación web. De esta
forma, el servicio encargado de procesar la información de contexto puede detectar como
respuesta a qué etiqueta XML de contexto corresponde la información de contexto que ha
recibido.
Cuando una aplicación web o un objeto virtual incluye varias etiquetas XML de contexto
del mismo tipo, por ejemplo dos etiquetas <camera/>, es necesario incluir un atributo “id”
en cada una de ellas, de esta forma pueden ser identificadas. El identificador de la etiqueta
XML de contexto se incluye como cabecera en la petición POST que el navegador sensible
al contexto envía a la aplicación web como respuesta del requerimiento. La aplicación web
utilizará estos identificadores para determinar el origen de la información recibida.
Figura 9.12 – Envío de datos basado en el uso del atributo ID para identificar la etiqueta XML de contexto.
135
Capítulo 9
9.3.4.4 Grupos
Conceptualmente las etiquetas XML de contexto tienen aspectos similares a los campos de
un formulario web. En los formularios web clásicos la información de todos los campos se
envía de manera conjunta cuando el usuario pulsa el botón de envío, obviamente este
mecanismo resulta mucho más eficiente que realizar un envío individual por cada uno de
los campos del formulario.
Cada uno de los botones que el navegador web sensible al contexto asocia a las etiquetas
XML de contexto son en esencia entradas de datos, solo que estos datos en lugar de ser
introducidos por los usuarios se obtienen de manera automática utilizando los elementos
hardware del dispositivo móvil. Una misma página web puede contener varias etiquetas
XML de contexto, por ejemplo un objeto virtual que detecta la contaminación acústica en
una ciudad podría solicitar la ubicación actual y un fichero de audio. En este caso tanto la
ubicación como el fichero de audio podrían ser procesados por un mismo receptor
(servicio web), por lo que no sería estrictamente necesario enviar cada dato en una
petición individual. En estos casos los datos pueden ser combinados en un único envío y
de esta forma optimizar la comunicación entre el navegador y la aplicación receptora de
los datos.
Combinando el uso del atributo “id” con el atributo “group” un grupo de etiquetas XML de
contexto puede actuar de forma conjunta, realizando los envíos de datos en una única
petición POST. Para definir un grupo compuesto por varias etiquetas XML de contexto, se
debe incluir en las etiquetas un atributo “group”, el valor de éste será el mismo en todas
ellas: el identificador del grupo. Cuando los requerimientos de todas las etiquetas XML de
contexto pertenecientes al grupo han sido satisfechos el navegador sensible al contexto
envía una petición POST a la aplicación web, esta petición contiene en su cabecera el
identificador del grupo “group” y el número de miembros “members”. En el cuerpo de la
petición se adjunta la respuesta correspondiente a cada una de las etiquetas XML de
contexto.
Figura 9.13 - Envío de datos basado en la utilización de grupos para unificar en una sola petición la respuesta de
varias etiquetas XML de contexto.
136
Objetos virtuales v3.0 En la web
Identificación y grupos
id
group
Bucles
timeInterval
Recepción de información
receiver
Representación grafica
text
image
x
y
Id
Valores:
Identificador: cadena de texto.
137
Capítulo 9
group
El atributo group se utiliza para indicar que varias etiquetas XML de contexto
operan de manera conjunta.
Este atributo debe incluirse con el mismo valor en todas las etiquetas que
forman parte de un mismo grupo. Las tareas programadas asociadas a las
etiquetas de un mismo grupo realizan el envío de información de contexto de
forma conjunta concentrando toda la información capturada en una única
petición, de esta forma puede optimizase el tráfico de datos entre el navegador y
el servidor.
Valores:
Nombre/Identificador del grupo: cadena de texto.
Combinaciones de atributos:
Group debe combinarse con el atributo members.
Group debe combinarse con el atributo id.
Group debe combinarse con el atributo receiver.
timeInterval
Valores:
Intervalo de tiempo: número entero de segundos.
138
Objetos virtuales v3.0 En la web
receiver
El atributo receiver se utiliza para especificar la URL del servicio que procesará
la respuesta del navegador web sensible al contexto al requerimiento expresado
en la etiqueta XML de contexto.
En ausencia de la definición de atributo receiver cada etiqueta XML de contexto
le asignará un valor por defecto.
Valores:
URL del servicio receptor. La URL especificada en este atributo puede
ser absoluta (http://www.miapplication.com/receptor) o relativa a la
URL base de la aplicación (/receptor equivalente a URL Base/receptor).
text
El atributo text se utiliza para sustituir la imagen por defecto que se le asigna a la
representación gráfica de la etiqueta XML de contexto por un botón textual
básico.
En ausencia de la definición de este atributo se asignará la correspondiente
imagen por defecto a la representación gráfica de la etiqueta XML de contexto.
Valores:
Texto del botón: cadena de texto.
image
El atributo image se utiliza para sustituir la imagen por defecto que se le asigna a
la representación gráfica de la etiqueta XML de contexto por una imagen
personalizada preferentemente en formato png o jpg.
En ausencia de la definición de este atributo se asignará la correspondiente
imagen por defecto a la representación gráfica de la etiqueta XML de contexto.
Valores:
URL de la imagen: URL de una imagen.
Valores:
Posición en el eje X: Un % relativo al tamaño de la pantalla, o una
medida absoluta en pixeles (px). Por ejemplo: x=”50%”, x=”200px”
139
Capítulo 9
Valores:
Posición en el eje Y: Un % relativo al tamaño de la pantalla, o una
medida absoluta en pixeles (px). Por ejemplo: y=”10%”, y=30px”
140
Objetos virtuales v3.0 En la web
Posición
magneticfield
proximity
orientation
Movimiento
accelerometer
grativy
light
temperature
Multimedia
audioCapture
camera
Localización
location
141
Capítulo 9
Introducción
Esta etiqueta se utiliza para obtener el valor actual registrado por el sensor de campo
magnético.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un sensor
de campo magnético.
Retorno:
Cadena de texto que contiene el valor del campo magnético en los ejes X, Y y Z expresado
en µT microteslas, los valores se separan utilizando el carácter “,”.
Atributos
accuacy
Valores:
Número positivo
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no
la envía.
false envía todas las mediciones
Combinaciones de atributos :
sensitive con timeInterval
142
Objetos virtuales v3.0 En la web
Introducción
Esta etiqueta se utiliza para obtener el valor actual registrado por el sensor de proximidad.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un sensor
de proximidad.
Retorno:
Valor numérico expresado en cm.
Atributos
accuacy
Valores:
Número positivo
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no
la envía.
false envía todas las mediciones
Combinaciones de atributos:
sensitive con timeInterval
143
Capítulo 9
Introducción
Esta etiqueta se utiliza para obtener el valor actual registrado por el sensor de orientación.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un sensor
de orientación.
Retorno:
Cadena de texto que contiene el valor y la orientación del dispositivo en los ejes X, Y y Z
expresados en grados, los valores se separan utilizando el carácter “,”.
Atributos
accuacy
Valores:
Número positivo
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no
la envía.
false envía todas las mediciones
Combinaciones de atributos:
sensitive con timeInterval
144
Objetos virtuales v3.0 En la web
Introducción
Esta etiqueta se utiliza para obtener el valor actual de la aceleración del dispositivo.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un
acelerómetro.
Retorno:
Cadena de texto que contiene el valor de la aceleración del dispositivo en los ejes X, Y y Z.
Las mediciones en cada uno de los ejes pueden tomar valores positivos o negativos
dependiendo de la orientación de la aceleración, los valores se separan utilizando el
carácter “,”.
Atributos
accuacy
Valores:
Número positivo, este valor se tomara como absoluto en caso de que la
aceleración en alguno de los dos tres ejes sea negativa.
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no
la envía.
false envía todas las mediciones
Combinaciones de atributos:
sensitive con timeInterval
145
Capítulo 9
Introducción
Esta etiqueta se utiliza para obtener el valor actual registrado por el sensor de gravedad.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un sensor
de campo gravitatorio.
Retorno:
Número decimal, el valor de retorno esta expresado en m/s^2.
Atributos
accuacy
Valores:
Número positivo
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no
la envía.
false envía todas las mediciones
Combinaciones de atributos:
sensitive con timeInterval
146
Objetos virtuales v3.0 En la web
9.4.2.6 Light<light/>
Introducción
Esta etiqueta se utiliza para obtener el valor actual registrado por el sensor de luz.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un sensor
de luz.
Retorno:
Número decimal comprendido entre 0 y 1. 0 corresponde al nivel de luz más bajo y 1 al
más alto.
Atributos
accuacy
Valores:
Número positivo decimal menor que uno.
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no
la envía.
false envía todas las mediciones
Combinaciones de atributos:
sensitive con timeInterval
147
Capítulo 9
Introducción
Esta etiqueta se utiliza para obtener el valor actual registrado por el sensor de
temperatura.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un sensor
de temperatura.
Retorno:
Número entero, el valor de retorno esta expresado grados centígrados.
Atributos
accuacy
Valores:
Número positivo.
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no
la envía.
false envía todas las mediciones
Combinaciones de atributos:
sensitive con timeInterval
148
Objetos virtuales v3.0 En la web
Introducción
Esta etiqueta se utiliza para obtener una grabación de audio utilizando el micrófono del
dispositivo.
Restricciones
El dispositivo debe disponer de espacio de almacenamiento libre para poder guardar
temporalmente el fichero de audio.
Interacción de usuario
Retorno:
Fichero de audio, preferiblemente estará en formato .wav u .ogg aunque puede variar
dependiendo de las características técnicas del dispositivo.
Atributos
format
Valores:
Cadena de texto: .ogg, .wav, .mp3, .mp4, .3gp, .aiff, .caf.
maxTime
Valores:
Segundos.
149
Capítulo 9
Introducción
Esta etiqueta se utiliza para obtener una fotografía tomada por la cámara principal del
dispositivo.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con una cámara
de fotos.
Interacción de usuario
Retorno:
Fichero de tipo imagen que preferiblemente estará en formato .jpg u .png aunque puede
variar dependiendo de las características técnicas del dispositivo.
Atributos
format
Define el formato del fichero de tipo imagen que se obtiene como respuesta. En
ausencia de especificarse un formato soportado se utilizará el formato por
defecto seleccionado por el sistema operativo del dispositivo.
Valores:
png
jgp
150
Objetos virtuales v3.0 En la web
Introducción
Esta etiqueta se utiliza para obtener la localización actual del dispositivo
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con alguno de
los elementos hardware que pueden facilitar la obtención de la localización actual, como
chip GPS o Wi-Fi.
Retorno:
Cadena de texto con las coordenadas geográficas longitud y latitud, separadas por el
carácter “,”.
Atributos
source
Valores:
GPS: utiliza el chip para la obtención de la ubicación GPS (Opción por
defecto).
Network: obtiene la ubicación de la red a la que esté conectado el
dispositivo Wi-Fi, 3G, etc.
Combinaciones de atributos:
Accuacy con sensitive
accuacy
Valores:
Número positivo.
Combinaciones de atributos:
Accuacy con sensitive
sensitive
Valores:
true en caso de que la medición obtenida sea igual a la última enviada, no la
envía.
false envía todas las mediciones
Combinaciones de atributos:
151
Capítulo 9
152
Objetos virtuales v3.0 En la web
Multimedia
audioCaptureSpeech
cameraBarCode
cameraQRCode
Introducción
Esta etiqueta utiliza el micrófono del dispositivo para capturar una conversación, esta
grabación es analizada con un algoritmo para reconocer el discurso del usuario.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con un
micrófono.
Interacción de usuario
Retorno:
Cadena de texto con el discurso obtenido a partir del análisis de la grabación realizada.
Atributos
language
Idioma.
Valores:
Código ISO 639-1 del idioma: EN, ES, FR, EL, IT, JA, etc.
153
Capítulo 9
Introducción
Esta etiqueta se utiliza para decodificar un código de barras lineal empleando como
escáner la cámara principal del dispositivo.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con una cámara
de fotos.
Interacción de usuario
- Enfocar el código de barras lineal.
Retorno:
Cadena de texto con la información decodificada que contiene el código de barras lineal.
154
Objetos virtuales v3.0 En la web
Introducción
Esta etiqueta se utiliza para decodificar un código QR empleando como escáner la cámara
principal del dispositivo.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con una cámara
de fotos.
Interacción de usuario
- Enfocar el código de barras QR.
Retorno:
Cadena de texto con la información decodificada que contiene el código QR.
155
Capítulo 9
Comunicación
bluetooth
wi-fi
nfc
Introducción
Esta etiqueta se utiliza para definir acciones de comunicación que emplean la
especificación Bluetooth para establecer vinculaciones y comunicaciones entre el
dispositivo objeto y otros dispositivos cercanos.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con el hardware
necesario.
Atributos
156
Objetos virtuales v3.0 En la web
Action
Valores:
scan escanea la red en busca de dispositivos bluetooth.
pairDevice fuerza el emparejamiento con un dispositivo.
unPairDevice fuerza el desemparejamiento de un dispositivo.
connectDevice establece una conexión con un dispositivo.
En caso de requerir el emparejado lo realiza de forma automática.
En caso de no especificarse el dispositivo objeto se realiza un escaneado
de forma automática.
disconnectDevice corta la conexión con un dispositivo.
write envía una cadena de datos (bytes).
listen escucha hasta recibir una cadena de datos (bytes).
157
Capítulo 9
158
Objetos virtuales v3.0 En la web
Pair
Valores:
true requiere emparejamiento (Opción por defecto).
false conexión insegura que no requiere emparejamiento.
159
Capítulo 9
DeviceName
Valores:
Nombre del dispositivo cadena alfanumérica.
Dirección Bluetooth una dirección bluetooth válida.
160
Objetos virtuales v3.0 En la web
UUID
Valores:
UUID consiste en 32 dígitos hexadecimales mostrados en cinco grupos
separados por guiones. Un valor del UUID seria por ejemplo: 5ee01872-4c9e-
48d6-9f61-015ff816b278.
Data
Valores:
Data cadena de bytes.
161
Capítulo 9
Introducción
Esta etiqueta se utiliza para definir acciones de comunicación que emplean la
especificación Wi-Fi Ad-Hoc para establecer vinculaciones y comunicaciones entre el
dispositivo objeto y otros dispositivos cercanos.
Las redes Ad Hoc habilitan la comunicación punto a punto entre dispositivos Wi-Fi, Cada
uno de los dispositivos se comunica directamente con los demás a través de las señales de
radio sin usar un punto de acceso. Solamente los dispositivos dentro de un rango de
transmisión definido pueden comunicarse entre ellos.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con el hardware
necesario.
Atributos
162
Objetos virtuales v3.0 En la web
Action
Valores:
scan escanea la red en busca de dispositivos Wi-Fi Ad-hoc.
connectDevice establece una conexión con un dispositivo.
En caso de no especificarse el dispositivo objeto se realiza un escaneado
de forma automática.
write envía una cadena de datos (bytes).
listen escucha hasta recibir una cadena de datos (bytes).
disconnectDevice fuerza el desemparejamiento de un dispositivo.
163
Capítulo 9
DeviceName
Valores:
Nombre del dispositivo cadena alfanumérica.
Identificador único MAC-48.
Data
Valores:
Data cadena de bytes.
164
Objetos virtuales v3.0 En la web
Introducción
Esta etiqueta se utiliza para definir acciones de comunicación que emplean la
especificación NFC para establecer vinculaciones y comunicaciones entre el dispositivo
objeto y otros dispositivos cercanos.
Restricciones
Para poder utilizar esta etiqueta el dispositivo objeto debe estar equipado con el hardware
necesario.
Atributos
Action
Valores:
write envía una cadena de datos (bytes).
read escucha hasta recibir una cadena de datos (bytes).
Data
Valores:
Data cadena de bytes.
165
Capítulo 9
9.5.1 Introducción
El navegador web sensible al contexto es una de las piezas claves de esta arquitectura. La
especificación del navegador web sensible al contexto está formada por una arquitectura y
una serie de requerimientos funcionales que deben ser aplicados con el fin de realizar una
implementación válida de este navegador.
Interpretar de la misma forma que los navegadores web comunes (Internet Explorer,
Chrome, Safari, etc) las páginas web basadas tanto en lenguajes web estandarizados
como en otras tecnologías web de amplia difusión y aceptación.
Debe notificar a los usuarios los requerimientos provenientes de las etiquetas XML de
contexto contenidas en la página web. El navegador web sensible al contexto debe dar
la oportunidad al usuario de aceptar o rechazar cada uno de los requerimientos
procedentes de las etiquetas XML de contexto. El navegador web sensible al contexto
debe comunicarle al usuario en todo momento el estado actual de cada una de las
peticiones de información de contexto que contiene la página web, es decir si se ha
iniciado el proceso, si se está ejecutando, si el proceso finalizo correctamente, si se ha
producido algún error, etc.
166
Objetos virtuales v3.0 En la web
9.5.2 Arquitectura
La arquitectura propuesta para el navegador web sensible al contexto está compuesta por
tres capas (Fig.9.17).
167
Capítulo 9
Los navegadores web convencionales son aplicaciones que operan a través de Internet
accediendo a ficheros “páginas web” que contienen información en determinados
formatos estandarizados, como HTML, css y Javascrip. Esta información es interpretada
por el navegador y presentada a los usuarios, para que estos sean capaces de interactuar
con el contenido de la página. El objetivo de esta capa es permitir al navegador web
sensible al contexto interpretar los lenguajes web estándares soportados por los
navegadores web convencionales, como por ejemplo: Internet Explorer, Chrome, o Safari.
Esta capa será la encargada de representar exclusivamente aquellos datos que tengan que
ver con los lenguajes convencionales de la web y no tendrá ninguna relación con la
representación de las etiquetas XML de contexto. Los aspectos relativos a la
representación de las etiquetas XML de contexto se encapsulan en el Gestor de etiquetas
XML de contexto, este componente se encarga de representar gráficamente las etiquetas
XML de contexto en una capa propia, independiente del resto de los elementos de la web.
Al igual que los navegadores tradicionales esta capa se encarga de realizar las peticiones
HTTP al servidor para solicitar páginas, enviar información, etc. Todas las peticiones HTTP
y HTTPs procedentes del navegador web sensible al contexto contendrán una cabecera
DSK “Clave de sesión de dispositivo”. Esta clave debe generarse cada vez que se arranca el
navegador web sensible al contexto. El DSK se forma a partir de la concatenación de dos
elementos:
El mecanismo de codificación MD5 hash será sustituido en un futuro por un algoritmo que
ofrezca un nivel de seguridad más alto.
Las plataformas móviles más populares en la actualidad: Android, Apple iOS, Windows
Mobile, Symbian iOs y Blackberry incluyen componentes predefinidos que encapsula la
funcionalidad básica del navegador web del dispositivo, este componente puede resultar
útil para el desarrollo de esta capa.
168
Objetos virtuales v3.0 En la web
Figura 9.18 – El analizador XML comprueba si las etiquetas XML de contexto esta soportada por la plataforma.
Una vez han sido identificadas todas las etiquetas XML de contexto contenidas en
la página web se almacenan en una lista. Cada una de las etiquetas XML de
contexto se guarda junto a sus atributos, la lista completa se remite al siguiente
módulo del gestor de etiquetas XML de contexto, el visualizador de etiquetas
XML de contexto. En caso de que la lista contenga varias etiquetas XML de
contexto pertenecientes al mismo grupo se incluirá un atributo auto-generado
“members” en cada una de ellas, el cual indica el número de miembros que
componen el grupo.
169
Capítulo 9
botones que se muestran por pantalla estará asociado a una etiqueta XML de
contexto concreta.
Figura 9.19 - Utiliza el nombre de la etiqueta y el valor de algunos de sus atributos para generar la representación
gráfica de la etiqueta XML de contexto. Esta representación se añade a una capa independiente que se superpone
a la vista encargada de mostrar los controles web.
Figura 9.20 - En la captura se muestran los formatos de botones que se asocian a las etiquetas XML de contexto.
170
Objetos virtuales v3.0 En la web
Tipos de notificaciones:
(1) Preparada
(2) En tratamiento
(3) Completada
(4) Error
Figura 9.21 – El visualizador de etiquetas XML de contexto modifica la representación gráfica de la tarea en
función de las notificaciones recibidas por parte del gestor de tareas programadas de contexto.
Al mantener pulsado uno de los botones asociados a las etiquetas XML de contexto el
navegador web sensible al contexto debe de mostrar el contenido de la etiqueta. De esta
forma el usuario puede conocer los detalles de la etiqueta asociada antes de aceptar el
requerimiento.
Cuando el usuario pulsa sobre uno de los botones asociados a la etiqueta XML de contexto
el gestor de etiquetas XML de contexto envía la etiqueta y el conjunto de sus atributos al
gestor de tareas programadas de contexto, concretamente al componente lanzador de
tareas.
171
Capítulo 9
Las tareas programadas de contexto son módulos independientes de código ejecutable con
una funcionalidad concreta. Cada tarea programada de contexto tiene una funcionalidad
bien definida, por norma general ésta requiere de la utilización del API del sistema para
permitir la gestión de los elementos hardware del dispositivo. La tarea programa de
contexto utilizará los elementos hardware del dispositivo para capturar un tipo concreto
de información de contexto o realizar una acción de comunicación. Algunas tareas
programadas de contexto se limitan a capturar la información de contexto, otras aplican
una serie de algoritmos para procesar la información capturada. Por ejemplo, en el caso de
los códigos QR los algoritmos contenidos en la tarea analizarán una imagen con el fin de
decodificar la información.
El gestor de tareas programadas de contexto está formado por los siguientes módulos:
Cada tipo de etiqueta XML de contexto está asociado a una tarea programada de
contexto específica. Cuando se lanza una tarea programada de contexto esta se
encuentra en estado: (1) Preparado, dependiendo del flujo de ejecución la tarea
puede cambiar su estado a (2) En tratamiento (3) Completada (4) Error, cada vez
que se produce un cambio en el estado de la tarea, este notifica al Visualizador de
etiquetas XML de contexto . Cuando las tareas programadas de contexto finalizan
una acción remiten la información capturada o la respuesta a la acción de
comunicación al módulo gestor de respuestas. Junto a la respuesta se adjuntan
los atributos “id”, “group”, “members” (auto-generado), en caso de que estos hayan
sido definidos en la etiqueta XML de contexto que inicio la ejecución de la tarea.
172
Objetos virtuales v3.0 En la web
información en una petición POST que envía a la URL que se haya especificado en
el atributo “receiver” de la etiqueta XML de contexto. Por norma general este
módulo realiza los envíos de datos de manera automática al recibir las respuestas
de la tarea programada de contexto. Este proceso se cumple a no ser que la
respuesta contenga los atributos “group” y “members”; en este caso el gestor de
respuestas esperará a recibir la información de todos los miembros del grupo
antes de proceder al envío de la información de forma conjunta.
o Cabecera:
o Cuerpo:
173
Capítulo 9
Algunos de los atributos que pueden ser definidos de manera opcional en las etiquetas
XML de contexto son de carácter general y no tienen que ver directamente con el propio
proceso de captura de la información de contexto o acción de comunicación. Estos
atributos permiten definir aspectos como la periodicidad en la ejecución de la tarea
programada de contexto. Por ejemplo, el atributo “timeinterval” se usaría en el caso de que
la tarea programada de contexto asociada a una etiqueta tuviese que ser ejecutada en
forma de bucle cada cierto intervalo de tiempo.
Todas las tareas programadas de contexto tienen cuatro estados comunes (1) Preparada,
(2) En tratamiento (3) Completada (4) Error. Estos estados son siempre los mismos,
independientemente de la funcionalidad de la tarea programada de contexto. Los estados
se utilizan para notificar al usuario la fase en la que se encuentra la tarea.
(1) Preparada: cuando una tarea programada de contexto esta lista para ser ejecutada
su estado es “preparada”; este estado se manifestará siempre que el teléfono
disponga de los elementos hardware necesarios para poder satisfacer los
requerimientos señalados.
174
Objetos virtuales v3.0 En la web
(3) Completada: una vez la ejecución de la tarea programa de contexto haya finalizado
satisfactoriamente ésta pasará al estado “Completada”. En la mayoría de casos este
será el estado final de la tarea, con la excepción de aquellas ejecuciones de tareas
programadas de contexto que hayan sido lanzadas como bucles. Estas tareas se
ejecutarán periódicamente cada un cierto intervalo de tiempo; en estos casos se
producirá una transición del estado “Completada” a “en tratamiento”, cada vez que
se requiera una nueva interacción.
(4) Error: en el caso de que durante la ejecución de una tarea programada de contexto
se produzca un error irrecuperable que no permita completar la tarea el estado
pasara a ser “Error”.
175
Capítulo 9
9.6.1 CI_magneticfield
Proceso:
176
Objetos virtuales v3.0 En la web
Estado: 3 (Completada)
Acción completada correctamente.
Ret: 0, Estado: 4 (Error)
Se ha producido un error.
177
Capítulo 9
9.6.2 CI_proximity
Proceso:
178
Objetos virtuales v3.0 En la web
9.6.3 CI_orientation
Proceso:
179
Capítulo 9
9.6.4 CI_accelerometer
Proceso:
180
Objetos virtuales v3.0 En la web
9.6.5 CI_gravity
Proceso:
181
Capítulo 9
9.6.6 CI_light
Proceso:
182
Objetos virtuales v3.0 En la web
9.6.7 CI_temperature
Proceso:
183
Capítulo 9
9.6.8 CI_audioCapture.
Proceso:
184
Objetos virtuales v3.0 En la web
9.6.9 CI_camera.
Proceso:
185
Capítulo 9
9.6.10 CI_location.
Proceso:
186
Objetos virtuales v3.0 En la web
187
Capítulo 9
9.6.11 CIC_audioCaptureSpeech
Proceso:
188
Objetos virtuales v3.0 En la web
9.6.12 CIC_cameraBarCode
Proceso:
189
Capítulo 9
9.6.13 CIC_cameraQRCode
Proceso:
190
Objetos virtuales v3.0 En la web
9.6.14 CA_Bluetooth
Procesos:
191
Capítulo 9
192
Objetos virtuales v3.0 En la web
193
Capítulo 9
194
Objetos virtuales v3.0 En la web
9.6.15 CA_wi-fi
Procesos:
195
Capítulo 9
196
Objetos virtuales v3.0 En la web
Se ha producido un error.
197
Capítulo 9
9.6.16 CA_nfc
Procesos:
La tarea CA_nfc se divide en dos procesos distintos condicionados por el valor del
atributo action. Antes de iniciar cualquiera de los dos procesos la tarea cambia su
estado a 2 (En tratamiento).
2. Proceso 1: [action=read]
Utiliza el API específico de la plataforma para gestionar el elemento de
comunicación NFC. En primer lugar el dispositivo escanea el radio cercano en
busca de un elemento NFC accesible. Una vez detectado ejecuta la llamada del
API que permite leer los datos guardados en el elemento NFC.
198
PARTE IV
DESARROLLO DE PROTOTIPOS Y
EVALUACIÓN
199
Capítulo 10
CAPÍTULO 10
DESARROLLO DE PROTOTIPOS
10.1 INTRODUCCIÓN
Para interpretar los prototipos listados se ha desarrollado una versión del navegador web
sensible al contexto para la plataforma móvil Android. Esta versión del navegador sigue
fielmente todas las especificaciones y principios presentados en esta tesis, por lo tanto es
capaz de satisfacer los requerimientos expresados por las etiquetas XML de contexto.
200
Desarrollo de prototipos
Las etiquetas XML de contexto en combinación con el navegador web sensible al contexto
otorgan a las aplicaciones web capacidades funcionales que anteriormente eran difíciles
de conseguir.
En este primer prototipo se han utilizado las etiquetas XML de contexto para desarrollar
una aplicación web capaz de buscar el mejor precio de un determinado producto en los
supermercados cercanos al usuario. Este tipo de aplicaciones son bastante comunes en la
web, en este caso cambiaremos los mecanismos manuales de entrada de datos por
etiquetas XML de contexto. Las etiquetas habilitarán la captura automática de parte de la
información que se requiere para ejecutar la lógica de negocio de la aplicación. La
aplicación web desarrollada tiene una funcionalidad similar a la aplicación ShopSavvy 11de
Android.
11 https://play.google.com/store/apps/details?id=com.biggu.shopsavvy
201
Capítulo 10
<body>
...
<location receiver='location.php'/>
<label>ZIP Code:</label>
<input type="text"
name="location" id="location" value=""/>
<button type="submit">Accept</button>
</form>
...
La página location.php actúa como receptor de las peticiones POST, las cuales contienen
las coordenadas de la ubicación actual del dispositivo. Location.php procesa la petición y
almacena la ubicación en una cookie en el servidor, para posteriormente aplicar esta
ubicación a todas las búsquedas que se realicen dentro de la misma sesión. Para establecer
la relación entre el dispositivo y la ubicación se utilizará la cabecera DSK, la cual viaja en
todas las peticiones que realiza el dispositivo.
Una vez la aplicación web ya tiene la ubicación actual del usuario ya se pueden efectuar
búsquedas de un producto concreto. La página code.php contiene la etiqueta XML de
contexto <camerabarcode receiver=’barcode.php’/>. Cuando el usuario inicia la tarea
asociada a la etiqueta se lanzará una nueva actividad en el teléfono, esta actividad utiliza la
cámara de fotos en modo escáner. Cuando la cámara detecta un código de barras finaliza el
escaneo y le pide al usuario que pulse un botón para confirmar que la acción se ha
realizado correctamente. Inmediatamente después, el navegador web sensible al contexto
envía la posición POST que contiene la decodificación del código de barras del producto a
la URL ‘barcode.php’. A continuación se muestra un fragmento del código fuente de la
página index.php:
<body>
...
<h2> Find Products </h2>
<p> Barcode Scanner </p>
<camerbarcode receiver='barcode.php'/>
...
El navegador web sensible al contexto procesa e interpreta las etiquetas XML de contexto,
mostrándolas como botones en la pantalla del dispositivo. Cuando el usuario pulsa sobre
uno de los botones, el navegador web sensible al contexto ejecuta la tarea programada de
contexto asociada (Fig.10.1).
202
Desarrollo de prototipos
Figura 10.1 - En la captura de pantalla el botón de localización asociado a la etiqueta XML de contexto notifica al
usuario la solicitud de su ubicación actual.
La tarea que se encarga de obtener la ubicación actual del dispositivo utiliza el chip GPS
para obtener las coordenadas longitud y latitud actuales. Una vez obtenidas, se envían
encapsuladas en una petición POST a la URL baseURL/location.php. Durante la ejecución
de la tarea, el botón asociado a la etiqueta XML de contexto cambia su icono. Mediante
estos cambios, el usuario puede percibir que se está ejecutando una tarea. Cuando finaliza
la captura y envío de datos el estilo del botón cambia, para indicar que la tarea se completó
con éxito (Fig.10.2).
Figura 10.2 - En la captura de pantalla el botón asociado a etiqueta XML de contexto indica que el proceso de
obtención y envío de la localización ha finalizado con éxito.
En este caso se han implementado dos páginas que se encargan de procesar y almacenar la
información de contexto que el dispositivo envía para satisfacer los requerimientos
expresados en las etiquetas XML de contexto. En este prototipo, la aplicación web
203
Capítulo 10
almacena los datos recibidos en una cookie del servidor, el identificador único de esta
cookie será el DSK (Fig.10.3).
Figura 10.3 - La petición POST contiene la cabecera DSK, la aplicación web utiliza este atributo para identificar el
dispositivo del que provienen las peticiones procesadas.
204
Desarrollo de prototipos
Figura 10.4 - En la captura de pantalla el botón asociado a la etiqueta XML de contexto <camerabarcode/>
notifica al usuario el requerimiento de lectura de un código de barras.
Figura 10.5 - La captura de pantalla muestra la cámara de fotos del teléfono en modo escáner de códigos de
barras, esta vista se mostrará durante la ejecución de la tarea programada asociada a la etiqueta XML de
contexto <camerabarcode/>.
Una vez que el código de barras ha sido correctamente enviado a la aplicación web el
botón asociado a la etiqueta XML de contexto cambia de apariencia, para notificar al
usuario que la tarea ha finalizado con éxito (Fig.10.6). Ahora, la aplicación web tiene
almacenados en una cookie asociada a la sesión los dos datos que necesita para realizar las
búsquedas: la localización actual del usuario y el identificador del producto. El usuario de
la aplicación web puede pulsar en el enlace “buscar en supermercados”. Cuando la
aplicación web recibe la petición de búsqueda utiliza la DSK contenida en la petición para
seleccionar la cookie que contiene los datos que el usuario envió previamente. Los datos
contenidos en la cookie son utilizados por la aplicación web para realizar una consulta a
un servicio web, este servicio web retorna una lista de supermercados y precios. Los
resultados de la búsqueda se muestran en la página “product.php” (Fig.10.7).
205
Capítulo 10
Figura 10.6 - En la captura de pantalla el botón asociado a la etiqueta XML de contexto <camerabarcode/> indica
que el proceso de obtención y envío del código de barras ha finalizado con éxito.
Figura 10.7 - En la captura de pantalla se muestra la información relativa al producto y el precio al que puede
comprarse en los supermercados cercanos.
206
Desarrollo de prototipos
En este segundo prototipo se han utilizado las etiquetas XML de contexto para desarrollar
una aplicación web que actúa como un navegador GPS, en esencia la aplicación será
similar a Google Navigator o Tomtom12 aunque este prototipo tendrá una funcionalidad
mucho más reducida. La aplicación web navegador GPS se construirá utilizando etiquetas
XML de contexto en combinación con las tecnologías web PHP, HTML , javascript y el API
Google Maps.
La mayoría de navegadores GPS utilizan dos fuentes de información: el chip GPS y una
brújula, aunque este último elemento no resulta imprescindible resulta útil para poder
situar el indicador orientado hacia la posición correcta.
La página principal de la aplicación es index.php; esta página contiene la vista del mapa y
las dos etiquetas XML de contexto que se utilizarán para solicitar la información. La
primera etiqueta XML de contexto solicita la ubicación actual del dispositivo. La segunda
hace referencia al valor registrado por el sensor de campo magnético del dispositivo. El
sensor de campo magnético puede ser utilizado en algunos escenarios para simular una
brújula. Para poder refrescar la ubicación del usuario en el mapa los navegadores GPS
deben obtener la ubicación actual del dispositivo cada pocos segundos. Las etiquetas XML
de contexto permiten configurar ciertos aspectos de los requerimientos de información de
contexto mediante la utilización de atributos. En este caso la etiqueta que se encarga de
solicitar la ubicación <location/> utilizará varios atributos opcionales. Estableceremos
que la ubicación actual se envíe cada 3 segundos, para ello se incluye el atributo
timeinterval en la declaración de la etiqueta XML de contexto. La etiqueta XML de
contexto <location/> puede utilizar otros atributos que sirven para optimizar su
funcionamiento. En muchas ocasiones no es interesante registrar los pequeños cambios en
la ubicación del usuario, puesto que estos cambios no son demasiado relevantes para la
funcionalidad del navegador GPS. El atributo sensitive=”true/false” permite configurar la
tarea programada de contexto asociada a la etiqueta <location/> , de tal forma que esta
solo envíe la ubicación actual del dispositivo si la última coordenada obtenida (longitud,
latitud) experimenta una variación mayor al rango especificado en el atributo
accuacy=”int”. Mediante la utilización de estos atributos se puede optimizar el
comportamiento de la aplicación, reduciendo la cantidad de información que envía el
navegador web sensible al contexto al servidor.
12 http://www.tomtom.com
207
Capítulo 10
<html>
<body onload="startmap()">
<div id="map_canvas"
style="width:100%; height:100%"></div>
<location
timeinterval="3" provider="GPS"
sensitive="true" accuacy="10"
receiver="/services/location.php" />
<magneticfield
timeinterval="3"
sensitive="true" accuacy="10"
receiver="/services/magneticfield.php" />
208
Desarrollo de prototipos
Figura 10.8 - En la primera captura de pantalla el usuario no ha dado su permiso para la captura y envío de la
información de contexto. En la segunda captura el usuario ha pulsado sobre los botones asociados a las etiquetas
XML de contexto, iniciando así la ejecución de las tareas programadas.
La aplicación web implementa dos páginas web de tipo PHP, que tienen como objetivo
recoger y procesar la información de contexto procedente del dispositivo. Tanto la página
"/services/location" como "/services/magneticfield" procesan las peticiones POST
recibidas, almacenando los valores en una cookie del servidor. Al igual que en el prototipo
presentado anteriormente se utiliza el valor de la cabecera DSK para identificar la
procedencia de las peticiones.
Las peticiones que el navegador web sensible al contexto realiza a la página index.php
también contienen la cabecera DSK, de esta forma la aplicación web establece un nexo de
unión entre la información que recibe por ambas vías. La página index.php utiliza el API de
Google Maps para implementar un cliente rico implementado principalmente utilizando
Javascript. Normalmente la mayoría de los clientes ricos realizan llamadas a servicios web
para actualizar sus interfaces de usuario. En este caso se han implementado dos servicios
web muy simples, que serán invocados desde la página index.php. Estos servicios web se
limitan a enviar la información almacenada en la cookie del servidor para un DSK
concreto, el cual reciben como parámetro.
209
Capítulo 10
Figura 10.9 - Diagrama de funcionamiento de la aplicación web navegador GPS. (1) El navegador web sensible al
contexto carga la página principal. (2) La página contiene etiquetas XML de contexto, la ejecución de las tareas
programadas de contexto correspondientes envían la información requerida al servidor, éste almacena la
información en una cookie (3) La página principal realiza llamadas a los servicios web de consulta para obtener la
ubicación y la orientación.
210
Desarrollo de prototipos
Figura 10.10 - Las capturas de pantalla muestran la posibilidad de ocultar los botones asociados a las etiquetas
XML de contexto.
211
Capítulo 10
Tabla 10.3– Información requerida por el prototipo “control remoto para centro multimedia”.
En este tercer prototipo se desarrollará una aplicación web que utiliza etiquetas XML de
contexto para habilitar la comunicación inalámbrica entre el dispositivo objeto que ejecuta
el navegador web sensible al contexto y un dispositivo electrónico cercano.
La aplicación web consta de una única página index.html, desde ella el usuario gestiona el
proceso de conexión y envío de comandos al equipo que está ejecutando el servicio
Bluetooth, el servicio implementa la lógica que permite controlar de manera remota el
centro multimedia.
Para que la aplicación web defina cómo debe establecerse la conexión con el equipo
destino se utiliza la etiqueta <bluetooth/> combinada con el atributo
action=”connectDevice”. Este atributo indica que debe realizarse una nueva conexión.
Cuando la etiqueta bluetooth define una acción de tipo “connectDevice” ésta puede ir
acompañada de otros atributos, como por ejemplo: “deviceName”, para definir el nombre
o la dirección del dispositivo objeto de la conexión, “UUID” para definir el identificador del
servicio, o “pair” que se utiliza para indicar si la conexión requiere un emparejado previo
entre dispositivos. En este caso, como el dispositivo destino puede cambiar dependiendo
del ordenador destino de la comunicación, no se debería utilizar el atributo “deviceName”.
Ante la omisión de este atributo el navegador web realiza un escaneado de dispositivos
Bluetooth cercanos y permite elegir como destino de la conexión a uno de ellos. En este
caso el atributo “UUID” sí será necesario, ya que permite identificar el servicio al que
debemos conectarnos, es decir, el servicio que contienen la lógica de negocio para la
recepción de los comandos que se aplican sobre el reproductor multimedia. El UUID del
servicio será siempre el mismo, independientemente del dispositivo en el que se esté
ejecutando el servicio. Por defecto el emparejado de dispositivos que se específica con la
etiqueta “pair” tiene el valor true, por lo que este atributo “pair” puede omitirse si se
pretende obligar a realizar un emparejamiento antes de realizar la conexión. En caso de
212
Desarrollo de prototipos
<bluetooth action="connectDevice"
UUID="5ee01872-4c9e-48d6-9f61-015ff816b278"
x="50" y="45"/>
Una vez se haya establecido la conexión entre los dispositivos, la aplicación web debe
permitir al usuario seleccionar los comandos que se van a enviar al centro multimedia, con
el objetivo de controlar remotamente su funcionamiento. La aplicación web permitirá
realizar seis acciones diferentes:
Cada una de estas acciones está definida utilizando un código numérico, el cual será
interpretado por el servicio para ejecutar la funcionalidad oportuna sobre el reproductor
multimedia.
213
Capítulo 10
El navegador web sensible al contexto representa las etiquetas XML de contexto como
botones. La primera etiqueta, define el proceso de conexión y utiliza la imagen por defecto
de la tarea bluetooth. El resto de etiquetas utilizan iconos personalizados.
214
Desarrollo de prototipos
Figura 10.12 - Flujo de las acciones derivadas de la ejecución de la tarea programada de contexto que específica
cómo debe establecerse la conexión entre los dispositivos. En función de los atributos utilizados en la etiqueta, el
XML de contexto el flujo de ejecución de las tareas puede variar.
Figura 10.13 - En la primera captura de pantalla el usuario no ha dado su permiso para establecer una conexión
vía bluetooth con otro dispositivo. En la segunda captura de pantalla el usuario ha pulsado sobre el botón que
lanza la tarea de conexión. Dado que la etiqueta XML de contexto no especificaba el dispositivo destino, se
realizará un proceso de escaneo, con el fin de descubrir dispositivos cercanos.
Para continuar con la tarea de conexión el usuario debe seleccionar entre uno de los
dispositivos descubiertos contenidos en la lista, concretamente el que ejecuta el servicio
que permite controlar el centro multimedia. Como en la etiqueta XML de contexto que
215
Capítulo 10
Figura 10.14 - En la primera captura de pantalla el navegador web muestra la lista de dispositivos descubiertos, el
usuario debe seleccionar uno de ellos como dispositivo destino de la conexión. La segunda captura de pantalla
muestra el formulario de emparejamiento de dispositivos.
216
Desarrollo de prototipos
Figura 10.15 - Captura de pantalla aplicación web control remoto para centros multimedia en funcionamiento.
El dispositivo destino ejecuta un servicio que ha sido implementado utilizando java. Para
la implementación de las funcionalidades relativas a la conexión Bluetooth, el servicio
emplea la librería bluecove 13. Inicialmente el servicio está a la espera de conexiones, una
vez que se produce una conexión se inicia el proceso de recepción de comandos. Los
comandos son cadenas de bytes, estas cadenas son analizadas por la lógica del servicio en
busca de coincidencias con los identificadores de los comandos que han sido programados.
Cuando se detecta una coincidencia se procede a ejecutar una acción sobre el centro
multimedia, subir el volumen, bajarlo, etc (Fig.10.16).
Figura 10.16 - La fotografía muestra el equipo que está siendo controlado remotamente por la aplicación web.
13 http://bluecove.org/
217
Capítulo 11
CAPÍTULO 11
EVALUACIÓN
11.1 INTRODUCCIÓN
En este capítulo se presentan los resultados de las diferentes evaluaciones a las que han
sido sometidas varias aplicaciones web que utilizaban la especificación propuesta. Para la
realización de las evaluaciones se han empleado las aplicaciones web desarrolladas en el
capítulo 10. Adicionalmente, en algunos casos se han desarrollado nuevas aplicaciones
web, las cuales se centran específicamente en las características objeto de la evaluación.
Escenarios críticos: en este apartado se analizan los aspectos más relevantes que
condicionan la idoneidad de las aplicaciones para su uso en entornos basados en la
interacción ocasional o puntual con objetos físicos.
218
Evaluación
11.2 RENDIMIENTO
Los tipos de aplicaciones que los usuarios ejecutan de manera más habitual en sus
dispositivos móviles son las aplicaciones nativas y las aplicaciones web. Para abarcar de
manera individual cada uno de estos tipos, esta evaluación del rendimiento se divide en
dos partes, donde se comparan el rendimiento de las aplicaciones web que utilizan la
especificación propuesta con: 1) Aplicaciones nativas y 2) Aplicaciones web.
El dispositivo utilizado para realizar las pruebas ha sido un HTC Aria Smartphone con las
siguientes características técnicas:
Traffic Monitor
Advance Task Manager
TrafficStarts App / Task Manager.
219
Capítulo 11
Funcionalidad de la aplicación:
Figura 11.1 – Aplicación nativa Android (1) Antes de escanear el código de barras (2) después de obtener la
ubicación y escanear el código de barras.
220
Evaluación
El caso de uso se ha repetido un total de 25 veces para cada una de las tres aplicaciones.
Las medias de los consumos de recursos obtenidos en las monitorizaciones se presentan
en el siguiente conjunto de gráficas.
Figura 11.2 – Representación gráfica de la memoria utilizada por el sistema durante la ejecución de las
aplicaciones evaluadas.
Figura 11.2 – Representación gráfica del consumo de segundos de CPU durante la ejecución de las aplicaciones
evaluadas.
A partir del uso de memoria y de los segundos de CPU consumidos es posible evaluar el
rendimiento del dispositivo durante la ejecución de la aplicación. Los valores obtenidos
muestran que el rendimiento de la aplicación nativa es significativamente mejor. Esta
diferencia se debe en parte a que la aplicación nativa ha sido desarrollada de la manera
más simple posible, sin apenas interfaces de usuarios y aplicando unos procesos
relativamente simples. Seguramente la mejora del interfaz de usuario de la aplicación o de
221
Capítulo 11
Figura 11.3 – Representación gráfica del tráfico de red recibido durante la ejecución de las aplicaciones
evaluadas.
Figura 11.4 – Representación gráfica del tráfico de red saliente durante la ejecución de las aplicaciones evaluadas.
El análisis del tráfico de datos durante los casos de uso confirma que el volumen de datos
intercambiado por la aplicación nativa es mucho menor que el de las aplicaciones web;
este resultado era esperado. Las aplicaciones web están alojadas en un servidor, como
consecuencia se requiere un intercambio de ficheros HTML e imágenes. En cambio, la
aplicación nativa únicamente utiliza la red para realizar una consulta a un servidor web y
para obtener la información y la imagen del producto.
222
Evaluación
similar al de una aplicación nativa. La (2) Aplicación web + etiquetas XML de contexto
puede obtener rendimientos similares o incluso mejores que los de las aplicaciones web
clásicas. Esto se debe a que la interpretación y gestión de los controles HTML que realiza el
WebKit es menos eficiente que la de los controles nativos, justamente el tipo de controles
que utiliza el navegador web sensible al contexto para representar los requerimientos de
información de contexto. Adicionalmente, en muchos casos, el uso de los servicios web
para el intercambio de información consigue reducir el tráfico de datos generado por
ciertos controles HTML, como formularios.
Funcionalidad de la aplicación:
Se ha desarrollado una aplicación web que permite introducir en una galería fotografías
geolocalizadas. La aplicación requiere una fotografía y las coordenadas de la ubicación
actual para añadir una fotografía a la galería.
223
Capítulo 11
Figura 11.5 – (1) La aplicación web que utiliza únicamente HTML. (2) La aplicación web que incluye etiquetas XML
de contexto.
En primer lugar el usuario debe tomar una fotografía, asignarle un nombre y añadir las
coordenadas longitud y latitud de su ubicación actual. Cuando el formulario esté completo
el usuario debe pulsar el botón enviar para que los datos se transmitan al servidor y
puedan ser almacenados en la galería.
El caso de uso se ha repetido un total de 25 veces para cada una de las tres aplicaciones. La
media de los consumos de recursos obtenidos en las monitorizaciones se presenta en el
siguiente conjunto de gráficas.
Figura 11.6 – Representación gráfica del consumo de memoria del sistema durante la ejecución de las
aplicaciones evaluadas.
224
Evaluación
Figura 11.7 – Representación gráfica del consumo de CPU durante la ejecución de las aplicaciones evaluadas.
Figura 11.8 – Representación gráfica del tráfico de red recibido durante la ejecución de las aplicaciones
evaluadas.
225
Capítulo 11
Figura 11.9 – Representación gráfica del tráfico de red recibido durante la ejecución de las aplicaciones (1) HTML
y (2) HTML + Etiquetas XML de contexto.
Figura 11.10 – Representación gráfica del tráfico de red saliente durante la ejecución de las aplicaciones
evaluadas.
El análisis del tráfico de red durante la ejecución de los casos de uso ofrece valores
similares para las aplicaciones: (1) Aplicación Web HTML y (2) Aplicación web +
etiquetas XML de contexto, aunque en todos los casos la aplicación que utilizaba las
etiquetas XML de contexto ha requerido de un intercambio de datos menor. Esta
diferencia se ha acentuado especialmente en el envío de datos, donde la (2) Aplicación
web + etiquetas XML de contexto consiguió reducir el tráfico de datos en más de un
50%. Este comportamiento se debe a que en muchos casos el uso de los servicios web para
el intercambio de información consigue reducir el tráfico de datos generado por ciertos
controles HTML, como formularios. La segunda parte de esta evaluación se centrara en el
análisis del proceso de envío de datos.
226
Evaluación
Para realizar esta evaluación se han utilizado veinticinco aplicaciones divididas en tres
grupos. Cada una de las aplicaciones web envía datos a un servidor utilizando 1) un
formulario HTML, 2) varias etiquetas XML de contexto pertenecientes a un mismo grupo,
3) varias etiquetas XML de contexto individuales. El número de campos enviado se ha ido
incrementando progresivamente desde 1 hasta 5.
1) Es una aplicación web con un formulario HTML que contiene 3 campos de entrada.
800
600
400
200
0
1 2 3 4 5
n
1 Form 'n' inputs 1 group 'n' Context Tags 'n' Context Tags
Figura 11.11 – La gráfica muestra el volumen de datos transferido para tres enfoques diferentes.
227
Capítulo 11
2,5
2
1,5
1
0,5
0
1 2 3 4 5
n
1 Form 'n' inputs 1 group 'n' Context Tags 'n' Context Tags
Figura 11.12 – El gráfico muestra los tiempos de espera para tres enfoques diferentes, estos tiempos comprenden
desde que el usuario envía la información hasta que éste percibe la respuesta de la aplicación.
228
Evaluación
Para realizar esta evaluación se han empleado dos aplicaciones que habían sido
anteriormente utilizadas en el apartado 11.2.1 Aplicaciones nativas. Las aplicaciones
permiten buscar el mejor precio de un determinado producto en los supermercados
cercanos al usuario. Para esta labor la aplicación requiere el identificador o nombre del
producto y la ubicación actual del usuario. Ambos datos se envían a un servicio web
externo que retorna la lista de supermercados cercanos que venden ese producto.
Caso de uso
Número de errores.
Después de finalizar las dos tareas, se les pidió a los usuarios que valorasen con un
número comprendido entre 0 y 10, su grado de satisfacción para ambas aplicaciones
(0 – Nada satisfecho, 10 – Totalmente satisfecho).
229
Capítulo 11
Total time
60
50
40
Seconds
30
20
10
0
Average Median Typical deviation
Figura 11.13 – Representación gráfica de los tiempos consumidos por los usuarios en la realización de las acciones
correspondientes al caso de uso.
Total touchs
45
40
35
30
Touchs
25
20
15
10
5
0
Average Median Typical deviaton
Figura 11.14 – Representación gráfica del número de pulsaciones de pantalla realizadas por los usuarios en la
ejecución de las acciones correspondientes al caso de uso.
230
Evaluación
Touchs -Mistakes
7
0
Average Median Typical deviaton
Figura 11.15 – Representación gráfica del número de errores cometidos en las pulsaciones de pantalla realizadas
por los usuarios en la ejecución de las acciones correspondientes al caso de uso.
Figura 11.16 – Comparación estadística entre el porcentaje de pulsaciones de pantalla erróneas y correctas
realizadas por los usuarios en la ejecución de las acciones correspondientes al caso de uso.
231
Capítulo 11
Users evaluation
10
9
8
7
6
Rate
5
4
3
2
1
0
Average Median Typical deviation
Figura 11.17 – Nota asignada por los usuarios a las aplicaciones empleadas en la evaluación.
Aunque los resultados de esta evaluación se centran en una aplicación concreta, se pueden
extraer algunas conclusiones. En varios escenarios la utilización de las etiquetas XML de
contexto en las aplicaciones web pueden aportar beneficios muy significativos:
Mejorar la satisfacción del usuario. En este caso, el 100% de los usuarios han
otorgado una mejor valoración a la aplicación web que utilizaba etiquetas XML de
contexto, consiguiendo una valoración media de 8,83 frente al 4,27 de la aplicación
web tradicional.
Aunque esta evaluación no abarca la totalidad de los casos existentes, ya que la posible
utilización de las etiquetas XML de contexto depende en gran parte del objetivo y los datos
que maneja la aplicación, se puede confirmar que en determinadas aplicaciones web la
tecnología propuesta es capaz de simplificar notablemente los procesos de entrada de
datos y de mejorar significativamente el grado de satisfacción de los usuarios.
232
Evaluación
233
Capítulo 11
First access
35
30
25
Seconds
20
15
10
5
0
1 2 3 4 5
Figura 11.18 – Tiempo medio consumido en el primer uso de las aplicaciones en los 5 escenarios evaluados.
Data traffic
300
250
200
KB
150
100
50
0
1 2 3 4 5
Figura 11.19 – Tráfico de datos medio consumido en el primer uso de las aplicaciones en los 5 escenarios
evaluados.
Cabe destacar que en los escenarios seleccionados se está evaluando una de las
situaciones más beneficiosas para las aplicaciones nativas. La aplicación a descargar e
instalar tiene un tamaño mínimo, significativamente menor que el de la inmensa mayoría
de las aplicaciones distribuidas, tan solo 149kb; con la correspondiente reducción en los
tiempos de descarga e instalación que ello implica. La aplicación utilizada en las
evaluaciones ha sido desarrollada utilizando el SDK de Android. Por ello, se trata de una
aplicación nativa más rápida y eficiente que las que puedan desarrollarse en el resto de
plataformas alternativas.
Según los escenarios evaluados, si un usuario desea interactuar con un objeto físico por
primera vez, la utilización de una aplicación web es un 68% - 75% más rápida que la de
234
Evaluación
Los resultados obtenidos en la evaluación muestran que las aplicaciones web que utilizan
etiquetas XML de contexto pueden adaptarse de una forma mucho más eficiente a los
entornos que se basan en la interacción ocasional con objetos físicos. Incluso en un caso
muy favorable para la utilización de las aplicaciones nativas, donde el tamaño del
ejecutable tiene un tamaño muy reducido, la aplicación web ha conseguido tiempos
notablemente más bajos.
235
Capítulo 11
11.5 IMPLEMENTACIÓN
En esta sección se evaluarán los mecanismos que ofrecen las plataformas móviles para
gestionar los elementos hardware que permiten capturar la información de contexto y
realizar las labores de comunicación con otros dispositivos cercanos. La evaluación
realizada consiste en medir entre otras cosas el número de líneas de código que se
requieren por término medio para realizar una misma acción en distintas plataformas.
Aunque el criterio de medición seleccionado presenta deficiencias, los resultados de la
evaluación pueden servir para sacar a la luz diferencias significativas entre las
plataformas. Además de la cantidad de líneas de código, existen muchos otros factores que
pueden utilizarse para estimar el coste o complejidad del desarrollo.
236
Evaluación
Para realizar esta evaluación se han seleccionado 5 tareas básicas que emplean elementos
hardware del dispositivo. El objetivo es conseguir un escenario de comparación que no
otorgue ventaja a la especificación propuesta, debido a que la implementación de
funcionalidades similares a las presentadas en las tareas complejas puede requerir
procesos de implementación muy costosos en varias de las plataformas seleccionadas para
este análisis.
Por cada una de las cinco tecnologías seleccionadas [(1) Java-Android, (2) Javascript -
DevOrientation – GeolocationAPI, (3) Javascript – PhoneGap, (4) Objective-C iOS, (5) PHP
Etiquetas de contexto] se han implementado varias aplicaciones, cada aplicación contiene
una funcionalidad básica que implica la gestión de un elemento hardware del dispositivo
[(1) Sensor de aceleración, (2) Chip GPS, (3) Cámara de fotos, (4) Bluetooth y (5) NFC]. No
se han implementado aplicaciones para los cinco tipos de elementos hardware
seleccionados en todas las tecnologías, ya que algunas de ellas presentaban
incompatibilidades técnicas.
Las aplicaciones desarrolladas cuentan con una implementación mínima que hace posible
el cumplimiento de la tarea encomendada en cada caso. Los aspectos medidos en el código
fuente y estructura de aplicaciones son los siguientes:
237
Capítulo 11
Java-Android 14L, 468T 51L, 1453T 75L, 1946T 204L, 6711T 40L, 1044T
4E, 0F 3E, 1F 1E, 1F 7E, 1F 6E, 1F
Objective-C iOS 13L, 446T 22L, 819T 14L, 633T 76L, 1788T ---
4E, 0F 2E, 0F 2E, 0F 3E, 0F
PHP Etiquetas 11L, 202T 11L, 208T 13L, 228T 2L, 133T 11L, 205T
XML de contexto 1E, 0F 1E, 0F 1E, 0F 1E, 0F 1E, 0F
Tabla 11.1 – Comparación parcial entre implementaciones.
Con el fin de poder establecer un mecanismo de comparación global que sirva para
estimar la complejidad que implica el desarrollo se le ha asignado un peso a cada uno de
los aspectos medidos.
L=3
T=1
E = 10
F = 20
La siguiente tabla muestra el resultado global de los aspectos medidos según los pesos
asignados:
238
Evaluación
Java-Android
550 1656 2201 7413 1244
Javascript -
DevOrientation 434 --- --- --- ---
Javascript –
GeolocationAPI --- 432 --- --- ---
Javascript –
PhoneGap 257 489 260 --- 608
Objective-C iOS
525 905 695 2046 ---
PHP Etiquetas
XML de contexto 245 251 277 149 248
Aunque las evaluaciones realizadas no son completamente precisas, debido a que en ellas
intervienen factores variables y dependientes de la codificación, se puede concluir que las
aplicaciones web que utilizan etiquetas XML de contexto presentan un proceso de
desarrollo relativamente rápido y posiblemente más sencillo que el del resto de enfoques
analizados.
239
Capítulo 11
240
PARTE V
CONCLUSIONES
241
Capítulo 12
CAPÍTULO 12
CONCLUSIONES Y TRABAJO FUTURO
242
Conclusiones y trabajo futuro
243
Capítulo 12
Figura 12.1 – Modelo: aplicaciones web con etiquetas XML de contexto y navegador web sensible al contexto.
244
Conclusiones y trabajo futuro
245
Capítulo 12
246
Conclusiones y trabajo futuro
1. Interacción ocasional con objetos. Cada vez resulta más frecuente la existencia
de procesos que implican la interacción con objetos físicos o dispositivos virtuales,
algunos de estos procesos están diseñados para que se realicen de forma ocasional.
En la mayoría de los casos los teléfonos inteligentes que interactúan con otros
elementos se sirven de una aplicación específica que se encarga de gestionar la
interacción (realizar envíos de información, interpretar datos, transmitir las
acciones del usuario, etc). La naturaleza de las aplicaciones nativas no se adecua a
los sistemas que se basan en interacciones ocasionales con objetos físicos,
interacciones que quizá el usuario nunca vuelva a repetir. Los procesos de
descarga y configuración requeridos por las aplicaciones nativas pueden llegar a
consumir más tiempo que la propia lógica de la interacción. La especificación
propuesta elimina ese problema puesto que la carga de las aplicaciones web es un
proceso significativamente más rápido.
247
Capítulo 12
248
Conclusiones y trabajo futuro
249
Capítulo 12
Los siguientes trabajos han sido presentados en diferentes medios para difundir y
contrastar ante la comunidad científica los resultados que se reflejan en esta tesis.
Pascual, J., García-Díaz. V., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (In review). Mobile
Web-based system for remote control electronic devices and smart objects. IEEE
Internet Computing JCR: 2.514.
Pascual, J., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (In review). A simple model based
on web services to exchange context information between web browsers and web
applications. Journal of Universal Computer Science JCR: 0.669.
Pascual, J., González, R., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (In review). A
lightweight approach to managing real world information in mobile web
applications. IEEE Pervasive Computing JCR: 2.189.
Pascual, J., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (In review). Using collaborative
virtual objects based on services to communicate smart objects. IET Software JCR:
0.671.
Pascual, J., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (Accepted, in press). Using mobile
web applications as a multiplatform mechanism to communicate users with embedded
devices. Embedded Systems: Theory, Applications and Role in Quantum Mechanics.
Pascual, J., González, R., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (2012). Extensible
architecture for context-aware mobile web applications. Expert Systems with
Applications JCR: 1.924 , 39(10), 9686-9694.
Cueva. J.M., Pascual, J., Sanjuán, O. & Pelayo, B.C. (2011). Internet de los objetos.
Netbiblio .Editorial: Netbiblo, ISBN: 9788497454766.
Pascual, J., González, R., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (2011). Virtual
objects on the Internet of things. International Journal of Interactive Multimedia
and Artificial Intelligence. 1(4), 22-29.
Pascual, J. (2011). Internet de las Cosas Cuando los objetos hablen entre sí.
Certamen FECYT de Comunicación Científica.
Pascual, J., Sanjuán, O., Cueva, J.M., Pelayo, B.C., Álvarez, M. & González, A. (2011)
Modeling architecture for collaborative virtual objects based on services. Journal of
Network and Computer Applications JCR: 0.660. 34(5), 1634-47.
Pascual, J., González, R., Sanjuán, O., Pelayo, B.C., Cueva. J.M. & Ordoñez, P. (2011).
Standardization of Virtual Objects. Semantic Web Personalization And Context
Awareness. 7-21.
250
Conclusiones y trabajo futuro
251
Capítulo 12
252
BIBLIOGRAFÍA Y REFERENCIAS
253
Abowd, G. D., Dey, A. K., Brown, P. J., Davies, N., Smith, M., & Steggles, P. (1999). Towards a
Better Understanding of Context and Context-Awareness. Paper presented at the
Proceedings of the 1st international symposium on Handheld and Ubiquitous Computing.
Ahn, C., & Nah, Y. (2010, 7-9 June 2010). Design of Location-Based Web Service
Framework for Context-Aware Applications in Ubiquitous Environments. Paper presented
at the Sensor Networks, Ubiquitous, and Trustworthy Computing (SUTC), 2010 IEEE
International Conference on.
Armenio, F., Barthel, H., Burstein, L., Dietrich, P., Duker, J., Garrett, J., Hogan, B., Ryaboy, O.,
Sarma, S., Schmidt, J., Suen, K., Traub, K. & Williams, J. (2007). The EPCglobal Architecture
Framework.
Atukorala, K., Wijekoon, D., Tharugasini, M., Perera, I. & Silva, C. (2009, 15-18 Sept. 2009).
SmartEye Integrated Solution to Home Automation, Security and Monitoring through
Mobile Phones. Paper presented at the Next Generation Mobile Applications, Services and
Technologies, 2009. NGMAST '09. Third International Conference on.
Bhatti, R., Bertino, E., & Ghafoor, A. (2004, 6-9 July 2004). A trust-based context-aware
access control model for Web-services. Paper presented at the Web Services, 2004.
Proceedings. IEEE International Conference on.
Biegel, G., & Cahill, V. (2004). A Framework for Developing Mobile, Context-aware
Applications. Paper presented at the Proceedings of the Second IEEE International
Conference on Pervasive Computing and Communications (PerCom'04).
Brock, D.L. (2001). The electronic product code (EPC)-a naming scheme. Technical Report
MIT-AUTOID-WH-002, MIT Auto ID Center.
254
Challiol, C., Fortier, A., Gordillo, S., & Rossi, G. (2007, 3-7 Sept. 2007). A Flexible
Architecture for Context-Aware Physical Hypermedia. Paper presented at the Database
and Expert Systems Applications, 2007. DEXA '07. 18th International Workshop on.
Chang, Y. F., Chen, C. S., & Zhou, H. (2009). Smartphone for mobile commerce. Computer
Standards and Interfaces, 31(4), 740-747.
Chen, G., and Kotz, D. (2000). A Survey of Context-Aware Mobile Computing Research.
Technical Report. Dartmouth College, Hanover, NH, USA.
Chen, H., Finin, T., & Joshi, A. (2003). Using OWL in a Pervasive Computing Broker. In
Proceedings of the Workshop on Ontologies in Agent Systems (OAS 2003), Melbourne,
Australia.
Chen, H., Finin, T., & Joshi, A. (2004, 14-17 March 2004). Semantic Web in the context
broker architecture. Paper presented at the Pervasive Computing and Communications,
2004. PerCom 2004. Proceedings of the Second IEEE Annual Conference on.
Cheverst, K., Mitchell, K., & Davies, N. (1999). Design of an object model for a context
sensitive tourist GUIDE. Computers & Graphics, 23(6), 883-891.
Chua, A. Y. K., Balkunje, R. S. & Dion Hoe-Lian, G. (2011, 22-25 March 2011). The Influence
of User-Context on Mobile Information Needs. Paper presented at the Advanced
Information Networking and Applications (WAINA), 2011 IEEE Workshops of
International Conference on.
Coppola, P., Della Mea, V., Di Gaspero, L., Menegon, D., Mischis, D., Mizzaro, S., et al. (2010).
The Context-Aware Browser. Intelligent Systems, IEEE, 25(1), 38-47.
Coppola, P., Della Mea, V., Di Gaspero, L., Mizzaro, S., Scagnetto, I., Selva, A., Vassena, L., et
al. (2005). Information Filtering and Retrieving of Context-Aware Applications within the
MoBe Framework. Security. In proceedings of Proceedings of the Workshop on Context-
Based Information Retrieval.
De, S. & Moessner, K. (2009). A framework for mobile, context-aware applications. Paper
presented at the Proceedings of the 16th international conference on
Telecommunications.
Decker, C., Spiess, P., Moreira sa de Souza, L., Beigl, M. & Nochta, Z. (2006).Coupling
Enterprise Systems with Wireless Sensor Nodes: Analysis, Implementation, Experiences
and Guidelines. Pervasive Technology Applied.
Dey, A. K., Abowd, G. D. & Salber, D. (2001). A conceptual framework and a toolkit for
supporting the rapid prototyping of context-aware applications. Hum.-Comput. Interact.,
16(2), 97-166.
255
Ecma. (2005). Near Field Communication White paper.
<http://www.ecma-international.org/activities/Communications />.
Eissele, M., Weiskopf, D. & Ertl, T. (2009). Interactive Context-Aware Visualization for
Mobile Devices. Paper presented at the Proceedings of the 10th International Symposium
on Smart Graphics.
Ennai, A. & Bose, S. (2008, 16-16 Sept. 2008). MobileSOA: A Service Oriented Web 2.0
Framework for Context-Aware, Lightweight and Flexible Mobile Applications. Paper
presented at the Enterprise Distributed Object Computing Conference Workshops, 2008
12th.
Fajardo, R., Miramá, V., Caicedo, 0. Mesa, J. & Martínez, F.O. (2008) Descubrimiento e
interacción de servicios móviles ubicuos utilizando Bluetooth y Wi-Fi. Sistemas y
Telemática. 6(11), 55-73.
Fasbender, A., Hoferer, S., Gerdes, M., Matsumura, T., Häber, A. & Reichert, F. (2008, 16-19
Sept. 2008). Phone-Controlled Delivery of NGN Services into Residential Environments.
Paper presented at the Next Generation Mobile Applications, Services and Technologies,
2008. NGMAST '08. The Second International Conference on.
Ferreira, J. C. & Afonso, J. L. (2011, 27-30 June 2011). Mobi_System: A personal travel
assistance for electrical vehicles in smart cities. Paper presented at the Industrial
Electronics (ISIE), 2011 IEEE International Symposium on.
Filibeli, M. C., Ozkasap, O. & Civanlar, M. R. (2007). Embedded web server-based home
appliance networks. J. Netw. Comput. Appl., 30(2), 499-514.
Fleisch, E. (2010) .What is the Internet of Things? An Economic Perspective. Auto-ID Labs
White Paper WP-BIZAPP-053.
Floerkemeier, C., Roduner, C. & Lampe, M. (2007). RFID Application Development With the
Accada Middleware Platform. Systems Journal, IEEE, 1(2), 82-94.
Främling, K., Holmström, J., Ala-Risku, T. & Kärkkäinen, M. (2003). Product agents for
handling information about physical objects. Technical report, Helsinki University of
Technology.
Gasimov, A., Magagna, F. & Sutanto, J. (2010). CAMB: context-aware mobile browser. Paper
presented at the Proceedings of the 9th International Conference on Mobile and
Ubiquitous Multimedia.
256
Global Trends 2025: A transformed world. (2008). Appendix F: The Internet of Things
(Background). SRI Consulting Business Intelligence.
Gossweiler, R., McDonough, C., Lin, J. & Want, R. (2011). Argos: Building a Web-Centric
Application Platform on Top of Android. Pervasive Computing, IEEE, 10(4), 10-14.
Grønbæk, I. (2008). Connecting objects in the Internet of Things (IoT). Telenor ASA.
Hardgrave, B., Waller, M. & Miller, R. (2005). Does RFID Reduce Out of Stocks? A
Preliminary Analysis. RFID Research center Walton College, University of Arkansas.
Hattori, S., Tezuka, T. & Tanaka, K. (2007, 15-19 Jan. 2007). Context-Aware Query
Refinement for Mobile Web Search. Paper presented at the Applications and the Internet
Workshops, 2007. SAINT Workshops 2007. International Symposium on.
Hernandez, E. A. (2009). War of the Mobile Browsers. Pervasive Computing, IEEE, 8(1),
82-85.
Hyunho, P., Byoungoh, K., Yangwoo, K. & Dongman, L. (2011, 21-25 March 2011). InterX: A
service interoperability gateway for heterogeneous smart objects. Paper presented at the
Pervasive Computing and Communications Workshops (PERCOM Workshops), 2011 IEEE
International Conference on.
Juan, W., Weiliang, L. & Sining, M. (2011, 28-30 Sept. 2011). A convergence service
oriented architecture in smart homes. Paper presented at the ICT Convergence (ICTC),
2011 International Conference on.
Kanma, H., Wakabayashi, N., Kanazawa, R. & Ito, H. (2003). Home appliance control
system over Bluetooth with a cellular phone. Consumer Electronics, IEEE Transactions on,
49(4), 1049-1053.
Kanma, H., Wakabayashi, N., Kanazawa, R. & Ito, H. (2003). Home appliance control
system over Bluetooth with a cellular phone. Consumer Electronics, IEEE Transactions on,
49(4), 1049-1053.
Kapitsaki, G. M., Kateros, D. A., & Venieris, I. S. (2008, 15-18 Sept. 2008). Architecture for
provision of context-aware web applications based on web services. Paper presented at
the Personal, Indoor and Mobile Radio Communications, 2008. PIMRC 2008. IEEE 19th
International Symposium on.
257
Kärkkäinen, M., Holmström, J., Främling, K. & Artto, K. (2003). Intelligent products: a step
towards a more effective project delivery chain. Comput. Ind. 50(2), 141-151.
Karnouskos, S., & Tariq, M. M. J. (2009, 23-25 March 2009). Using multi-agent systems to
simulate dynamic infrastructures populated with large numbers of web service enabled
devices. Paper presented at the Autonomous Decentralized Systems, 2009. ISADS '09.
International Symposium on.
Kim, N., Lee, H. S., Oh, K. J. & Choi, J. Y. (2009). Context-aware mobile service for routing
the fastest subway path. Expert Systems with Applications, 36(2, Part 2), 3319-3326.
Kortuem, G., Kawsar, F., Sundramoorthy, V. & Fitton, D. (2010). Smart objects as building
blocks for the Internet of things. IEEE Internet Computing. 14(1), 44-51.
Kranz, M., Holleis, P. & Schmidt, A. (2010). Embedded Interaction: Interacting with the
Internet of Things. IEEE Internet Computing, 14(2), 46-53.
Lahti, J., Palola, M., Korva, J., Westermann, U., Pentikousis, K. & Pietarila, P. (2006). A
mobile phone-based context-aware video management application. Proc. SPIE-IS&T
Electronic Imaging (Multimedia on Mobile Devices II), SPIE Vol. 6074, San Jose, California,
USA. 6074, 183-194.
Lemlouma, T. & Layaida, N. (2004). Context-aware adaptation for mobile devices. Paper
presented at the Mobile Data Management, 2004. Proceedings. 2004 IEEE International
Conference on.
Yan, L., Zhang, Y. & Yang, L. T. (2008). The Internet of Things: From RFID to the Next-
Generation Pervasive Networked Systems: Auerbach Publications.
Meng, W., Chunxiao, F., Zhigang, W. Shan, L. & Jie, L. (2011, 23-25 Sept. 2011).
Implementation of Internet of Things Oriented Data Sharing Platform Based on RESTful
Web Service. Paper presented at the Wireless Communications, Networking and Mobile
Computing (WiCOM), 2011 7th International Conference on.
Meyer, G., Främling, K. & Holmström, J. (2009). Intelligent Products: A survey. Computers
in Industry. 60(3), 137-148.
Myers, B. A., Nichols, J., Wobbrock, J. O. & Miller, R. C. (2004). Taking handheld devices to
the next level. Computer, 37(12), 36-43.
Myers, B. A., Stiel, H. & Gargiulo, R. (1998). Collaboration using multiple PDAs connected to
a PC. Paper presented at the Proceedings of the 1998 ACM conference on Computer
supported cooperative work.
258
Naphade, M., Banavar, G., Harrison, C., Paraszczak, J. & Morris, R. (2011). Smarter Cities
and Their Innovation Challenges. Computer, 44(6), 32-39.
Nathanail, S., Tsetsos, V., & Hadjiefthymiades, S. (2007). Sensor-driven adaptation of web
document presentation. Paper presented at the Proceedings of the 4th international
conference on Universal access in human-computer interaction: applications and services.
Nichols, J. & Myers, B. A. (2006). Controlling Home and Office Appliances with
Smartphones. Pervasive Computing, IEEE, 5(3), 60-67.
Ok, K., Coskun, V., Aydin, M. N. & Ozdenizci, B. (2010, 2-4 Nov. 2010). Current benefits and
future directions of NFC services. Paper presented at the Education and Management
Technology (ICEMT), 2010 International Conference on.
Pantsar-Syvaniemi, S., Simula, K. & Ovaska, E. (2010, 22-25 June 2010). Context-awareness
in smart spaces. Paper presented at the Computers and Communications (ISCC), 2010
IEEE Symposium on.
Pascual, J., González, R., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (2012). Extensible
architecture for context-aware mobile web applications. Expert Systems with
Applications, 39(10), 9686-9694.
Pascual, J., Sanjuán, O., Cueva, J.M., Pelayo, B.C., Álvarez, M. & González, A. (2011a)
Modeling architecture for collaborative virtual objects based on services. Journal of
Network and Computer Applications. 34(5), 1634-47.
Pascual, J., Sanjuán, O., Pelayo, B.C., Cueva. J.M. & Ordoñez, P. (2011b). Standardization of
Virtual Objects. Semantic Web Personalization And Context Awareness. 7-21.
Pascual, J., Sanjuán, O., Pelayo, B.C. & Cueva. J.M. (2011c). Virtual objects on the Internet of
things. International Journal of Interactive Multimedia and Artificial Intelligence. 1(4), 22-
29.
Perumal, T., Ramli, A. R., Chui Yew, L., Mansor, S. & Samsudin, K. (2008, Nov. 30 2008-Dec.
3 2008). Interoperability among Heterogeneous Systems in Smart Home Environment.
Paper presented at the Signal Image Technology and Internet Based Systems, 2008. SITIS
'08. IEEE International Conference on.
Piyare, R. & Tazil, M. (2011, 14-17 June 2011). Bluetooth based home automation system
using cell phone. Paper presented at the Consumer Electronics (ISCE), 2011 IEEE 15th
International Symposium on.
Quack, T., Bay, H, & Gool, L. V. (2008). Object recognition for the Internet of things. Paper
presented at the Proceedings of the 1st international conference on The Internet of things.
259
Ramparany, F. & Boissier, O. (2002). Smart devices embedding multi-agent technologies
for a pro-active world. In Proc. of the Ubiquitous Computing Workshop.
Riva, O. & Toivonen, S. (2006, 26-29 June 2006). A Hybrid Model of Context-aware Service
Provisioning Implemented on Smartphones. Paper presented at the Pervasive Services,
2006 ACS/IEEE International Conference on.
Rohs, M. & Gfeller, B. (2004).Using camera-equipped mobile phones for interacting with
real-world objects. Advances in Pervasive Computing, Austrian Computer Society (OCG).
Román, M.,Hess, C., Cerqueira, R., Ranganathan, A., Campbell, R. H., et al. (2002). A
Middleware Infrastructure for Active Spaces. IEEE Pervasive Computing, 1(4), 74-83.
Salber, D., Dey, A. K., & Abowd, G. D. (1999). The context toolkit: aiding the development of
context-enabled applications. Paper presented at the Proceedings of the SIGCHI
conference on Human factors in computing systems: the CHI is the limit.
Sanchez, L., Galache, J. A., Gutierrez, V., Hernandez, J. M., Bernat, J., Gluhak, A. & Garcia, T.
(2011, 15-17 June 2011). SmartSantander: The meeting point between Future Internet
research and experimentation and the smart cities. Paper presented at the Future
Network & Mobile Summit (FutureNetw), 2011.
Schilit, B. & Theimer, M. (1994). Disseminating active map information to mobile hosts.
Network, IEEE, 8(5), 22-32.
Schilit, B., Adams, N. & Want, R. (1994, 8-9 Dec. 1994). Context-Aware Computing
Applications. Paper presented at the Mobile Computing Systems and Applications, 1994.
WMCSA 1994. First Workshop on.
Schmidt, A. (1999). There is more to context than location. Computers & Graphics, 23(6),
893-901.
Schmidt, A., Aidoo, K. A., Takaluoma, A., Tuomela, U., Laerhoven, K. V. & Velde, W. V. d.
(1999). Advanced Interaction in Context. Paper presented at the Proceedings of the 1st
international symposium on Handheld and Ubiquitous Computing.
Sheng, Q. Z., Pohlenz, S., Jian, Y., Wong, H. S., Ngu, A. H. H. & Maamar, Z. (2009, 16-24 May
2009). ContextServ: A platform for rapid and flexible development of context-aware Web
services. Paper presented at the Software Engineering, 2009. ICSE 2009. IEEE 31st
International Conference on.
260
Shirazi, A. S., Winkler, C. & Schmidt, A. (2010, Nov. 29 2010-Dec. 1 2010). SENSE-SATION:
An extensible platform for integration of phones into the Web. Paper presented at the
Internet of Things (IOT), 2010.
Sundmaeker, H., Patrick Guillemin, P., Friess, P. & Woelfflém, S. (2010). Vision and
Challenges for Realising the Internet of Things. CERP-IoT.
Thiesse, F., Floerkemeier, C., Harrison, M., Michahelles, F. & Roduner, C. (2009).
Technology, Standards, and Real-World Deployments of the EPC Network. Internet
Computing, IEEE, 13(2), 36-43.
Thompson, C. W. (2005). Smart devices and soft controllers. Internet Computing, IEEE,
9(1), 82-85.
Toye, E., Sharp, R., Anil, M. & Scott, D. (2005). Using Smartphones to access site-specific
services. Pervasive Computing, IEEE, 4(2), 60-66.
Vale, S. & Hammoudi, S. (2009, 24-28 May 2009). COMODE: A Framework for the
Development of Context-Aware Applications in the Context of MDE. Paper presented at the
Internet and Web Applications and Services, 2009. ICIW '09. Fourth International
Conference on.
Weerawarana, S., Curbera, F., Leymann, F., Storey, T. & Ferguson, D. F. (2005). Web
Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-
Reliable Messaging and More: Prentice Hall PTR.
Wei-Dar, C., Mayes, K. E., Yuan-Hung, L. & Jung-Hui, C. (2011, 21-23 June 2011). NFC
mobile payment with Citizen Digital Certificate. Paper presented at the Next Generation
Information Technology (ICNIT), 2011 The 2nd International Conference on.
Wiechert, T., Thiesse, F., Michahelles, F., Schmitt, P. & Fleisch, E. (2009). Connecting Mobile
Phones to the Internet Of Things: A Discussion of compatibility issues between EPC
technology and NFC Technology. Auto ID Center.
Xu, H., Su, R., Hou, X., & Ni, Q. (2009, 12-14 Aug. 2009). Remote Control System Design
Based on Web Server for Digital Home. Paper presented at the Hybrid Intelligent Systems,
2009. HIS '09. Ninth International Conference on.
261