u jaÉn escuela politÉcnica superior (jaÉn)...

109
Escuela Politécnica Superior de Jaén UNIVERSIDAD DE JAÉN ESCUELA POLITÉCNICA SUPERIOR (JAÉN) Trabajo Fin de Grado ESTUDIO Y DISEÑO DE UN PROTOTIPO DE APLICACIÓN MÓVIL HÍBRIDA PARA SEGUIMIENTO Y CONTROL DE DISPOSITIVOS CON TECNOLOGÍA BLUETOOTH LOW ENERGY Alumno: David Jiménez Ibáñez Tutor: Prof. D. José Ramón Balsas Almagro Dpto: Departamento de Informática Septiembre, 2016

Upload: phamque

Post on 12-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Escu

ela

Polit

écn

ica S

up

eri

or

de J

n

UNIVERSIDAD DE JAÉN ESCUELA POLITÉCNICA SUPERIOR (JAÉN)

Trabajo Fin de Grado

ESTUDIO Y DISEÑO DE UN PROTOTIPO DE APLICACIÓN MÓVIL

HÍBRIDA PARA SEGUIMIENTO Y CONTROL DE DISPOSITIVOS CON TECNOLOGÍA BLUETOOTH LOW

ENERGY

Alumno: David Jiménez Ibáñez Tutor: Prof. D. José Ramón Balsas Almagro Dpto: Departamento de Informática

Septiembre, 2016

Universidad de Jaén

Escuela Politécnica Superior de Jaén

Departamento de Informática

Don JOSÉ RAMÓN BALSAS ALMAGRO, tutor del Trabajo de Fin de Grado titulado:

ESTUDIO Y DISEÑO DE UN PROTOTIPO DE APLICACIÓN MÓVIL HÍBRIDA PARA

SEGUIMIENTO Y CONTROL DE DISPOSITIVOS CON TECNOLOGÍA

BLUETOOTH LOW ENERGY, que presenta DAVID JIMÉNEZ IBÁÑEZ, autoriza su

presentación para defensa y evaluación en la Escuela Politécnica Superior de Jaén.

Jaén, SEPTIEMBRE de 2016

El alumno: El tutor:

DAVID JIMÉNEZ IBÁÑEZ D. JOSÉ RAMÓN BALSAS ALMAGRO

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

2 Escuela Politécnica Superior de Jaén

Índice Tabla de ilustraciones ........................................................................................................... 4

1.Introducción ........................................................................................................................ 7

1.1 Propósito ................................................................................................................. 7

1.2 Motivación ............................................................................................................... 8

1.3 Objetivos ................................................................................................................. 9

1.4 Metodologías..........................................................................................................10

1.3.1 Metodologías Tradicionales vs Metodologías Ágiles .............................................10

1.3.2 SCRUM ................................................................................................................13

1.5 Estructura del documento ......................................................................................15

2. Análisis .............................................................................................................................18

2.1 Análisis preliminar ..................................................................................................19

2.1.1 Aplicaciones móviles multiplataforma ...................................................................19

2.1.2 Protocolo de comunicación Bluetooth 4.0 .............................................................23

2.1.3 Estado del arte .....................................................................................................28

2.2 Propuesta de solución ................................................................................................31

2.3 Requisitos del sistema ................................................................................................32

2.4 Historias de usuario ....................................................................................................34

2.5 Planificación de tareas ................................................................................................36

2.5.1 Planificación de Sprints ........................................................................................38

2.6 Estudio de viabilidad ...................................................................................................42

2.7 Modelo de dominio ......................................................................................................44

3.Diseño ...............................................................................................................................46

3.1 Diagrama de la base de datos ....................................................................................46

3.2 Diagrama de clases ....................................................................................................48

3.3 Diagramas de secuencia .............................................................................................56

3.3.1 Registro ................................................................................................................56

3.3.2 Login ....................................................................................................................57

3.3.3 Modificación Perfil ................................................................................................58

3.3.4 Conexión ..............................................................................................................59

3.3.5 Ver datos aplicación web ......................................................................................60

3.3 Diseño de la interfaz ...................................................................................................61

4.Implementación .................................................................................................................72

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

3 Escuela Politécnica Superior de Jaén

4.1 Arquitectura ................................................................................................................72

4.2 Detalles sobre implementación ...................................................................................74

4.2.1 Apache Cordova y AngularJS ...............................................................................75

4.2.2 Ionic Framework ...................................................................................................80

4.2.3 FIirebase ..............................................................................................................82

4.2.4 EVOthings ............................................................................................................86

4.2.5 Bootstrap ..............................................................................................................91

5. Conclusiones ....................................................................................................................94

5.1 Mejoras y trabajos futuros ...........................................................................................95

6. Bibliografía .......................................................................................................................97

APÉNDICE I: Manual de instalación del sistema ..................................................................99

APÉNDICE II: Manual de usuario ....................................................................................... 100

APÉNDICE III: Descripción de contenidos suministrados ................................................... 108

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

4 Escuela Politécnica Superior de Jaén

Tabla de ilustraciones

Ilustración 1 - SmartBand Pulse Ox. Fuente: www.withings.com ........................................... 7

Ilustración 2 - Fases en metodologías tradicionales. Fuente: www.rendoro.com ..................10

Ilustración 3 - Fases en metodologías ágiles. Fuente: www.rendoro.com.............................11

Ilustración 4 - Ciclo de desarrollo ágil. Fuente: www.grupo1u6.blogspot.com .......................12

Ilustración 5 - Ciclo de trabajo de SCRUM. Fuente: Apuntes asignatura "Desarrollo Ágil" ....13

Ilustración 6 - Logo Bluetooth 4.0. Fuente: www.secureidnews.com ....................................18

Ilustración 7 - Aplicaciones Híbridas. Fuente: www.deideaaapp.org .....................................18

Ilustración 8 - Tipos de aplicaciones móviles. Fuente: http://blog.aplicacionesmovil.com/ ....20

Ilustración 9 - Posibilidades de cada tipo de aplicación móvil. Fuente:

http://blog.aplicacionesmovil.com/ ........................................................................................22

Ilustración 10 - Resumen operacional de aplicaciones móviles. Fuente:

http://blog.aplicacionesmovil.com/ ........................................................................................22

Ilustración 11: Perfil de atributos genérico GATT Bluetooth 4.0. Fuente: www.bluetooth.com

.............................................................................................................................................26

Ilustración 12 - Componentes de una característica en Bluetooth 4.0. Fuente:

www.safaribooksonline.com/ ................................................................................................27

Ilustración 13 - Aplicación Smartband. Fuente: Google Play ................................................28

Ilustración 14 - Página de inicio aplicación Smartband. Fuente: Google Play .......................29

Ilustración 15 - Página de estadísticas aplicación Smartband. Fuente: Google Play ............29

Ilustración 16 - Pantalla estadísticas aplicación Sony Lifelog ...............................................30

Ilustración 17 - Pantalla inicial aplicación Sony Lifelog. Fuente: Google Play .......................30

Ilustración 18 - Gráfico Burn Down .......................................................................................41

Ilustración 19 - Gastos herramientas software ......................................................................42

Ilustración 20 - Gastos dispositivos hardware .......................................................................42

Ilustración 21 - Gastos de personal ......................................................................................43

Ilustración 22 - Costes totales del proyecto ..........................................................................43

Ilustración 23 - Modelo de dominio .......................................................................................44

Ilustración 24 - Esquema/Resumen de la base de datos ......................................................46

Ilustración 25: Diagrama de base de datos Firebase ............................................................47

Ilustración 26: Diagrama de base de datos con Firebase .....................................................47

Ilustración 27 - Two Way Data Binding en AngularJS. Fuente: www. docs.angularjs.org .....48

Ilustración 28 - Diagramas de Secuencia: Registro ..............................................................56

Ilustración 29 - Diagramas de Secuencia: Login ...................................................................57

Ilustración 30 - Diagramas de Secuencia: Modificar datos usuario .......................................58

Ilustración 31 - Diagramas de Secuencia: Conexión a pulsera .............................................59

Ilustración 32 - Diagramas de Secuencia: Ver datos personales (Web) ...............................60

Ilustración 33 - Características UI. Fuente: www.ida.cl .........................................................61

Ilustración 34 - Herramienta de prototipado Mockflow: www.mockflow.com .........................62

Ilustración 35 - Interfaz 1: Login ...........................................................................................63

Ilustración 36 - Interfaz 2: Perfil ............................................................................................64

Ilustración 37 - Interfaz 3: Menú lateral .................................................................................65

Ilustración 38 - Interfaz 4: Conexión .....................................................................................66

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

5 Escuela Politécnica Superior de Jaén

Ilustración 39 - Interfaz 5: Calendario ...................................................................................67

Ilustración 40 - Interfaz 6: Estadísticas .................................................................................68

Ilustración 41 - Interfaz 7: Actividad .....................................................................................69

Ilustración 42 - Interfaz 8: Pantalla Principal (Aplicación Web) .............................................70

Ilustración 43 - Interfaz 9: Pantalla de Estadísticas (Aplicación Web) ...................................71

Ilustración 44 - Arquitectura en capas ..................................................................................72

Ilustración 45 - Resumen de Arquitectura .............................................................................73

Ilustración 46 - Angular JS. Fuente: www.angularjs.org........................................................75

Ilustración 47 - Arquitectura de AngularJS. Fuente propia ....................................................76

Ilustración 48 - Módulo principal de la aplicación. .................................................................76

Ilustración 49 - AngularJS Router Provider ...........................................................................77

Ilustración 50 - Controlador en AngularJS ............................................................................78

Ilustración 51 - Ng-app AngularJS ........................................................................................78

Ilustración 52 - Declaración de un objeto $scope .................................................................79

Ilustración 53 - Uso de objetos $scope .................................................................................79

Ilustración 54 - Llamada a función AngularJS .......................................................................79

Ilustración 55 - Resumen AngularJS ....................................................................................79

Ilustración 56 - Ionic Framework. Fuente: www.ionicframework.com ....................................81

Ilustración 57 - Creando un proyecto Ionic ...........................................................................81

Ilustración 58 - AngularJS y Firebase. Fuente: www.firebase.com .......................................82

Ilustración 59 - Inyección de dependencias de Firebase y AngularFire ................................83

Ilustración 60 - Inyección en el módulo de AngularJS ..........................................................83

Ilustración 61 - URL de Firebase global ................................................................................83

Ilustración 62 - Login con Firebase .......................................................................................84

Ilustración 64 - URL de referencia Firebase .........................................................................85

Ilustración 63 - Estructura en página de Firebase. ................................................................85

Ilustración 65 - Sincronización de datos con Firebase ..........................................................85

Ilustración 66 - EVOthings. Fuente: www.evothings.com .....................................................86

Ilustración 67 - Importación de plugin para Cordova. Fuente: www.github.com ....................87

Ilustración 68 - Escaneo de dispositivos BLE con Evothings ................................................88

Ilustración 69 - Conexión a dispositivo BLE ..........................................................................88

Ilustración 70 - Escaneo de Servicios BLE ...........................................................................89

Ilustración 71 - Escaneo de Características BLE .................................................................89

Ilustración 72 - Lectura de Características BLE ....................................................................90

Ilustración 73 - Bootstrap. Fuente: www.bootstrap.com ........................................................91

Ilustración 74 - Sistema de columnas de Bootstrap ..............................................................92

Ilustración 75 - Visionado de la aplicación web en PC ..........................................................93

Ilustración 76 - Visionado de la aplicación web en Smartphone ...........................................93

Ilustración 77 - Pantalla de registro .................................................................................... 100

Ilustración 78 - Pantalla de inicio ........................................................................................ 100

Ilustración 79 - Pantalla principal ........................................................................................ 101

Ilustración 80 - Calendario: Selección de día ...................................................................... 102

Ilustración 81 - Calendario: Pantalla principal ..................................................................... 102

Ilustración 82 - Pantalla estadísticas: Redes sociales......................................................... 103

Ilustración 83 - Pantalla estadísticas .................................................................................. 103

Ilustración 84 - Pantalla de actividad principal .................................................................... 104

Ilustración 85 - Pantalla de comienzo de actividad ............................................................. 104

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

6 Escuela Politécnica Superior de Jaén

Ilustración 86 - Pantalla de conexión .................................................................................. 105

Ilustración 87 - Pantalla login aplicación web ..................................................................... 106

Ilustración 88 - Pantalla principal aplicación web ................................................................ 106

Ilustración 89 - Pantalla estadísticas aplicación web .......................................................... 107

Ilustración 90 - Pantalla datos personales aplicación web .................................................. 107

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

7 Escuela Politécnica Superior de Jaén

1.Introducción

1.1 Propósito

El propósito de este Trabajo de Fin de Grado es el de analizar, diseñar e

implementar un prototipo de aplicación móvil híbrida para la conexión y seguimiento

de un dispositivo con la tecnología Bluetooth Low Energy (BLE de aquí en adelante)

mediante dicho protocolo de conexión. En este caso, el dispositivo utilizado para el

estudio de la conexión BLE y la implementación del prototipo de la aplicación, ha

sido la pulsera inteligente Pulse OX de la marca Withings.

Con esta aplicación móvil, el usuario podrá hacer un seguimiento de distintos

datos relativos a su actividad, como por ejemplo el pulso cardíaco, número de pasos,

distancia recorrida, elevación ganada y perdida, calorías perdidas, además de otras

opciones de monitorización ofrecidas por la pulsera y que serán comentadas más

adelante. Además, se desarrollará un servicio web a través del cual se recibirán

datos provenientes de la aplicación móvil para su recolección y posterior uso, por

ejemplo, para monitorizaciones en intervalos temporales.

Ilustración 1 - SmartBand Pulse Ox. Fuente: www.withings.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

8 Escuela Politécnica Superior de Jaén

1.2 Motivación

Es un hecho que la tecnología evoluciona cada vez más rápidamente, y que

esta tecnología es cada vez más accesible a la sociedad. Actualmente, los

dispositivos que más claramente han evolucionado son los dispositivos móviles,

como smartphones, tablets o laptops, que forman parte en la vida diaria de la

mayoría de las personas de nuestra sociedad. La variedad en cuanto a las marcas

fabricantes de estos dispositivos es inmensa y, aunque de forma mucho más

reducida, también hay numerosos sistemas operativos o plataformas que hacen

funcionales a estos dispositivos. Algunos de los principales son Android, iOS,

Windows Phone, Linux... , aunque existen algunos más. Esta pluralidad de sistemas

operativos existentes para dispositivos móviles obligan a los desarrolladores a crear

una aplicación para cada uno de estos OS, o a dejar de lado alguno de ellos.

Es por esto que las aplicaciones móviles híbridas multiplataforma, que se

basan en programación web, tienen una gran ventaja sobre estas, ya que solo se

necesita un desarrollo para elaborar una aplicación y esta será instalable en

cualquiera de las principales plataformas. De ahí que se decida para este proyecto

obtener el conocimiento necesario para poder desarrollar una aplicación de este tipo.

Por otra parte, conocemos que la tecnología avanza también con dispositivos

que pretenden ser una ayuda en nuestro día a día, y que cada vez nos llevan en

mayor medida a vivir en un "mundo inteligente". Este conjunto de dispositivos que de

alguna forma interactúan con nosotros y con nuestro entorno forman parte de lo que

conocemos hoy en día como el "Internet de las cosas". El desarrollo de aplicaciones

que interactúan con estos dispositivos es, por tanto, claramente creciente en estos

últimos años, por lo que parecía interesante que nuestra aplicación estuviese

relacionada con este ámbito.

Gracias a que la Universidad de Jaén y, más concretamente, el Centro de

Estudios Avanzados en Tecnologías de la Información y de la Comunicación

(CEATIC) posee un centro de inteligencia ambiental, pudimos tener acceso a la

pulsera inteligente que mostramos en el anterior apartado. De esta forma, se decidió

hacer una aplicación con la que pudiéramos obtener datos que esta pulsera

almacenaba, todo esto mediante el uso de la tecnología Bluetooth 4.0, uno de los

protocolos de comunicación que más utilizan los dispositivos inteligentes que nos

rodean.

Por supuesto, destacar un agradecimiento al Centro de Estudios Avanzados

en Tecnologías de la Información y de la Comunicación por posibilitarnos el acceso

a este dispositivo.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

9 Escuela Politécnica Superior de Jaén

1.3 Objetivos

Para desarrollar con éxito este Trabajo de Fin de Grado, nos planteamos los

siguientes objetivos:

-Realizar un estudio de la tecnología BLE: Estudiar y comprender en qué

consiste esta nueva tecnología de comunicación entre dispositivos, así como de los

distintos protocolos de conexión existentes, utilizando el conocimiento adquirido en

el análisis y diseño de nuestra posterior aplicación.

-Estudio de tecnologías para el desarrollo de aplicaciones móviles

híbridas multiplataforma: Estudiar las distintas metodologías y/o frameworks

existentes para la elaboración de aplicaciones móviles híbridas, y elegir aquellas que

mejor se ajusten a nuestro propósito. Será con estas tecnologías con las que

comenzaremos la implementación de la aplicación.

-Elaboración de un prototipo de aplicación móvil híbrida basada en

HTML5 que permita el control de un periférico BLE: En este apartado llevaremos

a cabo, con las tecnologías elegidas del apartado anterior, un prototipo funcional de

aplicación móvil híbrida para llevar a cabo conexiones entre esta y un dispositivo con

la tecnología BLE, en este caso nuestra pulsera inteligente.

-Estudio e implementación de un servicio web remoto: Estudio de las

tecnologías de backend acordes a nuestro frontend para elaborar un servicio web

que utilice un API REST, el cual se encargue de recibir y recopilar datos

provenientes de nuestra aplicación móvil.

-Realizar una memoria con la documentación completa de cada una de

las fases de elaboración de este proyecto: análisis, diseño e implementación.

Mediante la correcta realización y seguimiento de estos objetivos, el trabajo

cumplirá todos los requisitos que debe cubrir en un principio. A lo largo de esta

