scieee AI-readable full text Open interactive document viewer

Repositorio Institucional de Documentos

Abstract

Basado en la nueva plataforma europea FI-WARE de Cloud Computing, se ha desarrollado un sistema cuyo objetivo consiste en dinamizar los pequeños negocios de las ciudades, acercándolos al ciudadano. Para ello se ha desarrollado una infraestructura de datos en la nube, una aplicación web y una aplicación Android para móviles. Los comercios pueden subir ofertas y anuncios mediante la aplicación web y los ciudadanos, por medio de la aplicación Android, pueden ver las ofertas activas de la ciudad en tiempo real, filtradas por su geo-localización, su perfil de usuario y el tipo de comercio. La aplicación indica al usuario como llegar al comercio cuya oferta ha seleccionado. También dispone de un mapa donde aparecen localizados todos los comercios con ofertas activas. El comercio puede publicar ofertas, modificarlas o borrarlas en tiempo real. De esta manera se potencia la relación ciudadano-comercio de forma exponencial. Martín González, Jesús; Saldaña Medina, José María

Full text

UNIVERSIDAD DE ZARAGOZA ESCUELA DE INGENIERÍA Y ARQUITECTURA PROYECTO FIN DE CARRERA Ingeniería de Telecomunicación Especialidad Telemática SMART CITY: SISTEMA PARA ACERCAR EL PEQUEÑO COMERCIO AL CIUDADANO (MyCity4Me) Jesús Martín González Director: José Mª Saldaña Medina Ponente: Emiliano Bernués del Rio Dpto. de Ingeniería Electrónica y Comunicaciones Junio de 2014 1 Resumen del proyecto El objetivo de este proyecto es el desarrollo de un sistema, basado en una plataforma en la nube (“cloud”), que permite a los pequeños comercios publicar ofertas especiales de sus productos, con un periodo de vida limitado. Estas ofertas llegan a los ciudadanos a través de una aplicación instalada en su dispositivo móvil. De esta forma, se potencian las relaciones entre los ciudadanos y los pequeños comercios de una ciudad, con el fin de promover la economía, el ocio y la cultura. El sistema se compone de una aplicación web, una aplicación móvil y una infraestructura de datos en la nube. En primer lugar, los pequeños comercios introducen las ofertas a través de una aplicación web que las almacena en una base de datos centralizada. Además de cargar ofertas en el sistema, el comercio puede después modificarlas o borrarlas, así como ver los resultados de las ofertas solicitadas y vendidas. Ejemplos de ofertas podrían ser: “2x1 en entradas para el teatro entre las 19 y las 21 horas”, “Vino y tapa por 1€ de 13 a 14h” o “30% de descuento en ropa para niños”. La aplicación móvil, desarrollada para Android, permite visualizar en tiempo real las ofertas activas en la ciudad, organizadas según el tipo de negocio al que pertenezcan y en función de la posición geográfica actual del usuario. También, mediante un mapa, es capaz de mostrar los comercios que tienen ofertas validas anunciadas, de una manera más visual. Una vez seleccionando el comercio en el mapa, el usuario puede acceder a un menú con sus ofertas. La aplicación también permite ver la ruta desde su posición hasta la del comercio anunciante, así como dar una valoración a los comercios. El usuario podrá crear un perfil, para así recibir las ofertas de su interés. La infraestructura de datos en la nube se ha desplegado en la plataforma FI-WARE, un servicio “cloud” promovido desde la Comisión Europea a través del programa FIPPP, y en el que participan las principales empresas del sector. Se han utilizado máquinas virtuales en FI-WARE, y los componentes de software denominados Generic Enabler, que permiten automatizar algunas tareas. Este sistema podrá ser explotado por todo tipo de comercios, tanto bares y restaurantes como museos, teatros, gimnasios, piscinas, tiendas de ropa, etc., suponiendo una valiosa herramienta para el turismo, que potenciará la visibilidad de los comercios, acercándolos a los ciudadanos. 2 3 Índice Resumen del proyecto ...................................................................................................... 1 Índice ................................................................................................................................ 3 Agradecimientos ............................................................................................................... 7 PARTE I MEMORIA ....................................................................................................... 9 1 Introducción ............................................................................................................ 11 1.1 Estructura del documento ................................................................................ 11 1.2 Contexto profesional ........................................................................................ 12 1.3 Contexto tecnológico ....................................................................................... 13 1.3.1 Plataforma FI-WARE ............................................................................... 14 1.3.2 Apache, PHP y MySQL ........................................................................... 15 1.3.3 Android ..................................................................................................... 15 1.3.4 HTML5 y CSS .......................................................................................... 17 1.3.5 XML (Extensible Markup Language) ...................................................... 17 1.3.6 JSON (JavaScript Object Notation) .......................................................... 18 1.4 Motivación y objetivos .................................................................................... 18 2 Trabajo realizado: MyCity4Me ............................................................................... 21 2.1 Infraestructura de datos en la nube: FI-WARE................................................ 21 2.1.1 Instalación, configuración y uso combinado de los Generic Enabler. ...... 22 2.1.2 Análisis e implementación de la estructura de la base de datos. .............. 25 2.2 Aplicación web ................................................................................................ 27 2.2.1 Diseño de la estructura de la aplicación web ............................................ 28 2.2.2 Metodología de desarrollo de la aplicación web ...................................... 31 2.2.3 Decisiones de diseño adoptadas ............................................................... 32 2.3 Aplicación Android .......................................................................................... 34 2.3.1 Aplicaciones relacionadas ........................................................................ 34 4 2.3.2 Análisis de la aplicación ........................................................................... 35 2.3.3 Diseño de la aplicación ............................................................................. 36 2.3.4 Metodología de desarrollo de la aplicación .............................................. 39 2.3.5 Decisiones de diseño adoptadas ............................................................... 40 2.3.6 Estructura de la aplicación ........................................................................ 46 3 Conclusiones y líneas futuras ................................................................................. 49 3.1 Conclusiones .................................................................................................... 49 3.2 Líneas futuras ................................................................................................... 50 3.3 Valoración personal ......................................................................................... 50 REFERENCIAS ............................................................................................................. 53 ACRÓNIMOS ................................................................................................................ 55 FIGURAS ....................................................................................................................... 57 PARTE II ANEXOS ....................................................................................................... 61 ANEXO A - Manual de usuario de la aplicación Android MyCity4Me ..................... 63 A.1 ¿Qué es MyCity4Me? ....................................................................................... 63 A.2 Inicio de la aplicación y acceso a ella. ............................................................. 63 A.3 Consulta y solicitud de las ofertas activas en la ciudad ................................... 66 ANEXO B - Manual de usuario de la aplicación web ................................................ 71 B.1 Modo administrador ......................................................................................... 71 B.2 Modo comercio ................................................................................................ 75 ANEXO C - Fi-Lab, entorno de desarrollo de FI-WARE .......................................... 83 C.1 ¿Qué es FI-Lab? ............................................................................................... 83 C.2 Su uso en el presente proyecto: creación de instancias o máquinas virtuales. 84 ANEXO D - Puesta en marcha del sistema Orion-Cygnus-Cosmos .......................... 89 ANEXO E - Implementación del servicio web PHP .................................................. 95 ANEXO F - Elementos típicos de una aplicación Android ........................................ 97 ANEXO G - Diseño y navegación de la aplicación Android ..................................... 99 5 ANEXO H - Activación de los mapas de Google en MyCity4Me ........................... 101 ANEXO I - Metodología de desarrollo de la aplicación Android ............................ 103 I.1 Diseño gráfico de la ventana ........................................................................... 103 I.2 Análisis, obtención y presentación de la información..................................... 104 I.3 Dotación de interacción ................................................................................... 107 I.4 Pruebas de integración en la aplicación .......................................................... 108 ANEXO J - Metodología de desarrollo de la aplicación web .................................. 111 J.1 Diseño gráfico de la ventana ........................................................................... 111 J.2 Análisis, obtención y presentación de la información .................................... 112 J.3 Dotación de interacción .................................................................................. 113 J.4 Pruebas ............................................................................................................ 114 ANEXO K - Herramientas utilizadas. ...................................................................... 115 6 7 Agradecimientos En primer lugar quisiera agradecer todo el apoyo y la ayuda de las personas más cercanas, es decir, a la familia, que siempre está ahí, a las buenas y a las malas, que ha sido un apoyo constante, y a mis amigos, que cuando los necesitas, ahí están, algo que siempre es de agradecer. En especial me gustaría dar las gracias a Carlos Fernández, por prestarme sus conocimientos acerca de la programación web y a Diego melero, por hacer lo que mejor se le da, el diseño grafico del proyecto te lo debo a ti, crack! En segundo lugar me gustaría dar las gracias a todos los miembros del Servicio de Ciudad Inteligente de Zaragoza, por brindarme la magnífica oportunidad de hacer este proyecto y por lo bien que me han tratado, haciéndome sentir en todo momento como uno más de este gran equipo. Especialmente me gustaría agradecer a Daniel Sarasa, mi jefe, y a Ana Jiménez, mi compañera, todo el conocimiento y apoyo que me han dado, sois geniales, gracias. Por último, y no por ello menos importante, me gustaría dar las gracias a todos los profesores que han aportado algo a mi formación, como persona y como ingeniero. En especial, a mi tutor y guía durante toda la carrera, Ignacio Martínez, gracias a quien estoy ahora aquí, y a mis dos tutores de proyecto, Emiliano Bernués y José María Saldaña, dos grandes personas que me han ayudado, apoyado y guiado a lo largo de este proyecto, sin importar el momento y siempre con buen humor, gracias a vosotros he conseguido llevar a cabo este magnífico proyecto. Sinceramente, gracias a todos. 14 1.3.1 Plataforma FI-WARE El Proyecto FI-WARE está siendo desarrollado por un consorcio formado por las mayores empresas europeas de las tecnologías de la información y las comunicaciones, con el objetivo de establecer una plataforma para la Internet del Futuro (Future Internet, FI). FI-WARE se puede definir [4] como “una infraestructura innovadora basada en la nube, abierta para la creación y difusión de aplicaciones y servicios futuros de Internet, de forma rentable y a una escala nunca antes vista”. FI-WARE ofrece un servicio web en el que desplegar máquinas virtuales sobre las que trabajar remotamente. Es un servicio comparable al ofrecido comercialmente por algunas empresas, por ejemplo el Elastic Compute Cloud (EC2)1 de Amazon, en el que los clientes pueden reservar recursos en la nube, con un coste derivado de la capacidad de las máquinas virtuales y del tiempo que se han usado. FI-WARE proporciona además una mejora importante, pues pone a disposición del usuario gran variedad de recursos y herramientas (denominadas Generic Enabler) que resultan útiles en el desarrollo, por ejemplo, de aplicaciones o sistemas de tratamiento de datos. El hecho de que esta infraestructura sea innovadora, y que tenga el apoyo de la Unión Europea, hace que su uso y aprendizaje resulten atractivos, dada la proyección de futuro que puede tener. El entorno de trabajo de FI-WARE se conoce como FI-Lab [5]. Se trata de una instancia de FI-WARE a la que se puede acceder para realizar pruebas y experimentos que requieran recursos de la nube. Por su carácter experimental, hasta el momento se puede utilizar de forma gratuita. Además, tiene la finalidad de ser un medio de comunicación entre desarrolladores de aplicaciones y posibles empresas o inversores interesados en realizar desarrollos sobre FI-WARE. Esta plataforma cuenta con un conjunto de componentes, llamados Generic Enabler [6], que se definen como “bloques funcionales formados por un conjunto de elementos que juntos soportan un conjunto determinado de funciones y ofrecen un conjunto determinado de APIs e interfaces interoperables que cumplen con las especificaciones abiertas publicadas para ese GE”. Estos componentes permiten a los desarrolladores:  Crear, publicar administrar y consumir servicios de Future Internet.  Desplegar los servicios de Future Internet en la nube. 1 La propia Amazon lo define como “un servicio web que proporciona capacidad informática con tamaño modificable en la nube. Está diseñado para facilitar a los desarrolladores recursos informáticos escalables basados en web” (ver https://aws.amazon.com/es/ec2/). 15  Acceder, procesar y analizar grandes cantidades de datos.  Aprovechar la ubicuidad de dispositivos heterogéneos y de uso restringido en el Internet de las Cosas.  Acceder a redes y dispositivos a través de interfaces de servicio. En este proyecto se han usado dos Generic Enabler, cuya función es almacenar las coordenadas y la fecha exacta en la que los usuarios se conectan a la aplicación del móvil. Los Generic Enabler encargados de esta labor son: Orion Context Broker [7] y Cosmos - BigData Analysis [8], cuyo funcionamiento detallado se explicará más adelante, en el apartado 2.1.1. 1.3.2 Apache, PHP y MySQL Apache es un servidor web HTTP de código abierto para plataformas Unix, Windows, Apple y otros, que implementa el protocolo HTTP/1.12. Es utilizado principalmente para enviar páginas web estáticas o dinámicas en la World Wide Web. Es el componente de servidor web en la popular plataforma de aplicaciones LAMP (Linux-ApacheMySQL-PHP, Perl, Python) o XAMPP (Windows-Apache-MySQL-PHP, Perl, Python). En este proyecto se ha utilizado el paquete formado por Apache, como servidor web, MySQL como base de datos y PHP como lenguaje de programación, que se instala en las máquinas virtuales Linux de FI-WARE como núcleo del sistema. Además, para facilitar el trabajo con la base de datos, se instala una herramienta, denominada PHPMyAdmin2, que añade una interfaz visual que permite realizar todo tipo de tareas sobre MySQL (crear, modificar y borrar bases de datos, tablas y columnas, etc.) sin tener que realizarlas a nivel de comandos. 1.3.3 Android Android es un sistema operativo para dispositivos móviles. Está desarrollado por la Open Handset Alliance, una alianza comercial de 78 compañías importantes, como Samsung, HTC, Dell, Intel, etc., lideradas por Google, para desarrollar estándares abiertos para dispositivos móviles. 2 PHP MyAdmin, Bringing MySQL to the web, http://www.phpmyadmin.net/home_page/index.php [accedido junio 2014] 16 El sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos, sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik, definida en [9], con compilación en tiempo de ejecución. Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. Es el lenguaje más popular en la comunidad de desarrolladores, y ésta es una de las razones por las que el desarrollo de aplicaciones Android se ha puesto de moda en los últimos años. En Android, las aplicaciones desarrolladas para una versión concreta del sistema operativo son compatibles con dicha versión y las posteriores. Es decir, a menor versión de la aplicación desarrollada, mayor será el número de dispositivos móviles con los que será compatible. El objetivo es llegar al máximo número de dispositivos móviles, por lo que la versión ideal para el desarrollo del PFC sería en principio la 2.3 (Gingerbread). Sin embargo, los requisitos de algunos métodos utilizados en la aplicación nos han obligado a establecer como versión mínima la 4.0 (Ice Cream Sandwich). En la Figura 1.2 se puede observar el porcentaje de uso que tenía cada una de las versiones existentes en el momento del inicio del proyecto. Se puede observar que el 80% de los móviles Android actuales son capaces de ejecutar nuestra aplicación. Figura 1.2. Porcentaje de uso de las versiones Android. Enero 2014 [10] 17 Se ha decidido usar Android ya que tiene una gran aceptación entre los usuarios de smartphone. Tal y como se puede apreciar en la Figura 1.3, Android (30.23%), con sus distintas versiones, está por encima de Iphone (22.36%). Figura 1.3. Distribución del uso de sistemas operativos para dispositivos móviles [11] 1.3.4 HTML5 y CSS HTML5 (HyperText Markup Language, versión 5) es la quinta revisión del lenguaje básico de la World Wide Web. HTML se define como el estándar de referencia para la elaboración de páginas web en sus diferentes versiones, define una estructura básica y un código para la definición del contenido de una página web. CSS (Cascading Style Sheets) es el lenguaje de hojas de estilo utilizado para describir el aspecto y el formato de un documento escrito en un lenguaje de marcas, esto incluye varios lenguajes basados en XML como son XHTML o SVG. Estos dos lenguajes, junto con PHP, son los encargados de definir la aplicación web desarrollada en este sistema. 1.3.5 XML (Extensible Markup Language) XML es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Concretamente, en el presente proyecto tiene el papel de definir el diseño gráfico de las distintas pantallas de las que consta la aplicación móvil. También 18 tiene un papel muy importante en el archivo de configuración, AndroidManifest.xml, presente en todo proyecto Android. Además es un estándar clásico para el intercambio de datos con un servicio web, aunque en nuestro caso se ha optado por otro estándar que está en pleno auge, JSON (JavaScript Object Notation). XML también va a ser utilizado para enviar información a uno de los Generic Enabler de FI-WARE. 1.3.6 JSON (JavaScript Object Notation) XML ha sido el estándar para el intercambio de datos entre aplicaciones, pero desde hace un tiempo, su uso está disminuyendo, debido al éxito de otro estándar de mensajes más ligero y fácil de interpretar como es JSON tal y como se explica en [12]. El papel de JSON en este proyecto se centra en el intercambio de información entre la aplicación Android y el servidor web que dispone de acceso a la base de datos principal. Los motivos para escoger JSON son: - Posee un formato ligero, compacto y eficaz. - Es muy popular y está muy extendido en el desarrollo de aplicaciones Android, lo que conlleva que exista una gran cantidad de información en la red acerca de su utilización. - Es fácil de usar y tiene soporte en el SDK de Android. 1.4 Motivación y objetivos En los últimos años los pequeños comercios han perdido cuota de mercado [13] y, de hecho, muchos han tenido que cerrar. Uno de los problemas que han llevado a esta situación es la falta de innovación. Mientras la ciudad y sus ciudadanos evolucionan y apuestan por las tecnologías, muchos comercios no lo han hecho y se han quedado atrás. Además, en los últimos años se ha incrementado el uso de los dispositivos móviles, llegando la penetración de los smartphone a un 55% en Europa [14]. De estos dos hechos es de donde surge la idea de este proyecto: facilitar una plataforma innovadora para publicitar las ofertas de los comercios, mediante un sistema fácil de usar y que va a llegar a los dispositivos móviles de los ciudadanos, es decir, de sus clientes. Simultáneamente, los ciudadanos se van a ver beneficiados por el sistema, pues podrán 19 consultar de modo sencillo las ofertas que más les convengan, según su posición geográfica o sus intereses. Hasta ahora la mayoría de estos pequeños comercios tenían, como único medio de promocionar sus productos, los carteles en las puertas de sus establecimientos, de manera que el cliente debía pasar cerca del establecimiento para conocer sus ofertas. Con este nuevo sistema, el cliente conocerá esas ofertas tanto si está lejos, como si está en la calle paralela a la del establecimiento, ampliando así el campo de posibles clientes en una gran proporción gracias a la tecnología y de una manera muy económica. Por otra parte, el desarrollo de este proyecto ha permitido conocer más de cerca la plataforma FI-WARE, que es utilizada como un elemento esencial, así como adquirir conocimientos acerca del desarrollo en Android, de aplicaciones web y la configuración de servidores y bases de datos. Además de lo expuesto, existen otros motivos que han llevado al desarrollo de este proyecto:  Ser capaz de aportar un servicio que va ser utilizado en la ciudad.  Se trata de un proyecto innovador, pues no hay ningún sistema de estas características implantado en la ciudad y, además, las plataformas cloud como FIWARE son todavía poco utilizadas.  Como manifestación del interés de la Comisión Europea en la iniciativa FI-PPP, se han organizado concursos para estudiantes y emprendedores, con el objetivo de desarrollar aplicaciones novedosas que hicieran uso de la plataforma FIWARE. La realización de este PFC nos ha permitido participar en uno de estos concursos, siendo seleccionada nuestra aplicación como una de las 20 finalistas del reto Smart Business Challenge de FI-WARE [15]. Una vez explicados los motivos, pasamos a definir cuál es el objetivo principal del proyecto, así como el resto de objetivos planteados y alcanzados durante su desarrollo. El objetivo principal ha consistido en crear un sistema innovador para el pequeño comercio, en el que los comerciantes puedan introducir sus datos y ofertas diarias, y éstas lleguen a los ciudadanos mediante el uso de una aplicación móvil, de manera que puedan aprovechar esa información y disfrutar de las ofertas de los comercios que les rodean. 20 El ciudadano será así capaz de visualizar todas las ofertas de los comercios de su ciudad, o bien tan sólo las de su alrededor. Para llegar al objetivo final, se han planteado durante el desarrollo del proyecto una serie de objetivos intermedios, que han sido los siguientes: 1. Analizar y definir cuáles son los elementos que forman el sistema de ofertas orientado al pequeño comercio. 2. Analizar el modo de desarrollar dicho sistema utilizando la plataforma FIWARE. 3. Desplegar la infraestructura de datos en la nube de FI-WARE. 4. Desarrollar una aplicación web para que los comercios puedan hacer uso del sistema de una manera sencilla. 5. Realizar un estudio previo de la aplicación Android a desarrollar, buscando los requisitos fundamentales. 6. Desarrollar la aplicación para dispositivos móviles Android con el fin de que la información sobre ofertas llegue a los usuarios finales, los ciudadanos, basándose en su posición geográfica. 7. Integrar varios Generic Enabler de FI-WARE en el sistema. 21 2 Trabajo realizado: MyCity4Me El sistema implementado en este proyecto está formado por a) una infraestructura de datos en la nube, donde se encuentran los servidores virtuales y la base de datos; b) una aplicación web que permite a los comercios publicar ofertas en el sistema; c) una aplicación Android para móviles que sirve para visualizar y sacar partido a las ofertas publicadas en el sistema. A continuación se describen los tres componentes en los que se divide el sistema. La estructura se representa en la Figura 2.1, a la que haremos referencia en las siguientes secciones. Figura 2.1. Estructura general del sistema 2.1 Infraestructura de datos en la nube: FI-WARE En este apartado se va a explicar cómo se ha utilizado la plataforma FI-WARE para implementar la infraestructura de datos en la nube, describiendo cómo se ha hecho uso 22 de su tecnología y cómo hemos integrado nuestro sistema en ella. Al ser FI-WARE una tecnología novedosa, que continúa en proceso de desarrollo, ha sido necesario ir adaptándose a las continuas actualizaciones de software que se han ido llevando a cabo a lo largo del desarrollo del proyecto. FI-WARE dispone de un entorno de creación denominado FI-Lab, en el que se puede configurar una infraestructura de máquinas virtuales con la que implementar la infraestructura de cloud necesaria para dar soporte a las aplicaciones. Para ello, se debe hacer uso de las API proporcionadas por los Generic Enabler de FI-WARE, desplegados o bien como un servicio global, es decir, un servicio compartido por más de un usuario, o bien como un servicio propio, creado por un único usuario y al que sólo él tiene acceso. Para poder hacer uso de todos estos recursos en la nube es necesario desplegar servidores virtuales. El despliegue de dichos servidores virtuales se explica en el Anexo C, “FI-LAB, entorno de desarrollo de FI-WARE”. El servicio web PHP que aparece en la Figura 2.1 se ha creado para que Android pueda tener acceso a la base de datos y su descripción detallada se encuentra en el Anexo E “Implementación del servicio web PHP”. A continuación se explica qué Generic Enabler se han utilizado, así como la configuración necesaria para integrarlos en el sistema. También se describe la estructura de la base de datos creada para nuestro sistema. 2.1.1 Instalación, configuración y uso combinado de los Generic Enabler. Como ya se ha comentado antes, FI-WARE, además de ofrecer un servicio de alquiler de servidores virtuales (gratuito hasta la redacción de este documento), pone a disposición de sus usuarios una serie de herramientas denominadas Generic Enabler (GE). En este sistema se han empleado dos GE, con el objetivo de almacenar las coordenadas y la fecha en el momento en que un usuario accede a la aplicación móvil. Los GE utilizados son: - Orion Context Broker GE [7]. Se encarga de gestionar información de contexto, definida en [16], es decir, información normalmente generada por sensores, y que puede ser necesaria para conocer las características de un determinado entorno. Como se ve en la Figura 2.2, algunos ejemplos de información de contexto podrían ser: el nivel de 23 ruido de una habitación, el nivel de luz, la capacidad de una red, la posición de un objeto, etc. Orion interactúa con aplicaciones productoras de datos de contexto, que proporcionan información de sensores, y con aplicaciones consumidoras de datos de contexto, que procesan esta información para, por ejemplo, mostrarla en una gráfica. El GE también gestiona la disponibilidad de dicha información. Orion permite registrar elementos de contexto y administrarlos mediante actualizaciones y consultas. Además permite suscribirse a la información de contexto de manera que se recibe una notificación cuando ocurre un determinado evento, como el transcurso de un periodo de tiempo o un cambio en alguno de los elementos. Figura 2.2. Ejemplo de información de contexto. - Cosmos - Big Data Analysis GE [8]. Se trata de una plataforma, basada en el ecosistema Hadoop3, que ha sido diseñada para procesar grandes cantidades de datos (Big Data), en modo batch (por lotes), distribuyendo tareas en clústeres de ordenadores de un tamaño mediano, siguiendo el paradigma de MapReduce [17]. Esta plataforma proporciona el marco de trabajo necesario para que los desarrolladores se puedan centrar en resolver problemas de análisis, sin tener que preocuparse de la distribución de los datos y su sincronización. También hay un módulo encargado de recibir datos de contexto procedentes de Orion y de almacenarlos en HDFS (Hadoop Distributed File System) [18]. 3 http://hadoop.apache.org/ 30 administrador crea su cuenta y le facilita sus credenciales de acceso. Esta función utiliza datos pertenecientes al comercio. - Nuevo usuario: Esta ventana se ha añadido para que exista la posibilidad de crear usuarios desde el modo administrador, aunque la creación de cuentas de usuario se puede realizar también desde la aplicación móvil. Esta función utiliza los datos referentes a los usuarios de la aplicación móvil. - Informe de comercios: Esta función está pensada para mostrar todos los comercios, así como su información. Además se pueden borrar o modificar los datos de todos los comercios. - Informe de usuarios: La idea es la misma que para los comercios, es decir, se muestran los usuarios del sistema junto con su perfil, además de incorporar la opción de borrar o modificar sus datos. En la Figura 2.7 se muestran respectivamente los conjuntos de datos utilizados en el modo administrador, a) datos de usuarios y b) datos de comercios. Tambien muestra los datos de las ofertas que serán empleados en el modo comercio, c) Datos de ofertas (a) (b) (c) Figura 2.7. Datos utilizados en la aplicación web: a) Datos de usuarios b) Datos de comercios c) Datos de ofertas. En el caso del modo comercio se han implementado tres funciones principales: - Insertar oferta: Consiste en un formulario en el que introducir la información de cada oferta para realizar la correspondiente publicación. - Ofertas activas: Muestra en una tabla las ofertas activas del comercio y la información acerca del número de solicitudes y compras. Además incluye la opción de 31 borrar o modificar dichas ofertas y la opción de ver las solicitudes enviadas por los clientes, así como la posibilidad de registrar esas solicitudes como oferta vendida. - Historial de ofertas: Muestra el historial de ofertas junto con estadísticas de número de solicitudes y numero de compras de cada oferta, permitiendo saber cuáles han sido las más exitosas. En los tres casos se manejan los datos de las ofertas, representados en la Figura 2.7, c). Este modo también incluye un acceso al perfil del comercio, teniendo la opción de modificarlo si fuera necesario. Esta función maneja datos de información del comercio, los mismos que en el caso del modo administrador (Figura 2.7, b). Como apoyo a este apartado y en general a todo el Apartado 2.2, se ha facilitado un manual de usuario de la aplicación web, disponible en el Anexo B “Manual de usuario de la aplicación web”. 2.2.2 Metodología de desarrollo de la aplicación web Esta aplicación se ha realizado en paralelo con el resto de los componentes del sistema, es decir, a pesar de haber partido de una idea clara y de unos prototipos de ventana concretos, estos se han ido modificando a lo largo del proyecto debido a las nuevas ideas, o a las modificaciones que se han realizado en la base de datos. Se ha utilizado la misma metodología a lo largo de todo su desarrollo, que se ha basado en la iteración de las siguientes fases: - Diseño de los elementos necesarios. Diseño de las ventanas del navegador. - Análisis, obtención y presentación de la información. Se analiza qué información se debe mostrar y cómo obtenerla. - Interacción (botones, cuadros de texto, etc.). Se configura la interacción de los distintos elementos que componen las ventanas del navegador. - Pruebas. Se realizan las pruebas pertinentes para comprobar el correcto funcionamiento de todos los elementos, ya sea por separado o en conjunto. Esta metodología empleada en el desarrollo de la aplicación web se describe más en detalle en el Anexo J “Metodología de desarrollo de la aplicación web”. 32 2.2.3 Decisiones de diseño adoptadas 2.2.3.1 Representación de la información Teniendo en cuenta que la aplicación será utilizada por un público con un amplio rango de edades, uno de los principales objetivos del proyecto ha sido conseguir una aplicación fácil de usar, intuitiva y que muestre toda la información al usuario con pocos clicks. Por ello se ha desarrollado una interfaz visual simple, con botones grandes y llamativos. Además, la forma elegida para representar la información ha sido mediante tablas, pues se ha pensado que es la mejor manera de estructurar la información referente tanto a ofertas publicadas, en el caso del modo comercio, como a usuarios o comercios en el modo administrador. Esta idea se puede ver reflejada en las Figuras 2.8 y 2.9 que muestran la pantalla principal del modo comercio y la representación de la información referente al historial de ofertas de una empresa, respectivamente. Figura 2.8. Pantalla de inicio del modo comercio. 33 Figura 2.9. Ventana del historial de ofertas del modo comercio. 2.2.3.2 Comunicación con la base de datos del sistema La comunicación con la base de datos del sistema es relativamente sencilla, ya que al tratarse de una aplicación basada en HTML5 y PHP, basta con incluir un archivo en el que se configure la conexión, el archivo conexion.php cuyo contenido es: <?php // Conexión a la base de datos MySQL // Definición de los parámetros de conexión define('DB_SERVER','localhost'); // Dirección del servidor define('DB_NAME','mycity4me'); // Nombre de la base de datos define('DB_USER','root'); // Usuario de acceso define('DB_PASS','toor'); // Contraseña de acceso // Conexión pasando los parámetros definidos anteriormente $con = mysql_connect(DB_SERVER,DB_USER,DB_PASS); mysql_select_db(DB_NAME,$con); ?> Posteriormente, en el resto de archivos encargados de definir las ventanas de la aplicación basta con añadir la siguiente línea de código para que la conexión sea establecida: require "data/conexion.php"; 34 2.3 Aplicación Android En este apartado se va a describir la aplicación Android. Para la explicación nos referiremos al esquema global presentado en la Figura 2.1. A continuación se muestra un breve estudio sobre algunas aplicaciones ubicadas en el mismo ámbito que MyCity4Me. Más tarde se explica cada una de las partes de las que consta el desarrollo de esta aplicación, es decir análisis, diseño e implementación, incluyendo la metodología que se ha aplicado para llegar al desarrollo de MyCity4Me. 2.3.1 Aplicaciones relacionadas Este apartado tiene como objetivo estudiar otras aplicaciones cuyo objetivo tenga cierta similitud con el de MyCity4Me. 2.3.1.1 Foursquare Una aplicación relacionada con MyCity4Me es Foursquare, descrita en [23], que muestra información al usuario y sus amigos en función de su localización. El usuario puede compartir y registrar dónde ha estado y obtener recomendaciones y ofertas en base a los lugares que tanto él como sus amigos han visitado. Permite introducir comentarios, y funciona de manera parecida a una red social. Esto ha planteado un problema a los desarrolladores de la aplicación, pues están compitiendo con Facebook, que además de ser la red social más de moda, está comenzando a incluir contenidos de este estilo, como enviar ofertas, anuncios, recomendaciones de amigos, basados en la localización. Además, está encaminada principalmente al público joven, a diferencia de la aplicación presentada en este PFC, que está pensada para un público general, gracias a su sencillez de uso. También hay que tener en cuenta que Foursquare no cuenta con un mapa donde ver todas las ofertas activas en un preciso instante, mientras que MyCity4Me sí lo incluye. 2.3.1.2 El Tenedor El Tenedor, aplicación descrita en [24], también tiene cierta semejanza con la aplicación desarrollada en este PFC, pues se trata de una aplicación que muestra información y ofertas de miles de restaurantes de toda España. Ahora bien, sólo se centra en restaurantes, a diferencia de MyCity4me, que sirve para el pequeño comercio en general, incluyendo restaurantes. 35 Esta aplicación permite encontrar restaurantes y ofertas disponibles cerca del lugar donde estás. Permite hacer reservas inmediatas sin necesidad de prepagos, consultar una ficha detallada y también manda alertas si el restaurante de tu zona tiene alguna oferta nueva. Lo que principalmente diferencia MyCity4Me de esta aplicación es que favorece al pequeño comercio en general, no sólo a los restaurantes. 2.3.1.3 Mycoyote Mycoyote, aplicación definida en [25], es una aplicación que hace uso de la herramienta de localización para avisar de la ubicación de radares, fijos, móviles, de semáforo y de tramo, además de ser un asistente en la carretera. Esta aplicación tiene cierta semejanza con MyCity4Me, al tratarse de una herramienta que trata con localizaciones geográficas. *** A diferencia de estas aplicaciones, Mycity4Me, al estar promovida por el Ayuntamiento, está pensada en principio para la ciudad de Zaragoza, lo cual no implica que no sea perfectamente escalable y replicable para su uso en otras ciudades. 2.3.2 Análisis de la aplicación Como en cualquier proyecto de software, hay que determinar cuáles son los requisitos que debe satisfacer el sistema. A continuación se detallan los requisitos de la aplicación móvil, que definen las acciones fundamentales que deben ser llevadas a cabo al recibir información, procesarla y producir resultados:  Funcionamiento como usuario o invitado.  Opción de registro de nuevos usuarios.  Visualización del perfil de usuario.  Menú de ofertas activas ordenadas por hora límite más próxima y tipo de comercio, escogidas en función del perfil del usuario (género, edad, propietario de tarjeta ciudadana) y de su posición geográfica.  Información acerca de cada oferta y comercio.  Mapa con todos los comercios con ofertas activas geo-posicionados.  Posición del usuario en el mapa.  Presentación de información del comercio sobre el mapa.  Acceso a ofertas lanzadas por los comercios que aparecen en el mapa. 36  Posibilidad de valorar un comercio.  Posibilidad de solicitar una oferta.  Ruta desde donde está el usuario hasta establecimiento objetivo.  Conexión con servicios web externos mediante protocolo HTML y formato de mensajes JSON (tratamiento de datos de la base de datos) o XML (envío de datos a Orion). 2.3.3 Diseño de la aplicación Una vez definidos los requisitos de la aplicación, la siguiente tarea consiste en plantear su diseño. En primer lugar presentamos la arquitectura de la aplicación y a continuación se detalla el modelo de los datos utilizado. 2.3.3.1 Arquitectura de la aplicación La arquitectura de la aplicación se puede dividir en tres partes. La primera parte consiste en la aplicación propiamente dicha, es decir, código Java, clases, imágenes, archivos de configuración, etc. La segunda parte está formada por las librerías externas a Android, añadidas al proyecto para aportar nuevas herramientas al entorno de desarrollo. La tercera parte comprende las fuentes de datos de las que se nutre la aplicación. Existen dos tipos de fuentes de datos:  Externas: Fuentes de datos ajenas al dispositivo móvil, normalmente accesibles mediante servicios web. En este caso el servicio web ha sido creado en este proyecto, mediante archivos PHP almacenados en la nube, en la misma máquina virtual que los archivos de la aplicación web y que la base de datos. Estos archivos permiten establecer la comunicación entre la aplicación Android y la base de datos del sistema, permitiendo así realizar consultas sobre los datos. Este sistema se describe más en detalle en el apartado 2.3.5.3.  Internas: Se encuentran localizadas en el propio dispositivo móvil, en concreto en la tarjeta de memoria SD, donde se almacenan imágenes, vídeos, etc. También el fichero XML sharedPreferences sirve para almacenar datos privados en pares clave-valor, que posteriormente sirven, por ejemplo, para no tener que introducir los datos de acceso cada vez que se quiere entrar a una aplicación. Esta breve descripción de la arquitectura se expone en la Figura 2.10. 37 Figura 2.10. Arquitectura de la aplicación. Las tres partes mencionadas al inicio de este apartado, se encuentran comunicadas entre sí. La comunicación entre la capa de aplicación y la de librerías se lleva acabo directamente, o mediante el Application Framework, zona del sistema operativo Android donde están las herramientas del desarrollador. Algunas herramientas incluidas en el Application Framework7 y que han sido utilizadas en MyCity4Me son:  View System. El sistema de views consiste en un conjunto de elementos que ayudan a construir las interfaces de usuario: botones, cuadros de texto, listas y elementos más avanzados como un navegador web o un visor de Google Maps. Esto se utiliza contantemente en MyCity4Me para construir las interfaces de usuario.  Activity manager. El gestor de Activities se encarga de administrar la pila de actividades de la aplicación, así como su ciclo de vida. Este gestor tiene un funcionamiento por defecto, de manera que si se pasa de un activity a otro, el activity del que ha salido, se queda en la pila y si el usuario pulsa el botón “atrás”, la aplicación vuelve a dicho activity. En MyCity4Me hay algunos casos en los que tras acceder a un activity, no se quiere volver al anterior, sino a otro. Para conseguirlo hay que “destruir” ese activity al salir de él, escribiendo “finish();”.  Resource manager. El gestor de recursos se encarga de gestionar todos los 7 http://developer.android.com/intl/es/guide/components/index.html 38 elementos que forman parte de la aplicación y están fuera del código como cadenas de texto, imágenes, sonidos, layout, etc. Normalmente, los textos fijos de las aplicaciones se guardan en String en un archivo XML. En MyCity4Me, se han creado dos archivos de XML de String, uno con las cadenas de texto en Español, y otro en Inglés, permitiendo que en función de los ajustes del móvil se muestre el texto en el idioma correspondiente. Esto es posible gracias al gestor de recursos  Location manager. El gestor de localización permite determinar la posición. geográfica del dispositivo Android mediante GPS o mediante el análisis de las redes disponibles, así como trabajar con mapas. En MiCity4Me se utiliza para obtener la posición del usuario y enviar ofertas en función de ello, y también en el mapa, para localizar todos los comercios.  Window manager. El gestor de ventanas se encarga de organizar lo que se muestra en pantalla. Se utiliza cada vez que se muestra una ventana. La comunicación entre la aplicación y las fuentes de datos depende del tipo de fuente de información. En el caso de las fuentes externas, la comunicación se establece por medio de la red de datos 3G disponible en el móvil o Wi-Fi; en el caso de las fuentes internas, Android utiliza librerías para realizar dicha comunicación. En el Anexo I.2 se explican más en detalle los métodos comunicación utilizados. 2.3.3.2 Modelo de datos Tras la descripción de la arquitectura de la aplicación y el análisis de los requisitos, se va a proceder a describir la organización de la información tratada en la aplicación, es decir, el modelo de datos. El modelo de datos se va a apoyar en la base de datos creada en la infraestructura de datos en la nube, cuya descripción podemos encontrar en el Apartado 2.1.2. Se dispone de tres objetos Java para manejar la información en la aplicación:  Objeto Profile: se utiliza para manejar los datos del perfil de usuario.  Objeto Business: se utiliza para manejar información referente a los comercios que se muestran en el mapa.  Objeto UserDeal: se utiliza para manejar la información referente a las ofertas y mostrarla en el menú de ofertas. 39 La Figura 2.11 muestra la estructura de estos objetos. Figura 2.11. Objetos Java utilizados en la aplicación, junto con sus atributos. Además de estos datos, existen otros que no se utilizan a través de objetos. Estos datos o bien se van pasando de un Activity a otro, a través de los Intent (ver la definición y más detalles en el Anexo F), para tenerlos disponibles a lo largo de toda la aplicación, como son los datos user e iduser, o bien se generan en la propia aplicación cuando son necesarios, como pueden ser las coordenadas de la posición actual del dispositivo móvil, o el estado del GPS (activado o desactivado). 2.3.4 Metodología de desarrollo de la aplicación El desarrollo de la aplicación móvil ha sido la parte más costosa de este PFC en cuanto al tiempo empleado. Antes de entrar en la metodología utilizada en el desarrollo de MyCity4Me, hay que mencionar que la fase relacionada con el diseño gráfico de la aplicación se ha realizado en todo momento a la par que la fase de implementación. También se debe mencionar que, tal y como se ha explicado en el apartado referente a la aplicación web, las distintas partes del sistema se han desarrollado en paralelo, de manera que la aplicación Android ha ido evolucionando en función de modificaciones o actualizaciones del sistema completo. Después de conocer lo básico acerca de los recursos gráficos proporcionados por el SDK8 de Android, y tras diversos test realizados probando dichos recursos, se puede comenzar a diseñar un prototipo de interfaz gráfica. Android permite plasmar fácilmente un diseño previo, obtenido durante la fase de desarrollo, ya que cada una de las ventanas de navegación diseñadas se corresponde con una parte independiente de código fuente. 8 http://developer.android.com/intl/es/sdk/index.html 46 seleccionado. - Consulta de todas las ofertas activas de un determinado comercio. - Envío de solicitud de la oferta solicitada por el usuario. - Envío de la valoración de un usuario de un comercio determinado. Consulta de la valoración global de los comercios. 2.3.6 Estructura de la aplicación En este último apartado se va a describir brevemente la estructura de la aplicación móvil, cuyo esquema general se encuentra representado en la Figura 2.18. No obstante, esta parte se encuentra descrita visualmente, por medio de capturas de pantalla, en el Anexo A “Manual de usuario de la aplicación Android”. Figura 2.18. Estructura y navegación de la aplicación móvil MyCity4Me. A continuación, con ayuda de la Figura 2.18, se describen las funciones de las distintas ventanas de la aplicación:  Activity_intro: Se encarga de cargar los datos de usuario almacenados en el fichero sharedPreferences de manera que si no existen pasa a activity_bienvenida; si existen, inicia la sesión y pasa directamente a 47 activity_principal.  Activity_bienvenida: Permite elegir el modo de acceso a la aplicación. El modo Invitado genera un usuario de tipo invitado y pasa a activity_principal y el modo usuario registrado pasa a la ventana de login, activity_registrar.  Activity_registrar: Se encarga de tramitar el login a la aplicación. Además permite crear un nuevo usuario para lo que accede a activity_nuevo_usuario.  Activity_nuevo_usuario: Permite introducir los datos del usuario a registrar y enviarlos a la base de datos. Después vuelve a activity_registrar.  Activity_principal: Este es el eje de la aplicación, a partir de esta ventana se puede acceder al menú de selección de ofertas, activity_seleccion, al mapa, activity_mapa_ofertas y al perfil, activity_datos_usuario. Además permite acceder a los ajustes del teléfono y en caso de ser un usuario registrado, permite cerrar la sesión.  Activity_datos_usuario: Muestra los datos del usuario y mediante la barra de acciones, dispone de acceso directo al mapa de ofertas.  Activity_seleccion: Permite elegir el tipo de ofertas que quieres ver, pasando a activity_menu_1. Contiene acceso directo al mapa y al perfil a través de la barra de acciones.  Activity_mapa_ofertas: Muestra la posición de los comercios con ofertas activas. Pulsando en los iconos, se muestra una ventana de información (infoWindow) con información del comercio. Esta ventana también se puede pulsar accediendo así al menú de ofertas activas de ese comercio, activity_menu_2.  Activity_menu_1: Muestra una lista con las ofertas activas en función del tipo de oferta, al pulsar un elemento de la lista aparece una ventana con información sobre la oferta. Permite solicitar ofertas e iniciar el navegador para ver la ruta desde la posición del usuario hasta el comercio que ha lanzado la oferta.  Activity_menu_2: Muestra una lista con las ofertas activas publicadas por el comercio seleccionado. Permite solicitar ofertas, valorar el comercio e iniciar el navegador. Ambos menús tienen acceso directo al perfil y el mapa a través de la barra de acciones y pulsando sobre el teléfono que aparece junto con la información de la oferta permite iniciar el terminal de llamadas del teléfono con dicho teléfono marcado, facilitando la tarea si se quiere contactar con el comercio. 48 49 3 Conclusiones y líneas futuras En este capítulo final de la Memoria se va a valorar el cumplimiento de los objetivos a la vista de los resultados obtenidos, se van a indicar las posibles líneas futuras como continuación del presente PFC, y se valorará la experiencia conseguida con su realización. 3.1 Conclusiones El resultado más apreciable es el correcto funcionamiento del sistema completo desarrollado a lo largo de este proyecto. Además se puede afirmar el cumplimiento de todos los objetivos marcados al inicio de éste, sobre todo los dos principales, marcados por el Servicio de Ciudad Inteligente del Ayuntamiento de Zaragoza: utilizar la novedosa plataforma FI-WARE y desarrollar un sistema que sea capaz de aportar un beneficio al pequeño comercio. El sistema creado es completamente funcional y cumple correctamente los objetivos. Del desarrollo de este proyecto se han adquirido una serie de experiencias interesantes, que se describen a continuación:  El hecho de usar una infraestructura en la nube permite trabajar desde cualquier lugar y desde cualquier terminal.  El conjunto de herramientas y recursos ofrecidos por la plataforma FIWARE, ha permitido trabajar cómodamente en la nube, aunque al tratarse de un proyecto en desarrollo, todavía quedan pendientes muchas mejoras y mucha labor de documentación.  El uso de JSON supone una ventaja respecto a XML, en este caso ha servido para dotar al proyecto de rapidez y sencillez en la transmisión de datos entre las distintas partes del sistema, lo que es muy importante dadas las exigencias de los usuarios.  Android ha demostrado su potencial como plataforma de desarrollo de aplicaciones. Además tiene a disposición de los desarrolladores gran cantidad de información como manuales, tutoriales, etc. El entorno de programación es intuitivo y sencillo de manejar, lo que permite 50 programar con relativa rapidez. La popularidad de este sistema operativo permite que un gran número de usuarios tenga la posibilidad de usar la aplicación.  El uso de los mapas de Google ha sido clave en MyCity4Me, ya que dota a la aplicación de diseño y sencillez. 3.2 Líneas futuras Las posibilidades de futuras líneas de trabajo son diversas y se enumeran a continuación: - Introducción de la Tarjeta Ciudadana de Zaragoza como medio de confirmación de solicitudes de ofertas en los comercios o para otras funciones. - Creación de un sistema que pueda sacar partido a los datos generados por la aplicación, llegando incluso a generar estudios de mercado. Por ejemplo, gracias a los datos almacenados en Cosmos, se podría elaborar un mapa con las zonas más concurridas por usuarios de MyCity4Me, lo que permitiría a los comercios centrar su publicidad en esas zonas. - Mejora de la aplicación web añadiendo nuevas mejoras que la hagan aún más intuitiva y sencilla. - Dotar de seguridad al sistema, por ejemplo, integrando sistemas de cifrado para proteger los datos. - Mejoras sobre la aplicación Android, como nuevas formas de visualizar las ofertas, introducción de fotos de los comercios para facilitar su reconocimiento en la calle, etc. 3.3 Valoración personal Este proyecto ha tenido una inmensa cantidad de repercusiones sobre mí, sobre todo en sentido profesional. Todo lo que he aprendido a lo largo de este proyecto era inimaginable antes de empezarlo. El hecho de trabajar con tan gran variedad de tecnologías me ha abierto puertas que no sabía que existían. Trabajar con la plataforma FI-WARE me ha permitido conocer y trabajar junto a profesionales del sector. La elección de este proyecto como uno de los finalistas del reto Smart Business & Industry de FI-WARE me ha otorgado una experiencia muy interesante y ha sido clave para la consecución de todos los objetivos marcados. 51 Además de todo esto, aprender a desarrollar aplicaciones Android, sistema operativo en pleno auge, y aplicaciones web, me ha abierto un camino inesperado. Pensar que he realizado un proyecto completamente funcional, para la ciudad en que vivo y que puede beneficiar a la gente de la ciudad, hace que todo el desarrollo lo haya llevado a cabo con gran energía. Este proyecto ha hecho que se activen mis ganas de aprender todo lo posible acerca de las tecnologías punteras en la actualidad. 52 53 REFERENCIAS [1] FI-PPP, Future Internet Public-Private-Partnership. Disponible online: www.fippp.eu [visitado diciembre 2013]. [2] Denis Havlik, Sven Schade, Wout van Wijk, Thomas Usländer, Juanjo Hierro: Leveraging the Future Internet for the Environmental Usage Area, EnviroInfo 2011. [3] Juniper Research Whitepaper, “Consumer Cloud ~ There’s No Limit”, Mayo 2014. Disponible online en: http://www.juniperresearch.com/shop/ download_whitepaper.php?whitepaper=261 [visitado mayo 2014]. [4] FI-WARE, proyecto principal del programa FI-PPP. Disponible online: www.fiware.org [visitado diciembre 2013]. [5] Página web de acceso a FI-Lab: FI-LAB, the open innovation Lab. Disponible online: https://account.lab.fi-ware.org/ [visitado enero 2014]. [6] FI-WARE Glossary Global, definición de Generic Enabler, accesible en: http://forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/FIWARE. Glossary.Global, [visitado junio 2014] [7] Orion Context Broker. Disponible online: http://catalogue.fiware.org/enablers/publishsubscribe-context-broker-orion-context-broker [visitado enero 2014]. [8] Cosmos - BigData Analysis. Disponible online: http://catalogue.fiware.org/enablers/bigdata-analysis-cosmos [visitado enero 2014]. [9] Máquina virtual Dalvik, Dalvik Technical Information, Disponible online: http://source.android.com/devices/tech/dalvik/ [visitado enero 2014]. [10] Actualización porcentajes de uso de las distintas versiones de Android. Disponible online: http://appskyworld.com/2014/01/google-actualiza-losporcentajes-de-uso-de-las-diferentes-versiones-de-android-en-la-pagina-dedesarrolladores/ [visitado febrero 2014]. [11] Porcentajes de uso de los distintos sistemas operativos para móviles. Disponible online: http://blog.uchceu.es/informatica/ranking-de-sistemas-operativos-masusados-para-2014/ [visitado febrero 2014]. [12] Comparacion JSON y XML. Disponible online: http://www.json.org/xml.html [visitado febrero 2014]. [13] Instituto Nacional de Estadística, “Índices de Comercio al por Menor (ICM). Base 2010, Abril 2014”. Datos provisionales. Disponible online: http://www.ine.es/daco/daco42/daco4215/ccm0414.pdf [visitado enero 2014]. [14] Comscore, “EU5 Smartphone Penetration Reaches 55 Percent in October 2012”, Dec 2012. Disponible online http://www.comscore.com/Insights/Press_Releases/2012/12/EU5_Smartphone_ Penetration_Reaches_55_Percent_in_October_2012 [visitado abril 2014]. 54 [15] Ideas selected to compete in the FI-WARE Challenges: Part I – Smanrt Business & Industry. Disponible online: http://www.fi-ware.org/2014/01/15/fi-warechallenges-smart-business-finalists/ [visitado abril 2014]. [16] Louise Barkhuus, Context Information vs. Sensor Information: A Model for Categorizing Context in Context-Aware Mobile Computing. SIMULATION SERIES, 2003, vol. 35, no 1, p. 127-133. Disponible online: http://www.itu.dk/people/barkhuus/barkhuus_cst.pdf [Visitado enero 2014]. [17] What is MapReduce? Disponible online en: http://www-01.ibm.com/software/data/infosphere/hadoop/mapreduce/ [Visitado en enero 2014]. [18] HDFS Architecture Guide. Disponible online en: http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html#Introduction [Visitado en enero 2014]. [19] Cygnus connector. Disponible en: https://github.com/telefonicaid/fiwareconnectors/blob/release/0.1/flume/README.md [visitado mayo 2014]. [20] Welcome to Apache Flume. Disponible online en: http://flume.apache.org/ [Visitado en mayo 2014]. [21] Reglas de normalización de bases de datos. Disponible online: http://www.eet2mdp.edu.ar/alumnos/MATERIAL/MATERIAL/info/infonorma. pdf [visitado febrero 2014]. [22] Tarjeta Ciudadana de Zaragoza. Disponible online en: http://www.zaragoza.es/ciudad/sectores/tarjetaciudadana/detalle_Tramite?id=22 960 [Visitado en diciembre 2013]. [23] Aplicación Foursquare. Disponible online en: https://play.google.com/store/apps/details?id=com.joelapenna.foursquared&hl=e s [Visitado en enero 2014]. [24] Aplicación El Tenedor. Disponible online en: https://play.google.com/store/apps/details?id=com.lafourchette.lafourchette&hl= es [Visitado en enero 2014]. [25] Aplicación Mycoyote. Disponible online en: http://www.mycoyote.es/es/productos/icoyoteapp [Visitado en enero 2014] [26] Publish/Subscribe Broker - Orion Context Broker - User and Programmers Guide. Disponible en: https://forge.fi-ware.org/plugins/mediawiki/wiki/fiware/ index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker__User_and_ Programmers_Guide#Entity_Creation [visitado enero 2014]. 55 ACRÓNIMOS API Application Programming Interface CSS Cascading Style Sheets FI Future Internet FI-PPP Future Internet Public-Private-Partnership GE Generic Enabler GPS Global Positioning System HDFS Hadoop Distributed File System HTML HyperText Markup Language HTTP HyperText Transfer Protocol JSON JavaScript Object Notation OSM Open Street Maps PFC Proyecto Fin de Carrera PHP PHP Hypertext Pre-processor SDK Software Development Kit SQL Structured Query Language SVG Scalable Vector Graphics TIC Tecnologías de la Información y las Comunicaciones W3C World Wide Web Consortium XHTML eXtensible HyperText Markup Language XML eXtensible Markup Language