memoria se intentará reflejar de la mejor manera posible todo el trabajo desarrollado,

de forma que se facilite su comprensión.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

10 Escuela Politécnica Superior de Jaén

1.4 Metodologías

Para definir una estructura, un plan y una manera de controlar todo el proceso

de desarrollo tanto de este proyecto como de cualquier otro, hemos de valorar,

comparar y seleccionar alguna de las muchas metodologías existentes en nuestro

campo. La metodología será elegida según su filosofía de desarrollo, así como por

las distintas herramientas, modelos y métodos que ofrezcan como parte de dicho

proceso de desarrollo. Según todo esto, se seleccionará aquella metodología que

más se ajuste a nuestro objetivo de trabajo.

En un primer momento, al tener que buscar una metodología, la primera

cuestión a la que nos enfrentamos es, “¿Una metodología clásica, o una ágil?” .Es

decir, tendremos que decantarnos por un estereotipo de desarrollo tradicional, o por

un enfoque más moderno, un desarrollo ágil. Cada una tiene sus ventajas e

inconvenientes, siendo ambas, en términos generales, válidas para planificar y

administrar todos los recursos de los que disponemos en nuestro proyecto de la

manera más adecuada. A continuación, estudiamos las diferencias entre estos dos

tipos de metodologías para de esta forma, seleccionar la que mejor se adapte a

nuestro proyecto.

1.3.1 Metodologías Tradicionales vs Metodologías Ágiles

Las metodologías tradicionales [1] inciden en planificar detalladamente todo

el trabajo a realizar antes de iniciar el desarrollo del producto. Una vez que toda esta

planificación está correctamente documentada, se comienza con el ciclo de

desarrollo del producto, centrándose principalmente en el control del proceso. Estas

metodologías por tanto, son metodologías de desarrollo en cascada en las que

podemos destacar cinco procesos fundamentales: Planificación, análisis, diseño,

implementación y pruebas.

Ilustración 2 - Fases en metodologías tradicionales. Fuente: www.rendoro.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

11 Escuela Politécnica Superior de Jaén

Se dice que la metodología es "en cascada" porque las distintas fases de

desarrollo son abordadas en orden y sin solapamientos temporales entre ellas. Este

modelo de desarrollo, es un modelo totalmente estático e incremental, no iterativo.

Este tipo de metodologías no admitirá grandes cambios una vez que el proceso de

desarrollo ha comenzado, y si lo admite será echando por tierra mucho de lo

avanzado y volviendo casi a la primera fase.

No obstante, las metodologías clásicas pueden ser muy útiles para el

desarrollo de sistemas sencillos, cuyos requisitos, funcionalidades y arquitecturas

estén suficientemente claros desde el principio, y en definitiva, en proyectos simples

y estáticos, con pocas decisiones que tomar sobre él una vez que comienza su

desarrollo.

Por otro lado, y tratando de ofrecer otro enfoque a estas metodologías

tradicionales, surgieron las metodologías ágiles [2] como una respuesta a la

necesidad de obtener mayor flexibilidad en los desarrollos de sistemas de software,

tratando de simplificar las prácticas y fases de desarrollo, y tratando también de

asegurar la mayor calidad posible del producto. Estas metodologías se centran en

aportar un paradigma de organización y estructuración que permitan a los equipos

crear software rápidamente y responder eficazmente a los cambios surgidos a lo

largo del proyecto.

Las metodologías ágiles, a diferencia de las tradicionales, son iterativas, por

lo que cada fase del desarrollo se llevará a cabo más de una vez a lo largo de la

elaboración del proyecto. Estas iteraciones serán continuadas en el tiempo, lo que

permite que la arquitectura del software vaya siendo definida y mejorada a lo largo

del proyecto, y siempre en contacto con el cliente.

Ilustración 3 - Fases en metodologías ágiles. Fuente: www.rendoro.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

12 Escuela Politécnica Superior de Jaén

Como bien podemos concluir, este tipo de metodologías deben ser utilizadas

en proyectos más ambiciosos que los antes mencionados para utilizar metodologías

tradicionales, ya que de esta forma se admitirán cambios en cualquier momento que

mejoren el proyecto, consiguiendo así resultados finales muy optimizados y, con la

ayuda y consulta constante del cliente, cumpliendo sus objetivos de manera

completa y eficiente.

Teniendo en cuenta todo esto, y debido a las características del proyecto a

realizar, optamos por seguir una metodología ágil, ya que desde el inicio del

proyecto nos encontramos con múltiples alternativas respecto a distintas

tecnologías, frameworks, y desarrollos de complejidad suficiente como para preveer

que durante el proceso tengamos que realizar múltiples cambios. Además, el

desarrollo iterativo nos ayudará a conseguir una aplicación más robusta y

consistente y mejores resultados finales.

La metodología ágil elegida será SCRUM [3], dado que es una de las más

extendidas y conocidas, pudiendo por tanto encontrar fácilmente más

documentación y ejemplos prácticos. Además, su modus operandi nos facilitará

Ilustración 4 - Ciclo de desarrollo ágil. Fuente: www.grupo1u6.blogspot.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

13 Escuela Politécnica Superior de Jaén

mucho las labores de desarrollo fomentando principalmente una buena

organización del trabajo. Tampoco podemos obviar que para este proyecto se

elaborarán varios desarrollos simultáneos (Aplicación móvil y servicio web) por lo

que el método iterativo que propone SCRUM nos será muy interesante para no

perdernos en el proceso. Por último, destacar también que como desarrollador,

estoy más familiarizado con esta metodología ya que se trabajó en profundidad

durante los años de mi periodo formativo y, por tanto, la elección de esta reducirá el

tiempo necesario para el desarrollo del proyecto.

1.3.2 SCRUM

SCRUM es un proceso ágil que tiene como objetivo que el desarrollador se

centre en obtener el más alto valor de negocio en el menor tiempo posible,

inspeccionando rápida y repetidamente el trabajo de desarrollo [4]. Al comienzo, se

fijan las prioridades de cada proceso y cada cierto tiempo (normalmente 2/4

semanas) se puede ver el software funcionando y decidir si liberarlo o seguir

mejorándolo.

A continuación vemos una imagen referente al ciclo de trabajo que se utiliza

en SCRUM:

En el ciclo de trabajo de SCRUM, podemos diferenciar los distintos

componentes:

-Sprint: Iteración de trabajo, normalmente entre 2-4 semanas de duración.

Ilustración 5 - Ciclo de trabajo de SCRUM. Fuente: Apuntes asignatura "Desarrollo Ágil"

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

14 Escuela Politécnica Superior de Jaén

-Product Backlog: Requisitos de nuestro proyecto capturados como

elementos de una lista y ordenados según su prioridad de entrega. Por cada

requisito se crea un bloque de trabajo, llamado Historia de usuario.

-Sprint Backlog: Grupo de historias de usuario (Subconjunto del Product

Backlog) con el que se trabaja durante una iteración o sprint.

-Daily Scrum Meeting: Reunión diaria de SCRUM para comprobar lo que se

hizo el anterior día, lo que se debe hacer en el día actual, y lo posibles obstáculos

que pueda haber para ello. Son reuniones cortas, de unos 15 minutos, en los que se

adquieren esos compromisos entre los trabajadores.

Durante un sprint o iteración, se llevará a cabo un proceso secuencial, en el

que se acometerán tareas de análisis, diseño e implementación de las historias de

usuarios recogidas en el sprint backlog.

Por otro lado, SCRUM nos presenta distintos roles y responsabilidades:

-Product Owner: Responsable del producto. Sus funciones principales son

las de definir las funcionalidades del producto, decidir fechas y contenidos de las

entregas, priorizar funcionalidades y aceptar o rechazar los resultados del trabajo.

-Scrum Máster: Responsable del funcionamiento de SCRUM.

-Team: Responsables de desarrollo y ha de ser multifuncional y auto-

organizado.

Dentro del marco de trabajo de SCRUM, también se nos presenta la

necesidad de hacer diferentes reuniones durante el proceso de desarrollo:

-Sprint planning: Se seleccionan las historias de usuario a partir del Product

Backlog que se considere que se podrán completar, y de esta forma se crea el Sprint

Backlog. Una vez hecho esto, se identificarán las diferentes tareas y cada una será

estimada en horas. Esta reunión se hará antes de cada iteración.

-Daily Scrum Meeting: Reunión diaria de SCRUM.

-Sprint Review: Se presenta lo realizado durante el sprint mediante una

demo que presente dicha funcionalidad.

-Sprint retrospective: Periódicamente, se echa un vistazo a lo que funciona

y lo que no, y esto se realiza tras los distintos sprints. Una vez analizados los

posibles problemas de funcionamiento, se decide lo que se va a comenzar a hacer,

seguir haciendo o dejar de hacer en la siguiente iteración.

Como sabemos, este proyecto va a ser desarrollado individualmente. Es por

esto que el modelo de SCRUM necesita una adaptación a nuestro caso. Partimos de

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

15 Escuela Politécnica Superior de Jaén

que todos los roles corresponderán a la misma persona, que se encargará de

responsabilizarse del funcionamiento de SCRUM, de definir las funcionalidades del

producto, estructurar sus fases de desarrollo y, por último, del desarrollo en sí,

adquiriendo el rol de analista y de programador al mismo tiempo. Por otro lado, las

reuniones de equipo carecerán de sentido y no serán necesarias como tal, aunque si

es interesante llevar a cabo un seguimiento continuo del proceso de desarrollo, que

a grandes rasgos es el objetivo de estas reuniones.

Conociendo a fondo este tipo de metodología, se procederá a ponerla en

práctica, comenzando a estructurar y organizar nuestro proyecto en cuestión. Todo

esto se expone en el apartado dos de esta memoria, correspondiente al análisis de

la aplicación. Cabe mencionar que, aunque hablaremos siempre de las distintas

iteraciones, y se especificará cuando estamos hablando de cada una, esta memoria

se estructura en apartados que más corresponderían con un modelo clásico que con

una metodología ágil. No obstante, esto es así para conseguir una mayor

condensación de cada punto del desarrollo, y una mayor facilidad para el lector de

comprender el desarrollo de cada una de las partes.

Relacionado con esto último, y para una mayor facilidad aún, en el siguiente

apartado se expone la estructura que tendrá esta memoria detalladamente.

1.5 Estructura del documento

Este documento se encuentra dividido en seis bloques principales que pasaré a

comentar a continuación:

La primera parte del documento corresponderá a las tablas de contenido del

mismo, tanto de apartados como de imágenes o tablas, lo que permitirá encontrar de

una forma rápida y sencilla cualquier parte de la memoria en concreto.

Tras este capítulo introductorio en el que se ha expuesto cual es la problemática

a la que nos enfrentamos y cuáles son nuestros objetivos, llegaremos al segundo

apartado de nuestra memoria.

En ese segundo apartado, llamado “Análisis”, haremos una división de ocho

fundamentales puntos en este aspecto, que son:

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

16 Escuela Politécnica Superior de Jaén

-Análisis preliminar: Se describirá el contexto de aplicación del que se parte,

comentando sus características principales, su historia, las tecnologías

principales…etc. Además se expondrán otras soluciones similares ya existentes del

mismo tipo y ámbito que nuestra aplicación a desarrollar, analizándose las ventajas

y desventajas que estas poseen. Además, y bastante importante en este caso, se

estudiarán las distintas tecnologías y frameworks que se utilizarán para resolver el

problema, si bien no centrándome en cómo se trabajará con el framework sino

analizando las propuestas tecnológicas de estos y el por qué nos serán de gran

utilidad en el proyecto.

-Propuesta de solución: En este apartado se planteará una propuesta de

solución para el trabajo, una visión general de las metodologías fusionadas con los

distintos frameworks y las distintas tecnologías que se emplearan en el proyecto.

Esta propuesta será inicial, pudiendo verse afectada por algún tipo de cambio, pero

sin duda es una primera respuesta a la pregunta de ¿Cómo lo voy a desarrollar?

-Requisitos del sistema: Se listarán y justificarán los distintos requisitos

funcionales y restricciones que se espera que contemple el desarrollo, que más

adelante serán explicados con detalle en el apartado de “Historias de usuario”. Así

mismo, también se expondrán los distintos requisitos no funcionales que vengan

impuestos por el contexto de la aplicación o por la petición del cliente. De igual

forma, estos últimos no serán explicados con detalle, pues esto se hará en el

apartado de “Implementación".

-Historias de usuario: En este punto se detallarán todos los requisitos

funcionales convertidos ahora en historias de usuario con el mayor detalle posible,

historias de usuario que se esperan alcanzar durante el desarrollo.

-Planificación inicial de tareas: En este apartado descompondremos las

distintas historias de usuario en tareas, y se especificará una propuesta inicial del

ciclo de SCRUM, detallando iteraciones necesarias, tareas que se llevarán a cabo

en dichas iteraciones y roles que participarán en cada una de ellas. A partir de este

apartado tendremos una estimación inicial del tiempo de desarrollo necesario para

finalizar el proyecto.

-Estudio de viabilidad: En este apartado se hará un análisis de costes de

desarrollo y explotación, así como la justificación del modelo de negocio.

-Modelo de dominio: Descripción de las distintas entidades, atributos y

relaciones existentes en el proyecto.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

17 Escuela Politécnica Superior de Jaén

Ya en el apartado tres, titulado “Diseño”, se verán todos los componentes

relacionados con el diseño de nuestro proyecto y se elaborarán diagramas de las

principales funcionalidades del sistema, destacando un diagrama de la base de

datos, diagramas de clases y diagramas de secuencia. También mostraremos

prototipos de la interfaz.

En el apartado cuatro nos centraremos en la “Implementación” de la

aplicación/es. Veremos el diagrama arquitectónico de la aplicación/es junto a los

elementos que las forman. Además, se detallarán aspectos de la implementación y

del uso de los distintos frameworks y tecnologías utilizadas en el proyecto.

Ya finalizando esta memoria, en el punto cinco veremos las distintas

conclusiones a las que llegamos tras finalizar el desarrollo del proyecto, haciendo

una retrospectiva y analizando qué falta por mejorar y que faltaría por añadir en un

futuro al sistema implementado.

El punto seis recogerá la bibliografía referenciada a lo largo de todo el

documento y, por supuesto, la utilizada para el desarrollo del proyecto.

Para finalizar, la memoria incluirá una serie de anexos, donde se podrá

consultar un manual de usuario de instalación y uso del sistema desarrollado.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

18 Escuela Politécnica Superior de Jaén

2. Análisis

Enfrentarnos al desarrollo de este proyecto suponía previamente analizar

varios aspectos que serían de gran relevancia para el mismo. Para comenzar a

plasmar la parte de análisis del proyecto, expondremos una introducción sobre el

mundo de las aplicaciones móviles híbridas o multiplataforma donde aclararemos

por qué desde el comienzo seleccionamos este tipo de tecnología para nuestra

implementación. También, y como no podía ser de otra forma, se hará un repaso a

cerca de la tecnología de comunicación Bluetooth 4.0 1 también conocida como

Bluetooth Low Energy (BLE). En este repaso especificaremos las necesidades que

se nos plantean, las posibilidades que este protocolo de comunicación nos ofrece y

el estudio de APIs que nos serán de gran ayuda para la utilización de esta

tecnología. Esta primera aproximación nos permitirá analizar brevemente las

necesidades en cuanto a funcionamiento que debería plasmar nuestra aplicación.

Por otro lado, estudiaremos distintas aplicaciones existentes en el mercado

actual similares a la que se va a implementar, y analizaremos sus puntos fuertes y

débiles, de manera que con ese estudio consigamos encontrar la mejor solución

posible a nuestro problema en cuestión. Partiendo de esta propuesta de solución

más detallada, se expondrán tanto las distintas historias de usuario como los

requisitos que conformarán el contenido de nuestro desarrollo. Por último, se

mostrará la planificación de tareas a seguir, de manera que podamos realizar una

estimación de tiempo de desarrollo de nuestro trabajo.

1 https://www.bluetooth.com

Ilustración 7 - Aplicaciones Híbridas. Fuente: www.deideaaapp.org

Ilustración 6 - Logo Bluetooth 4.0. Fuente: www.secureidnews.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

19 Escuela Politécnica Superior de Jaén

2.1 Análisis preliminar

2.1.1 Aplicaciones móviles multiplataforma

Desde un primer momento, el problema a solucionar y desarrollar era el

estudio de la comunicación entre periféricos y dispositivos móviles mediante el

protocolo de comunicación BLE, por lo que una cosa era evidente, tendríamos que

desarrollar una aplicación móvil. En ocasiones, es el desarrollador quien selecciona

una plataforma móvil (o varias) para desarrollar la aplicación. No obstante, podría

ser el cliente el que le especifica la plataforma o plataformas para la que desea

obtener la aplicación móvil. Si la elección por parte del cliente es la de la elaboración

de la aplicación para una única plataforma, el único problema relevante es que el

desarrollador posea los conocimientos necesarios para poder llevar a cabo el

trabajo. Aunque hay que señalar que en el caso de plataformas como iOS, otro

problema es que el desarrollador posea o tenga acceso al material hardware

necesario para poder hacer este trabajo.

Desafortunadamente, estos problemas se acrecentan si el cliente elige varias

plataformas para las que desarrollar la aplicación, lo que por consiguiente creará

mucho más trabajo al desarrollador. Esto en algunas ocasiones será decisivo a la

hora de afrontar el proyecto o por el contrario descartarlo. No obstante, hay que

destacar que para algunos desarrolladores, esto más que un problema es una buena

oportunidad de negocio y, en caso de que su carga de trabajo no sea elevada,

podrán aprovechar la oportunidad. También en el caso de la mayoría de las

empresas, estos problemas pueden pasar desapercibidos, ya que suelen tener a

distintos expertos en cada plataforma, y la carga de trabajo se dividiría sin problema.

Sin embargo, para equipos pequeños de desarrolladores o incluso

individuales, así como para empresas que quieran agilizar su proceso de trabajo

(amén de otras ventajas que consideren como oportunidades), existen otras

opciones de desarrollo, destacando las aplicaciones móviles multiplataforma,

también conocidas como híbridas.

Desde hace varios años, existe un enfrentamiento entre los partidarios de las

aplicaciones nativas (propias de cada plataforma) y los de las aplicaciones web que

simplemente se acceden a través de los navegadores del dispositivo móvil.

Enfrentamiento que realmente no tendría por qué existir, pues ambos métodos

pueden ser válidos según el tipo de aplicación. No obstante, a partir de ambas

formas de desarrollo nace la

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

20 Escuela Politécnica Superior de Jaén

idea de aplicaciones móviles híbridas [5]. Estas aplicaciones no son más que

aplicaciones web que en lugar de descargarse en un navegador desde un servidor

remoto, se incrustan en un contenedor creado nativamente por la plataforma a la

que pertenezca el dispositivo móvil, consiguiendo así que estas aplicaciones tengan

el acceso facilitado a diferentes recursos del propio sistema, como pueden ser los

sensores, cámara, almacenamiento, plugins internos, etc. Hacer esto con una

aplicación web que se abra simplemente en un navegador no siempre es posible o

igual de fácil que si nuestra aplicación es híbrida.

A continuación, se muestra una imagen resumen de los tres principales tipos

de aplicaciones móviles comentadas anteriormente y se detallarán las opciones,

ventajas e inconvenientes de cada una más específicamente:

Las aplicaciones nativas tienen la ventaja de que pueden acceder a todos los

recursos, software y hardware, y a funcionalidades del sistema, aumentando así

claramente su rendimiento y posibilidades. Además, el hecho de estar programadas

con un lenguaje propio del sistema y del dispositivo en cuestión puede hacer que la

usabilidad y la experiencia del usuario con la aplicación sea mejor que en el caso de

otras aplicaciones. Así, podemos afirmar con certeza que, en términos de

rendimiento y usabilidad, lo ideal es tener una misma aplicación desarrollada

específicamente para cada plataforma, pero eso genera unos costes

Ilustración 8 - Tipos de aplicaciones móviles. Fuente: http://blog.aplicacionesmovil.com/

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

21 Escuela Politécnica Superior de Jaén

añadidos importantes.

Las aplicaciones web móviles, como hemos mencionado anteriormente, son

las aplicaciones accesibles desde los navegadores de las distintas plataformas

mediante una URL y que se adaptan al tamaño de la pantalla del dispositivo para

que tenga aspecto de una verdadera aplicación móvil. Se desarrollan con lenguajes

sobradamente conocidos y actuales como HTML5, CSS o JavaScript. Estas

aplicaciones pueden ser una buena solución si ya se posee una aplicación web

accesible desde navegadores en equipos, ya que solo habría que modificar esta

aplicación para dotarla de una estructura del estilo de aplicaciones móviles que sea

mucho más fácil e intuitiva de utilizar que la aplicación web inicial. Una buena forma

de conseguir esto es utilizar técnicas que permitan “Responsive Design” [6], que

dota a una aplicación web de recursos para que esta se adapte dinámicamente al

dispositivo desde el que se visualiza.

Sin embargo, implementaciones o aumentos de código relacionados con este

tipo de diseño, puede hacer que aumente la carga de estas aplicaciones y que

comiencen a ralentizarse, por lo que el tiempo de respuesta elevado de la web nos

llevará a una mala experiencia de usuario, lo que puede suponer una gran

desventaja de este tipo de aplicaciones. Otra desventaja es lo limitado que tienen el

acceso a recursos hardware en los dispositivos, así como que los usuarios no

podrán encontrarlas en las principales tiendas de aplicaciones o “stores” de las

distintas plataformas, que es donde la inmensa mayoría busca sus APPs.

Por último, y como ya introducimos anteriormente, hay una tercera opción que

intenta recoger lo mejor de cada uno de los dos tipos anteriores de desarrollo de

aplicaciones móviles: las aplicaciones híbridas. Estas aplicaciones son aplicaciones

web, elaboradas en su núcleo también con lenguajes como HTML5, CSS o

JavaScript, normalmente utilizados bajo algún framework de desarrollo para este tipo

de aplicaciones. Estas aplicaciones deberán ser procesadas por un empaquetador o

wrapper para la plataforma específica que se desee, generando una aplicación

interpretable por cada plataforma y utilizable en los distintos markets. Este tipo de

aplicaciones tendrá acceso a recursos internos propios del dispositivo, dependiendo

el nivel de acceso a estos de lo abierta que sea cada plataforma con el framework

de desarrollo seleccionado. Pese a esto, cada vez el acceso a los recursos de los

dispositivos es más amplio, por lo que la experiencia con este tipo de aplicaciones

cada vez se acerca más a las aplicaciones nativas.

En las siguientes imágenes podemos ver de una forma resumida las

funcionalidades, ventajas y desventajas que cada tipo de aplicación tiene:

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

22 Escuela Politécnica Superior de Jaén

Ilustración 10 - Resumen operacional de aplicaciones móviles. Fuente: http://blog.aplicacionesmovil.com/

Ilustración 9 - Posibilidades de cada tipo de aplicación móvil. Fuente: http://blog.aplicacionesmovil.com/

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

23 Escuela Politécnica Superior de Jaén

Tras este repaso sobre las distintas posibilidades para el desarrollo de

aplicaciones móvil, es el turno de elegir la que mejor se adapte a nuestro problema.

En principio se requería una aplicación funcional en distintas plataformas móviles,

como pueden ser Android, iOS o Windows Phone. Además, necesitamos tener

acceso a alguno de los recursos de los dispositivos, como es la conexión Bluetooth.

Esto es clave para descartar una de las opciones de desarrollo, las aplicaciones

web, ya que nos dificultaría tener control de este recurso, vital para nuestras futuras

conexiones con periféricos. Elaborar tantas aplicaciones como dispositivos donde

queremos que esta funcione era realmente inviable, ya que el proceso de

aprendizaje iba a tener que ser realmente extenso, lo cual no es posible puesto que

contamos con un tiempo y un equipo limitado al disponer solo de un único

desarrollador.

Por tanto, dados estos últimos datos y puesto que nuestra aplicación no

necesitará acceso a recursos del dispositivo (en un primer momento) más allá de

utilizar la conexión mediante Bluetooth (al que una aplicación híbrida puede

acceder), se decide que la mejor opción es decantarse por la implementación de una

aplicación híbrida/multiplataforma, que nos permita un único desarrollo que después

será completamente funcional para cada una de las distintas plataformas y que,

además, se podrá comercializar en las diferentes tiendas o “stores” existentes en el

mercado de aplicaciones.

2.1.2 Protocolo de comunicación Bluetooth 4.0

Desde el comienzo nos enfrentamos a un problema que solucionar y estudiar,

la conexión de nuestra aplicación con periféricos mediante el protocolo de

comunicación Bluetooth 4.0 [7]. Así que, realmente, ¿En qué se basa esta

tecnología?

La tecnología Bluetooth define un protocolo y un estándar global de

comunicación inalámbrica que hace posible la transmisión de datos entre diferentes

dispositivos mediante un enlace por radiofrecuencia, consiguiendo así facilitar las

sincronizaciones directas de datos entre dispositivos personales y eliminando el

cableado y conectores entre estos. Para que dos dispositivos que poseen este

protocolo de comunicación puedan conectarse entre sí, tendrán que estar dentro de

un alcance determinado.

A lo largo de los años la tecnología Bluetooth ha tenido diversas

especificaciones y versiones, que han sido diseñadas para la retro-compatibilidad,

es decir, cada nueva versión permite cubrir y mejorar en su caso a todas las

versiones anteriores. A continuación haremos un breve repaso a las distintas

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

24 Escuela Politécnica Superior de Jaén

versiones que se abrieron paso hasta llegar a la de nuestro interés, la versión

del protocolo Bluetooth 4.0.

Bluetooth v1.0 y v1.0B

Estas eran las primeras versiones llevadas a cabo para los primeros

emisores/receptores de Bluetooth. No es de extrañar por tanto que tuvieran algunos

fallos, como la difícil interactuación entre teléfonos y dispositivos de distintas

compañías y sobre todo un problema mayor, en cada transmisión de datos la

dirección del dispositivo Bluetooth se enviaba, por lo que se perdía por completo el

anonimato de este tipo de conexión.

Bluetooth v1.1

Se corrigieron los principales errores de las versiones 1.0, se añadieron

soporte para los canales no cifrados así como el indicador RSSI que nos indica la

potencia con la que una señal es recibida.

Bluetooth v1.2

Esta versión mejoró la velocidad de conexión y transferencia de datos, añadió

la opción de Discovery, que permitiría escanear dispositivos Bluetooth cercanos.

Además por primera vez era compatible con usb, en este caso usb v1.1.

Bluetooth v2.0 + EDR

Con esta versión se le daba la opción a los fabricantes de dispositivos de

incorporar la EDR (“Enhanced Data Rate”), un sistema de transmisión de datos a

mayor velocidad. Esta velocidad era como máximo de 3Mb/s aunque su tasa real

máxima era de 2,1 Mb/s.

Bluetooth v2.1 + EDR

Esta nueva versión supuso un gran cambio en cuanto a la seguridad se

refiere, ya que por primera vez los datos eran filtrados. Además, mejoró

notablemente el consumo de energía.

Bluetooth v3.0

Este nuevo modelo tuvo ya una notable mejora en cuanto a la velocidad de

transmisión de datos, llegando hasta los 24Mb/s. Además fue añadida una nueva

característica que hacía uso del WIFI para el envío de paquetes de datos de gran

tamaño.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

25 Escuela Politécnica Superior de Jaén

Bluetooth v4.0 - Bluetooth Low Energy

Esta versión es la más reciente actualmente, y fue lanzada en el año 2010. Se

basa en la combinación de la tecnología Bluetooth clásica con la conexión vía WIFI.

De esta forma, se dota a los dispositivos que lo incluyen de una velocidad de

transferencia y velocidad de emisión de hasta 32 Mb/s. Además, esta versión incluye

la importante mejora denominada Bluetooth Low Energy. Esta mejora es muy

importante, ya que hasta hace pocos años si muchos de los distintos dispositivos

electrónicos y periféricos no tenían incorporada la tecnología Bluetooth era en parte

por el consumo que este producía. Además, esta versión también ha mejorado la

comunicación entre dispositivos de diferentes marcas y ampliando el alcance de

conexión, por lo que el hecho de que el aumento de dispositivos que utilizan la

tecnología fue y es una realidad. Por otro lado, y no menos importante, la seguridad

en esta versión está asegurada, con un cifrado de datos completo.

Un aspecto a tener en cuenta de los dispositivos que funcionan con esta

versión es que estos pueden recoger información constantemente o bien elegir

cuándo sincronizar dicha información (lo más normal). Tanto para una opción como

para otra, el consumo claramente reducido de energía hace que la interactividad e

interoperabilidad entre dispositivos que funcionan de forma constante o por largos

periodos de tiempo crezca en nuestros días de forma constante. Esta tecnología

forma parte en gran medida de la IoT ("Internet of Things").

La versión 4.0 tiene un tercer nombre con el que puede ser referida, Bluetooth

Smart (Bluetooth Inteligente) [6]. Esta inteligencia se refiere a la facilidad que existe

para incluir esta tecnología en el desarrollo de aplicaciones móviles y/o para la

conexión con la computación en la nube.

Esta facilidad de desarrollo existe debido en gran parte a la existencia de un

perfil genérico para todos los dispositivos que poseen esta especificación de

Bluetooth en cuanto a la arquitectura y estructura de los datos que la forman. Esto

se conoce como "Generic Attribute Profile" (GATT) [8]. Este estándar o perfil único

de organización interna que existe en los dispositivos que contienen esta tecnología

define y establece como interactuar y obtener datos de un dispositivo BLE, así como

los procedimientos para ello y el formato en que estos datos serán recibidos. Por

tanto para el desarrollo de nuestra aplicación habrá que tener muy claro en qué

consiste este perfil genérico de datos de los dispositivos que poseen esta tecnología,

ya que solo conociendo este esquema arquitectónico interno podremos obtener el

conocimiento necesario para más tarde poder establecer una conexión y poder leer

datos de uno de estos dispositivos.

A continuación se muestra una imagen donde podemos ver el esquema

principal de este perfil de atributos genérico GATT:

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

26 Escuela Politécnica Superior de Jaén

Cada dispositivo Bluetooth 4.0 está formado por distintos servicios. Cada uno

de estos servicios están compuestos por distintas características o por referencias a

otros servicios. Las características contienen un tipo (representado por un UUID), un

valor, un conjunto de propiedades indicando las operaciones que esta característica

soporta (lectura, escritura o notificación) y también puede contener permisos.

Además pueden contener uno o varios descriptores que dan información sobre la

configuración. Estas características son las que, de poder leerlas, nos permitirán

tener acceso a los datos finales de monitorización de un dispositivo. Podemos ver

con más detalle los componentes de una característica en la siguiente imagen:

Ilustración 11: Perfil de atributos genérico GATT Bluetooth 4.0. Fuente: www.bluetooth.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

27 Escuela Politécnica Superior de Jaén

Así como existe este perfil genérico de organización de atributos, existen un

conjunto de servicios y características ya definidos con toda la información necesaria

para poder acceder a la información y datos de estos para la mayoría de dispositivos

BLE. Estos servicios ya definidos están relacionados con cualquier tipo de

monitorización que los dispositivos inteligentes llevan a cabo mediante sus distintos

sensores. Por ejemplo podemos encontrar servicios que se refieren a la

temperatura, a la medida de pulsaciones, contadores de velocidad, de distancia, de

pasos... Todos estos servicios ya predefinidos, los podemos encontrar en la página

oficial del protocolo Bluetooth:

https://www.bluetooth.com/specifications/gatt/services

Como hemos dicho, esta especificación existente pretende facilitar el

desarrollo en gran medida de aplicaciones móviles que utilicen el protocolo de

comunicación Bluetooth 4.0, y por tanto existen soportes y APIs para dicha causa en

la mayoría de plataformas móviles existentes como pueden ser Android o iOS.

Sin embargo, en nuestro caso la aplicación será una aplicación web móvil

híbrida, por lo que estas APIs no nos serán de mayor utilidad que instructiva. Por

tanto, era objetivo encontrar una API de desarrollo con Bluetooth 4.0 para

programación web.

Ilustración 12 - Componentes de una característica en Bluetooth 4.0. Fuente: www.safaribooksonline.com/

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

28 Escuela Politécnica Superior de Jaén

Tras realizar un estudio y búsqueda sobre esto mismo, se encontró una API

para desarrollo de aplicaciones BLE nos dota de un plugin escrito en lenguaje

JavaScript, totalmente adecuado para nuestra programación web. Esta API es

desarrollada por el equipo de EVOthings2, que desarrolla distintas APIs que facilitan

el desarrollo móvil utilizando diversas tecnologías que forman parte de la IoT

("Internet of things") o "Internet de las cosas". Además, esta API funciona con el

empaquetador de aplicaciones híbridas Apache Cordova, que será el que

utilizaremos para compilar nuestra aplicación para su uso en dispositivos móviles.

Hablaremos tanto de esto último como de la API en sí misma, en el apartado cuatro

de la presente documentación, sección en la que se exponen este y otros detalles de

implementación.

2.1.3 Estado del arte

A continuación vamos a estudiar algunas aplicaciones ya existentes en el

mercado similares a la aplicación que se pretende desarrollar. En este caso serán

dos las aplicaciones a estudiar.

2.1.3.1 SmartBand (Wristband)

Esta es una aplicación destinada a la

monitorización de actividad de un usuario a través

de la pulsera inteligente Wristband. Con ella, se

pueden conocer todos los datos que almacena la

pulsera mediante una sincronización con la

aplicación. Además existe acceso a numerosos

gráficos estadísticos de actividad, y se guardan los

datos de días ya pasados. A continuación pasamos

a estudiar algunas ventajas e inconvenientes

encontrados en la aplicación.

Ventajas

- Muy completa en cuanto a monitorización de múltiples datos de actividad.

- Acceso a calendario para revisar el historial de actividad.

2 www.evothings.com

Ilustración 13 - Aplicación Smartband. Fuente: Google Play

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

29 Escuela Politécnica Superior de Jaén

- Informes semanales con gráficos de rendimiento.

Inconvenientes:

- Aplicación muy poco intuitiva.

- Imposibilidad de registro de usuarios.

- Difícil acceso a determinadas funciones.

- Ajustes complejos.

2.1.3.1 SWR10 SmartBand

En este caso estudiamos la aplicación

oficial de Sony para su smartband SWR10.

Esta contiene funciones de registro de actividad

para poder realizar un seguimiento exhaustivo a

partir de esta pulsera. Mencionamos a

continuación algunas de las ventajas e

inconvenientes que hemos detectado.

Ilustración 14 - Página de inicio aplicación Smartband. Fuente: Google Play

Ilustración 15 - Página de estadísticas aplicación Smartband. Fuente: Google Play

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

30 Escuela Politécnica Superior de Jaén

Ventajas

- Completa monitorización de todos los datos de actividad.

-Posibilidad de acceder a numerosas estadísticas.

- Posibilidad de registros de usuarios.

- Propuesta de objetivos de actividad.

- Acceso a calendario para revisar el historial de actividad.

- Informes semanales, diarios y mensuales con gráficos de rendimiento.

Inconvenientes

- Puede ser compleja de utilizar.

- Optimizada para SmartPhones Sony.

- No se puede iniciar un registro de actividad durante un rango de tiempo.

Ilustración 17 - Pantalla inicial aplicación Sony Lifelog. Fuente: Google Play

Ilustración 16 - Pantalla estadísticas aplicación Sony Lifelog

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

31 Escuela Politécnica Superior de Jaén

2.2 Propuesta de solución

Una vez realizado un primer análisis sobre las necesidades a las que nos

enfrentamos y conocer hacia dónde queremos llegar, comenzamos a ver el proceso

bastante más claro. El desarrollo se centrará en la elaboración de un prototipo de

una aplicación web móvil híbrida, instalable y completamente funcional en la mayoría

de plataformas móviles teniendo que realizar un único código e implementación para

ello. Este prototipo marcará el camino a seguir para la finalización de una aplicación

con todas las funcionalidades elaboradas, ya que dispondrá de las principales

funciones de la aplicación de cara al usuario. De esta manera, el cliente podrá tener

una experiencia completa de usuario antes de que el desarrollo se complete.

Como ya adelantamos en el primer apartado de esta memoria, para la

realización de este proyecto y su correcta organización, así como para sacarle el

máximo partido al tiempo con el que contamos, seguiremos una metodología ágil

como es SCRUM. Como se ha comentado, se ajusta muy bien al manejo de distintas

actividades simultáneas manteniendo siempre un soporte de ayuda necesario si en

algún momento encontramos algún problema en la solución y hay que hacer un

cambio de una o varias especificaciones concretas. Consideramos vital esa

capacidad de adaptación que conseguimos con SCRUM con la que nos

aseguramos siempre de que un posible cambio no suponga una vuelta atrás que no

nos podamos permitir en un momento dado.

En referencia al desarrollo de la aplicación web móvil híbrida en sí,

utilizaremos un framework de programación en lenguaje JavaScript altamente

conocido en estos días como es AngularJS3. Este es un framework de desarrollo de

aplicaciones web en el lado del cliente siguiendo el patrón MVC (Modelo-Vista-

Controlador) que nos facilitará en gran parte el trabajo y la organización de nuestro

código. Esta separación del código fuente en tres componentes nos ayudará

también a tener un acoplamiento muy bajo ya que tendremos claramente separado

el código de interfaces y de clases de negocio, lo que facilitará su comprensión y los

posibles cambios que se tengan que añadir en cualquier momento. En el apartado

tres y cuatro detallaremos más características de este framework.

Para conseguir una interfaz vistosa, usable y con una gran diversidad en

cuanto a componentes, se hizo un amplio estudio en cuanto a diversos frameworks

que fuesen compatibles con nuestra idea de desarrollo hasta el momento.

Finalmente encontramos un framework creado para el desarrollo de interfaces

de aplicaciones web móviles híbridas, lo que no solo cumplía con nuestras

necesidades, sino que está optimizada para AngularJS, por lo que era perfecto para

3 https://angularjs.org/

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

32 Escuela Politécnica Superior de Jaén

nuestra aplicación. Este framework es Ionic Framework4, gratuito y de código

abierto, que ofrece una librería de componentes para interfaces móvil optimizadas

en HTML, CSS y AngularJS, además de herramientas de desarrollo para conseguir

los mejores resultados en aplicaciones móviles web. De esta forma conseguimos

que la diferencia entre una aplicación de este tipo y una aplicación nativa sea casi

nula. La combinación de Ionic con AngularJS hará que tengamos una interfaz de

usuario elegante e intuitiva para el usuario, además de una arquitectura será

robusta.

2.3 Requisitos del sistema

Los requisitos de un sistema describen los servicios que este sistema ofrecerá

y las restricciones que tendrá asociadas a su funcionamiento. Dentro de los

requisitos de un sistema, se puede distinguir entre [9]:

-Requisitos funcionales: Expresan qué debe hacer el sistema y como éste

interaccionará con su entorno.

-Requisitos no funcionales: Restricciones sobre posibles soluciones para

afrontar el problema.

En base a estos, pasamos a condensar los distintos requisitos que deberá

contener nuestro sistema.

4 http://ionicframework.com/

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

33 Escuela Politécnica Superior de Jaén

Requisitos funcionales:

1.Identificación: El usuario debe poder identificarse en el sistema, mediante un

correo personal y contraseña.

2.Modificación de contraseña: El usuario debe poder modificar su contraseña en el

caso de que olvide esta.

3.Añadir datos personales: El usuario debe poder completar sus datos personales

de forma manual desde la aplicación.

4.Modificación de datos personales: El usuario debe poder modificar sus datos

personales en cualquier momento desde la aplicación.

5.Escaneo de dispositivos: El usuario debe poder escanear señales de

dispositivos bluetooth desde la aplicación para así tener acceso a su pulsera

inteligente.

6.Conexión a pulsera: El usuario debe poder conectar su aplicación con la pulsera

inteligente, para que la aplicación pueda comenzar a recibir mensajes de esta.

7.Acceso a datos actuales: El usuario debe poder tener acceso a los datos

actuales (del día) monitorizados de su pulsera inteligente, una vez que estos se

sincronizan mediante la conexión.

8.Acceso a calendario: El usuario debe poder tener acceso a un calendario para

elegir el día sobre el que quiere conocer sus datos monitorizados por la pulsera.

9.Acceso a estadísticas: El usuario debe tener acceso a una sección de

estadísticas sobre sus datos recogidos de la pulsera, donde encuentre gráficos de

actividad y pueda seleccionar la característica de la que quiere ver dichas

estadísticas.

10.Acceso a comienzo de actividad: El usuario debe poder comenzar a monitorear

sus datos de la pulsera en un momento determinado y parar este, para así tener

datos a cerca de su actividad en un rango de tiempo determinado.

11.Página de perfil: El usuario debe tener acceso a una página de perfil donde

encuentre sus datos personales y donde pueda acceder a distintas opciones.

12.Menú: El usuario debe tener acceso a un menú principal dentro de la aplicación a

través del cual pueda acceder a las distintas funcionalidades del sistema.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

34 Escuela Politécnica Superior de Jaén

Requisitos no funcionales:

1.Portabilidad: La aplicación debe poder funcionar correctamente en las principales

plataformas móviles. Especialmente Android y iOS por ser los que tienen una mayor

cuota de mercado.

2.Usabilidad: La aplicación deberá tener una gran facilidad de uso, y ser claramente

intuitiva para el usuario.

3.Confiabilidad: El sistema debe ofrecer un funcionamiento sin fallos con un muy

bajo porcentaje de posibilidad de errores.

4.Flexibilidad: El sistema deberá de ser flexible en cuanto a la facilidad para poder

agregarle nuevas funcionalidades.

2.4 Historias de usuario

Las historias de usuario [10] son una representación de un requisito o

funcionalidad concreta propia de la aplicación que se ha obtenido mediante las

peticiones del usuario o cliente. Han de ser de tamaño pequeño para que se

adecúen al trabajo iterativo, ya que se utilizan en las metodologías ágiles y por tanto

son muy importantes para el desarrollo de SCRUM. Estas historias pueden verse

sometidas a cambios durante el desarrollo del software.

A la hora de definir historias de usuario, estas se identificarán por un número,

un título, una descripción, una prioridad, una estimación y dependencias en el caso

de que existan. A continuación se muestra una tabla detallando las distintas historias

de usuario identificadas para nuestro proyecto.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

35 Escuela Politécnica Superior de Jaén

ID TÍTULO DESCRIPCIÓN PUNTOS ESTIMADOS

PRIORIDAD

1 Aplicación móvil híbrida

Como usuario, quiero que la aplicación sea accesible en distintas plataformas, destacando Android e iOS.

10 Alta

2 Puesta a punto del entorno

Como desarrollador quiero hacer una puesta a punto del entorno para poder comenzar el desarrollo del proyecto.

10 Alta

3 Creación de cuenta Como usuario, quiero poder crearme una cuenta en el sistema con mis credenciales personales.

7 Alta

4 Datos personales Como usuario, quiero poder añadir datos personales a la aplicación que se relacionen con la actividad física, como el peso, estatura o edad.

5 Media

5 Modificación de datos personales

Como usuario, quiero tener acceso a la modificación de mis propios datos personales en cualquier momento.

3 Media

6 Conexión pulsera Como usuario, quiero poder conectar mi aplicación con la pulsera inteligente, mediante Bluetooth.

10 Alta

7 Datos diarios Como usuario, quiero que cuando esté conectado a la pulsera pueda acceder a un apartado donde pueda ver mis datos del día actual monitorizados por la pulsera.

15 Alta

8 Calendario Como usuario, quiero tener acceso a un calendario que me permita seleccionar un día para visualizar mis datos de dicho día.

10 Alta

9 Estadísticas Como usuario, quiero tener acceso a diferentes estadísticas realizadas según mis datos registrados por la pulsera inteligente.

7 Alta

10 Actividad Como usuario, quiero poder comenzar una actividad desde la aplicación en un momento concreto y que cuando esta acabe, poder pararla y que se registren mis datos monitorizados por la pulsera en ese rango de tiempo.

9 Alta

Tabla 1 - Historias de usuario

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

36 Escuela Politécnica Superior de Jaén

2.5 Planificación de tareas

Una vez que tenemos establecidas las distintas historias de usuario y los

diversos requisitos que nuestra aplicación debe tener, podemos descomponer esas

historias de usuario en varias tareas que serán necesarias para completar cada una

de las historias. De esta forma ya tendremos una descomposición completa de

nuestro trabajo a realizar, pudiendo asignar tareas a cada miembro del equipo de

SCRUM, en este caso los roles de analista y programador, que debido a ser un

proyecto individual serán la misma persona. Así pues, con toda esta organización

podremos hacer una estimación en el tiempo de cuánto se va a extender la

realización de nuestro proyecto. Esa será una estimación relativa, pues nos

basaremos en los puntos de historia que decidimos asignarle a cada historia de

usuario. Estos puntos de historia reflejan una estimación temporal que se decide dar

a cada tarea de una historia de usuario en función de su complejidad. En nuestro

caso, los puntos de historia se referirán a días de trabajo, por lo que sumando todos

estos días, podremos hacer una estimación temporal completa de la duración del

proyecto. A continuación, mostramos la descomposición en subtareas de cada

historia de usuario mostrada en el punto 2.3 de esta memoria. La estimación total de

cada historia de usuario también se dividirá con estas subtareas.

ID TAREA ESTIMACIÓN (Puntos de historia)

PERSONAL

1 Aplicación móvil híbrida. 10

1.1 Instalación y configuración de Apache Cordova

3 Analista

1.2 Instalación y configuración de Ionic Framework

4 Programador

1.3 Instalación de Node 3 Analista

2 Puesta a punto del entorno. 10

2.1 Instalación y configuración del entorno de desarrollo

2 Programador

2.2 Análisis y diseño de la interfaz de usuario

3 Analista

2.3 Análisis y diseño de la arquitectura de la aplicación

3 Analista

2.4 Análisis y diseño de la base de datos

2 Analista

3 Creación de cuenta. 7

3.1 Análisis y diseño de los requisitos principales relacionados

2 Analista

3.2 Implementación del controlador

3 Programador

3.3 Implementación y 2 Programador

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

37 Escuela Politécnica Superior de Jaén

configuración de la vista

4 Datos personales. 5

4.1 Análisis y diseño de los requisitos principales relacionados

1 Analista

4.2 Implementación del controlador

2 Programador

4.3 Implementación de la vista 2 Programador

5 Modificación datos personales.

3

5.1 Implementación del controlador

2 Programador

5.2 Implementación de la vista 1 Programador

6 Conexión pulsera. 10

6.1 Análisis y diseño de los requisitos principales relacionados

1 Analista

6.2 Análisis y diseño de la documentación de la pulsera inteligente

2 Analista

6.3 Implementación del controlador

5 Programador

6.4 Implementación de la vista 2 Programador

7 Datos diarios 15

7.1 Análisis y diseño de los requisitos principales relacionados

2 Analista

7.2 Análisis y diseño de la documentación de la pulsera inteligente relacionado a manejo de datos

3 Analista

7.3 Implementación del controlador

7 Programador

7.4 Implementación de la vista 3 Programador

8 Calendario 10

8.1 Análisis y diseño de los requisitos principales relacionados

1 Analista

8.2 Implementación del controlador

7 Programador

8.3 Implementación de la vista 2 Programador

9 Estadísticas 7

9.1 Análisis y diseño de los requisitos principales relacionados

1 Analista

9.2 Implementación del controlador

4 Programador

9.3 Implementación de la vista 2 Programador

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

38 Escuela Politécnica Superior de Jaén

10 Actividad 9

10.1 Análisis y diseño de los requisitos principales relacionados

2 Analista

10.2 Implementación del controlador

6 Programador

10.3 Implementación de la vista 1 Programador Tabla 2 - Descomposición de tareas

En conclusión, nuestro trabajo contará con 86 puntos de historia, separando

estos en 29 puntos de historia a realizar por el Analista y 57 puntos de historia para

el programador.

Como ya adelantamos en el primer apartado de esta memoria, el ciclo de

trabajo de SCRUM se divide en un conjunto de iteraciones o Sprints, que suelen ser

rangos de tiempo normalmente de entre 2-4 semanas de duración. Al final de cada

sprint se obtendrá un software funcional que podrá ser mostrado al cliente para

comprobar si este está conforme con el resultado o si hay que hacer algún cambio

extra. En cada sprint se llevará a cabo un número de tareas específicas que se

diseñarán, implementarán y probarán.

Un sprint tiene una secuencia de trabajo, que conlleva los siguientes puntos y

que nunca podrán ser obviados:

- El cliente ordenará las historias de trabajo según las prioridades que

considere oportunas, y a esto se le llamará "pila de trabajo" ("Product backlog").

- El equipo revisará esta pila de trabajo y seleccionará un conjunto de

historias que llevar a cabo durante el sprint, formando así el "Sprint backlog". El

cliente finalmente debe de estar de acuerdo con este trabajo seleccionado.

- Al terminar un sprint el equipo entregará el resultado de su trabajo. Después,

volverá a seleccionar un siguiente conjunto de historias para realizar en el siguiente

sprint, y así sucesivamente.

En este proyecto el equipo de desarrollo estará formado por una sola persona

(como ya comentamos con anterioridad) y el papel de cliente lo llevará a cabo esa

misma persona junto con el tutor de este trabajo de fin de grado.

2.5.1 Planificación de Sprints

Para nuestro proyecto, la duración de cada sprint será de 3 semanas

naturales, lo que en días de trabajo se reducen a 20 días por sprint. La fecha de

comienzo del trabajo será el 1 de Febrero de 2016. Para hacer una primera

estimación de trabajo que será realizado por sprint, se decide que éstos sean

aproximadamente de entre 10 y 15 puntos de historia cada uno.

Una vez que estos datos están claros, podemos hacer una primera estimación

global del tiempo de duración de nuestro proyecto:

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

39 Escuela Politécnica Superior de Jaén

Esta primera estimación nos muestra que serán necesarios 7 sprints de 3

semanas cada uno de trabajo. La fecha de comienzo sería el primer día del mes de

febrero, estimándose que el 26 de junio de este mismo año el proyecto será

finalizado. También podemos ver que cada sprint tiene una velocidad concreta. Esta

velocidad se refiere a la carga de trabajo real que tendrá el proyecto en un día de

trabajo. Este cálculo se obtiene mediante la división de los puntos de historia a

completar en el sprint y los días de trabajo que tendremos para ello. Como vemos, la

carga de trabajo se diversifica en cada sprint, dejando algunos de estos más

holgados en cuanto al tiempo, lo que puede ser una ayuda para el equipo si existe

algún tipo de problema durante la realización de algún sprint. Sin embargo en

determinados sprints se decide que es necesario acabar un número de historias

elevado ya que sus funcionalidades son muy comunes, por lo que será necesario

que el equipo aproveche todo el tiempo de trabajo de sus días en llevar a cabo el

proyecto en estos sprints. Si durante el proyecto no hubiera ningún cambio

importante, se respetaría este calendario si el equipo puede con la carga de trabajo

estimada y si no hay problemas.

Sin embargo sobre la mitad del tiempo del proyecto, más concretamente tras

la finalización del cuarto sprint, se detectó la necesidad de añadir al proyecto la

realización de una aplicación web de consulta para los usuarios, a través de la cual

los usuarios puedan introducir sus credenciales utilizadas para la creación de su

perfil en la aplicación móvil y acceder a sus datos personales. Además en el futuro el

usuario podría ver sus datos monitorizados por la pulsera. Por lo tanto, el trabajo

consistiría en crear una aplicación web que se conecte a la base de datos creada

para la aplicación móvil y que recogiera los datos de cada usuario. Esto supone para

el equipo elaborar nueva/s historia/s de usuario tras analizar la petición y, por tanto,

reestimar la duración del proyecto añadiendo nuevo/s sprint/s.

Nº Sprint

Fecha Inicio

Fecha Fin Días de trabajo

Puntos completados

Velocidad Historias a realizar

1 1-2-2016 22-2-2016 15 10 66% 1

2 23-2-2016 14-3-2016 15 10 66% 2

3 15-3-2016 4-4-2016 15 15 100% 3,4,5

4 5-4-2016 25-4-2016 15 10 66% 6

5 26-4-2016 16-5-2016 15 15 100% 7

6 17-5-2016 6-6-2016 15 10 66% 8

7 7-6-2016 27-6-2016 15 16 106% 9,10 Tabla 3 - Estimación del proyecto

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

40 Escuela Politécnica Superior de Jaén

Tras esta petición por parte del cliente y su posterior análisis por el equipo, se

decide incluir una nueva historia de usuario, que mostramos a continuación:

Ésta, a su vez, fue diversificada en distintas tareas:

ID TAREA ESTIMACIÓN (Puntos de historia)

PERSONAL

11 Aplicación móvil híbrida. 15

11.1 Análisis y diseño de los requisitos principales de la aplicación

3 Analista

11.2 Implementación de controladores

7 Programador

11.3 Implementación de vistas 5 Analista Tabla 5 - Descomposición de tareas nueva historia

Por último el equipo estimó nuevamente la duración del proyecto, quedando

finalmente de la siguiente manera:

ID TÍTULO DESCRIPCIÓN PUNTOS ESTIMADOS

PRIORIDAD

11 Aplicación web de consulta

Como usuario, quiero poder acceder a una aplicación web desde distintos dispositivos donde poder tener acceso a mis datos recogidos por la aplicación móvil

15 Alta

Tabla 4 - Nueva historia de usuario

Nº Sprint

Fecha Inicio

Fecha Fin Días de trabajo

Puntos completados

Velocidad Historias a realizar

1 1-2-2016 22-2-2016 15 10 66% 1

2 23-2-2016 14-3-2016 15 10 66% 2

3 15-3-2016 4-4-2016 15 15 100% 3,4,5

4 5-4-2016 25-4-2016 15 10 66% 6

5 26-4-2016 16-5-2016 15 10 66% 11

6 17-5-2016 6-6-2016 15 15 100% 7

7 7-6-2016 27-6-2016 15 10 66% 8

8 28-6-2016 18-7-2016 15 16 106% 9,10 Tabla 6 - Reestimación del proyecto

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

41 Escuela Politécnica Superior de Jaén

Como podemos comprobar, el equipo decide llevar a cabo la nueva iteración

justo cuando el cliente lo propone, para después seguir con el conjunto final de

sprints estimados anteriormente. Al añadir un sprint más, el proyecto se verá

retrasado tres semanas respecto a la primera estimación.

Estas estimaciones junto a la visión del proceso de desarrollo del proyecto

basado en sprints y puntos de historias se puede ver resumido en un diagrama burn

down o diagrama de evolución, que indica de forma gráfica el trabajo que aún queda

por hacer en un momento determinado del proyecto.

Ilustración 18 - Gráfico Burn Down

Como podemos observar en el gráfico, el cambio en la iteración 5 hace que el

proyecto se retrase tres semanas sobre la estimación temporal inicial. Sin embargo,

esta inversión de tiempo no ha sido en vano, ya que está justificada para la mejora

de las funcionalidades del sistema en su conjunto.

0

10

20

30

40

50

60

70

80

90

100

0 1 2 3 4 5 6 7 8

Estimación 1

Re-estimación

Nº Sprint

Pu

nto

s d

e h

isto

ria

a c

om

ple

tar

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

42 Escuela Politécnica Superior de Jaén

2.6 Estudio de viabilidad

En este punto detallaremos el coste que nos supondrá realizar la aplicación

para el cliente y el desarrollo de nuestro proyecto completo. En él veremos el valor

de las principales herramientas hardware y software necesarias para la puesta en

marcha y finalización del desarrollo y los salarios para los dos puestos laborales

necesitados: el de analista y programador.

A continuación mostramos las herramientas software utilizadas durante el

proyecto, la mayoría como se puede comprobar con licencia gratuita.

Software Precio Duración de uso

Precio ponderado

Paquete Microsoft Office 2007

30€

6 meses

30€

Brackets IO 1.5 Gratuito 6 meses 0€

Genymotion 6.0 Gratuito 6 meses 0€

Visual Paradigm Comunity Edition

Gratuito 6 meses 0€

Chrome Versión 51.0.2704.103

Gratuito 6 meses 0€

Notepad ++ 6.7 Gratuito 6 meses 0€ Ilustración 19 - Gastos herramientas software

Software y hardware a la hora de realizar un proyecto de este estilo van de la

mano. A continuación mostramos las herramientas hardware que han sido

necesarias a lo largo del proyecto:

Hardware Precio Vida estimada Precio ponderado

Asus K55V 700€ 6 años 112€

BQ Aquaris E5 240€ 3 años 73€

Tablet Chuwi Hi8 100€ 4 años 23€ Ilustración 20 - Gastos dispositivos hardware

Los equipos informáticos tienen una vida útil estimada, a partir de la cual se

calcula un precio ponderado en base al tiempo que han sido utilizados para la

realización del proyecto. En este caso los componentes incluidos han sido el

ordenador portátil utilizado para la programación y documentación, un smartphone

de la plataforma android que ha sido el principal dispositivo para pruebas y una

tablet que también ha sido utilizada para diversas pruebas. No se ha incluido el

precio de la pulsera inteligente ya que el equipo no ha afrontado su gasto, sino que

fue cedida temporalmente para el proyecto por el Centro de Estudios Avanzados en

TIC, CEATIC, 5de la Universidad de Jaén.

5 http://ceatic.ujaen.es

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

43 Escuela Politécnica Superior de Jaén

Los salarios para cada uno de los trabajadores han sido obtenidos de las

tasas públicas del BOE según el convenio de Telefónica. Para el desarrollo, como

hemos comentado en varias ocasiones, han sido necesarios dos perfiles distintos, el

de analista y el de programador. Para estos se calculará su sueldo en relación a sus

horas para llevar a cabo su trabajo estimado.

Puesto Salario Anual

Salario Mensual

Salario por hora

Días de trabajo

Horas/día Total horas

Precio

Analista 26.088,30€ 2.174,02€ 13,58€ 29 5 145 1969,10€

Programador 20941,34€ 1.745,11€ 10,90€ 57 5 285 3106,50€ Ilustración 21 - Gastos de personal

Para finalizar, mostramos un desglose de los gastos generales así como el

beneficio que obtendremos, normalmente alrededor de un 15% de los gastos.

Costes Precio

Gastos software 30€

Gastos hardware 208€

Gastos personal 5075,6€

Beneficio (15% de gastos totales) 792,52€

TOTAL 6106,14€ Ilustración 22 - Costes totales del proyecto

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

44 Escuela Politécnica Superior de Jaén

2.7 Modelo de dominio

Antes de comenzar con el apartado de diseño, es necesario realizar un

"diseño" previo de clases conceptuales que nos haga comenzar a ver la arquitectura

que tendrá nuestro proyecto, de manera que desde aquí se busque una posible

solución al problema. Cabe recordar que seguimos en el apartado de análisis, por lo

que realmente no hablaríamos de diseño exactamente, pero si de una propuesta de

solución. A continuación mostramos nuestro modelo de dominio:

Ilustración 23 - Modelo de dominio

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

45 Escuela Politécnica Superior de Jaén

Como podemos ver en nuestro modelo de dominio se comienza a estudiar la

arquitectura interna de un dispositivo con Bluetooth 4.0, como vemos en este caso

con la pulsera. Esta ofrece una serie de servicios y estos a su vez una serie de

características donde se almacenarán los datos. Un usuario tendrá una pulsera que

monitorizará sus datos, por lo que este tendrá acceso a dichos datos a través de la

conexión a la pulsera y la posterior búsqueda de esos datos.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

46 Escuela Politécnica Superior de Jaén

3.Diseño

A continuación, pasamos a la fase de diseño de este proyecto. En esta fase se decide cual es la mejor forma de organización de nuestra aplicación teniendo en cuenta todo lo detallado en cada una de las fases de análisis, siguiendo el modelo iterativo que se lleva a cabo según la metodología de SCRUM.

3.1 Diagrama de la base de datos

Como explicaremos en detalle más adelante, se ha optado por utilizar una

base de datos de tipo NoSQL[9] utilizando la API de Firebase 6, una potente API

para almacenar y sincronizar datos en la nube en tiempo real, tanto en aplicaciones

web como aplicaciones móviles que se conecten a dicho servicio.

A continuación, podemos ver un esquema resumen de la comunicación de

nuestra aplicación con el servicio de Firebase y viceversa, es decir, la recolección de

los datos que se encuentran en esta base de datos:

Ilustración 24 - Esquema/Resumen de la base de datos

Como se puede observar, será la aplicación móvil la encargada de recolectar

los datos de la pulsera vía Bluetooth 4.0, realizándose esta aplicación la llamada al

servicio de Firebase y el envío de datos para su almacenamiento, así como la

6 https://www.firebase.com/

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

47 Escuela Politécnica Superior de Jaén

sincronización de estos datos. Al mismo tiempo, esta aplicación móvil hará

una llamada a este servicio de Firebase para obtener dichos datos para el usuario

que corresponda. Por otro lado, la aplicación web también se conectará al mismo

servicio de Firebase para obtener todos los datos referentes al usuario que se

identifique en ella. Esta aplicación solo será de lectura de datos, por lo que no tendrá

necesidad de almacenar ni sincronizar datos con Firebase en una primera versión

del prototipo aunque, en el futuro, podría también permitir el envío y modificación de

información.

A continuación vemos un pequeño diagrama referente al almacenamiento de

datos en este servicio remoto de Firebase:

Como vemos, en este caso tendremos una entidad principal que será la

entidad Usuario, que por sí misma almacenará los datos personales de un usuario

de la aplicación. Además, esta entidad estará directamente relacionada con los

Ilustración 25: Diagrama de base de datos Firebase Ilustración 26: Diagrama de base de datos con Firebase

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

48 Escuela Politécnica Superior de Jaén

datos de monitorización correspondientes de la pulsera del usuario, por lo que

también será encargada de almacenar estos datos conforme estos vayan siendo

sincronizados. El servicio de Firebase (nuestra base de datos "no-sql"), será el

encargado de almacenar a su vez esta entidad "Usuario", por lo que la información

de un usuario estará incluida en una única entrada. Los usuarios tendrán un

identificador único, un "userkey" que servirá para el acceso a la aplicación mediante

su correspondiente login. Este userkey será creado una vez que el usuario se

registre en la aplicación.

3.2 Diagrama de clases

Para comprender con claridad la organización del modelo de nuestras

aplicaciones (móvil y web), hay que conocer previamente la arquitectura de las

tecnologías utilizadas, fundamentalmente la del framework de desarrollo AngularJS7.

Con el framework AngularJS lo que realmente tenemos desde el punto de

vista del diseño es un patrón Modelo-Vista-Controlador (MVC) [11], añadiendo la

funcionalidad conocida como “Two-Way Data Binding”, es decir, la actualización

del modelo automáticamente cuando cambia la vista y viceversa, consiguiendo así

una sincronización bidireccional.

7 https://angularjs.org/

Ilustración 27 - Two Way Data Binding en AngularJS. Fuente: www. docs.angularjs.org

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

49 Escuela Politécnica Superior de Jaén

Tras conocer que la aplicación seguirá el patrón de Modelo-Vista-Controlador,

se puede identificar el flujo de ejecución básico de nuestra aplicación, que

consistirá en los siguientes pasos:

-El usuario hará una solicitud de acceso a la aplicación móvil o web. Esta

solicitud será recibida por el controlador.

-El controlador recibe esta solicitud o petición por parte del usuario a través de

las vistas, y solicitará información al modelo. También, tras la ejecución del usuario,

el controlador actualizará o modificará este modelo.

-Una vez conseguido esto último, esta nueva información será enviada al

controlador, y de este pasará de nuevo a las vistas correspondientes de la

aplicación.

-Cuando el usuario ve los cambios en las vistas, el flujo se repetirá con

nuevas peticiones del usuario a la aplicación.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

50 Escuela Politécnica Superior de Jaén

A continuación, representamos globalmente el diagrama de clases de diseño

de la aplicación móvil y web:

APLICACIÓN MÓVIL

Una de las ventajas que nos da el framework de desarrollo AngularJS, es que

al usar el patrón MVC contamos con mayores facilidades para nuestro diseño, de

manera que habrá una clara separación de la lógica de negocio y las vistas, lo que

nos permite una clara reusabilidad del modelo, de modo que la misma

implementación de la lógica de negocio que maneja una aplicación puede ser

utilizada en otras aplicaciones, poniendo como ejemplo la aplicación web de control

que también se ha elaborado para este proyecto.

De esta forma, se reducen también los posibles impactos que podrían tener

los cambios en la interfaz de usuario sobre las operaciones internas del software

(desacoplamiento). Con el uso de este patrón conseguiremos un software mucho

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

51 Escuela Politécnica Superior de Jaén

más estable, y con un mantenimiento mucho más sencillo, así como una

mayor facilidad para añadirle nuevas funcionalidades sin que otra parte del modelo

se vea afectada.

Como podemos observar en el diagrama, y como hemos comentado en el

apartado anterior de este documento, tendremos tres tipos de elementos principales,

que albergarán a su vez las clases de nuestro proyecto. Estos tres elementos o

contenedores serán:

-Controladores: Presentan las principales funcionalidades de la aplicación y

la comunicación con el modelo de datos.

-Vistas: Interfaces que estarán de cara al usuario, y que se encargarán de

avisar a los controladores sobre las acciones que han de realizar, y al mismo tiempo

se encargarán de actualizarse cuando se den cambios en estos controladores.

-Servicios: Poseen funcionalidades globales que pueden ser utilizadas desde

cualquier controlador.

A continuación pasamos a detallar cada uno de estos elementos por

separado, reconociendo las diferentes clases que los forma.

Empezaremos por las clases de control que contienen la mayoría de los

detalles de funcionamiento de nuestra aplicación:

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

52 Escuela Politécnica Superior de Jaén

En nuestra aplicación tendremos un controlador por cada vista, y estos serán

los que le den la funcionalidad necesaria. En este caso, podemos ver los

controladores referentes a las funcionalidades de login de usuario, como el propio

login, el registro y la recuperación de contraseña. También tenemos un controlador

común a todas las vistas, que será la clase menú, que conseguirá que el tipo de

visionado de cada pantalla sea el mismo. Quizás el más importante de estos

controladores sea el controlador de la conexión, a partir del cual encontraremos

todas las funcionalidades para conectarnos a nuestra pulsera inteligente.

A continuación pasamos a ver las clases de las vistas de la aplicación:

Estas serán las principales vistas de la aplicación. En este caso tenemos una

clase encargada del enrutamiento entre vistas, lo que nos permitirá acceder a cada

una de las distintas pantallas con una ruta única por vista. Esta clase que englobará

a las demás es la clase "App".

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

53 Escuela Politécnica Superior de Jaén

Por último, tenemos también dos servicios:

Éstos serán los servicios que tienen funcionalidades comunes a varios

módulos de la aplicación, por lo que podrán ser utilizados desde distintos

controladores. Uno de estos servicios, el servicio "Auth", se encargará de toda la

lógica de negocio para la creación de perfiles de usuario. Por otra parte, el servicio

"GUIUtils" nos será de ayuda a la hora de mostrar distintos mensajes en pantalla y

manejar las ventanas emergentes durante la ejecución.

Se dará algún detalle más sobre funcionalidades concretas en el apartado de

implementación de esta memoria (Punto 4).

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

54 Escuela Politécnica Superior de Jaén

APLICACIÓN WEB

A continuación, representamos el diagrama de clases de diseño de la aplicación web:

Como podemos comprobar, esta aplicación es bastante más sencilla que la aplicación móvil, aunque sigue la misma estructura ya que también se implementa con AngularJS. La estructura de vistas, controladores y servicios se mantiene intacta. A continuación veremos cada uno de estas entidades por separado con algo más de detalle. Empezaremos con las clases de control:

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

55 Escuela Politécnica Superior de Jaén

Como vemos, tenemos tres controladores con funcionalidad. Por una parte

tenemos el controlador de la página de estadísticas, "chart.js", cuya función principal

será la de gestionar todos los gráficos que aparecerán en esta página. También

encontramos el controlador de la página de datos personales "blank.js", en la cual

haremos una conexión a Firebase para obtener los diferentes datos disponibles. Por

último tenemos, al igual que en la aplicación móvil, un controlador que se encarga de

implementar el login de usuario. El controlador vacío pertenece a la página principal

que de momento no tiene añadida ninguna función.

En cuanto a las vistas, tenemos la vista de login, pantalla principal, pantalla de

datos personales y la de estadísticas. Cada una de estas tendrá asignado el

controlador correspondiente de los ya comentados. La clase app, como en la

aplicación móvil, será la encargada del enrutamiento entre vistas.

Por último en esta aplicación contamos con un único servicio, en este caso un

servicio muy similar al que tenemos en la aplicación móvil, el servicio "authfactory",

con las funciones necesarias para llevar a cabo el login de usuario que el propio

controlador de login utilizará.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

56 Escuela Politécnica Superior de Jaén

3.3 Diagramas de secuencia

Una vez analizados los diagramas de clase de las aplicaciones, vamos a

repasar algunos de los diagramas de secuencias que son más representativos de

una manera gráfica cómo interaccionan los distintos objetos del sistema

comprobando su evolución en el tiempo. Esto nos ayudará a comprender el

funcionamiento de los apartados fundamentales de la aplicación.

3.3.1 Registro

Ilustración 28 - Diagramas de Secuencia: Registro

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

57 Escuela Politécnica Superior de Jaén

En este primer caso (historia de usuario 3), el usuario entra a la aplicación,

donde se encontrará con la pantalla de login principal, y seleccionará la opción de

registrarse. Tras marcar esa opción, la aplicación le llevará a una nueva página,

donde se le pedirá su e-mail y una contraseña. Una vez rellenados, el formulario

será enviado a la nube, en este caso a la plataforma Firebase, a través de la cual, si

todo es correcto, se creará el usuario. Una vez creado, el usuario ya podrá hacer

login con normalidad y encontrarse con su página de perfil.

3.3.2 Login

Ilustración 29 - Diagramas de Secuencia: Login

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

58 Escuela Politécnica Superior de Jaén

Este diagrama (historia de usuario 4) de secuencia nos muestra el proceso de

login del usuario. Una vez que el usuario abre la aplicación, se le mostrará la

pantalla de acceso. En esta habrá un formulario de e-mail y contraseña que deberá

completar. Tras completarlo, la petición se enviará a Firebase, donde se buscarán

los datos de este usuario. En caso de que el formulario esté correctamente

completado, se devolverá el login con éxito al controlador de este acceso y el

usuario entrará en su página de perfil principal, donde podrá modificar y completar

sus datos.

3.3.3 Modificación Perfil

Ilustración 30 - Diagramas de Secuencia: Modificar datos usuario

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

59 Escuela Politécnica Superior de Jaén

En este caso (historia de usuario 5), el diagrama nos muestra el proceso a

seguir de un usuario para cambiar sus datos principales para la aplicación. Esta

modificación se podrá hacer desde la página de perfil principal de usuario. Cada vez

que los datos sean modificados estos se guardarán en nuestra base de datos y

automáticamente serán sincronizados.

3.3.4 Conexión

Ilustración 31 - Diagramas de Secuencia: Conexión a pulsera

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

60 Escuela Politécnica Superior de Jaén

Este diagrama (historia de usuario 6) nos muestra el proceso de

conexión/sincronización del usuario con su pulsera. El usuario deberá acceder a la

página de conexión de su aplicación, y una vez dentro pulsar en el botón de

sincronizar que encontrará. Esto hará que se active la búsqueda y posterior

conexión y sincronización de la pulsera. Si se produce la conexión, los datos serán

automáticamente sincronizados y guardados en la nube, en nuestra base de datos

de Firebase. En el caso de que la conexión no se haga efectiva, no se podrán

sincronizar estos datos.

3.3.5 Ver datos aplicación web

En este último diagrama (historia de usuario 11) se indica el proceso que hará

un usuario para acceder a sus datos personales dentro de la aplicación web. En este

caso, el usuario se encontrará en la página principal de la aplicación (tras hacer su

login) donde tendrá datos referentes al monitoreo de la pulsera. Una vez en esa

página deberá acceder mediante un apartado a sus datos personales. Esta nueva

página recogerá los datos del usuario almacenados en Firebase, y una vez los

obtenga, estos serán mostrados al usuario en una nueva pantalla. Ya que la

aplicación web es una aplicación de solo lectura, estos datos solo serán modificables

desde la aplicación móvil.

Ilustración 32 - Diagramas de Secuencia: Ver datos personales (Web)

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

61 Escuela Politécnica Superior de Jaén

3.3 Diseño de la interfaz

Una de las partes más importantes de un desarrollo de software, y más si

cabe tratándose de una aplicación móvil, es el diseño de la interfaz de usuario. La

calidad de esta interfaz puede ser clave de cara al éxito o fracaso de una aplicación,

sin importar la complejidad de las funcionalidades que trabajen por debajo de esta

capa.

Una buena interfaz de usuario ha de ser funcional, consistente y de fácil

operación, es decir, intuitiva [12]. Solo manteniendo estas principales características,

la aplicación ya será una aplicación usable por parte del usuario. Por el contrario, si

la interfaz no cumple con esos requisitos, muy probablemente la aplicación obtendrá

un uso por parte de los usuarios mucho menor.

Dos aspectos claves a la hora de realizar la interfaz de usuario son:

-Forma de interacción del usuario con el sistema

-Forma de presentar la información al usuario

Integrando estos dos aspectos, conseguiremos tener una interfaz coherente y

robusta.

Ilustración 33 - Características UI. Fuente: www.ida.cl

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

62 Escuela Politécnica Superior de Jaén

Llegados a este punto, una de las primeras tareas relacionadas con el

desarrollo del diseño de una interfaz, es diseñar los bocetos o wireframes de las

distintas pantallas y vistas a las que se va a enfrentar el usuario. Estos bocetos nos

proporcionarán una representación inicial de la estructuración de cada pantalla. Los

bocetos han de realizarse de la forma más simple posible al principio, sin incluir

estilos ni imágenes. Más adelante, estos se pueden mejorar e incluso dotar de

interactividad, con aplicaciones específicas para ello.

A continuación, se muestran los wireframes iniciales de las principales

pantallas de usuario de la aplicación móvil y web. Aunque el boceto inicial fue un

boceto a mano alzada, a papel y lápiz, estos fueron mejorados mediante una

herramienta específica para el diseño de wireframes, en este caso MockFlow8, que

nos permite utilizar una gran variedad de elementos de interfaces de usuario, lo que

hará de estos prototipos unos esquemas más claros y vistosos de la estructuración

de nuestra aplicación.

8 https://www.mockflow.com/

Ilustración 34 - Herramienta de prototipado Mockflow: www.mockflow.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

63 Escuela Politécnica Superior de Jaén

Pantalla Login

Esta será la primera pantalla presente en nuestra aplicación móvil híbrida.

Será un página de login, donde al usuario se le presentará un

formulario de entrada de datos. Estos datos de acceso serán el e-mail con que el

usuario se registre y la contraseña que este elija. Así mismo, se le mostrarán otras

dos opciones, la de registrarse en la aplicación y la de recuperar contraseña en caso

de que la haya olvidado.

Ilustración 35 - Interfaz 1: Login

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

64 Escuela Politécnica Superior de Jaén

Pantalla Perfil

Este segundo boceto de la interfaz de nuestra aplicación es la pantalla de

perfil del usuario. En ella habrá un apartado de imágenes de usuario, como podría

ser el avatar. Además, encontrará sus datos personales, así como un botón que le

permitirá la opción de modificar estos. También encontraremos otros botones que

nos llevarán a otras tres distintas pantallas, la de calendario, donde el usuario podrá

ver sus datos enviados por la pulsera por días; la de estadísticas, donde podrá ver

distintos gráficos y resúmenes de sus datos recogidos actuales; y por último la de

actividad. Encontramos en el apartado superior a la izquierda un botón de menú

lateral, que pasamos a ver a continuación.

Ilustración 36 - Interfaz 2: Perfil

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

65 Escuela Politécnica Superior de Jaén

Pantalla Menú Lateral

A la izquierda de la barra superior de nuestra aplicación siempre

encontraremos el botón de menú lateral, un menú que al seleccionarlo se abrirá de

izquierda a derecha mostrándonos distintos enlaces de acceso a páginas dentro de

nuestra aplicación, como son las que ya encontrábamos en la pantalla de perfil de

usuario, y además el acceso a ese mismo perfil y a la pantalla de conexión, donde

sincronizaremos la pulsera inteligente con nuestra aplicación. La mostramos a

continuación.

Ilustración 37 - Interfaz 3: Menú lateral

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

66 Escuela Politécnica Superior de Jaén

Pantalla Conexión

Esta pantalla de conexión y sincronización con la pulsera inteligente será

simple. Habrá un botón principal por el cual se activará el protocolo de conexión

mediante Bluetooth 4.0. La aplicación mostrará los distintos dispositivos que

encuentre y se conectará a nuestra pulsera de Withings Pulse OX de la que

mostrará los datos. Una vez conectada se nos mostrará una ventana emergente

anunciándonos que está conectada y que los datos han sido sincronizados.

Ilustración 38 - Interfaz 4: Conexión

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

67 Escuela Politécnica Superior de Jaén

Pantalla Calendario

En esta pantalla, el usuario podrá seleccionar un día utilizando un

calendario que se abrirá pulsando un botón. Además, podrá ver los datos

sincronizados por la pulsera del mismo día de manera cuantitativa, teniendo así una

primera forma de contacto con sus propios datos monitorizados.

Ilustración 39 - Interfaz 5: Calendario

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

68 Escuela Politécnica Superior de Jaén

Pantalla Estadísticas

En la pantalla de estadísticas el usuario podrá ver de manera gráfica

muchos detalles sobre los datos monitorizados de su pulsera inteligente. Solo tendrá

que elegir la característica de la cual quiere ver un resumen o resultados, y podrá

ver dicho resumen de datos y gráficos sobre su evolución. Al contrario que en la

pantalla de calendario, el usuario en esta podrá ver cada característica que mide la

pulsera por separado, y de una forma más detallada.

Ilustración 40 - Interfaz 6: Estadísticas

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

69 Escuela Politécnica Superior de Jaén

Pantalla Actividad

Accediendo a la pantalla de actividad, el usuario podría comenzar a

monitorear una característica en concreto en un momento determinado. Estas

posibilidades se le mostrarán en formato de lista, y el usuario seleccionará cual

quiere medir.

Esta sería la última pantalla de nuestra aplicación móvil, al menos en una

primera versión.

Ilustración 41 - Interfaz 7: Actividad

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

70 Escuela Politécnica Superior de Jaén

Pantalla Principal (Aplicación Web)

Igual que se hizo en un primer momento para la aplicación móvil, también

se crearon los bocetos de la aplicación web más adelante, una vez que se comenzó

a elaborar su diseño. En este primer caso, una vez que el usuario hace login, se le

presentará una página principal, donde podrá ver de forma cuantitativa sus datos

monitoreados por la pulsera. También, tendrá un menú izquierdo para acceder a las

dos principales páginas, las cuales son "Home", esta misma pantalla, y

"Estadísticas", pantalla que mostraremos a continuación. Además también tendrá

acceso a otra pantalla donde podrá visualizar sus datos personales.

Ilustración 42 - Interfaz 8: Pantalla Principal (Aplicación Web)

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

71 Escuela Politécnica Superior de Jaén

Pantalla Estadísticas (Aplicación Web)

Esta es el boceto de la pantalla de estadísticas de la aplicación web. El

usuario podrá ver en esta pantalla de forma gráfica un resumen más amplio y datos

provenientes de la pulsera. De esta manera el usuario podrá hacer una

comprobación de sus datos principales y un seguimiento de sus objetivos sin

necesidad de utilizar la aplicación móvil.

Con esto finalizaríamos una visión global de lo que sería la interfaz de usuario

de la aplicación móvil y web, siendo más importante y compleja la primera de estas,

ya que es la aplicación principal de nuestro proyecto en desarrollo. Cabe destacar y

recordar que la aplicación que se presenta es un prototipo en sí misma, por lo que

las operaciones mencionadas en cada pantalla puede que no sean aún

completamente funcionales.

Ilustración 43 - Interfaz 9: Pantalla de Estadísticas (Aplicación Web)

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

72 Escuela Politécnica Superior de Jaén

4.Implementación

4.1 Arquitectura

En este apartado vamos a especificar y mostrar la estructura de nuestra

aplicación, y la forma en que los distintos módulos se integran unos con otros. Al

tratarse de una aplicación móvil y web se utilizará un modelo de arquitectura de

Cliente/Servidor, donde se encuentran estas dos partes diferenciadas [13]:

- Front/end: Parte de la aplicación que interactúa con el usuario, basado en

una interfaz gráfica con la que el usuario podrá operar sobre la aplicación.

- Back/end: Parte no interactiva de la aplicación, donde se encontrará la base

de datos.

De esta forma, lo que realmente se está mostrando desde un punto de vista

arquitectónico de software es un sistema en capas, donde separaremos

presentación, lógica de negocio y base de datos.

Conociendo esto, pasaremos a definir los elementos más significativos del

desarrollo del sistema proporcionando una imagen global.

Ilustración 44 - Arquitectura en capas

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

73 Escuela Politécnica Superior de Jaén

Con esta imagen podemos ver de una manera ilustrativa todos los distintos

componentes internos de nuestra aplicación, así como la estructuración

arquitectónica del sistema. Como podemos observar, se representan elementos

relevantes en lo que se refiere a las interfaces de usuario así como de base de datos

y tecnologías con las que se implementa la lógica de negocio. También vemos la

separación existente entre la aplicación móvil híbrida y la aplicación web, además de

su forma de comunicación tanto con la base de datos como con la pulsera.

Ilustración 45 - Resumen de Arquitectura

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

74 Escuela Politécnica Superior de Jaén

4.2 Detalles sobre implementación

En este apartado vamos a desarrollar un poco más específicamente todos los

distintos aspectos tenidos en cuenta en cada fase de desarrollo del sistema que se

ha seguido mediante la metodología SCRUM a lo largo del proyecto. Veremos de

qué manera se ha implementado la arquitectura del sistema definida en anteriores

apartados de este documento. Esto se hará explicando también cada una de las

principales tecnologías y metodologías presentes en la implementación de nuestras

aplicaciones.

A continuación se muestra un listado de tecnologías que han sido utilizadas a

lo largo de la implementación:

- Angular JS v1.5.7

- Bootstrap v2.3.2

- Ionic v1.2.9

- Apache Cordova

- HTML 5

- CSS 3

- Firebase

- EVO Things API

- Bluetooth 4.0

- Node

De aquí en adelante explicaremos y justificaremos el uso de las principales

tecnologías utilizadas en cada uno de los sistemas en cuestión, tanto para la

aplicación móvil como en el caso de la aplicación web, haciendo hincapié como es

lógico en la aplicación móvil, debido a su mayor complejidad y su mayor prioridad e

importancia en el proyecto. Además, como mencionaremos más adelante, muchos

serán los aspectos comunes que la aplicación web heredará de la aplicación móvil.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

75 Escuela Politécnica Superior de Jaén

4.2.1 Apache Cordova y AngularJS

Tenemos que recordar que pese a que nuestra aplicación móvil será una

aplicación web desde el punto de vista de la programación, finalmente esta será

compilada para su funcionamiento como aplicación móvil multiplataforma, lo que le

dará el tratamiento como aplicación híbrida. Esto se consigue mediante el marco de

desarrollo móvil de código abierto Apache Cordova 9[14], que permite utilizar

tecnologías web estándar para el desarrollo de aplicaciones móviles multiplataforma.

Estas tecnologías web pueden ser HTML, CSS y JavaScript. Es por esto que el

desarrollo de una aplicación móvil multiplataforma utilizando Apache Cordova va

muy ligado a JavaScript, lenguaje que tendremos que utilizar si queremos dotar a la

aplicación de ciertas funcionalidades. Apache Cordova además proporciona una

serie de bibliotecas y/o plugins que permiten la comunicación entre la interfaz web y

los elementos nativos del sistema operativo para el que la aplicación sea compilado,

así como elementos del dispositivo que pertenezca a dicha plataforma.

Existen numerosos frameworks de desarrollo basados en JavaScript que

facilitan mucho la labor del desarrollador. Uno de estos frameworks más conocidos

en la actualidad, así como de los que más documentación existe debido a su

elevado uso por parte de numerosos desarrolladores, es AngularJS [15]. Desde un

comienzo se destacó este framework para la programación del front-end de la

aplicación debido a que es muy ligero y potente, lo que lo hace ideal para una

aplicación móvil y, además, este hace uso del patrón de desarrollo MVC como ya

comentamos en apartados anteriores. Esto ayuda a que la aplicación sea más

eficiente y también a que la organización de esta sea mucho más modular

permitiendo así un bajo acoplamiento entre estos módulos.

AngularJS es una tecnología del lado del cliente desarrollada por Google, y

que funciona con las principales tecnologías web como HTML, CSS y JavaScript.

Este framework permite construir aplicaciones web modernas e interactivas. Incluye

numerosas facilidades para el desarrollador, como el hecho de que separa la lógica

de la aplicación, los modelos de datos y las vistas, permite inyecciones de

dependencias, incluye historial para la navegación en las aplicaciones (botones de

atrás/adelante) , se puede encargar también de funciones de testing, permite

9 https://cordova.apache.org/

Ilustración 46 - Angular JS. Fuente: www.angularjs.org

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

76 Escuela Politécnica Superior de Jaén

elaborar etiquetas propias (directivas) para así extender las etiquetas de

HTML, y muchas más operaciones.

Con AngularJS nuestra aplicación estará formada principalmente por tres

tipos de módulos, que unidos darán completa funcionalidad al conjunto de la

aplicación [16]. Estos tres módulos fundamentales serán las vistas, los controladores

y los servicios. Cada controlador se asociará a su vista y será el encargado de

dotarla de operabilidad y al mismo tiempo se suscribirá a distintos servicios globales

de la aplicación con distintas funcionalidades.

Nuestra aplicación de esta forma, quedará de la siguiente manera que

detallamos a continuación.

Tendremos un módulo principal, en este caso el módulo "App". Desde este

módulo se inyectarán las principales dependencias a servicios que tendrá nuestra

aplicación, como podemos ver en la siguiente imagen:

Ilustración 47 - Arquitectura de AngularJS. Fuente propia

Ilustración 48 - Módulo principal de la aplicación.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

77 Escuela Politécnica Superior de Jaén

De esta manera, estas dependencias no necesitarán volver a ser indicadas en

ninguna otra clase. Además, en este módulo estableceremos las distintas rutas entre

pantallas que habrá en nuestra aplicación, incluyendo las vistas y los controladores

de estas vistas, por lo que desde este módulo podremos asignar rápidamente estas

rutas o incluir nuevas. Esta funcionalidad también forma parte de AngularJS

mediante su módulo de enrutado encargado de asociar las URLs introducidas con su

vista a renderizar. Necesitaremos añadir a esta función de configuración de rutas los

objetos "$stateProvider" y "$urlRouterProvider". A continuación vemos un ejemplo de

esto en nuestra aplicación:

A parte de este módulo principal, también contaremos con numerosas vistas y

controladores, en este caso un controlador por vista. Las vistas serán código HTML

y hojas de estilo CSS, mientras que en los controladores dispondremos de

funcionalidad en lenguaje JavaScript. Estos controladores son parte de el módulo

principal de la aplicación, lo que se especifica en la cabecera de cada controlador.

Ilustración 49 - AngularJS Router Provider

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

78 Escuela Politécnica Superior de Jaén

Además, estos controladores también tendrán inyecciones de dependencias

con otros servicios que utilicen. Vemos un ejemplo a continuación:

En la clase del módulo principal este controlador estará asociado a su vista,

como ya hemos especificado anteriormente.

Como en la mayoría de aplicaciones web, necesitaremos un fichero

"index.html" donde importar los numerosos servicios externos que utilizará nuestra

aplicación, para luego poder inyectar estos en el módulo principal. Además, en este

fichero será donde le indicaremos a la aplicación cuál será el modulo principal que

debe cargar, en este caso nuestro módulo "App". Para especificar esto, AngularJS

utiliza una directiva HTML llamada "ng-app". Vemos su uso en la aplicación:

Como vemos, el módulo se carga en el cuerpo del "index.html" de la

aplicación, tras haber cargado las hojas de estilo, servicios, etc. De esta manera la

aplicación ya comenzará a funcionar correctamente.

Una de las características más importantes de AngularJS a tener en cuenta

es la forma en que se comunican los controladores y las vistas [17]. Angular posee

un núcleo fundamental en todas sus aplicaciones, los "Scopes". Estos son los

objetos en la aplicación que sirven de unión entre estos controladores y sus vistas.

Cada vez que el valor de un objeto de tipo "Scope" ("$scope") cambia o es

modificado, también se modificará su representación en la vista, que se actualizará

con el valor correspondiente. Por lo tanto estos objetos se encargan de guardar la

información de los modelos que se representan en las vistas, así como también de

guardar atributos que se utilizarán también para manejar la lógica de estas vistas.

Estos "scopes" son manejados desde los controladores y las directivas. La

Ilustración 50 - Controlador en AngularJS

Ilustración 51 - Ng-app AngularJS

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

79 Escuela Politécnica Superior de Jaén

aplicación hace un manejo de todos los objetos "scopes" mediante el

elemento "$RootScope" que contendrá un contexto global de estos elementos en

toda la aplicación. A continuación vemos un ejemplo del uso de estos objetos:

Como podemos observar, estos objetos se referencian en la vista

insertados entre doble corchete ("{{ $scope }}").

Estos son los principales aspectos tenidos en cuenta a lo largo de la

implementación con AngularJS. Después, el restante contenido de los controladores

son funciones JavaScript que dotan de funcionalidad a la aplicación. Estas funciones

se llamarán también desde las vistas, como podemos apreciar a continuación:

Ilustración 52 - Declaración de un objeto $scope

Ilustración 53 - Uso de objetos $scope

Ilustración 54 - Llamada a función AngularJS

Ilustración 55 - Resumen AngularJS

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

80 Escuela Politécnica Superior de Jaén

Una vez que los conceptos de AngularJS están claros, se abre la necesidad

de contar con algún otro tipo de framework de plantillas de estilos CSS destinado a

dar la mejor visión posible al usuario de una interfaz elegante, ya que se trata de una

aplicación móvil y queremos dotarla de una buena usabilidad. Se abren varias

opciones de frameworks existentes para este cometido, pero tras el estudio y

búsqueda sobre el mundo de aplicaciones móviles híbridas, encontramos el

framework Ionic, que nos ayudará en este aspecto y que además no dotará de otros

contenidos interesantes. Se explicará en el siguiente apartado.

Para nuestra aplicación web también se ha utilizado este framework de

desarrollo AngularJS, lo que nos permite un desarrollo mucho más rápido ya que

tras realizar la aplicación móvil, muchas funciones han sido comunes, como por

ejemplo el login en la aplicación. Esto nos ha permitido favorecer la reusabilidad de

código. Además el proceso de desarrollo ha sido mucho más ágil debido a que ya se

conocía el funcionamiento del framework y solo hizo falta revisar nuestro código de

la aplicación móvil si había alguna duda durante el desarrollo.

4.2.2 Ionic Framework

Ionic es un framework gratuito y open source optimizado para el desarrollo de

aplicaciones móviles híbridas [18]. A parte de esta ventaja, la mayor ventaja para

nosotros es que este framework se basa en AngularJS, HTML y CSS, por lo que

resulta ideal para nuestra aplicación. Por tanto con Ionic ya tenemos todo lo

necesario para la elaboración de nuestra aplicación móvil, y que esta sea elegante

pero con una arquitectura interna robusta.

Ionic está inspirado en las principales SDK de desarrollo de las plataformas

móviles más populares, como pueden ser Android e iOS. Además, y como también

es necesario, trabaja sobre Apache Cordova, por lo que también puede hacer uso de

los innumerables plugins existentes para interaccionar con los distintos aspectos

internos de los dispositivos. También trabaja con SASS, que es un preprocesador de

elementos CSS que consigue que trabajar con estos elementos sea muy cómodo.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

81 Escuela Politécnica Superior de Jaén

Lo realmente interesante, conjuntamente con todo lo anterior, es que nos

proporciona una biblioteca de componentes muy amplia para la elaboración de

nuestra interfaz de usuario, y también tenemos acceso a una documentación muy

extensa al respecto. Con estos componentes es muy difícil distinguir una de estas

aplicaciones con una aplicación móvil nativa.

La forma de trabajar con Ionic es realmente cómoda, ya que desde una

terminal podemos crear proyectos vacíos o con estructuras predeterminadas,

añadirle plugins, compilar los proyectos, ejecutarlos en simuladores o en nuestro

propio dispositivo si este está conectado con USB a nuestro ordenador (siempre que

lo configuremos en modo desarrollador). Por tanto es así de sencillo. Además, a

partir de la creación de un proyecto en una carpeta determinada, ya nos estructurará

las distintas carpetas de una forma organizada.

En definitiva este framework nos permite desarrollar aplicaciones híbridas con

una arquitectura robusta, utilizando AngularJS, HTML y CSS, con un muy buen

rendimiento y con una apariencia de aplicación móvil nativa.

Ilustración 57 - Creando un proyecto Ionic

Ilustración 56 - Ionic Framework. Fuente: www.ionicframework.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

82 Escuela Politécnica Superior de Jaén

4.2.3 FIirebase

Durante el estudio de cuál sería el mejor sistema de bases de datos a utilizar, y

relacionado con las búsquedas sobre los frameworks Ionic y AngularJS encontramos la API

de Firebase [19] y pareció muy interesante para nuestro proyecto. Firebase es una potente

API que presenta la utilidad de almacenar y sincronizar datos en tiempo real. En definitiva

estamos ante una base de datos de tipo NoSQL que se presenta como un servicio. Esta Api

está dirigida tanto a aplicaciones web como a aplicaciones móviles, desde las cuales se

puede hacer una sincronización en directo y en vivo de los datos que se desee.

Una de las cosas más interesantes para nuestro proyecto, es que esta API tiene una

librería específica para usar junto a AngularJS, y una extensa documentación al respecto.

Es por todo esto que se decidió utilizar esta API para el almacenamiento de nuestros datos,

ya que tampoco estos serán elevados, simplemente los datos de los usuarios y sus datos

provenientes de la pulsera. La sincronización llegados a este punto es muy interesante,

pues puede ser muy útil para recoger datos sistemáticamente. La librería que ofrece

Firebase para AngularJS se denomina AngularFire [20].

El primer paso para utilizar Firebase es crearse una cuenta en su web. Tras esto,

podrás crear una nueva aplicación para la que Firebase posteriormente creará una URL

única, todas siempre terminando en "firebaseio.com". Tras esto, en nuestro "index.html"

tendremos que incluir las dependencias necesarias, en este caso de Firebase y de

AngularFire.

Ilustración 58 - AngularJS y Firebase. Fuente: www.firebase.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

83 Escuela Politécnica Superior de Jaén

Después, y como ya explicamos en el apartado de AngularJS, deberemos inyectar

estas dependencias también en nuestro módulo principal como vemos a continuación:

En este caso nos basta con inyectar "firebase" como dependencia. Tras esto

Firebase nos ofrece tres tipos de servicios distintos: "$firebaseObject",

"$firebaseArray" y "$firebaseAuth". Cualquiera de estos podrá ser inyectado en los

controladores o servicios propios de nuestra aplicación.

Con Firebase siempre trabajaremos con nuestra URL única que la web nos

creó para nuestra aplicación. Es por esto que en la aplicación, esta URL ha sido

guardada como una constante, para poder utilizarla en cualquier momento de una

forma más sencilla. Lo vemos en la siguiente imagen:

La siguiente parte que se lleva a cabo en la aplicación con Firebase y

AngularFire fue la creación de un login. Firebase también proporciona sus propios

métodos para llevar eso a cabo. Además incluye funciones específicas para hacer

un login mediante distintas redes sociales o servicios como Gmail, aunque en este

caso no estén estos implementados. El login implementado se elabora partiendo del

servicio "$firebaseAuth" al que se le asigna nuestra URL única. Tras esto, se

especifican los campos que tendrá un perfil mediante la función "CreateProfile", y por

último se especificará que este login se llevará a cabo mediante correo y contraseña.

Aquí lo vemos en nuestra aplicación:

Ilustración 59 - Inyección de dependencias de Firebase y AngularFire

Ilustración 60 - Inyección en el módulo de AngularJS

Ilustración 61 - URL de Firebase global

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

84 Escuela Politécnica Superior de Jaén

Como vemos esta funcionalidad está implementada en un servicio que

contiene esta y otras funcionalidades correspondientes con el registro o

recuperación de contraseña. Si vemos la cabecera, comprobamos que no se trata de

un controlador si no de un "factory" que es otro elemento de AngularJS para crear

este tipo de servicios con funcionalidad útil en otras partes de la aplicación.

Después, para utilizar este login solo hará falta inyectar este servicio "Auth" como

dependencia en el controlador donde se vaya a implementar el formulario. Más tarde

en otro controlador se añadió una variable global "userkey" como identificador único

de cada uno de los usuarios, para después poder trabajar mediante ese identificador

con cada uno de ellos. Tras hacer todo esto, si vamos a la pantalla principal de

Ilustración 62 - Login con Firebase

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

85 Escuela Politécnica Superior de Jaén

nuestra aplicación en la página de Firebase nos encontraremos con esta

estructura, que nos indica que todo ha salido correctamente:

Para finalizar, nos queda por saber cómo añadir datos a Firebase, para que

estos puedan ser sincronizados. Nuevamente tendremos que crear un objeto

"$firebaseObject" que contenga la URL de referencia sobre la que queremos añadir

o modificar datos. Como vemos en la siguiente imagen, queremos acceder al perfil y

a los datos del usuario, por lo que guardamos dicha dirección:

Ilustración 64 - URL de referencia Firebase

Tras esto podemos, por ejemplo, pedir datos a los usuarios y guardarlos

automáticamente en nuestra base de datos de Firebase, como vemos en la siguiente

imagen:

Ilustración 63 - Estructura en página de Firebase.

Ilustración 65 - Sincronización de datos con Firebase

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

86 Escuela Politécnica Superior de Jaén

Como vemos, el trabajo para añadir o modificar datos consiste en recorrer el árbol de

nuestra estructura hasta llegar al campo deseado, y una vez ahí especificar, añadir o

modificar lo que se desee.

Estos son los aspectos más relevantes que han sido útiles para comprender la

manera en la que se trabaja con Firebase y AngularJS y para poder utilizarlos en la

aplicación en desarrollo.

Por otro lado, nuestra aplicación web hace uso de nuestra base de datos de firebase.

De hecho, el login de esta aplicación es muy similar al de la aplicación móvil, ya que solo

tenemos que acceder nuevamente a nuestra URL única de nuestra aplicación. Una vez que

el usuario realiza su login en la aplicación web, esta recogerá sus datos almacenados en

firebase de la misma forma en que lo implementábamos en la aplicación móvil. Esta

aplicación web hay que recordar que será un servicio para que los usuarios de la aplicación

móvil puedan acceder a ver todos sus datos recogidos con esta aplicación sin necesidad de

acceder a esta. Esta es otra de las grandes ventajas del uso de firebase, la facilidad que hay

para acceder a unos datos almacenados y sincronizados en la nube desde varias

aplicaciones y sin un elevado aumento de código.

4.2.4 EVOthings

Uno de los principales problemas a tratar de nuestro proyecto era la forma en la que

podríamos llevar a cabo el estudio e implementación del protocolo Bluetooth 4.0 en nuestra

aplicación híbrida. Existe una empresa de desarrolladores llamada "EVOthings10" [21] cuyo

objetivo es la de ofrecer un servicio para facilitar el desarrollo de aplicaciones móviles

relacionados con el mundo del IoT ("Internet de las cosas", en español) . Esta empresa ha

desarrollado numerosos plugins para poder desarrollar aplicaciones móviles que puedan

intercomunicarse con diferentes sensores, protocolos de comunicación o dispositivos

inteligentes específicos. Todos estos plugins son de código abierto y son ofrecidos de

manera totalmente gratuita para que los desarrolladores hagan uso de ellos.

10 www.evothings.com

Ilustración 66 - EVOthings. Fuente: www.evothings.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

87 Escuela Politécnica Superior de Jaén

Uno de los plugins que esta empresa ha desarrollado hace referencia a la

comunicación con dispositivos BLE, y más concretamente para utilizarlo sobre Apache

Cordova y para desarrollo con JavaScript, por lo que con esto tenemos lo que buscamos.

Pasamos a explicar cómo ha sido el desarrollo con este plugin [23].

Lo primero que tenemos que tener en cuenta es que nuestro periférico de Bluetooth

4.0 puede estar en dos estados distintos, "advertising" o "conected". Cuando un periférico

está en el primero de estos estados, lo que estará haciendo es mandar una señal con su

nombre, por lo que si se hace un escaneo de dispositivos cercanos, podremos ver dicho

dispositivo y nos podremos conectar a él. El otro estado se refiere a la existencia de un

vínculo entre nuestro sistema principal (en este caso el dispositivo móvil) y el periférico, a

través del cual ya existe la posibilidad de intercambiar datos entre los dispositivos, leer

valores o ejecutar ciertos comandos sobre el periférico.

Con el plugin que nos ofrece Evothings podremos llevar a cabo las siguientes

acciones:

- Escanear para encontrar un periférico BLE cercano.

- Identificar dicho dispositivo y conocer la distancia a la que se encuentra a partir de

su RSSI.

- Conectarte al dispositivo.

- Leer servicios, características y descriptores que contiene el dispositivo.

- Leer/escribir datos sobre las características del dispositivo que nos interesa.

- Activar notificaciones (lecturas sobre una característica cada cierto tiempo).

Para comenzar a trabajar con este plugin solo tendremos que añadir a nuestro

proyecto el fichero "ble.js" que podemos encontrar en la página de Evothings y en su

repositorio de Git-hub, e instalar el plugin propiamente dicho para Apache Cordova a partir

de la consola de comandos. En la imagen siguiente vemos como instalar este y cualquier

otro plugin de Cordova a partir de una sola línea en la consola de comandos:

El fichero "ble.js" es la API que Evothings nos ofrece para trabajar con el plugin

BLE, y a partir de la cual podremos hacer uso de las funcionalidades explicadas

anteriormente. Además en la web podemos encontrar algún tutorial al respecto, que fue de

utilidad al comienzo del desarrollo de esta parte del proyecto. Una vez instalado el plugin,

ya podemos pasar a trabajar con las distintas funciones que la API nos ofrece. A

continuación veremos ejemplos de algunas de estas funciones en nuestro controlador que

se hace cargo de la conexión con la pulsera, empezando por el escaneo de dispositivos y la

conexión.

Ilustración 67 - Importación de plugin para Cordova. Fuente: www.github.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

88 Escuela Politécnica Superior de Jaén

Como vemos todo se basa en funciones definidas previamente por Evothings, que

cubre las funciones principales. Después el objetivo es obtener todos los parámetros

necesarios sobre un dispositivo para después tener acceso a más datos sobre ellos.

Podemos ver un ejemplo de esto en la función de conexión donde, después de establecer

esta conexión, obtenemos los parámetros "deviceHandle" que es un identificador del

Ilustración 68 - Escaneo de dispositivos BLE con Evothings

Ilustración 69 - Conexión a dispositivo BLE

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

89 Escuela Politécnica Superior de Jaén

dispositivo y "address" que es la dirección MAC del dispositivo en cuestión, y con

estos llamamos a la función que leerá los servicios del dispositivo:

Con esta función accederemos a todos los servicios que nos ofrezca el dispositivo, y

nos dará sus propiedades principales, como el UUID por el que un servicio se identifica, y el

tipo de servicio. Tras obtener toda esta información, ya podremos comenzar a leer las

características que contiene cada uno de estos servicios:

Ilustración 70 - Escaneo de Servicios BLE

Ilustración 71 - Escaneo de Características BLE

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

90 Escuela Politécnica Superior de Jaén

Con esta función identificamos las características que posee cada uno de los

servicios que hemos encontrado, hasta obtener todas. Después, como podemos observar,

debemos dar un permiso de lectura para poder leer los datos que contienen estas

características, que ya serán los datos de interés que monitoriza el dispositivo. Tras dar este

permiso, se llama a la función de lectura, y también se comprueba si estas características

tienen algún tipo de descriptor. La función para leer los datos de las características la

encontramos a continuación:

En los dispositivos BLE que poseen servicios genéricos GATT, los datos vienen

codificados en formato UTF8 ("8-bit Unicode Transformation Format") [24]. Esta codificación

usa grupos de bytes para representar el estándar de "unicode", que asigna los enteros del 0

al 127 a exactamente los mismos caracteres en ASCII. UTF8 empaqueta cualquiera de

estos enteros en un octeto de bits con el primer bit de paridad a 0, a no ser que el símbolo a

empaquetar sea mayor que 127 en la tabla de "unicode" [25], en cuyo caso este bit de

paridad será 1 para indicar que aún hay que leer el siguiente octeto para completar la

descodificación. Por tanto, para obtener el valor de estos datos se utiliza la función

"fromUtf8" que se aplicará a los datos recogidos. Esta función pasará los objetos binarios a

enteros y buscará a que símbolo pertenece. De esta forma esos datos codificados podrás

ser extraídos.

Ilustración 72 - Lectura de Características BLE

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

91 Escuela Politécnica Superior de Jaén

Por desgracia para nuestro proyecto, la pulsera de Withings utiliza servicios

personalizados y desarrollados únicamente para esta pulsera, es decir, servicios no

genéricos y que no podemos encontrar en la lista de servicios que Bluetooth ofrece a los

desarrolladores. Esto quiere decir que los datos finales de monitorización de la pulsera

Pulse OX de Withings tienen otra codificación distinta, no genérica. Por tanto a no ser que

conociéramos como está elaborada esa codificación, no se podría hacer nada al respecto

para obtener esos datos finales. Aún así, de conocer esa codificación, habría que

implementar esa parte del trabajo, pues el plugin BLE para Cordova no contempla este tipo

de casos, como es lógico.

Durante el desarrollo se intentó ponerse en contacto con personal de la empresa de

Withings, pero solo se consiguió que nos redireccionasen a su API para desarrolladores, la

cual se basa en trabajar a partir de su propia aplicación y no de comunicarse con la pulsera,

por lo que no es lo que pretendíamos en este proyecto.

No obstante, mediante nuestra implementación podemos hacer una conexión con

cualquier dispositivo BLE, conocer sus servicios, características y descriptores. El único

paso que queda es el de hacer la lectura, que será posible solo con dispositivos que

contengan servicios genéricos contemplados por el perfil genérico de atributos GATT. Para

nuestro prototipo, tras desarrollar esta funcionalidad se decide completar el resto utilizando

valores de ejemplo, ya que es imposible en estos momentos obtener valores reales de

monitorización de nuestro dispositivo.

4.2.5 Bootstrap

Uno de los aspectos del desarrollo nuestra aplicación web que no es común con la

aplicación móvil es el uso del framework Bootstrap. Este framework [26] ofrece de forma

gratuita librerías CSS para añadir a proyectos web basados en HTML, CSS y JavaScript.

Este framework se utiliza en gran medida para hacer aplicaciones web que sean "responsive

design", es decir, que se adapten a las distintas pantallas de los distintos dispositivos donde

estas se visualicen.

Ilustración 73 - Bootstrap. Fuente: www.bootstrap.com

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

92 Escuela Politécnica Superior de Jaén

De esta forma, nuestra aplicación web se adaptará también a dispositivos móviles

como smartphones o tablets. Bootstrap 11define diferentes clases y formatos CSS, además

de poseer un potente sistema de grids y columnas. Bootstrap divide la pantalla en doce

partes y posee cuatro rangos de resoluciones distintas, por lo que para conseguir ese

"responsive design" se deciden, para cada elemento de la página, las partes que se le

asignarán de esas doce dependiendo del rango de resolución donde se visualiza la

aplicación en cuestión.

Además bootstrap tiene una extensa documentación sobre su funcionamiento, por lo

que es uno de los frameworks más conocidos y utilizados por los desarrolladores. A parte de

esta documentación, también tenemos un rápido acceso a todos sus componentes, que

podemos encontrar en su web, como por ejemplo botones, iconos, listas, mensajes de error,

barras de tareas, grupos...etc. Además contamos con numerosos ejemplos de uso de cada

uno.

Bootstrap es descargable desde su propia web, aunque también lo podemos clonar

de un repositorio mediante consola de comandos. Una vez descargado, tendremos que

especificar en el "index.html" de nuestra aplicación las dependencias necesarias. No

obstante también encontramos un completo manual de instalación en la web.

Como podemos observar, tenemos nuestra aplicación desarrollada con AngularJS y

con el framework de diseño bootstrap, trabajando sin ningún problema.

11 http://getbootstrap.com/

Ilustración 74 - Sistema de columnas de Bootstrap

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

93 Escuela Politécnica Superior de Jaén

A continuación mostramos cómo se comporta el "responsive design" de nuestra

aplicación:

Ilustración 75 - Visionado de la aplicación web en PC

Ilustración 76 - Visionado de la aplicación web en Smartphone

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

94 Escuela Politécnica Superior de Jaén

5. Conclusiones

En la actualidad vivimos en un mundo donde el objeto más cotidiano que nos

rodea puede estar continuamente aportando o recibiendo información de algún tipo.

Podemos encontrar objetos que poseen sensores de temperatura, de actividad vital,

de proximidad, y de otros muchos más tipos con mirar a nuestro alrededor. Estos

sensores pueden formar parte de un reloj, de una pulsera, de un llavero, de una

nevera, de un sistema de calefacción y en definitiva de una inmensidad de objetos

que nos rodean, y que aunque no lo sepamos son dispositivos inteligentes. Es por

esto que el desarrollo de aplicaciones que hacen uso de estos dispositivos o que se

comunican con ellos es claramente creciente en la actualidad, ya que de esta forma

es como utilizamos esta inteligencia para conseguir mejorar nuestro estilo de vida.

La mayoría de estas aplicaciones son aplicaciones móviles, ya que son estos

los dispositivos más fáciles y rápidos de usar en un momento determinado. El

problema a día de hoy con el desarrollo móvil es la gran diversidad de plataformas

que hay disponibles, para cada una de las cuales hace falta un desarrollo por

separado. No obstante, y debido a esta problemática, otros ámbitos de desarrollo

móvil están ganando terreno, como puede ser la programación de aplicaciones

móviles híbridas. Es por esto que resulta tan interesante conocer en profundidad

ciertos aspectos del desarrollo de este tipo de aplicaciones y su relación con

dispositivos que contienen información, como una pulsera inteligente en nuestro

caso.

El objetivo de estudiar, obtener conocimientos y demostrar estos en relación a

las aplicaciones móviles híbridas ha sido cumplida de una forma bastante efectiva,

ya que el resultado final conseguido ha sido el de una aplicación totalmente

funcional y que raramente diferenciaríamos de una aplicación móvil nativa. Por otra

parte, este mismo objetivo pero relacionado con el proceso de comunicación entre

aplicaciones híbridas y dispositivos inteligentes mediante el protocolo de

comunicación Bluetooth 4.0 también ha sido positivo, aunque en este caso nos

encontramos con alguna barrera más. El hecho de que los datos que estos

dispositivos puedan tener una codificación personalizada por parte de las empresas

que los confeccionan, y que esta codificación no se dé a conocer públicamente a

desarrolladores, hace que se dificulte mucho la opción de desarrollo de distintas

aplicaciones, y promueve bastante poco la creación e investigación sobre estos

dispositivos. No obstante ocurre todo lo contrario con otros grupos que se dedican a

crear y mantener APIs para facilitar el desarrollo con estos dispositivos. Gracias a

ellos, como por ejemplo Evothings, hemos podido establecer una comunicación

entre nuestra aplicación móvil híbrida y la pulsera inteligente que hemos tenido a

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

95 Escuela Politécnica Superior de Jaén

nuestra disposición, y hemos podido conocer la estructura interna de este dispositivo

inteligente.

Afortunadamente, existen otros dispositivos cuya codificación es genérica y

podemos trabajar con ellos sin ningún tipo de problema.

El desarrollar este proyecto ha supuesto una gran motivación por obtener

nuevos conocimientos y poder conocer en primera persona lo que es enfrentarse a

un proyecto de estas magnitudes. Durante el desarrollo hubo altibajos como no

puede ser de otra manera, y quizás la parte de la conexión con la pulsera inteligente

ha dado más problemas que los esperados, pero finalmente esos problemas

también han aportado más conocimiento sobre el protocolo de comunicación y sobre

el funcionamiento de estos dispositivos, que son desconocidos para la mayoría de

nosotros. Es cierto que de no haber tenido los problemas con la conexión, el

prototipo podría haber estado más avanzado, pero se ha intentado plasmar todo lo

necesario. Otro aspecto que me ha parecido muy útil de aquí en adelante es el

descubrimiento del servicio web Firebase como base de datos NoSQL en la nube,

sobre todo por su fácil uso y su rápido aprendizaje. Me parece una buena opción

para el almacenamiento de sistemas que no sean excesivamente complejos.

En definitiva pienso que este proyecto me resultará útil en el futuro. Conocer

el desarrollo de aplicaciones híbridas es muy interesante, sobre todo teniendo en

cuenta que los resultados son muy positivos, y comenzar a conocer aspectos sobre

la comunicación de estas aplicaciones con dispositivos inteligentes en la época en la

que nos situamos, también me parece muy interesante y útil para el futuro.

5.1 Mejoras y trabajos futuros

Con este tipo de aplicaciones y dispositivos se nos abre un mundo de

posibilidades sobre el tratamiento de los datos que obtenemos. Sería muy

interesante que la aplicación contase con otras funcionalidades distintas a las

especificadas, como consejos de salud, marcador de objetivos, creación de horarios

para hacer actividades, y cualquier idea de este tipo que se considere interesante.

Como es evidente, quizás tendríamos que encontrar una pulsera cuyos servicios que

proporciona fueran genéricos, y podamos así acceder a los datos finales y utilizar

estos, de manera que la aplicación sea totalmente funcional con el dispositivo.

Además se podrían mejorar los sistemas de estadísticas mostrando muchas

más posibilidades de estudio de los datos monitorizados. Otra parte que podría

pasar a tener más funcionalidades es la aplicación web, que en nuestro caso es solo

de lectura de datos y estadísticas, y que incluso podría comunicarse directamente

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

96 Escuela Politécnica Superior de Jaén

con la aplicación móvil para iniciar actividades o activar notificaciones de datos. De

esta forma se conseguiría interconectar en mayor medida las dos aplicaciones.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

97 Escuela Politécnica Superior de Jaén

6. Bibliografía

[1] A.Álvarez, Heras, R. D., & Lasa, C. (2011). Métodos ágiles y Scrum (Manuales

imprescindibles). Anaya multimedia.

[2] Cockburn, A. (2001). Agile Software Development. Addison Wesley.

[3] Qué es SCRUM. (s.f.). Obtenido de Proyectos Ágiles: https://proyectosagiles.org/

[4] Jiménez, E. (2010). Ingenieria de software ágil. Bubok.

[5] Tipos de APPS: Nativas, híbridas y web apps. (s.f.). Obtenido de Appio:

http://appio.es/

[5] SIG, B. (s.f.). Low energy. Obtenido de https://www.bluetooth.com/.

[6] Essex, M. (28 de June de 2012). Why Google loves responsive design (and you

should too). Obtenido de https://econsultancy.com/blog/10210-why-google-loves-responsive-

design-and-you-should-too/: https://econsultancy.com

[7] Lee, N. (5 de October de 2011). Bluetooth 4.0: What is it, and does it matter?

Obtenido de http://www.cnet.com/: http://www.cnet.com/news/bluetooth-4-0-what-is-it-and-

does-it-matter/

[8] Townsend, K., Cufí, C., & Davidson, R. (2014). Getting Started with Bluetooth Low

Energy. En Getting Started with Bluetooth Low Energy. O'Reilly Media.

[9] Barranco, M. (s.f.). Apuntes de la asignatura Ingeniería de Requisitos. Jaén.

Universidad de Jaén.

[10] González, P. (2014). Apuntes de la asignatura Desarrollo Ágil. Jaén. Universidad de

Jaén.

[11] Díaz, W. (2013). Bases de datos NoSql. Obtenido de

http://basesdedatosnosql.blogspot.com.es/.

[12] Larman, C. (2003). UML y patrones: introducción al análisis y diseño orientado a

objetos y al proceso unificado. Madrid: Prentice-Hall.

[13] Rivas, V. (s.f.). Apuntes de la asignatura: Interacción Persona y Ordenador.

Universidad de Jaén. Jaén.

[14] González, P. (2015). Apuntes de la asignatura de Diseño de Software. Jaén.

Universidad de Jaén.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

98 Escuela Politécnica Superior de Jaén

[15] Documentación de Apache Cordova. (2015). Obtenido de

https://cordova.apache.org/.

[16] Guía de desarrolladores de AngularJS. (2015). Obtenido de

https://docs.angularjs.org/guide: https://angularjs.org/

[17] Azaustre, C. (s.f.). ¿Qué es AngularJS? Primeros pasos para entenderlo. Obtenido

de https://carlosazaustre.es/blog/empezando-con-angular-js/: https://carlosazaustre.es/

[18] Learn AngularJS 1.X. (s.f.). Obtenido de

https://www.codecademy.com/es/learn/learn-angularjs: https://www.codecademy.com/es

[19] Getting Started with Ionic Framework. (s.f.). Obtenido de http://ionicframework.com/

[20] Firebase Developer Docs. (s.f.). Obtenido de https://www.firebase.com/docs/:

https://www.firebase.com

[21] AngularFire. (s.f.). Obtenido de https://www.firebase.com/docs/web/libraries/angular/:

https://www.firebase.com

[22] Evothings Api Overview. (s.f.). Obtenido de https://evothings.com/doc/api/api-

overview.html: https://evothings.com

[23] BLE app development in JavaScript. (25 de September de 2014). Obtenido de

https://evothings.com/ble-app-development-explained/: https://evothings.com

[24] Townsend, K., Cufí, C., & Akiba. (2014). GATT (Services and Characteristics). En

Getting Started with Bluetooth Low Energy. O'Reilly Media.

[25] The Unicode Consortium. (s.f.). Obtenido de http://unicode.org/

[26] Getting started. (s.f.). Obtenido de http://getbootstrap.com/getting-started/:

http://getbootstrap.com/getting-started/

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

99 Escuela Politécnica Superior de Jaén

APÉNDICE I: Manual de instalación del sistema

Aplicación móvil

La aplicación está compilada para su uso en sistema operativo android. En el

dispositivo USB suministrado para la entrega del trabajo de fin de grado, hay una

carpeta denominada aplicación móvil. Dentro de esta estará por un lado el código

fuente y por otro un archivo con extensión "apk". Este archivo es directamente

instalable en un dispositivo android.

Aplicación Web

Para probar la aplicación web en un navegador, este ha de soportar

JavaScript. Esto no será mucho problema ya que la mayoría de navegadores lo

soportan. Una vez que tenemos la carpeta del código fuente descomprimido,

tendremos que abrir la consola de comandos. Una vez en la consola, debemos

situarnos mediante rutas en la carpeta app de la aplicación web. Tras esto, basta

con lanzar un comando http-server para que la aplicación se ejecute en el

"localhost". Tras esto, la consola nos especificará algunas de las direcciones de

localhost a las que podemos acceder desde un navegador. Tras acceder, ya

veremos la pantalla de login de nuestra aplicación.

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

100 Escuela Politécnica Superior de Jaén

APÉNDICE II: Manual de usuario

Aplicación móvil

Cuando abrimos la aplicación móvil nos encontraremos con un formulario de

login. Pulsaremos sobre "Register" si no tenemos una cuenta creada. Tras realizar el

registro, si todo es correcto ya podrás hacer el login en la aplicación.

Una vez que nos hemos logueado, llegaremos a la página principal de nuestro

perfil, que en un primer momento estará vacío. Debemos entonces pulsar sobre el

botón de modificación de datos y se nos pedirán todos los datos necesarios. Los

datos después se podrán modificar en cualquier momento.

Ilustración 78 - Pantalla de inicio Ilustración 77 - Pantalla de registro

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

101 Escuela Politécnica Superior de Jaén

Como vemos, desde el perfil nos podemos mover a tres distintas páginas:

calendario, estadísticas y actividad. Además, si pulsamos sobre el botón de menú

que hay en la esquina superior izquierda, se nos abrirá un menú lateral que nos

permitirá acceder a estas tres páginas y además a la página de conexión. También

en dicho menú tendremos la opción de salir de la aplicación.

Pasamos a la pantalla de calendario. En este caso encontraremos datos

referentes a la monitorización de la pulsera (no reales) y el día actual marcado.

Pulsando sobre este día, podremos seleccionar otro día del calendario para ver

nuestros datos guardados.

Ilustración 79 - Pantalla principal

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

102 Escuela Politécnica Superior de Jaén

Otra de las pantallas es la de estadísticas. En esta pantalla podremos ver las

estadísticas de la última semana referente a cada uno de los datos de actividad que

mide la pulsera. El último día será el día actual. Podremos ver dos tipos de gráficos,

de área y de línea. Cambiaremos de datos pulsando sobre su nombre. Además,

desde esta página podremos compartir mensajes a través de Whatsapp, Twitter o

Facebook.

Ilustración 81 - Calendario: Pantalla principal

Ilustración 80 - Calendario: Selección de día

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

103 Escuela Politécnica Superior de Jaén

Por último desde el perfil, podíamos acceder al apartado de actividad. Este

apartado está destinado a monitorizar un aspecto en específico durante un rango de

tiempo determinado, por ejemplo si se va a hacer una carrera. En esta pantalla

primero seleccionaremos uno de los aspectos que queremos medir, y después

pasaremos a otra pantalla donde podremos comenzar la actividad y pararla en el

momento que queramos. Habrá un botón para cada una de estas posibilidades, y un

contador de tiempo.

Ilustración 83 - Pantalla estadísticas Ilustración 82 - Pantalla estadísticas:

Redes sociales

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

104 Escuela Politécnica Superior de Jaén

Por último, faltaría la pantalla de conexión. Una vez dentro de esta solo habrá

que pulsar sobre el botón de sincronizar y la aplicación se conectará a la pulsera y

obtendrá todos sus servicios y características. No obstante, la aplicación buscará la

pulsera que se tuvo para el desarrollo, por lo que no podrá conectarse a otra.

Ilustración 84 - Pantalla de actividad principal

Ilustración 85 - Pantalla de comienzo de actividad

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

105 Escuela Politécnica Superior de Jaén

Ilustración 86 - Pantalla de conexión

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

106 Escuela Politécnica Superior de Jaén

Aplicación web

La primera parte de nuestra aplicación web será un formulario de login. En este

introduciremos el correo y contraseña con los que nos creamos la cuenta en la aplicación

móvil. Tras esto, podremos acceder sin problema.

Una vez dentro nos encontraremos en la página principal donde veremos los datos

actuales recogidos por la pulsera inteligente. También podremos acceder a nuestros datos

personales.

Por último, también tenemos acceso a una pantalla de estadísticas en la columna

izquierda de la pantalla. En esta pantalla podremos ver estadísticas de nuestros datos de

actividad en la última semana, igual que podemos hacer en la aplicación móvil.

Ilustración 87 - Pantalla login aplicación web

Ilustración 88 - Pantalla principal aplicación web

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

107 Escuela Politécnica Superior de Jaén

Ilustración 90 - Pantalla datos personales aplicación web

Ilustración 89 - Pantalla estadísticas aplicación web

David Jiménez Ibáñez Estudio y diseño de un prototipo de aplicación móvil híbrida para seguimiento y control de dispositivos con tecnología BLE

108 Escuela Politécnica Superior de Jaén

APÉNDICE III: Descripción de contenidos suministrados

La memoria USB que se entrega se compondrá de los siguientes elementos:

-Aplicación web: Carpeta que contendrá el código fuente de la aplicación web

comprimido en formato ".rar".

-Aplicación móvil: Carpeta que contendrá por una parte el código fuente de la

aplicación móvil comprimido en formato ".rar" y por otra parte un fichero ".apk" de

instalación de la aplicación en android.

-Video: Carpeta que contiene un video resumen del funcionamiento de las

aplicaciones.

-Diagramas: Carpeta que contiene un fichero con todos los diagramas utilizados

para la memoria del trabajo.