118
Exploratu Grado en Ingeniería Multimedia Trabajo Fin de Grado Autor: Izadi Egizabal Alkorta Tutor/es: José Vicente Berná Martínez Junio 2019 App para la conversión de divisas usando OCR y AR

Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

Exploratu

Grado en Ingeniería Multimedia

Trabajo Fin de Grado

Autor: Izadi Egizabal Alkorta

Tutor/es: José Vicente Berná Martínez

Junio 2019

App para la conversión de

divisas usando OCR y AR

Page 2: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

1

Page 3: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

2

Aplicación móvil para la conversión

de divisas usando OCR y AR

Autor

Izadi Egizabal Alkorta

Tutor

José Vicente Berná Martínez Departamento de Tecnología Informática y Computación

GRADO EN INGENIERÍA MULTIMEDIA

Page 4: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

3

Page 5: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

4

Resumen

El mundo se está haciendo cada vez más pequeño gracias al creciente número de viajes

que la gente realiza, entre otros factores. Esto se debe en gran parte por la disminución

de los costes, así como el incremento de las facilidades de las que se dispone.

Similarmente, la gran adopción de los smartphones permite tener toda la información

que se pueda querer o necesitar en la palma de las manos. Por lo tanto, es esperable

que el número de soluciones para ayudar a este sector cada vez sean más.

Una de las cosas que más se suele necesitar en un país extranjero es un conversor de

divisas, es esencial saber cuánto cuesta cada cosa en la moneda que más se esté

acostumbrado. Por tanto, es normal que las tiendas de aplicaciones estén inundadas de

soluciones para esto.

Desafortunadamente, todas esas aplicaciones son casi idénticas y su experiencia de

usuario no ha cambiado desde sus primeras versiones de hace años. Están basadas en

la entrada manual de la información y no aprovechan las características que estos

dispositivos ofrecen.

Por lo tanto, el objetivo principal que plantea este proyecto es poder automatizar todo

este proceso mediante una aplicación móvil que use los sensores y funciones de los que

estos smartphones disponen para que la experiencia de usuario sea lo más simple y fácil

posible.

En concreto la cámara para la extracción de los precios y la ubicación del dispositivo, así

como su configuración, para la obtención de las divisas entre las cuales se quiere realizar

la conversión.

De esta manera, poder realizar dicha conversión y mostrar el resultado en Realidad

Aumentada para que no se pierda el contexto y se pueda comparar entre diferentes

conversiones simultáneamente.

Page 6: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

5

Abstract

The world is getting smaller and smaller thanks to the increasing number of trips abroad

that people make, among other factors. To a large extent, this is due to the decline in

travelling costs, along with the increasing easiness of doing so.

Similarly, the mass adoption of smartphones allows people to have all the information

that they may want or need in the palm of their hands. Hence, it is expected that the

number of solutions for this sector is ever so increasing.

One of the things that are mostly required when visiting a foreign country is a currency

converter. It is crucial to know how much things cost in the money that one is familiar

with. As such, it is foreseen that the app stores are filled with solutions for this.

Unfortunately, all these apps are almost identical, and their user experience has not

changed from their first iterations, a long time ago. They are based on the manual input

from the user and do not take advantage of the features that these devices offer.

Therefore, the main objective that this project has is to automatise all the process via a

phone app that uses the sensors and features that these smartphones have, to make the

user experience as frictionless as possible.

Specifically, the camera for extracting the prices and the location of the device, along

with their configuration, to obtain the currencies among which the conversion wants to

be performed.

Consequently, the exchange can be determined, and the result displayed in Augmented

Reality. Thus, the original context is not lost, and the outcomes of the different exchanges

can be compared among each other.

Page 7: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

6

Laburpena

Gendeak egiten dituen bidaiak handitzen einean, besteak beste, mundua gero eta

txikiagoa antzematen da. Hau, neurri handi batean, kostuen gutxitzeak eta erraztasunak

handitzeak ahalbidetu du.

Bestalde, smartphoneen zabaltze handiak, behar edo nahi den informazio guztia denon

eskuetan edukitzea posible egin du. Horregatik, ez da harritzekoa sektore honi

laguntzeko soluzioak gero eta gehiago izatea.

Kanpoko herrialde batean gehien behar izaten den gauzetako bat diru aldaketa nola den

ezagutzea da, beharrezkoa izan ohi da zenbat balio duen gauza bakoitzak jakiteak

norberak ezagutzen duen dibisa batean. Beraz, normala da aplikazio dendak honetarako

soluzioz beteta egotera.

Zoritxarrez, aplikazio hauek guztiak oso antzekoak dira, eta beraien erabiltzaile

esperientziak ez ditu aldaketarik eduki lehen bertsioetatik, hau dela, orain dela urte

askotatik. Eskuz informazioa sartzean daude oinarrituta eta ez dituzte gailu hauek

dituzten ezaugarriak aprobetxatzen.

Ondorioz, proiektu honek planteatzen duen helburu nagusia prozesu hau guztia

sakelakoarentzako aplikazio baten bidez automatizatzea da. Smartphoneen sentsore eta

ahalbideen bidez erabiltzaileen esperientzia ahal bezain sinple eta errazena izan dadin.

Zehazki, kamara prezioak ateratzeko eta gailuaren kokapena, sakelakoaren

konfigurazioarekin erabiliko diren dibisak lortzeko.

Modu honetara, aldaketa egin eta emaitza zuzenean Errealitate Areagotuan (AR)

erakusteko. Horrela testuingurua ez da galtzen eta aldaketa desberdinen artean

konparatu litezke aldi berean.

Page 8: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

7

Page 9: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

8

Motivación, justificación y objetivo general

La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras

viajaba en metro en la ciudad de Shenzhen1, China Continental2, por mi cuenta, como

escapada que hice desde la ciudad adyacente de Hong Kong, lugar donde estaba

realizando el segundo semestre del curso 2017/18 dentro del programa de movilidad

global de la Universidad de Alicante.

Me di cuenta de algo que había estado viviendo todo ese curso que pasé fuera la

península, tenía instaladas diferentes utilidades de cambio de divisas que no me

acababan de convencer y además a veces terminaba consultando en Google muchas

veces porque terminaba antes.

Además, una de las cosas más engorrosas es tener que estar metiendo datos

constantemente en la app para cada cosa que veas. Por ejemplo, en un supermercado

con el tema de precios o el peso de diferentes ítems. Cosa que se podría automatizar

mediante la captura y procesado de la imagen vía la cámara de los móviles.

Igualmente, sé que otros compañeros de movilidad se encontraban en la misma

situación, a veces incluso peor, ya que desconocían la existencia de apps para esta tarea

o simplemente les parecía demasiado complicado/les daba pereza y terminaban

funcionando con aproximaciones, muchas veces erróneas, que los llevó a un par de

sustos. Todo esto me ha animado para llevar a cabo este proyecto y apostar por esta

idea.

En lo personal, me encanta dar la vuelta a algo existente y buscarle una mejor solución,

usando nuevas tecnologías y soluciones para ello. Me considero una persona inquieta,

que tiene que estar en constante evolución y no me puedo resistir a hacer pequeños

proyectos solucionando pequeñas cosas que veo que se podría mejorar. Esto me llevó

hace tiempo a interesarme al desarrollo móvil y pensar en cómo explotar estos

dispositivos que hoy en día todos llevamos con nosotros.

1 Shenzhen ( ): ciudad-subprovincia de 12 millones de habitantes localizada en la costa sur

de la provincia de Cantón, en la República Popular China. 2 China Continental ( ): zona de China bajo la soberanía efectiva de la República Popular

China, sin incluir regiones administrativas especiales de Hong Kong, Macao y Taiwán.

Page 10: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

9

Otra de las razones por la que me dispongo a desarrollar este proyecto se debe a la

realización de un curso de introducción al desarrollo Android3 el año pasado, gracias a

una beca entre Google4 y Udacity5, y este año otro más avanzado gracias al mismo tipo

de beca.

Estaba convencido de que quería hacer una aplicación nativa de Android como mi

Trabajo Final de Grado, y así asentar mis conocimientos en este tipo de desarrollos;

realizando un proyecto completo más complejo que las demos que he estado elaborando

hasta ahora. Este sector de la industria me interesa mucho, y es en algo que me vería

trabajando después de graduarme como Ingeniero Multimedio.

Finalmente, gracias a la experiencia de movilidad, primero en Finlandia y después en

Hong Kong, he podido conocer a gente de todo el mundo y me motiva bastante hacer

algo que “nos una” de alguna forma y facilitar la experiencia de viajar a un lugar distinto

mediante la app6.

3 Android: sistema operativo basado en el núcleo Linux orientado especialmente para dispositivos

móviles. 4 Google: compañía principal subsidiaria de la multinacional estadounidense Alphabet Inc., cuya

especialización son los productos y servicios relacionados con Internet. 5 Udacity: organización educativa que ofrece cursos online masivos y abiertos (MOOCs). 6 App: aplicación.

Page 11: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

10

Agradecimientos

Quería aprovechar esta oportunidad para agradecer a todo el mundo que ha compartido

conmigo, cada uno de forma diferente, esta larga aventura de cuatro años que ha durado

mi paso por el grado de Ingeniería Multimedia.

En primer lugar, a mis padres y familia, por haberme dejado la libertad total de elegir la

carrera que más me gustase, aunque esto supusiera salir del pequeño pueblo donde

había vivido hasta el momento e irme al lado opuesto de la península, donde no conocía

nada ni a nadie. Milesker por la confianza, apoyo y ánimos que me han dado siempre, por

inculcarme desde pequeño que cada uno tiene que buscar lo que más le haga feliz y

apostar con todo que se tiene por ello.

En segundo lugar, a todos mis compañeros de la carrera, a todos los amigos que he

hecho durante el camino y a la Universidad de Alicante por haber habilitado todo esto.

Nunca pensé que en cuatro años podía crecer tanto como persona, así como conocer

tanta gente y tanto mundo, no podría estar más agradecido de cada momento

compartido con ellos, han hecho que estos cuatro años hayan sido una experiencia

inolvidable.

Finalmente, agradecer al profesorado de la carrera y en especial a mi tutor Jose Vicente

por su paciencia y dedicación; no sólo para guiarme en este trabajo y resolver todas las

dudas que tuviera, sino también por apostar por esta carrera y hacer el cuarto año, con

la metodología ABP, algo único que siempre llevaremos con nosotros.

Page 12: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

11

Page 13: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

12

Travel is fatal to prejudice, bigotry, and narrow-mindedness.

Viajar es letal para los prejuicios, intolerancia, y mentes cerrados.

Mark Twain

No tengas miedo de crecer lentamente, ten miedo de quedarte quieto.

Proverbio Chino

Page 14: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

13

Page 15: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

14

Índice de contenidos

1. Introducción ................................................................................................................. 22

2. Estudio de viabilidad ................................................................................................... 24

2.1. Análisis DAFO ....................................................................................................... 24

2.2. Lean Canvas.......................................................................................................... 26

2.2.1. Segmento de Clientes .................................................................................. 27

2.2.2. Problemas ..................................................................................................... 28

2.2.3. Proposición única de valor ........................................................................... 28

2.2.4. Solución ......................................................................................................... 29

2.2.5. Canales .......................................................................................................... 29

2.2.6. Flujos de ingreso .......................................................................................... 29

2.2.7. Estructura de costes..................................................................................... 29

2.2.8. Métricas clave ............................................................................................... 30

2.2.9. Ventaja especial ........................................................................................... 30

2.3. Análisis de riesgos ............................................................................................... 30

3. Planificación ................................................................................................................. 35

4. Estado del arte ............................................................................................................. 38

4.1. Análisis del mercado ............................................................................................ 38

4.2. Tecnologías para crear aplicaciones .................................................................. 42

4.2.1. Desarrollo Nativo .......................................................................................... 42

4.2.2. React Native .................................................................................................. 43

4.2.3. Ionic............................................................................................................... 43

4.2.4. NativeScript .................................................................................................. 44

4.2.5. Xamarin ......................................................................................................... 44

Page 16: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

15

4.2.6. Flutter ............................................................................................................ 45

4.3. Fuentes de datos .................................................................................................. 46

4.4. Software para OCR ............................................................................................... 48

5. Objetivos ....................................................................................................................... 50

6. Metodología.................................................................................................................. 52

7. Análisis y especificación .............................................................................................. 54

7.1. Definiciones .......................................................................................................... 54

7.2. Características de los usuarios ........................................................................... 54

7.3. Requisitos ............................................................................................................. 55

7.3.1. Requisitos funcionales ................................................................................. 55

7.3.2. Requisitos no funcionales ............................................................................ 57

8. Diseño ........................................................................................................................... 60

8.1. Diseño de la arquitectura conceptual ................................................................. 60

8.2. Diseño de la arquitectura tecnológica ................................................................ 61

8.3. Diseño de la persistencia ..................................................................................... 63

8.4. Guía de estilos ...................................................................................................... 65

8.4.1. Filosofía de diseño ........................................................................................ 65

8.4.2. Logo e iconografía ........................................................................................ 66

8.4.3. Colores .......................................................................................................... 67

8.4.4. Tipografía ...................................................................................................... 67

8.5. Diseño Interacción ............................................................................................... 68

8.6. Diseño Interfaces ................................................................................................. 70

8.7. Diseño de pruebas y validación........................................................................... 73

9. Implementación .......................................................................................................... 76

9.1. Sprint 1: Preproducción ....................................................................................... 76

9.2. Sprint 2: Creación de la estructura base de la app ............................................ 77

Page 17: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

16

9.3. Sprint 3: Conversión manual en local ................................................................. 79

9.4. Sprint 4: Selector de divisas ................................................................................ 82

9.5. Sprint 5: Obteniendo las ratios desde internet .................................................. 84

9.6. Sprint 6: Funcionalidad base del modo AR ........................................................ 86

9.7. Sprint 7: Automatización de la selección de divisas y detalles ......................... 88

10. Pruebas y validación ................................................................................................ 92

11. Resultados ................................................................................................................ 98

11.1. Producto Final ...................................................................................................... 98

11.2. Recepción ........................................................................................................... 101

11.3. Coste temporal ................................................................................................... 103

12. Conclusiones y trabajo futuro ............................................................................... 106

12.1. Estado actual ...................................................................................................... 106

12.2. Mejoras y ampliaciones ..................................................................................... 107

12.3. Nociones aprendidas ......................................................................................... 109

Referencias ........................................................................................................................ 110

Apéndice I – Publicación en la Google Play Store .......................................................... 114

Page 18: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

17

Page 19: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

18

Índice de figuras

Figura 1. Esquema de un análisis DAFO. ........................................................................... 24

Figura 2. Cuadro Lean Canvas de Exploratu. ..................................................................... 26

Figura 3: Llegadas internacionales por regiones del mundo ........................................... 38

Figura 4: Evolución del valor de los servicios y productos exportados ........................... 39

Figura 5: Estado del tablero Kanban en el tercer Sprint. .................................................. 53

Figura 6: Esquema conceptual de Exploratu. .................................................................... 60

Figura 7: Diagrama de la arquitectura de Room ............................................................... 64

Figura 8: Tabla de cambio de divisas ................................................................................. 64

Figura 9: Logo de Exploratu ................................................................................................ 66

Figura 10: Ejemplos de iconos Dual Tone de Google ....................................................... 66

Figura 11: User Journey Map de las apps alternativas ..................................................... 69

Figura 12: Wireframe del modo AR .................................................................................... 70

Figura 13: Wireframe de la selección de divisas ............................................................... 71

Figura 14: Wireframe de la pantalla de conversión manual............................................. 72

Figura 15. Mapa de interacciones ...................................................................................... 73

Figura 16: Activities base de Exploratu ............................................................................. 77

Figura 17: Esquema del funcionamiento del OCR ............................................................ 78

Figura 18: Diseño de las banderas de las divisas ............................................................. 80

Figura 19: Interfaz implementado del modo manual ....................................................... 81

Figura 20: Diagrama comparativo entre el ListView y RecyclerView ............................... 83

Figura 21: Sistema de selección y búsqueda de divisas .................................................. 83

Figura 22: Ejemplo de uso del modo AR ........................................................................... 87

Figura 23: Ejemplo de Tooltip ............................................................................................ 89

Figura 24: Interfaz final del modo AR ................................................................................ 90

Page 20: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

19

Figura 25: Realización de pruebas en dispositivos físicos ............................................... 92

Figura 26: Tests Robo en Firebase Test Lab ..................................................................... 93

Figura 27: Resultados de rendimiento en el Google Pixel (API level 26) ....................... 93

Figura 28: Captura de los cuadros de mando de Firebase Crashlytics ........................... 94

Figura 29: Captura de los cuadros de mando de Firebase Performance Monitoring ..... 95

Figura 30: Ejemplo de casos en los que no se ha conseguido un resultado óptimo ...... 95

Figura 31: Aviso pidiendo permiso para usar la cámara .................................................. 98

Figura 32: Posibilidad de darle permiso a la cámara a posteriori .................................... 99

Figura 33: Exploratu avisando de tener cuidado al usar AR ............................................. 99

Figura 34: Modo AR de Exploratu..................................................................................... 100

Figura 35: Algunas opiniones en el Google Play Store ................................................... 102

Figura 36: Resultados del lanzamiento de Exploratu en Product Hunt ......................... 102

Figura 37: Comentarios del lanzamiento de Exploratu en Product Hunt ...................... 103

Figura 38: Capturas del correcto funcionamiento de Exploratu .................................... 106

Figura 39: Modal de alerta avisando de haber entrado en el modo de AR ................... 116

Page 21: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

20

Índice de tablas

Tabla 1. Listado de Riesgos. ............................................................................................... 31

Tabla 2. Planificación temporal TFG .................................................................................. 36

Tabla 3: Comparativa de apps de conversión más populares ......................................... 39

Tabla 4: Comparativa de APIs para la obtención de los cambios .................................... 46

Tabla 5: Tipos de usuarios .................................................................................................. 54

Tabla 6: Requisitos funcionales ......................................................................................... 56

Tabla 7: Requisitos no funcionales .................................................................................... 57

Page 22: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

21

Page 23: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

22

1. Introducción

Hoy en día tenemos toda nuestra vida en nuestros bolsillos; es difícil imaginarse cómo

sería el día a día sin estos pequeños instrumentos que parecen tan indispensables,

cuando la realidad es que hace pocos años sólo unos pocos los tenían.

Cuando viajamos esto no es una excepción, y no es de extrañar que confiemos en los

smartphones7 para que tengan todas nuestras reservas, billetes de autobús, tren o avión

para ser usados de la manera más rápida posible, sin tener que marearnos en una lista

infinita de documentos de papel.

De la misma manera, aprovechando la capacidad de éstos, los cargamos con muchas

utilidades que nos sirven para el viaje, como podría ser una aplicación de mapas, del

metro de la ciudad a donde vamos, diccionarios de frases básicas de otros idiomas;

creamos listas de lugares a visitar, platos que probar, así como números que nos podrían

servir de emergencia entre otras muchas cosas como pueden ser conversores de

unidades, divisas y tallas.

Mi idea original para el Trabajo Fin de Grado era crear una aplicación multifuncional que

pudiera unificar todas estas cosas y simplificar la vida al viajante. Sin embargo, después

de pensarlo mejor y escuchar a las recomendaciones y opiniones de mi tutor, me di

cuenta de que intentar hacer eso era demasiado complejo. Lo más probable es que

terminase juntando muchos problemas sin solucionar ninguno de ellos y más teniendo

en cuenta las características temporales y técnicas de un Trabajo de Fin de Grado.

Intentar hacer una app que sea muy buena en una cosa es suficientemente complicado

para intentar hacerlo para muchas. Además, hacer lo que tenía en mente implicaría

incluir mucho contenido, ya fueran recomendaciones o simplemente datos, lo cual sería

complicado por no decir imposible, ya que además de recogerlo habría que valorar qué

resulta útil y qué no cuando las preferencias de los usuarios cambian enormemente

entre ellos.

Por ello, me centraré en intentar reflexionar y darle una vuelta al funcionamiento de las

apps de conversión de divisas, que se han quedado en las mismas interfaces de siempre

y se podrían mejorar enormemente explotando las características que los dispositivos

7 Smartphone (teléfono inteligente): tipo de ordenador de bolsillo con mayor capacidad de realizar

actividades semejantes a la de una computadora.

Page 24: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

23

móviles tienen hoy en día. No hay ninguna razón por la que seguir usando el mismo

sistema de texto cuando estos dispositivos nos ofrecen muchísimo más.

El proyecto se llamará Exploratu, una app que mediante la toma de información de los

sensores de los smartphones facilitará la experiencia de usuario de las apps de

conversión de divisas, haciendo todo el proceso mucho más rápido e intuitivo.

Como eje central e innovador se encontrará el poder hacer dichas conversiones

mediante la captura, procesado y presentación en Realidad Aumentada (AR) usando la

cámara de los smartphones, así como información obtenida mediante el GPS 8 del

dispositivo, facilitando y agilizando toda la tarea.

De esta forma, se abren nuevas posibilidades en todos los aspectos. El usuario

simplemente tendrá abrir la app, apuntar al precio en la moneda extranjera y la app le

mostrará la conversión directamente allí; pudiendo repetir constantemente la operación

sin tener que pararse a introducir datos repetidamente.

Además del mencionado beneficio de eficiencia y rapidez, también nos evitamos la

introducción de cantidades erróneas, obteniendo los datos mediante la cámara en vez

de la acción manual, y la selección de la divisa incorrecta, sabiendo el país, y por tanto la

moneda del lugar en el que el usuario se encuentra mediante el GPS.

Igualmente, se podrá presentar el resultado de una forma mucho más atractiva y fácil

de entender, mostrándolo dentro del mismo contexto de donde se capturado la

información, usando la Realidad Aumentada.

Exploratu significa explorar en euskera y me parece un nombre muy apropiado ya que

ese es su objetivo principal, permitir a la gente conocer nuevos lugares sin sentirse

agobiados por una forma diferente de cuantificarlo.

Es una aplicación que me gustaría haber tenido mientras realizaba mis dos semestres

de movilidad. Del mismo modo, después de hablar con compañeros y amigos de

movilidad nos dimos cuenta de que todos pasamos por situaciones parecidas, por lo que

creo que es un producto que podría tener bastante futuro.

8 GPS: del inglés Global Positioning System, se trata de un sistema de posicionamiento global

basado en satélites.

Page 25: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

24

2. Estudio de viabilidad

Antes de continuar con el resto del proyecto, es importante realizar un estudio de

viabilidad de este para poder así analizar el proyecto en sí, y sentar las bases de tomas

de decisiones una vez sabiendo si los objetivos son viables, pertinentes, necesaria.

De la misma forma, es muy interesante elaborar un análisis de riesgos con el objetivo de

poder identificar, analizar y finalmente crear un plan de respuestas a cualquier riesgo o

amenaza que podría surgir durante todo el ciclo de desarrollo, para así mantener en el

plan previsto y alcanzar la meta.

2.1. Análisis DAFO

El DAFO (de las iniciales de Debilidades, Amenazas, Fortalezas y Oportunidades) es una

metodología de estudio de la situación de un proyecto, analizando sus características

internas (Debilidades y Fortalezas) y su situación externa (Amenazas y Oportunidades)

en una matriz cuadrada como muestra la Figura 1.

Figura 1. Esquema de un análisis DAFO.

(Expósito, 2015)

En cuanto al proyecto de Exploratu los cuadrantes serían los siguientes:

Page 26: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

25

▪ Debilidades:

- Falta de experiencia en proyectos tan grandes.

- Nuevas tecnologías que no controlo.

- Tiempo limitado de 300 horas para desarrollar el proyecto.

- Incertidumbre en el tamaño del proyecto, y cuánto se podrá realizar como

parte del TFG9.

- Proyecto poco guiado.

- No ser el mejor en cuanto a la organización y distribución del tiempo.

- Presupuesto monetario nulo para el marketing una vez el proyecto esté

desarrollado.

▪ Amenazas:

- Mercado de apps de conversiones saturado.

- Reticencia de los usuarios a la hora de probar nuevas aplicaciones (Comscore

Inc., 2017).

- Circunstancias personales que podrían perjudicar al tiempo que pudiera

dedicar al TFG.

- Realizar una app que no sea suficientemente completa y robusta.

▪ Fortalezas:

- Experiencia mínima desarrollando para Android.

- Facilidad de adaptarse a nuevas tecnologías.

- Interés personal en el desarrollo del proyecto.

- Ser una persona dedicada y cumplidora de objetivos.

- Ser muy autoexigente y detallista.

- Capacidad de hacer frente a adversidades.

▪ Oportunidades:

- Crecimiento rápido en caso de ser una app medianamente exitoso.

- Llegar a mucha gente.

- Desarrollar mis habilidades para desarrollo de apps.

- Poder demonstrar de lo que soy capaz.

- Darme a conocer.

- Proyecto importante para añadir a mi CV10.

9 TFG: Trabajo de Fin de Grado. 10 CV: Curriculum Vitae, currículum.

Page 27: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

26

Como conclusión, y teniendo en cuenta la naturaleza del TFG de ser un proyecto nuevo

que llega al mercado, deberíamos optar por una estrategia ofensiva siguiendo el análisis

CAME11.

Con buenas medidas de contención de riesgos que se describen en el punto 2.3 del

trabajo, se pueden corregir y afrontar las debilidades y las amenazas de una manera

bastante efectiva para así potenciar al máximo las fortalezas y poder explotar las

mencionadas oportunidades al máximo.

2.2. Lean Canvas

El Lean Canvas es una de las herramientas idóneas al comienzo de cualquier producto

de carácter innovador. Esto se debe a que permite formular posibles modelos de negocio

de una manera muy visual que permite, no sólo ayudarte a ver cómo será el proyecto de

diferentes ángulos, sino que permite compartir tu visión con otros.

Si usamos el Lean Canvas para analizar el proyecto Exploratu podemos llegar a la

siguiente figura:

Figura 2. Cuadro Lean Canvas de Exploratu.

(Fuente propia)

11 CAME: partiendo del análisis DAFO, CAME (Corregir, Afrontar, Mantener y Explotar) se trata de

un análisis que se realiza para identificar diferentes estrategias para optimizar el modelo de

negocio.

Page 28: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

27

De esta manera podemos tener una idea más clara de lo que el proyecto pueda ofrecer,

lo que soluciona y cómo lo hará de una manera muy visual y fácil de ver.

De todas formas, siempre es conveniente analizar en más detalle cada uno de los

aspectos vistos en el Lean Canvas para poder profundizar en la idea en cuestión:

2.2.1. Segmento de Clientes

Clientes

- Viajeros, turistas y expatriados

Serían el grueso de clientes ya que son los que necesitan este tipo de utilidades al

viajar fuera de su casa. Los viajeros, turistas y expatriados se encuentran en

ambientes ajenos a los que suelen estar habituados y por tanto necesitan

conversores para adaptarse a su nuevo entorno y entender lo que equivalen las

cosas.

Es importante que la app desarrollada sea lo más simple posible y fácil de usar ya

que estos usuarios no suelen disponer de altos niveles de conocimientos

tecnológicos.

Visionarios

- Estudiantes de intercambio

Se tratan de unos clientes similares a los viajeros y turistas y muy cercanos a los

expatriados. La diferencia es que al tratarse de personas más jóvenes usan más el

smartphone y están más interesados en encontrar y descargar apps nuevas; un 70%

de jóvenes entre 18 y 34 años están “siempre buscando apps nuevas e interesantes”

frente el 37% de personas entre 35 y 54 años (Comscore Inc., 2017).

Por tanto, serían los que probablemente descubran la app y sean menos reticentes

a probarlos. Además, al estar más tiempo en el país extranjero, que un viajero, por

ejemplo, usarían más características de la app y de una manera más exhaustiva.

- Mochileros

Al estar constantemente cambiando de país necesitan estar al tanto de lo que cuesta

cada cosa y al mismo tiempo de lo que puede equivaler el peso de una comida o ropa

que vayan a comprar. Por tanto y teniendo en cuenta de que su edad media es de

unos 32 años (Holidaysafe, 2017) entran dentro de la horquilla de joven visto en el

punto anterior, serían también de los primeros usuarios en probar la app.

Page 29: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

28

Arquetipos

- Gorka, mochilero de 30 años que después de estar unos años trabajando como

asesor legal necesitaba cambiar de aires y replantearse su vida. Por ello se encuentra

actualmente en un año sabático donde ha decidido recorrer Asia para conocer

nuevas culturas y reencontrarse. Lo que más valora es la facilidad de uso de las cosas

y su disponibilidad total.

- Ashley, 24 años. Acaba de terminar su máster en Logística y Cadena de Suministro y

acaba de empezar en su primer trabajo. En él, tiene que con interactuar con

productos de muchos países diferentes y organizar cantidades basándose en la

demanda y el precio. Ashley valora la exactitud y la confiabilidad de los productos y

servicios que usa antes de cualquier cosa. Tampoco dispone de mucho tiempo por

lo que tienen que ser ágiles y familiares.

2.2.2. Problemas

La problemática se puede dividir en tres aspectos:

1. Las alternativas, analizadas en el punto 4.1 de la memoria, son especialmente

engorrosas a la hora de la introducción de datos. La mayoría se han limitado a la

entrada basado en texto, lo cual obliga al usuario estar insertando manualmente

datos constantemente.

2. Este tipo de entrada, además, hace que el usuario pueda cometer algún error al

marcar la cifra que se quiere convertir.

3. Similarmente, el usuario puede no saber o confundirse a la hora de seleccionar

la moneda del que quiere convertir, siendo otro factor de errores y un paso más

que el usuario tiene que realizar.

2.2.3. Proposición única de valor

Crear una app conversor de divisas que ofrezca una nueva experiencia de usuario;

optimizando las interfaces para que sean amigables, intuitivas, su uso requiera el mínimo

esfuerzo y ofreciendo nuevas formas de visualizado. Para ello explotando los sensores

de cámara y GPS además de su gran capacidad de cómputo.

Page 30: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

29

2.2.4. Solución

Buscando solución a los tres problemas comentados en el apartado 2.2.2 se ha llegado

a la siguiente solución. Tener una interfaz amigable y usable, actualizado a los últimos

tiempos, adaptado para que sea óptimo en una gran cantidad de dispositivos y que

facilite todas las tareas que se realicen en la app, especialmente los más habituales

como la introducción de datos. Para ello se incorporará sistemas de introducción de

datos dinámicos que harán uso de la cámara y GPS del dispositivo como se explica en el

punto 2.2.9 Ventaja diferencial.

2.2.5. Canales

Al ser un proyecto que nace junto a un TFG no se dispone ningún presupuesto monetario

de marketing, por lo que los canales de distribución se limitarán a aquellos que se tiene

acceso sin tener que invertir dinero. Estos incluyen principalmente las redes sociales

(Twitter, Instagram, Telegram…), el boca a boca y más importante aún, tiendas de

aplicaciones como el Google Play Store. Será importante también hacer una buena

optimización del ASO para poder posicionar bien Exploratu en este último y que la gente

pueda encontrarlo.

2.2.6. Flujos de ingreso

La descarga de la app va a ser totalmente gratuita y en un principio no constará ni de

publicidad ni de compras in-app para sacarle rentabilidad. Esto se debe a que la

monetización no forma parte de los objetivos de este TFG. De todas formas, no se

descarta que, en un futuro, si se quiere continuar con el proyecto, se añadan estas

características.

2.2.7. Estructura de costes

Teniendo en cuenta que la app funciona totalmente en el dispositivo del usuario, no

accede a ninguna API o servicio propio, y los servicios externos que se van a utilizar van

a ser gratuitas, el coste se limitará a los recursos humanos, que sería yo. De todas formas,

no se descarta que en un futuro se pueda hacer uso de algún API de tercero con coste,

así como desarrollar uno propio; que en tal caso se tendría que añadir el coste del

hosting, dominio y demás gastos que acarrearía.

Page 31: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

30

2.2.8. Métricas clave

Las métricas claves estarán en constante evolución dependiendo de la maduración del

proyecto, así como necesidades se vayan detectando. De todas formas, unas buenas

métricas para el inicio del proyecto podrían ser las siguientes:

- Instalaciones totales e instalaciones activas.

- Retención del usuario.

- Puntuaciones de las tiendas de aplicaciones como el Google Play Store.

- Número y frecuencia de cierres inesperados y ANR12s.

2.2.9. Ventaja especial

Finalmente, la ventaja especial o diferencial se trataría de explotar las características de

los móviles inteligentes, con la incorporación de elementos de Realidad Aumentada

(AR), Visión por Computador junto con reconocimiento de texto (OCR) y el uso del GPS.

La idea es que se pueda utilizar la cámara y GPS de los dispositivos para acelerar la

introducción de datos en la app y agilizar todo el proceso.

Un uso claro podría ser entrar en un supermercado, de un país que use una divisa

diferente a la tuya, y poder apuntar a etiquetas de precio en la divisa local y que la

aplicación te muestre directamente cuánto sería en tu divisa de origen, en el mismo

feed13 de la cámara mediante AR.

2.3. Análisis de riesgos

A lo largo de un proyecto de estas características (12 créditos que equivalen a unas 300

horas), suele ser adecuado que antes de iniciar nada tengamos en consideración los

riesgos que pueda suceder durante el transcurso de esta, y por ello crear un pequeño

12 ANR: de sus siglas en inglés Application Not Responing se trata de un mensaje de Android que

indica que el hilo de la interfaz (UI Thread) del sistema se encuentra bloqueado durante

demasiado tiempo y que por tanto la aplicación no está respondiendo. 13 Feed: la continua imagen que devuelve el sensor de la cámara. La vista previa de lo que va a

capturar el sensor si se realizase una foto.

Page 32: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

31

análisis de riesgos para poder prevenir a lo que podría pasar y poder actuar de manera

efectiva en caso de que sucedieran.

Se ha realizado una simple tabla listando estos riesgos junto con un plan de contingencia

para poder lidiar con la misma.

Tabla 1. Listado de Riesgos.

Posible Riesgo Proba

bilidad

Efectos Plan de Contingencia

Tecnologías y herramientas

Desconocimiento de

las tecnologías a

usar

Muy

Alta

Tolerable Empezar a estudiar las tecnologías

necesarias antes de empezar la fase

de desarrollo para no perder tiempo

en el período crítico.

Perdida de los datos

del servidor

Baja Serio Tener copias de seguridad del

servidor para en caso de que algo

pase con éste poder restaurar los

datos y poner todo en

funcionamiento lo más pronto

posible.

Corrupción de la

última versión del

backup14

Baja Serio Volver a la última versión que no

esté corrupta.

Corrupción de todos

backup

Muy

Baja

Catastrófico Reinstalar la última versión del

código y volver a empezar a

introducir los datos. En caso de falta

de tiempo habría que introducir los

datos mínimos para poder mostrar

el MVP15.

Caída de servicios

externos de los que

Muy

Baja

Serio Desactivar la funcionalidad afectada

e informar a los usuarios de lo que

14 Backup: termino que se usa en inglés para las copias de seguridad. 15 MVP: del inglés Minimum Viable Product o Producto viable mínimo en castellano, se trata de un

producto con las funciones mínimas para satisfacer a los primeros usuarios y conseguir

retroalimentación para el desarrollo futuro.

Page 33: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

32

dependa la

aplicación.

está sucediendo. Si el problema se

alarga o persiste, buscar servicios

alternativos para restablecer dicha

funcionalidad.

Restricción de uso

en las APIs16

Alta Tolerable Mirar si las restricciones son

aceptables para el MVP que

estamos realizando. Si lo son seguir

adelante con esa API, si no, buscar

alternativas.

En el proceso de

desarrollo romper

una funcionalidad

mientras se

implementa otra

Muy

Alta

Seria Usar un sistema de control de

versiones como Git, donde poder ir

a cualquier versión anterior donde

ese problema no era presente, y

poder probar que diferentes

funciones funcionan bien entre sí

antes de pasar el código a

desarrollo.

Realizar pruebas de unit testing17 así

como end-to-end testing18.

Conflictos por

archivos temporales

en el gestor de

versiones

Muy

Alta

Tolerable Crear un .gitignore completo y

bien configurado para poder seguir

los archivos necesarios y poder

ignorar los que no. Actualizarlo las

veces que sean necesaria.

No tener suficiente

documentación o

que no esté

actualizado

Alta Seria Para evitar una documentación

desfasada, mantener el presente

documento actualizado con la

mayor frecuencia posible; como

mínimo, cada semana.

Personales

16 API: del inglés Application Programming Interface o Interfaz de programación de aplicaciones

en castellano, se tratan de un conjunto de subrutinas, funciones y métodos que ofrece cierta

entidad para ser utilizados por una aplicación como una capa de abstracción. 17 Unit Testing: realizar pruebas a unidades del código fuente, ya sean métodos, módulos etc. 18 End-to-End (e2e) Testing: pruebas para validar que el flujo completo de una aplicación funciona

como se espera.

Page 34: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

33

Enfermedad o lesión

leve

Alta Tolerable Realizar las tareas que se puedan en

el estado en el que me encuentre y

aplazar las otras para cuando me

haya recuperado.

Enfermedad o lesión

grave

Baja Catastrófico Recortar tareas o incluso

funcionalidades de la aplicación

hasta poder adaptarse a la situación

en la que me encuentre. Si estos

recortes harán que el TFG no se

termine como me gustaría aplazarlo

al siguiente curso académico.

Desmotivación Alta Tolerable Crear un equipo de apoyo de

familiares y amigos para en estos

casos hablar con ellos.

En caso de que persista, hacer un

breve inciso en el desarrollo del

proyecto para poder pensar en las

razones que me han hecho

desarrollarlo.

Organizacionales y de estimaciones

Falta de tiempo Muy

Alta

Serio Comprometerme a trabajar cada

semana en el TFG como si otra

asignatura se tratara. Asignarle un

día de trabajo para que ese día

todas las semanas pueda dedicarle

tiempo.

No tener una

planificación

adecuada

Alta Catastrófico Dedicarle el tiempo necesario

creando la planificación del

proyecto; dividir los bloques de la

memoria en tareas más pequeñas

para poder hacer seguimiento y

distribución de las mismas de una

forma acertada.

Variaciones de

carga de trabajo

Muy

Alta

Tolerable Si en una semana por alguna tarea

en otra asignatura no le puedo

dedicar tanto tiempo como lo había

Page 35: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

34

debido a

asignaturas

planeado, distribuir lo que tocaba en

las próximas semanas para no ir

retrasado frente a la planificación.

Duda sobre algún

apartado de la

memoria

Muy

Alta

Tolerable Darle un par de vueltas, pero en

caso de que no llegue a una

conclusión preguntarle al tutor al

respecto.

Atasco en alguna

parte del TFG

Alta Serio En caso de que no lo consiga

solucionar pronto, o vea necesario

una opinión externa, preguntar a

algún profesor de cursos anteriores

al respecto.

Sobreestimación de

tareas

Baja Tolerable En caso de sobreestimar las horas,

dedicar las horas restantes a otras

tareas.

Infraestimación de

tareas

Alta Tolerable Subdividir las tareas y aplazar lo

necesario para la siguiente semana.

En caso de no ser posible, se

eliminará dicha tarea.

Requerimientos

Cambio de los

requerimientos

básicos

Baja Catastrófica Cambio en la estructuración parcial

o total de la aplicación. Con los

cambios y/o recortes de

funcionalidades que esto pueda

ocasionar.

Cambio de los

requerimientos

avanzados

Modera

da

Serio Modificar la documentación y añadir

las tareas necesarias. Comprobar y

modificar los requerimientos que se

verían afectados.

Page 36: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

35

Page 37: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

36

3. Planificación

Para poder llevar a cabo el proyecto y la memoria bajo el tiempo previsto, procederemos

a realizar una pequeña planificación de las diferentes secciones del trabajo para así

ponernos unas fechas límite de cuándo cada tarea o sección tiene que estar finalizada.

Dividiendo el trabajo en las secciones indicadas en la siguiente Tabla 2 tendré más

posibilidades de éxito. Tendré que estar trabajando con constancia y recibiendo

feedback19 del tutor, sin tener que dejar todo para una entrega final, cuando ya sea

demasiado tarde de corregir si hay algún gran error.

Tabla 2. Planificación temporal TFG

Contenidos Tiempo Total Fecha Límite

Motivación, justificación y objetivo

general

Citas

Introducción

Estudio de viabilidad

Planificación

1 semana 7 de junio

Estado del arte

Objetivos

Metodología

Análisis y especificación

1 semana 14 de junio

Diseño 2 semana 28 de junio

Implementación 2 semanas 12 de julio

Pruebas y validación

Resultados

Conclusiones y trabajo futuro

Referencias, bibliografía y apéndices

Agradecimientos

Índices

Resumen

1 semana 19 de julio

19 Feedback: retroalimentación.

Page 38: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

37

Teniendo en cuenta que ya he terminado el resto de las asignaturas del curso, me puedo

dedicar completamente a la realización del TFG y de esta manera poder terminarlo a

tiempo para presentarlo en la convocatoria de septiembre.

Para lograr esto, me he tenido que marcar un ritmo bastante frenético de trabajar unas

6h al día, todos los días de la semana, durante casi dos meses. Así alcanzando las 300

horas requeridas para este trabajo.

Cogiendo como unidad base la semana, me puedo dividir el trabajo en pequeñas

iteraciones de una semana, con objetivos claros que completar para el fin de cada una

de ellas. De esta forma, siempre estoy en control del progreso que llevo, si tengo que

ajustar tiempos por posibles retrasos/adelantos y feedback del tutor.

Page 39: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

38

4. Estado del arte

A la hora de proceder al desarrollo de cualquier proyecto o resolver cualquier problema

es necesario primero analizar la situación actual del mismo, las soluciones ya existentes

o tendencias del mercado.

Por ello, a continuación, se detallarán varias secciones donde se analizan la situación

actual de la problemática, antecedentes, así como las tecnologías y fuentes de

información que se podrían usar para el desarrollo.

4.1. Análisis del mercado

El turismo sigue en auge, sobre todo el internacional, y no parece que esto vaya a parar

según todo tipo de estadísticas; incluyendo los de la Organización Mundial del Turismo

(UNWTO), que estima que en 2018 hubo 1.400 millones de llegadas internacionales en

todo el mundo (Word Tourism Organization, 2019), adelantándose a las estimaciones

por dos años.

Figura 3: Llegadas internacionales por regiones del mundo

(Our World in Data, 2019)

Page 40: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

39

Similarmente, el valor de los servicios y productos exportados no para de crecer en este

mundo en constante globalización.

Figura 4: Evolución del valor de los servicios y productos exportados

(Ortiz-Ospina, Beltekian, & Roser, 2018)

Con toda esta internacionalización, cada vez es más habitual que se interactúe con

divisas de diferentes países, y junto al gran auge de los dispositivos móviles (Ritchie &

Roser, 2018), es normal que soluciones para convertir distintas monedas surgieran tanto

en web, como para estos dispositivos móviles.

Teniendo en cuenta el número de descargas en la tienda de aplicaciones de Android, a

día de hoy (20/06/2019), estas apps de conversión de divisas son los más populares:

Tabla 3: Comparativa de apps de conversión más populares

Nombre Desc

argas

Valor

ación

Entrada de

datos

Características

Xe

Currency

Converter

10M 4.3⭐

Manual con

calculadora

sin vista

previa.

- Soporta las +180 divisas, metales y

alguna criptomoneda.

Page 41: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

40

- Enorme cantidad de funcionalidad:

alertas, evolución histórica

(interactiva), análisis del mercado,

enviar dinero, widgets…

- Gran confiabilidad por la gran

experiencia de la compañía (Xe

Corporation).

Easy

Currency

Converter

10M 4.3⭐

Manual con

calculadora

sin vista

previa.

- Soporta las +180 divisas más muchas

criptomonedas y metales.

- Funcionalidad: modo offline, gráfica

histórica (no interactiva), favoritos,

noticias.

- Interfaz anticuada y se siente tosca por

la gran cantidad de pasos que hay que

hacer para las cosas, no tiene

búsqueda de divisas.

Exchange

Rates –

Currency

Converter

5M 4.5⭐

Manual con

calculadora

sin vista

previa.

- Soporta +150 divisas más muchas

criptomonedas, metales incluso

divisas obsoletas.

- Funcionalidad completa con añadidos:

modo offline, evolución histórica

(interactiva), favoritos, explorador y

visualizador de billetes.

- Sencilla interfaz, fácil de usar, con

búsqueda, categorías de divisas /

criptomonedas / metales / obsoletas,

diferentes sistemas de ordenación, de

mostrar la lista…

Currency

Converter

Plus

1M 4.8⭐

Manual con

vista previa,

opción de

usar una

calculadora.

- Soporta 161/32/35 divisas gracias al

selector de API a usar.

- Funcionalidad: modo offline, gráfica

histórica (interactiva pero limitada al

último año), favoritos, búsqueda.

Page 42: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

41

Selección de

moneda

mediante

GPS.

- Interfaz que simula una calculadora,

muy sencilla y fácil de usar pero que

ha quedado anticuada, no muestra de

cuándo es el cambio e incluye mucha

publicidad.

xCurrency

– Smart

Currency

1M 4.6⭐

Manual con

calculadora

y vista

previa en

todo

momento.

Selección de

moneda

mediante

GPS.

- Soporta +170 divisas, varios metales y

+130 criptomonedas.

- Enorme funcionalidad y

personalización: ver el cambio que

diferentes APIs dan simultáneamente

(incluyendo emisores de tarjetas como

VISA, Master, Unionpay) y

dependiendo del caso (compra, venta,

media…), grafica histórica (interactiva

y con información del cambio),

favoritos, cambiar unidad base, divisa

base, ver el cambio a todas las

monedas de golpe, búsqueda,

calculadora con grandes funciones…

- Interfaz limpia, sencilla, moderna y

fácil de usar. Tiene muchos gestos, que

si el usuario no entiende pueden

dificultar el acceso a ciertas funciones.

Como podemos observar todos son muy similares, todas las apps tienen más monedas

de los que podríamos querer, algunos incluyendo las criptomonedas o metales. Lo que

cambia son funcionalidades adicionales que pueden ofrecer como las alertas de Xe

Currency Converter, mostrar billetes de las diferentes divisas de Exchange Rate –

Currency Converter o tener una interfaz más moderna basada con gestos de xCurrency.

En cuanto a la entrada de datos, se puede apreciar que todos usan un sistema manual

basado en un teclado, que muchas veces funciona como calculadora a su vez. La única

automatización y facilidad que se le da al usuario se encuentra en Currency Converter

Plus y xCurrency, las cuales tienen la posibilidad de usar el GPS del dispositivo para

detectar en qué lugar se encuentra y seleccionar la divisa de origen a esa, ahorrándole

tiempo al usuario.

Page 43: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

42

Por lo tanto, podemos concluir que a efectos prácticos todas las aplicaciones son iguales;

lo que las diferencia son sus interfaces y algunas funcionalidades menores para atraer

más público. No hay realmente ningún elemento innovador o diferenciador que los

separe.

4.2. Tecnologías para crear aplicaciones

Una de las primeras cosas que hay que tener en cuenta es qué tipo de desarrollo se

quiere hacer para la parte final que utilizará el usuario. Se puede tomar la vía natural de

un desarrollo nativo, o probar con una de las muchas herramientas que nos permiten

crear apps más o menos multiplataforma.

En un principio, como se adelantaba en la Introducción, la idea era desarrollar en nativo,

pero sería útil explorar las diferentes opciones antes de tomar una decisión final.

4.2.1. Desarrollo Nativo

El desarrollo nativo de las apps permite conseguir el máximo provecho de la arquitectura

de cada sistema operativo, con acceso directo a todas las APIs que ofrecen en cada

plataforma consiguiendo normalmente una mejor experiencia de usuario.

La gran desventaja es que hay que desarrollar todo el código para cada plataforma

independientemente. Hoy en día, aunque mucho se delegue en servicios web, sigue

estando mucho de la lógica directamente en la app en sí, por lo que supone casi el doble

de trabajo; alargando todo el proceso de desarrollo, haciéndolo más caro y necesitando

aprender diferentes tecnologías propias de cada plataforma: Swift (antiguamente se

usaba Objective-C) para iOS y Kotlin (o Java) para Android.

Page 44: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

43

4.2.2. React Native

React Native20 se trata de la respuesta de Facebook a la creación multiplataforma de

aplicaciones para iOS y Android. La idea es usar los mismos conceptos que se usan en

React habitual, biblioteca de JavaScript para la creación de interfaces web, para

trasladarlos a una aplicación móvil.

Al tener el soporte de un gigante como Facebook no es de extrañar que se use en grandes

proyectos como en las propias apps de Facebook, Instagram, Pinterest, Skype o Uber, ya

que si tu aplicación web ya está creado con React o si tu equipo ya conoce la tecnología

no es muy difícil trasladar la experiencia al móvil.

La gran desventaja es que el rendimiento suele deja bastante que desear y nos podemos

encontrar con una navegación poco suave, es bastante más complicado de aprender

(además con poca documentación) y muchas veces se necesita acceder a APIs que no

están disponibles desde JavaScript, por lo que se sigue necesitando experiencia en

desarrollo nativo de iOS y Android.

4.2.3. Ionic

Similar al anterior, Ionic21 sería su “equivalente” para el framework de Angular, el cual

nos permite trasladar la experiencia web a móvil. La diferencia, que en vez de hacer apps

casi nativas, simplemente nos muestra elementos HTML que emulan el funcionamiento

de widgets22 nativos.

Entre las ventajas nos encontramos que comparte una sola base de código para todas

las plataformas compatibles (iOS, Android, Windows UWP, Web, Electron o PWA entre

otros), poder usar tecnologías web que son conocidas para su desarrollo, mediante los

componentes ya creados acelerar el proceso de desarrollo y ofrecernos una curva de

aprendizaje bastante asequible.

20 https://facebook.github.io/react-native/ 21 https://ionicframework.com/ 22 Widget: elemento de una interfaz de usuario gráfico que muestra información o permite una

forma específica de interactuar con el sistema.

Page 45: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

44

Como gran desventaja sería otra vez el rendimiento, ya que al fin y al cabo abre una vista

web (WebView) para ejecutarse. Esto se ve agravado por las limitaciones de funciones

específicas de cada sistema operativo que se enfrenta Ionic.

4.2.4. NativeScript

NativeScript 23 es la alternativa de Ionic para la creación de aplicaciones móviles

mediante el uso del framework de Angular, aunque ahora también es compatible con el

creciente en popularidad framework Vue.js.

La principal diferencia es que en este caso sí que se consigue acercarse a un rendimiento

nativo gracias al uso de componentes propios de los sistemas de despliegue, Android y

iOS. Además, aunque la comunidad no sea tan grande como la de React Native, gracias

a su buena documentación lo hacen una opción muy a considerar.

Entre las desventajas, la principal es que al tener que seguir usando un motor de

JavaScript para correr la lógica de la aplicación, JavaScriptCore en iOS y V8 en Android,

no consigue el rendimiento y la estabilidad que se puede conseguir con un desarrollo

completamente nativo. Por otra parte, al no tener una comunidad tan grande se pueden

encontrar menos ejemplos de proyectos hechos con NativeScript y por eso se nos podría

hacer más complicado salir de un atasco.

4.2.5. Xamarin

Xamarin24, a diferencia de los tres anteriores, no se trata de un framework o SDK25 que

permite usar tecnologías de la web en formato de app, sino que permite compartir la

gran lógica detrás de las apps entre las tres plataformas más importantes, iOS, Android

y Windows UWP, desarrollándolo en C# y .NET.

23 https://www.nativescript.org/ 24 https://visualstudio.microsoft.com/xamarin/ 25 SDK: del inglés Software Development Kit se tratan de sets de programas, herramientas y APIs

que permite desarrollar soluciones para cierta plataforma.

Page 46: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

45

De esta manera, más del 75% del código es común para todas las plataformas y sólo hay

que implementar ese 25% específico de cada uno, incluyendo las llamadas a las APIs

propias o alguna característica no común con el resto. Además, si se usa el módulo de

Xamarin.Forms para crear las interfaces de usuarios, se puede ampliar hasta un 96% la

compartición de código.

Entre las ventajas destacamos que los proyectos Xamarin se compilan a código nativo

de cada plataforma y usa widgets específicos de cada, consiguiendo un rendimiento muy

bueno que se asemeja a una solución totalmente nativa. Como añadido, cuenta con el

apoyo de Microsoft por lo que se integra con sus IDEs26 como Visual Studio y otros de sus

servicios los cuales son muy familiares para muchos desarrolladores.

Como puntos negativos encontramos que hay que programar en C# y .NET, lo cual

supone una curva de aprendizaje para los que no estén familiarizados con los mismos, y

que, aunque el rendimiento sea casi nativo, aún corre sobre el entorno de ejecución, o

runtime, de Xamarin, alargando los tiempos de carga y engordando el tamaño final de la

app.

4.2.6. Flutter

Flutter27 es la respuesta de Google a la creación de una única app multiplataforma, en

este caso para iOS y Android de momento. Respecto a su funcionamiento, utiliza el

lenguaje de programación Dart para conseguir ese cometido, y gracias a su motor de

renderización propio de alto rendimiento (basado en C++) y sus widgets, consigue un

rendimiento similar al nativo. Utiliza una filosofía de diseño similar a React, y por lo tanto

React Native; que pese a que todavía se encuentre en fase beta28 ya se está convirtiendo

un competidor serio para éste.

Entre sus ventajas se incluye la función de recarga en caliente (hot reload en inglés) lo

cual permite ver el resultado del código en tiempo (casi) real, widgets ya creados que

permite agilizar todo el proceso de desarrollo, acceso a funciones nativas e incluso

reutilización de código ya nativo, lo cual permite crear partes de la app en Flutter y no

26 IDE: del inglés Integrated Development Environment es una aplicación de software que

proporciona herramientas y facilidades para la creación y desarrollo de software. 27 https://flutter.dev/ 28 Beta: segunda fase de desarrollo que sigue a la fase Alpha. Normalmente el software cuenta

con las funciones requeridas, pero suele contener bastantes fallos y problemas de optimización.

Page 47: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

46

tener que implementar todo de cero; soporte oficial por parte de Google asegurando su

suporte y un equipo de desarrollo dedicado, fácil instalación y comienzo de desarrollo

etc.

La primera y gran desventaja es que el framework es relativamente nuevo, de hecho,

justo acaba de entrar en la fase beta, por lo que todavía necesita tiempo para madurar y

eso se nota. Para empezar, sólo se puede desplegar en dos plataformas, si se quiere

portar a la web u otra plataforma que no sea iOS o Android ya no nos valdría.

Lo segundo es que al ser un framework nuevo no cuenta con demasiadas bibliotecas de

terceros, aunque tenga un montón desarrolladas por Google, lo cual hace que el propio

desarrollador tenga que implementar por sí mismo muchas de las funciones que en otras

plataformas podría estar utilizando las ya creadas y mantenidas por otras personas.

4.3. Fuentes de datos

Para que cualquier aplicación de conversión de monedas sea confiable es esencial

asegurarse de que el cambio se hace de una manera precisa y con datos confiables.

La manera de asegurarse de ello es conectándose a alguna fuente de datos externo que

nos pueda proveer estas ratios de conversión. Entre las más usadas y conocidas nos

encontramos con las siguientes:

Tabla 4: Comparativa de APIs para la obtención de los cambios

Nombre Divi

sas

Fuente(s) Actualiz

aciones

Precio

Exchange

Rates API 32

Banco Central

Europeo (ECB)

Días

laborales

Gratuito sin límite de llamadas.

Fixer +170 Agregación de

diversas fuentes

Cada:

- 1 hora

- 1 hora

- 10 min

- 60s

Precio por mes:

- 0$ - 1.000 llamadas/mes.

- 10$ - 10.000 llamadas/mes

- 40$ - 100.000 llamadas/mes

- 80$ - 500.000 llamadas/mes

Currency

Layer 168

Agregación de

diversas fuentes

Cada:

- Día

Precio por mes:

Page 48: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

47

- Hora

- 10 min

- 60s

- 0$ - 250 llamadas/mes

- 10$ - 10.000 llamadas/mes

- 40$ - 100.000 llamadas/mes

- 80$ - 500.000 llamadas/mes

Open

Exchange

Rates

+200 Agregación de

diversas fuentes

Cada:

- Hora

- Hora

- 30 min

- 5 min

Precio por mes:

- 0$ - 1.000 llamadas/mes

- 12$ - 10.000 llamadas/mes

- 47$ - 100.000 llamadas/mes

- 97$ - ilimitadas llamadas/mes

Xe

Currency

Data API

+170

Agregación de

+100 fuentes y

corrección de

errores en

tiempo real

Cada día /

60s

Precio por año:

- 799$ / 1.199$ - 10.000

llamadas/mes

- 1.199$ / 1.799$ - 30.000

llamadas/mes

- 3.999$ / 5.999$ - 100.000

llamadas/mes

- 7.999$ / 11.999$ - ilimitadas

llamadas/mes

VISA API +180 Su cambio

propio Cada día

Gratuito sin límite de llamadas.

No muestra lista con todos, hay

que realizar llamadas

individuales.

Mastercard

API +150

Su cambio

propio Cada día

Gratuito sin límite de llamadas.

No muestra lista con todos, hay

que realizar llamadas

individuales.

Teniendo en cuenta que el 98.95% (Bank For International Settlements, 2016) de todos

los cambios de divisas se realizan entre sólo 35 monedas, frente a las 180 divisas totales,

y dado su naturaleza gratuita, ilimitada y fiable gracias a estar basado en datos del Banco

Central Europeo, para este proyecto, vamos a usar como fuente de datos el Exchange

Rate API.

Page 49: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

48

De todas formas, todas las fuentes mencionadas ofrecen una interfaz muy parecida por

lo que cambiar de API debería resultar ser tarea sencilla en caso de avería o deprecación

del servicio elegido.

4.4. Software para OCR

Como se ha adelantado en los apartados de Introducción y Estudio de viabilidad, el

apartado diferenciador del conversor de Exploratu se trata de poder automatizar el

proceso de introducción de datos mediante Visión por computador, en concreto

mediante el Reconocimiento Óptico de Caracteres (OCR).

Hay bastantes soluciones en el mercado que realizan estas tareas en la nube, como

Microsoft con su Azure Cognitive Services Computer Vision API o Google con el Google

Cloud Vision API, que detectan una gran variedad de idiomas y caracteres con gran

acierto, gracias a completos y robustos modelos de ML que tienen en sus servidores.

Pero partiendo de la idea de que Exploratu sea una app que se pueda usar en viajes,

implica que debemos limitar el uso de internet a lo esencial, y poder ofrecer un modo

offline. Por ello, debemos restringirnos a servicios que procesen la información en local

y nos puedan dar una respuesta sin mandar la información a sus servidores.

De esta forma hay dos librerías que se pueden implementar con relativa facilidad en

Android. La librería de Tesseract y Google ML Kit Text Recognition (OCR), esta última

sucesora de la librería Google Mobile Vision.

Tesseract29 se trata de una librería de código abierto que ofrece una solución muy abierta

para los usuarios. Aunque existan varios modelos preentrenados hechos para reconocer

más de 100 idioma, se puede entrenar para que se ajuste a las necesidades de cada uno.

Hay varias implementaciones para Android, siendo la más usada Tess-Two, que añade

varias facilidades encima de lo que Tesseract ofrece nativamente, adaptándolo para su

uso en dispositivos móviles.

Google ML Kit Text Recognition30, disponible para funcionar de manera tanto local como

en la nube, se trata de la evolución de la clásica librería Google Mobile Vision. Forma parte

29 https://github.com/tesseract-ocr/tesseract/wiki 30 https://developers.google.com/ml-kit/vision/text-recognition/

Page 50: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

49

de la nueva familia de herramienta de ML Kit de Google, que ponen a mano de

desarrolladores muchas funcionalidades de Machine Learning sin deber tener grandes

conocimientos de este. Permite gran exactitud en sus resultados, su tamaño es bastante

reducido y al estar pensado para dispositivos móviles es relativamente fácil su

implementación.

Teniendo en cuenta que la API de Google es más exacta (Sajjad, 2018) (Leung, 2017),

ocupa menos y es más sencillo de integrar en una app de Android, no hay ninguna ventaja

aparente para usar la API de Tesseract, aparte de que sea de código libre.

Page 51: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

50

5. Objetivos

En este apartado se detallan los objetivos que se han marcado como metas en este TFG.

Para ello se ha intentado que cumplan el principio SMART31 asegurándonos que sean

objetivos que nos aporten valor y ayuden a definir el proyecto.

El objetivo es la creación de una herramienta que permita a cualquier usuario realizar

una conversión de divisas, de forma ágil, con la mínima posibilidad de error y una gran

experiencia de usuario. Como subobjetivos se plantea:

- Que la herramienta ofrezca una interfaz de introducción de datos alternativa a las

tradicionales basadas en texto por teclado, para en primer lugar impedir la

equivocación al introducir cantidades, y en segundo lugar agilizar la conversión de

múltiples cantidades. Para ello se basará en tecnologías como OCR.

- Que haga uso de la sensorización y conectividad inteligente de los teléfonos móviles

para automatizar en lo posibles las tareas de selección de moneda y tipo de cambio,

haciendo uso de la geolocalización (GPS) y fuentes de datos confiables en Internet.

- Ofrezca al usuario una experiencia enriquecida haciendo uso de nuevos paradigmas

de interfaz como es la Realidad Aumentada.

Durante el camino para conseguir éste, también se han marcado otros subobjetivos que

me gustaría cumplir con este proyecto. El primero, poner en práctica todo lo aprendido

durante el grado, desde el análisis de una problemática y su posterior idea de solución,

a la realización de ésta pasando por todas las fases de diseño, implementación, testeo y

validación.

De esta manera terminando el grado con un proyecto creado íntegramente por mí y

demostrando de una forma tangible lo que soy capaz de hacer como Ingeniero

Multimedia. Sería junto al proyecto ABP32 el segundo producto grande para añadir a mi

portafolio para que las empresas puedan verme como un buen candidato.

31 Principio SMART: del inglés Specific, Measurable, Assignable, Realistic, Time-related, son

características que un objetivo debería tener para cumplir este principio. (Doran, 1981). 32 ABP: siglas de Aprendizaje Basado en Proyectos que hace referencia al método de aprendizaje

usado en el último año del grado de Ingeniería Multimedia en la Universidad de Alicante, donde

se evalúa exclusivamente por trabajos realizados.

Page 52: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

51

Siguiendo con el anterior, para poder hacer un desarrollo completo de una app, también

pretendo que la aplicación sea finalmente publicada en la Google Play Store, la tienda de

aplicaciones por excelencia de la plataforma Android, para que todo el mundo pueda

descargar y probar por sí misma el resultado de este proyecto.

Para eso, otro de los objetivos que se han marcado es que Exploratu sea una aplicación

totalmente funcional y que la gente realmente lo pueda usar, que no sea una simple

demo. Por ello, me he propuesto integrarlo con servicios externos para poder analizar el

comportamiento de los usuarios y así poder seguir mejorando el servicio una vez

terminado el TFG. Todo esto con la idea de que esto sea la base de un proyecto más

grande y que lo pudiera seguir mejorando y ampliando funcionalidades.

Page 53: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

52

6. Metodología

La manera de trabajar que se seguirá para desarrollar el trabajo será una metodología

ágil33 basado en Scrum34. No será Scrum completamente ya que no se van a aplicar todas

las restricciones que éste cuenta, principalmente porque yo seré el único miembro del

equipo, junto a los consejos y direcciones del tutor.

De esta manera, se establecerán iteraciones o sprints que cogerán tareas de la pila de

tareas por hacer o producto backlog para realizarlos durante dicha iteración. A

continuación, usando un tablero del estilo de Kanban35, se irá marcando cuáles quedan

pendientes, están en marcha y cuáles están ya terminadas. Importante para este último

definir cuándo una tarea esté terminada; en nuestro caso cuando esté implementada /

realizada y testeada / revisada.

Al final de cada iteración se verá cómo ha ido dicho sprint, los problemas que ha habido

y cómo mejorar el proceso para ser más eficientes, pilar de cualquier proyecto ágil (Beck,

et al., 2001). Estos sprints serán los definidos en la sección de Planificación de esta

misma memoria, aunque se subdividirán en diferentes subtareas.

Entre las cosas que no se seguirán de la estricta metodología Scrum están la separación

de los tres roles que suele haber, el Product Owner (el cliente o el que tiene la visión del

proyecto), el Scrum Master (el facilitador del proceso de Scrum) y el equipo. Al ser el

único que desarrollará el proyecto asumiré estos tres roles.

De la misma forma, al tratarse de un proyecto individual y de no de gran tamaño, para

optimizar el tiempo no se crearán gráficas de burndown (gráficas de tareas terminadas

durante la iteración).

Similarmente, para no tener tantas restricciones como en un Scrum puro, se cogerán

algunas características de la filosofía Lean36. De esta forma, se podrán añadir ítems a un

sprint ya en curso si se ve que hay tiempo para hacer más entre otras cosas. Por lo tanto,

aunque haya sprints definidos habrá una tabla en constante movimiento como en la

33Ágil: filosofía de desarrollo basado en iteraciones de ciclos completos de desarrollo. 34Scrum: metodología ágil basado en historias de usuarios, o cosas que los usuarios quieren tener. 35 Kanban (看板): metodología de desarrollo basado en la filosofía Lean. 36Lean: filosofía de desarrollo basado en el valor percibido del cliente donde se enfocan los

procesos principales a que este valor vaya incrementando continuamente sin tener ningún

residuo. La filosofía ágil nace a partir de esta filosofía (RealtimeBlog).

Page 54: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

53

metodología Kanban con sus fases de por hacer, en desarrollo, y hechos (pero sin sus

limitaciones de WIP, o trabajo en marcha).

De todas formas, para ayudar a eliminar la incertidumbre que puede traer un proyecto

ágil, antes de comenzar a implementar nada, se especificarán las características básicas

que se quiere que el producto mínimo viable tenga, siguiendo un poco la metodología de

desarrollo en cascada37.

En cuanto a las herramientas que se usarán, para el tablero Scrum/Kanban se va a

apostar por no usar ninguna herramienta online, sino que usar el método tradicional de

pared y post-its. Experiencia pasada indica que el tenerlo siempre presente en la

habitación y mover las notas de columna a columna ayuda a visualizar el trabajo

realizado y lo que hay por delante, optimizando así el rendimiento frente a un tablero

online como Trello.

Figura 5: Estado del tablero Kanban en el tercer Sprint.

(Fuente propia)

Adicionalmente, para la organización diaria personal, se integrarán las tareas del TFG en

la app de tareas, Microsoft To-Do. Ésta nos permite marcar objetivos/tarea a muy poco

tiempo (un día) y ayudarán a estructurar el trabajo que se debe realizar cada día para así

no terminar con retraso.

Finalmente, para saber la constancia del trabajo, rendimiento y las horas dedicadas, se

controlará el tiempo empleado a la realización de este Trabajo de Fin de Grado mediante

la herramienta Toggl.

37 Metodología en cascada: metodología de desarrollo lineal donde se realiza por completo una

fase del proyecto antes de proceder a la siguiente.

Page 55: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

54

7. Análisis y especificación

Para poder concretar nuestra solución del problema analizado hasta el momento es

esencial analizar, definir y detallar los requerimientos y especificaciones que habrá que

diseñar e implementar en las fases siguientes.

De esta manera quedará claro las funciones y restricciones que contará el proyecto y nos

dará una mejor idea de cómo diseñar la solución adecuada.

Para la realización de esta parte de la memoria se seguirá, de una forma simplificada, el

sistema IEE830; diseñado para asegurar que se recoge siguiendo buenas prácticas estos

requerimientos.

7.1. Definiciones

- Divisa base o destino: divisa que se usará como referencia para el resto de las

conversiones. Se trata de la divisa del usuario al que se quiere convertir. Si queremos

convertir 100 yenes a euros, euro será la divisa base.

- Divisa a convertir o de origen: divisa que se quiere convertir a la divisa base o destino.

En el ejemplo anterior los yenes serían esta divisa.

7.2. Características de los usuarios

Los usuarios serán los que hagan uso de nuestra solución. En nuestro caso el sistema

tendrá dos roles muy separados:

Tabla 5: Tipos de usuarios

Tipo de usuario Administrador

Descripción Propietarios de la plataforma y de mayor nivel de acceso.

Responsable de que el sistema funcione correctamente.

Page 56: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

55

Habilidades Alto grado educativo y técnico, experto en el sistema desarrollado

y capaz entender diferentes KPI38s y saber analizar el estado del

sistema en base a éstos.

Actividades Acceso y manejo de cuadros de mando que reportan el estado de

la aplicación para supervisar que todo funciona como esperado.

Tipo de usuario Usuario

Descripción Gran masa de usuarios que usan la plataforma.

Habilidades Conocimientos informáticos básicos. Saben usar un teléfono móvil

y están familiarizados con las aplicaciones.

Actividades Usar la app para convertir los precios que ven mediante la cámara

a la divisa que prefieran.

7.3. Requisitos

En esta sección se detallan todos los requerimientos del sistema propuesto. Se

distinguen dos tipos de requisitos: los requisitos funcionales y los no funcionales.

Como todos los requisitos han de ser identificados con diferentes IDs, se seguirá el

formato de “tipo-usuario-número”. El tipo hará referencia a si es un requisito funcional

RF o requisito no funcional RNF, el usuario al principal usuario para el cual se establece

el requisito, ADM para administrador, USR para un requisito de usuarios finales y

finalmente SYS si son inherentes al sistema como los requisitos no funcionales.

Finalmente, el número permitirá enumerar todos los requisitos para una fácil

identificación.

7.3.1. Requisitos funcionales

Son los requisitos que hacen referencia a funcionalidades del sistema. Definen un

sistema o algún componente. En definitiva, son el conjunto de entrada, comportamiento

y salida que el sistema tiene que realizar.

38 KPI: del inglés Key Performance Indicator o Indicador Clave de Rendimiento son medidas

cuantificables que se usan para evaluar el nivel de éxito de algo concreto.

Page 57: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

56

Tabla 6: Requisitos funcionales

Identificador RF-ADM-001

Usuario Administrador

Descripción Integrar un completo sistema de estadísticas y logs39 para el análisis y

monitorización del sistema.

Identificador RF-USR-002

Usuario Usuario

Descripción Poder seleccionar moneda de origen y destino.

Identificador RF-USR-003

Usuario Usuario

Descripción Automatizar la selección de monedas de origen y destino.

Identificador RF-USR-004

Usuario Usuario

Descripción Utilizar el reconocimiento de texto como alternativa al teclado para la

introducción de la cantidad a convertir.

Identificador RF-USR-005

Usuario Usuario

Descripción Ofrecer una salida por pantalla intuitiva basado, cuando sea posible,

mediante AR.

39 Log: se trata del almacenamiento de eventos que ocurren en un sistema.

Page 58: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

57

7.3.2. Requisitos no funcionales

También conocidos como “atributos de calidad” son los requisitos inherentes del

sistema. Definen el comportamiento del producto y permiten imponer restricciones en

el diseño del sistema para asegurar que se cumplen con ciertas características

deseadas.

Tabla 7: Requisitos no funcionales

Identificador RNF-SYS-006

Usuario Sistema

Tipo Disponibilidad

Descripción La aplicación deberá estar publicado en la Google Play Store.

La aplicación deberá estar funcionando las 24h del día por lo que tendrá

que limitar su dependencia a terceros y siempre ofrecer una alternativa,

incluso para funcionar sin conexión, aunque sea de una manera

subóptima.

Identificador RNF-SYS-007

Usuario Sistema

Tipo Usabilidad y Accesibilidad

Descripción Diseño de tamaño adaptable. La aplicación deberá estar adaptado para

una gran cantidad de dispositivos con pantallas de tamaño y relación de

aspecto diferentes.

La aplicación contará con dos temas (claro y oscuro), para facilitar su uso

en diferentes ambientes y siguiendo las preferencias de los usuarios.

Identificador RNF-SYS-008

Usuario Sistema

Tipo Rendimiento / Escalabilidad

Descripción La aplicación deberá funcionar de una forma fluida, a 60FPS el máximo

tiempo posible, y con menos de un 0.5% de ANR y 1% cierres

Page 59: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

58

inesperados (FC) siguiendo la recomendación de Google (Android

Developers) (Android Developers).

Minimizar el tamaño máximo de la aplicación para asegurar que se pueda

descargar en un tiempo razonable bajo conexiones lentas y no perder

tasa de conversión (Tolomei, 2017).

Minimizar el uso de internet al mínimo debido a su uso en el extranjero.

Identificador RNF-SYS-009

Usuario Sistema

Tipo Legalidad

Descripción Todo material usado, tanto software como recursos, deberán tener una

licencia válida para poder ser usados en un proyecto de esta índole.

Se deberá asegurar el cumplimiento de la Reglamento General de

Protección de Datos (GDPR) y facilitar a los usuarios sus derechos.

Identificador RNF-SYS-010

Usuario Sistema

Tipo Mantenimiento

Descripción El código tendrá que ser lo más modular posible para facilitar modificar

partes de la misma sin implicar cambios en el resto, así como la

expansión de futuras funcionalidades.

Se deberá usar un sistema de control de versiones en todo momento para

poder iterar y avanzar en el desarrollo del proyecto.

Page 60: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

59

Page 61: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

60

8. Diseño

En el apartado de Diseño se les dará solución a los requisitos vistos en la sección anterior,

especificando cómo serán resueltos, de manera de que entre los diferentes apartados

formen la “guía” que se seguirá en la siguiente fase del proyecto, la implementación.

Exploratu se tratará de una app que residirá en el dispositivo móvil y no requerirá ningún

servidor propio. Se nutrirá de otros servicios para mantener la información actualizada y

la información necesaria estará siempre guardado en local para que se pueda usar sin

conexión online activa; incluyendo información sobre las diversas divisas, preferencias

del usuario como las últimas ratios de cambio.

8.1. Diseño de la arquitectura conceptual

Al no contar con una API propia, toda la lógica estará centrado en la aplicación en sí e

interactuará con diferentes elementos externos, incluyendo tanto sensores del móvil

como servicios externos como se puede observar en la Figura 6.

Figura 6: Esquema conceptual de Exploratu.

(Fuente propia)

Page 62: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

61

De tal manera, los elementos principales serán los siguientes:

- Cámara / Teclado como entrada de información para que pueda ser procesado

mediante la aplicación.

- AR / Texto la salida que se le ofrecerá al usuario después de que la entrada haya sido

procesada.

- Fuente de ratios / GPS serían las entradas adicionales de información que la

aplicación necesita para poder calcular la salida.

- Base de datos / Información base / Preferencias del usuario formarían la parte de la

persistencia de la aplicación, donde se almacenaría la información para su posterior

consulta y uso.

- Back Office servicio externo que se hará cargo de monitorizar el estado de la

aplicación, sus logs, cuadros de mando, para poder optimizar y mejorar la app.

- Lógica de la Aplicación la base de todo el sistema, se encargará de organizar el resto

de los elementos para que funcionen de la forma esperada.

8.2. Diseño de la arquitectura tecnológica

Para llevar a cabo la mencionada arquitectura conceptual se ha decidido a utilizar el

siguiente stack o pila tecnológica.

Empezando por la tecnología base de la aplicación, se va a desarrollar de manera nativa

para poder utilizar APIs propias del sistema y tener un mejor rendimiento. Teniendo en

cuenta que se va a realizar para Android se utilizará principalmente el lenguaje de

programación de Kotlin 40 , desarrollado y mantenido por JetBrains junto con

colaboraciones de Google entre otros, con Java, desarrollado por Oracle, como lenguaje

secundario.

Para la realización del OCR y así poder extraer de las cantidades a convertir, se usará la

API de Google ML Kit Text Recognition41 por su facilidad de uso e implementación además

de su gran exactitud de los resultados y que permite que todo el procesado se haga en

local permitiendo así el uso sin conexión.

40 https://kotlinlang.org/ 41 https://developers.google.com/ml-kit/vision/text-recognition/

Page 63: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

62

En cuanto a mostrar los resultados mediante AR, simplemente se usarán las

coordenadas que proporciona el Google ML Kit Text Recognition API para pintar encima

la cantidad convertida.

La persistencia de la información, al tratarse de datos muy simples, se gestionará

mediante el uso del propio sistema de Android de preferencias (SharedPreferences) así

como Room42 como nivel de abstracción sobre el SQLite que usa internamente.

Las ratios de cambio de moneda se obtendrán desde Exchange Rates API 43 por la

adecuación de sus características a nuestro proyecto, como se vió en el estado del arte.

Para facilitar la interacción con el API REST de Exchange Rates API se usarán las librerías

de Retrofit44 de Square para hacer la llamada en cuestión y GSON45 de Google para la

serialización/deserialización de la información que la API proporciona en formato JSON

y así poder usarla en el resto de la aplicación.

Finalmente, para el back office (RF-ADM-001), se hará uso de la suite de Firebase46 de

Google, incluyendo Crashlytics para el seguimiento y análisis de errores, Performance

Monitoring para monitorizar y optimizar el rendimiento de Exploratu, Test Lab para

realizar pruebas en dispositivos reales y comprobar que todo funciona como esperado

en una gran variedad de diferentes dispositivos, así como Google Analytics, para explorar

y analizar la cantidad y el comportamiento de los usuarios en la app.

Se ha decidido hacer uso de esta suite por su gran facilidad de integración y su

funcionamiento semiautomático, el cual permite obtener un montón de información que

será muy útil para seguir mejorando la app y no tener que desarrollar un back office

propio con todo el coste temporal que eso supondría.

Además, clarificar que este back office no va a condicionar el funcionamiento

independiente de la aplicación, en caso de que no hubiera conexión o incluso si se

decidiera prescindir del mismo en un futuro, Exploratu seguiría funcionando. Esta parte

sólo es para la monitorización y mantenimiento del proyecto.

42 https://developer.android.com/training/data-storage/room 43 https://exchangeratesapi.io/ 44 https://square.github.io/retrofit/ 45 https://github.com/google/gson 46 https://firebase.google.com/

Page 64: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

63

8.3. Diseño de la persistencia

Aunque la persistencia de datos en Exploratu no sea un aspecto crítico, sigue siendo

importante definir lo que se almacenará y cómo, sobre todo teniendo en cuenta que uno

de los requisitos es que funcione sin conexión.

Para almacenar los ajustes y preferencias del usuario se usarán las APIs nativas de

SharedPreferences de Android. Éstas permiten guardar pares de valores llave-valor (key-

value pairs) de una manera simple, efectiva, y con fácil acceso. Aquí se podrá guardar el

tema que el usuario prefiere usar o su moneda de destino entre otras cosas.

Por otra parte, uno de los requerimientos de la aplicación es que pueda funcionar en

modo offline (RNF-SYS-006), es decir, que pueda ofrecer un resultado de conversión,

aunque en ese momento no se disponga de conexión a la fuente de consulta de divisas

que se esté utilizando. Es por ello por lo que la aplicación va a mantener una copia

temporal de las últimas divisas y cambios entre ellas, de forma que, aunque pueda no

ser exacta se pueda producir una conversión.

Para la información fija sobre las divisas, como su nombre, código (en el formato ISO

421747), símbolo y países donde se usa, se utilizará un archivo de JSON local por su gran

facilidad de integración y fácil acceso.

Aun así, es interesante usar una base de datos más tradicional para poder almacenar y

acceder a los cambios de divisas para no tener que estar haciendo llamadas constantes

a la API externa. Para ello se usará la librería ORM48 de Room de Android.

Mediante la definición de tres componentes: Database (base de datos), Entity (entidad

que se refleja en una tabla) y DAO (operaciones de acceso o consultas a la información)

permite abstraer la base de datos relacional de SQLite que genera y gestiona

internamente, como se muestra en la Figura 7.

47 https://www.iso.org/iso-4217-currency-codes.html 48ORM: del inglés Object-Relational Mapping es una forma de utilizar datos de una base de datos

usando el paradigma de programación orientado a objetos.

Page 65: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

64

Figura 7: Diagrama de la arquitectura de Room

(Android Developers)

En nuestro caso necesitaremos una única tabla que contenga los cambios de divisas, la

indicada en la Figura 8. Por lo que los campos de la tabla serán un id que hará de clave

primaria, un timestamp49 para poder saber de cuándo es la conversión, y finalmente una

columna para cada divisa diferente que se quiere usar; en nuestro caso 32, que son el

número de monedas que devuelve el Exchange Rates API. Aquí se guardará el cambio

frente al Euro, que será la divisa que se usará como base para hacer el cálculo del resto

de cambios: moneda origen → Euro → moneda destino.

Figura 8: Tabla de cambio de divisas

(Fuente propia)

A la hora de implementar esto en la app, su funcionamiento será el siguiente. Cuando se

vaya a hacer alguna conversión, al tener el timestamp podremos comprobar de cuándo

son los cambios, y en caso de que sea de un día anterior, la frecuencia de actualización

49Timestamp: secuencia de caracteres que identifican cuándo sucedió un cierto evento.

Page 66: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

65

de la fuente que se usará, se intentará llamar a la API si se dispone de conexión a internet

para conseguir los últimos cambios y actualizar la base de datos.

Adicionalmente, la app vendrá directamente con unos valores por defecto de conversión

especificados; para que en caso de que nunca se llegue a abrir la app al descargarse y la

primera vez sea sin conexión pueda seguir convirtiendo, aunque no sean unas

conversiones muy actuales.

8.4. Guía de estilos

Para acelerar el proceso de desarrollo y asegurarse un estilo mucho más coherente se

ha definido una pequeña guía de estilos que se seguirá durante el desarrollo de todo el

proyecto.

8.4.1. Filosofía de diseño

Exploratu se basa en la idea de simpleza máxima e interfaces con interacciones que

ayudan al flujo de navegación del usuario. Para ello se apuesta por interfaces limpias y

simples con animaciones y pequeños toques que hagan la experiencia del usuario más

atractiva y elegante.

Para ello, se ha optado por seguir el sistema Material Design de Google, incluyendo su

última revisión e inclusión de Material Theming50.

Esto significa que se tratará de incorporar todo su sistema de lenguaje visual que

sintetiza los principios clásicos del buen diseño con la innovación de la tecnología y

ciencia. Y para ello nos basaremos en su principio de que Material es la metáfora.

Material Design se inspira en el mundo físico y sus texturas, incluyendo cómo reflejan la

luz y crean sombras. Las superficies de Material reimaginan el medio del papel y tinta.

Para ello se hará uso de un diseño atrevido, gráfico e intencional, usar el movimiento

para dar significado y usar su base flexible para transmitir nuestra marca.

50 https://material.io/design/material-theming/

Page 67: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

66

8.4.2. Logo e iconografía

El logo de Exploratu es la representación de dos flechas “><” sobrepuestas formando

una “X” entre ambas. De esta manera se representa tanto el cambio de divisas, las

flechas, como el nombre de Exploratu con la “X”.

Además, las flechas han sido diseñados mediante un degradado entre dos colores,

representando así la fluidez y reforzando la idea del cambio y conversión; idea principal

de la app.

Figura 9: Logo de Exploratu

(Fuente propia)

Por otro lado, para las funciones generales y para destacar o sintetizar algún elemento

se harán uso de los iconos Dual Tone de Google, creados para poder expresar diferentes

identidades de marca sin salir del sistema de Material Design.

Figura 10: Ejemplos de iconos Dual Tone de Google

(Fuente propia)

Page 68: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

67

8.4.3. Colores

Siguiendo un poco la guía marcada por Material Design se han establecido los siguientes

dos colores principales. Siendo Almost Black el principal y el Not That Green el color de

acento o accent colour.

Esta combinación de colores es muy contrastada y nos permitirá crear interfaces de alto

contraste que mejorarán la legibilidad y la facilidad de uso por todo tipo de usuarios.

Además, los colores se han elegido de tal manera que queden bien junto a colores claros

y oscuros para poder así tener los dos temas (RNF-SYS-007), con los mismos colores,

manteniendo así la consistencia.

8.4.4. Tipografía

La tipografía que se usará como representante de la marca será la familia de fuentes IBM

Plex™ en sus variantes de Sans, Sans Condensed, Serif y Mono, ya que lo distribuyen con

una licencia libre SIL OFL-1.1.

Estas fuentes fueron creadas por IBM para su cambio de imagen corporativa a finales de

2017. Se crearon para transmitir el puente entre la humanidad y las máquinas que IBM

siempre ha sido.

En nuestro caso también se quiere juntar la realidad con la tecnología, interactuando con

la realidad mediante la cámara, por lo que su estilo grotesco y moderno, pero al mismo

tiempo clásico se adecua a lo que se busca.

# 131313 RGB(019,019,019)

Black 6 C

Almost

Black

#00BFA5 RGB(000,191,165)

3265 C

Not That

Green

Page 69: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

68

La jerarquía que se seguirá será el siguiente. Aunque esto se tomará como referencia y

se adecuará dependiendo del contexto en el que nos encontramos, ya que los tamaños,

por ejemplo, no son aplicables a las interfaces de las apps.

Mono@72 Mono @60 Serif @30 Sans Condensed @18

Sans @ 11

Sans @11, Mono @11 y Mono @11

8.5. Diseño Interacción

La idea en torno a todo este proyecto es poder mejorar la experiencia del usuario al usar

estos conversores, por lo tanto, diseñar una buena interacción entre usuario – máquina

va a ser el elemento clave de Exploratu. Al fin y al cabo, es lo que va a percibir el usuario

y es lo que hace que se genere una genial sensación de uso o un rechazo directo de la

app que hará desinstalarla.

Para ello, podemos realizar un User Journey Map de las alternativas vistas en el Estado

del arte y ver cuáles son las experiencias positivas y negativas al usar un conversor de

este tipo.

Título Principal

Título 1

Título 2

Subtítulo

Cuerpo

Énfasis

Page 70: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

69

Figura 11: User Journey Map de las apps alternativas

(Fuente propia)

Como se puede ver en la Figura 11, con estos conversores nos encontramos con una

serie de experiencias negativas —con la excepción de abrir la app, que da al usuario una

sensación de que la solución a su problema está cerca— hasta llegar al final de todo y

obtenemos el resultado deseado.

Por lo tanto, lo que más mejorará la sensación del usuario al usar una app de este estilo

es que tenga que realizar el mínimo posible de pasos al principio y así obtener el

resultado más rápido.

Justamente esto es lo que se quiere automatizar al máximo con Exploratu, usando el

GPS para obtener la moneda de destino, teniendo la moneda de origen guardado y

usando OCR y AR para obtener y mostrar el resultado directamente al usuario, sin que

éste tenga que introducir ningún dato; mejorando así la experiencia enormemente.

Page 71: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

70

8.6. Diseño Interfaces

A continuación, se muestran los diseños de las interfaces mediante wireframes51, donde

se ha bocetado la solución ideada para materializar los requisitos recogidos en el punto

7.3 de la memoria y se seguirán en la parte de implementación.

La aplicación se abrirá directamente en el modo de realidad aumentada, puesto que es

lo más diferenciador de la app y se utilizará en su contexto de uso principal, ir

convirtiendo varios precios de la manera más rápida posible.

Figura 12: Wireframe del modo AR

(Fuente propia)

Este modo, que se caracteriza por la automatización el proceso de entrada de datos que

permite, contará con una disposición o layout basado en una barra de acción superior y

otra inferior. En ésta última se podrán cambiar las divisas de origen y destino de forma

manual usando el selector con búsqueda de la Figura 13. Además, se podrá invertirlas

pulsando en la flecha.

51Wireframe: guía visual básica que representa el esqueleto de la web/app/programa. Se suelen

usar elementos simples como cajas y líneas para ello.

Page 72: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

71

Figura 13: Wireframe de la selección de divisas

(Fuente propia)

En cuanto al FAB52 del interfaz del modo AR, su propósito será pausar el feed de la

cámara para que el usuario tenga más flexibilidad de uso y no tenga que estar

constantemente apuntando al precio. Adicionalmente, cuando se tengan muchos

precios en pantalla simultáneamente podría resultar difícil de seguir las conversiones y

esta función podría paliar con este problema. Esta función no nace de ningún

requerimiento, sino que es una necesidad observada.

Como se puede observar en la imagen, el precio convertido se mostrará al lado del

original, para poder tenerlo de referencia en todo momento y poder compararlos por si

hubiese duda de la conversión y se quiera hacer manualmente usando el interfaz

anterior.

Otra de las características, si se ha permitido en los ajustes, es que se podrá determinar

la moneda destino mediante el GPS, automatizando así el proceso de conversión por

completo. Adicionalmente, para asegurar que el usuario está en control de esto,

adicionalmente, se podrá localizar manualmente pulsando en el icono de ubicación de

la barra superior.

52 FAB: del inglés Floating Action Button se trata de un botón flotante que activa o lanza la acción

principal de la interfaz.

Page 73: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

72

Por otra parte, para ayudar el uso de la app en condiciones de poca luminosidad se podrá

activar/desactivar el flash pulsando en su icono en esa misma barra.

Finalmente, se podrá ir al modo de entrada tradicional de cantidades pulsando sobre el

icono de lista.

Figura 14: Wireframe de la pantalla de conversión manual

(Fuente propia)

Como se puede ver en la Figura 14, este modo tendrá un layout tradicional de app de

conversión. Con tres divisas simultaneas que se pueden convertir en la moneda de origen

al pulsar en la cantidad y cambiar de divisa pulsando en el código de éste (Figura 13).

Justo en la parte inferior de éstos, se encontrará la forma de introducción de la cantidad

a convertir, mediante un teclado que además tendrá los botones de borrar el último

dígito introducido, resetear el número completo, así como la posibilidad de añadir cifras

decimales.

Finalmente, en la parte inferior se encuentra la barra de acción. El símbolo central y el

que más atención llama, al ser un FAB, volverá al usuario al modo inmersivo de AR (Figura

12) mientras que el botón derecho, con icono de engranaje, servirá para entrar en los

ajustes.

Page 74: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

73

De esta manera, nos quedaríamos con el mapa de interacciones ilustrada en la siguiente

Figura 15.

Figura 15. Mapa de interacciones

(Fuente propia)

8.7. Diseño de pruebas y validación

Para validar el correcto funcionamiento de la app, además de la realización manual de

pruebas y comprobación de que se hayan cumplido todos los requisitos funcionales y

Page 75: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

74

no-funcionales, se hará uso de la herramienta Firebase Test Lab 53 ; en concreto su

funcionalidad de Robo.

Esta suite de tests de Google, permite subir nuestra aplicación a su servidor y que ellos

lo prueben directamente, en una gran variedad de dispositivos físicos, para comprobar

el correcto funcionamiento de la app. Se puede elegir qué tipo de dispositivos queremos

probar, así como su versión de Sistema Operativo u orientación. Además, se puede

automatizar su uso mediante la integración con diferentes servicios, como el IDE54 que

vamos a usar en el desarrollo, Android Studio.

Además, gracias a la mencionada función de Robo no tendremos que diseñar las pruebas

individuales. Gracias a su funcionamiento similar a las arañas de los buscadores, Robo

analiza el interfaz y navega automáticamente entre sus diferentes funcionalidades.

De esta manera, al finalizar el test, nos devolverá un reporte que incluye logs, capturas

de pantalla y vídeos que nos permitirán detectar errores y solucionarlos antes de que

usuarios reales se encuentren con dichos problemas.

Similarmente, para cuando se esté en producción, se usarán los servicios de Firebase

Crashlytics55 para el seguimiento y análisis de errores, así como Firebase Performance

Monitoring 56 para comprobar el rendimiento de la aplicación entre los diferentes

usuarios para detectar errores y/o posibles mejoras a tiempo y poder arreglar u

optimizarlos.

53 https://firebase.google.com/products/test-lab 54 IDE: del inglés Integrated Development Environment se trata de un programa que incorpora

facilidades y utilidades para el desarrollo de software. 55 https://firebase.google.com/products/crashlytics 56 https://firebase.google.com/products/performance

Page 76: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

75

Page 77: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

76

9. Implementación

En este apartado se documenta el proceso de desarrollo, siguiendo la metodología

especificada. Por lo tanto, se detallan los sprints que se han realizado durante el proceso

de implementación y el avance que han supuesto en el proyecto.

Hay que mencionar que se tratan “subsprints” dentro del cuarto sprint general. Se tratan

de srpints muy corta duración, de uno o dos días, donde se marca un objetivo inicial y se

miran los pasos que hay que seguir para conseguirlo.

9.1. Sprint 1: Preproducción

El entorno de desarrollo se ha montado en un ordenador de sobremesa con Windows 10

donde se han instalado y configurado los diferentes programas y utilidades para poder

llevar a cabo la implementación de Exploratu.

Como IDE se ha decantado por Android Studio57, adaptación por parte de Google del

IntelliJ IDEA de JetBrains para el desarrollo de Android. Es la herramienta por excelencia

en el mundo del desarrollo Android y gracias a su gran cantidad de utilidades para el

desarrollo, testeo y debugging58; así como su comunidad nos facilitará enormemente

todo el proceso de desarrollo.

Similarmente, para llevar a cabo el control de versiones, se usará Git junto a GitHub

además de la interfaz gráfica de GitKraken59 para gestionarlo de manera más eficiente e

intuitiva.

Finalmente, se configura Android Studio y el dispositivo que se usará para pruebas

durante el desarrollo, el Xiaomi Mi MIX 2 bajo la versión de Android 9.0, para que se

puedan comunicar mediante el sistema de ADB. Debido a la capa de personalización

sobre Android que lleva el teléfono (MIUI), se han desactivado las “Optimizaciones de

57 https://developer.android.com/studio 58 Debugging: proceso de búsqueda y solución de fallos o bugs. 59 https://www.gitkraken.com/

Page 78: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

77

MIUI” para que esta comunicación con Android Studio se pueda realizar de manera

efectiva.

Se ha marcado como nivel mínimo de Android necesario para usar la app Android 5.0

(API level 21), teniendo en cuenta que el 89.3% (Android Developers, 2019) de

dispositivos activos están en esa o una versión superior, y que se introdujeron un montón

de nuevas funciones con esa API que se usarán durante el desarrollo; por lo que elegir

una versión mínima anterior nos limitaría a la hora de la implementación.

9.2. Sprint 2: Creación de la estructura base de la app

Lo primero que se ha realizado una vez tenido el entorno de trabajo configurado ha sido

crear la estructura base de la app. Esto se ha hecho mediante dos Activities, clases

especiales que usa Android para referirse a las “pantallas” de las apps.

De esta manera, contamos con el Activity principal que será el modo inmersivo donde se

realizará el OCR y se mostrará mediante AR las conversiones; y un segundo Activity

donde se encuentra el teclado para la entrada de datos y conversión manual.

Figura 16: Activities base de Exploratu

(Fuente propia)

Page 79: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

78

Como se puede apreciar en la Figura 16 en la pantalla de OCR ya se ha incorporado el

procesado mediante el Google ML Kit Text Recognition y ya nos detecta el texto de la

cámara.

Esto se ha conseguido siguiendo el siguiente esquema de la Figura 17 y siguiendo como

base el guía60 ofrecido por Google. De tal manera que el fotograma del feed de la cámara

pasa por la clase de procesado donde se analiza y se extraen los bloques de texto

detectados.

Luego se usa la información que estos bloques tienen, como su ubicación dentro de la

preview, para poder pintarlos encima de la CameraSourcePreview que es lo que el

usuario ve de vuelta.

Figura 17: Esquema del funcionamiento del OCR

(Fuente propia)

Como se puede ver, ahora mismo el detector detecta todo el texto que ve y no hace nada

más que mostrarlo de vuelta en la preview. Por ello, en los siguientes sprints se

clasificarán lo bloques de texto detectados para ver cuales contienen cifras numéricas

que podrían ser los precios que buscamos.

60 https://codelabs.developers.google.com/codelabs/mobile-vision-ocr/

Page 80: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

79

Una vez se localicen los precios, se tendrá que calcular el cambio y mostrar eso en la

preview de alguna forma clara y entendible.

Finalmente, también se ha implementado la pequeña función de pausar el feed de la

cámara. Como se adelantaba en la fase de diseño, esto resulta útil al tener muchas

cantidades en pantalla, ya que la aplicación tiende a “parpadear” ya que no siempre

detecta todas las cifras. Por tanto, poder pausarlo elimina el efecto, pudiendo ver las

conversiones claramente, sin distracciones.

9.3. Sprint 3: Conversión manual en local

Una vez con la estructura base de la app, y antes de seguir con la detección de elementos

adecuados, se define como el objetivo de este sprint la implementación de la conversión

manual en local.

Para ello se debe, por una parte, conseguir que el usuario pueda introducir la cantidad

que quiera convertir, y por otra, diseñar y cargar el fichero JSON que contará con la

información sobre las divisas (incluyendo el valor por defecto de conversión), para así

poder realizar el cambio entre ellas.

Dicho JSON se ha generado manualmente teniendo en cuenta la información que es

necesario para el funcionamiento de la app, siguiendo lo mencionado en el apartado de

diseño, así como las divisas con los que cuenta la API que se utilizará posteriormente.

En caso de que hubiera que cambiar de API o se ampliase las divisas que soporta éste,

simplemente se tendría que ampliar / reducir este fichero a las divisas con los que

trabajase.

Adicionalmente, para seguir con el diseño de interfaces marcado, se han adaptado las

banderas del país/región principal donde se usa cada divisa para que tengan una forma

cuadrada; almacenándose bajo la carpeta de assets o recursos de la app, junto al anterior

JSON. Se ha aprovechado el código único de cada divisa para no tener que almacenar la

ruta de cada imagen.

Page 81: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

80

Figura 18: Diseño de las banderas de las divisas

(Fuente propia)

Para la introducción de las cantidades, se ha incluido un teclado propio con botones para

cada dígito y acción como borrar el último dígito o resetear. Internamente los

escuchamos para poder añadir dicho dígito al número actual y poder mostrarlo después

de un reformateo.

En el reformateo se controlan cosas como que no supere el número de caracteres

máximo establecido (15 en este caso), que sólo pueda haber un decimal, que no haya

más de 4 números decimales, que no haya ceros iniciales, se añaden comas para dividir

los números grandes para que se puedan leer fácilmente entre otras cosas.

Para probar el funcionamiento de lo realizado hasta ahora, el listado, búsqueda y

selección de país se ha dejado para el siguiente sprint, por lo que para las pruebas se

eligen y definen las divisas de USD, CNY y JPY.

De esta manera, al iniciar la aplicación, se cargan las divisas desde el fichero JSON

usando la librería de ORM de GSON en un objeto de Currencies. De ésta se extraen los

datos de las divisas seleccionadas y se muestran en la interfaz; incluyendo su código,

nombre y signo. A continuación, se buscan y cargan las fotos de los países mediante la

librería de Picasso61.

Por ahora, al sólo tener la información por defecto de las conversiones del JSON se extrae

dicha información a un objeto de Rates que además de contener los cambios, dentro de

un objeto Exchanges, cuenta con una función de convertir que nos permitirá a

continuación realizar las conversiones iniciales.

61 https://square.github.io/picasso/

Page 82: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

81

Con todo esto, ya se pueden realizar las conversiones mientras el usuario va

introduciendo los datos y mostrarlos en pantalla. El resultado de esto se puede ver en la

siguiente Figura 19.

Figura 19: Interfaz implementado del modo manual

(Fuente propia)

Como se puede ver en la figura anterior para cambiar la divisa base (activa) sólo hay que

tocar en la cantidad de dicha divisa y este número se cambiará de color para indicar que

está seleccionado. A continuación, simplemente hay que ir introduciendo las cantidades

deseadas y la app irá convirtiendo simultáneamente a las otras dos divisas.

Finalmente, hay que mencionar que todo esto se ha hecho siguiendo las

recomendaciones de programación de Android para asegurar un alto nivel de

modularidad y limitar el código duplicado, facilitando así la mantenibilidad y expansión

de Exploratu. Por ejemplo, para la estructura de las interfaces se ha hecho uso de

diferentes archivos de “configuración” o parametrización que ofrece Android, como

styles.xml, color.xml, strings.xml entre otros.

El beneficio de esto ha sido inmediato, ya que sin esto no habría sido tan sencillo crear

el tema oscuro. Para ello sólo se ha tenido que crear los archivos de configuración que

sobrescriban los valores guardados en los archivos por defecto, destinados para el tema

claro. De esta manera, por ejemplo, si en el tema claro el color del fondo es blanco,

Page 83: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

82

podemos sobrescribir el código hexadecimal del color para el fondo, haciendo que en el

tema oscuro sea negro.

9.4. Sprint 4: Selector de divisas

El objetivo de este sprint ha sido terminar la parte de conversión manual en local, para

así tener todo listo para crear la estructura necesaria para las llamadas a la API externa

que se harán en el próximo sprint; siendo así la parte más importante la realización del

selector de divisas.

Para ello se ha usado el BottomSheetDialogFragment que nos ofrece la API de Android.

Los fragment o fragmentos en Android se tratan de pequeñas Activities que se pueden

lanzar sobre o junto a un Activity principal. De esta manera, este tipo de fragment nos

permite tener un elemento similar a un cuadro de diálogo tradicional, pero que es

emergente desde la parte inferior de la pantalla y es visualmente más agradable y

moderno gracias a su animación y deslizamiento fluido. Además, resulta más versátil ya

que se puede expandir para cubrir toda la pantalla y así facilitar la selección de la divisa

que se quiere.

El listado de las divisas se ha implementado usando el componente RecyclerView de

Android. El RecyclerView es una versión optimizada de la ListView para la representación

de largas listas de elementos en Android. Mediante un LayoutManager y un Adapter al

que se le pasa la información necesaria para la representación de los ítems de la lista,

permite reducir el número de elementos cargados en la vista en todo momento,

pudiendo reusar elementos que no están a la vista del usuario para cargar los siguientes

ítems; mejorando así enormemente el rendimiento y reduciendo los recursos

necesarios.

Page 84: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

83

Figura 20: Diagrama comparativo entre el ListView y RecyclerView

(Fuente propia)

Adicionalmente, se ha añadido el componente SearchView para la realización de

búsquedas entre las diferentes divisas y así facilitar y agilizar el proceso de elegir las

divisas deseadas. Con todo esto el interfaz quedaría como muestra la siguiente Figura

21.

Figura 21: Sistema de selección y búsqueda de divisas

(Fuente propia)

Como se puede observar en las capturas, al hacer clic en algún nombre o bandera de una

divisa se abre el selector de las mismas. Además de poder seleccionar manualmente

desplazándose verticalmente, se puede realizar una búsqueda para filtrar las divisas por

su nombre, país/es donde se use, su código o incluso símbolo.

Page 85: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

84

Para cada cambio de carácter en la consulta del SearchView se realiza un filtrado de los

elementos cargados en el RecyclerView siguiendo los mencionados campos. A

continuación, se vuelven a cargar las divisas al Adapter, pero sólo las que incluyan

campos con dicha consulta.

Algunas de las optimizaciones que se han hecho para mejorar la experiencia del usuario

incluyen: el expandir el cuadro de diálogo a pantalla completa al realizar la búsqueda y

ocultar el teclado al empezar el desplazamiento vertical; para poder ver mejor los

resultados en ambos casos.

Una vez encontrado y seleccionado la moneda que se quiera usar para las conversiones,

el cuadro de diálogo se cierra, la información de la divisa se carga en la interfaz, las

conversiones se recalculan para reflejar el cambio de moneda y finalmente, se guarda la

nueva selección en las preferencias del usuario, mediante la API de SharedPreferences

de Android. De esta manera, al cerrar y volver a lanzar la aplicación se pueden restaurar

las divisas que se usaron la última vez para que el usuario no tenga que volver a

seleccionarlas.

9.5. Sprint 5: Obteniendo las ratios desde internet

Para este sprint se ha propuesto terminar ya con la conversión manual y añadir la última

funcionalidad que le faltaba: conectarse a la fuente de información externa para obtener

los últimos cambios.

Para ello lo primero que se ha realizado es construir la base de datos usando la librería

de Room. Por lo tanto, se han definido los objetos @Entity para la definición de las tablas,

en nuestro caso una única como se definió en la Figura 8 llamado Rates.

Al contar con un campo de fecha y querer guardarlo en la base de datos como timestamp,

pero, sin embargo, en el resto del programa querer usarlo como un objeto de tipo Date,

se ha creado lo que se denomina como @TypeConverter. Esto no son más que dos

métodos que le permiten a Room pasar un objeto de un tipo a otro.

A continuación, se han definido los métodos que se usarán para acceder a los datos

mediante un @Dao, especificando qué llamadas se harán a la base de datos para

insertar, actualizar, borrar y obtener la información.

Page 86: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

85

Finalmente, con los @Entity, @Dao y @TypeConverter-s definidos se ha creado la base

de datos (@Database). De esta manera, la clase de RatesDatabase nos devolverá la

referencia a una instancia de la base de datos en caso de que exista y de otra forma lo

instanciará.

Con la base de datos definida y lista para usar, sólo queda realizar las llamadas a la

Exchange Rates API para obtener y guardar las últimas ratios de conversión. Esto se ha

realizado con la librería de Retrofit, que nos facilita dicha tarea. Además, permite

mantener el código muy modularizado para que en caso de que la API cambie poder

adaptarse fácilmente.

Retrofit necesita dos componentes para su uso. Por una parte, la factoría que se usa para

configurar e instanciar la librería. Por otra, un interfaz especificando las rutas a las que

atacará para obtener la información y el tipo de llamadas que hará.

En nuestro caso tenemos una única ruta62 a la que realizaremos peticiones GET. También

configuramos para que Retrofit use la librería de GSON para la deserialización del JSON

obtenido y cree los objetos de Rates que usaremos.

Finalmente, teniendo en cuenta que GSON necesita que los nombres de los campos

concuerden con lo que devuelva la API, se han renombrado los campos de timestamp a

date y exchanges a rates en el objeto Rates.

Con todo esto preparado, ya podemos realizar las llamadas y obtener los últimos

cambios. Al iniciar la app se realizan las siguientes comprobaciones para ver qué ratios

usar:

1. Obtener la entrada más reciente de la base de datos. Si es de hoy usar ese.

2. En caso contrario, ver si tenemos conexión a internet, en caso de que así sea se

obtienen los cambios. Estos se guardan en la base de datos y se empieza a

usarlos.

3. Si hay algún error durante la petición o no hay conexión a internet, se usa la última

entrada disponible de la base de datos.

4. En caso de que la base de datos estuviera vacía se obtienen las ratios “por

defecto” del JSON que tiene información sobre las divisas. A continuación, se

guardan en la base de datos como la entrada más antigua.

62 https://api.exchangeratesapi.io/latest/

Page 87: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

86

De esta manera siempre tendremos las ratios más actualizados que podemos obtener

en dicho momento. Para aumentar la transparencia, se informa al usuario de cuándo son

los cambios que se están usando mediante un pequeño texto en la parte superior del

teclado numérico.

Adicionalmente, se ha añadido un monitor del estado de la red, así, cuando el usuario

pase a tener conexión a internet se comprobará que no haya actualizaciones además de

hacerlo al iniciar la app.

9.6. Sprint 6: Funcionalidad base del modo AR

Con la parte de conversión manual realizado, podemos seguir con el aspecto principal

de la app, la conversión en AR. El objetivo original de este sprint era seguir con lo ya

conseguido en el segundo sprint, detectar todo tipo de textos mediante la cámara, pero

con la diferencia de ahora sólo detectar los números. Pero como esto se ha realizado

antes de lo esperado, y la metodología elegida permite añadir nuevas tareas a un sprint

en curso, se ha terminado también haciendo toda la parte de conversión y mostrar los

resultados, además de añadir los selectores de divisas de origen y destino.

Para sólo obtener los números de lo que percibe la cámara, siguiendo el diagrama de la

figura Figura 17, se han filtrado los ítems o palabras que la librería de OCR detecta. Esto

se ha realizado usando diferentes expresiones regulares, regex, de la siguiente manera:

1. Se eliminan todos los caracteres no numéricos y separadores, punto y coma, de

la palabra detectada. Regex: ([^0-9.,]+[.,]).

2. Se busca si existe algún número con decimal o mayor de 1.000 separado

mediante coma o punto. Regex: (\d+([.,])\d{1,4}).

3. Si existe, se comprueba cuántos números están después del separador. Si son

menos que tres se califican como decimal y no se cambian. Por el contrario, si

son más que tres se estima que son separadores visuales por ser dígitos mayores

que 1.000 y por tanto se extrae dicho separador para que, al convertir la cadena

de texto en número, no se piense que son tres o más números decimales.

4. En todo caso la cadena de texto final se intenta convertir en un número. Si esto

se pueda realizar correctamente nos encontraríamos con un número y en caso

contrario se estima que dicha cadena no es un número.

Una vez extraído el número sólo queda convertirlo y mostrárselo al usuario.

Page 88: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

87

Para conseguir lo primero, el usuario cuenta con dos selectores de divisas, los vistos en

el Sprint 4, que podrá usar para elegir las monedas que le interesan. A continuación, se

obtiene la ratio de conversión de la unidad entre dichas divisas, una unidad de la moneda

de origen a cuántas unidades de la moneda destino equivalen, siguiendo lo visto en el

anterior Sprint 5. Posteriormente, se guarda dicha ratio en los SharedPreferences para

que a la hora de pintar la conversión se pueda acceder a la cantidad y hacer la

multiplicación.

Para lo segundo, el detector le pasa a la clase OrcGraphic —el encargado de dibujar el

overlay63 en la vista previa de la cámara— la palabra detectada, su valor numérico, la

imagen que se quiere pintar como base y una referencia a las SharedPreferences para

poder acceder a la ratio de conversión.

De esta manera, finalmente, usando las coordenadas que la palabra tiene al ser tipo Text

del detector, podemos dibujar la imagen que actuará como contenedor de la conversión

para facilitar su lectura, así como la conversión en sí después de acceder a las

preferencias, obtener la ratio y realizar la multiplicación.

Figura 22: Ejemplo de uso del modo AR

(Fuente propia)

63 Overlay: del inglés “capa” o “cubierta” son los elementos que se sitúan encima de otros.

Page 89: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

88

9.7. Sprint 7: Automatización de la selección de divisas y detalles

Para facilitar el uso de la app se ha marcado como objetivo de este sprint automatizar en

la medida de lo posible la selección de divisas.

Para ello se han seguido dos estrategias dependiendo de si se quería obtener la moneda

de origen o desino. Para conseguir la moneda de destino, se ha asumido que el usuario

usa el dispositivo en la región que corresponde con su región habitual. De esta manera,

se puede acceder a dicha región y de ahí extraer la divisa usando el objeto Currency de

Android.

Para la moneda de origen, la idea original era usar el GPS para conseguir la ubicación del

usuario, de ahí obtener el país y finalmente la moneda que se usa en dicho territorio. Sin

embargo, esta idea ha sido descartada teniendo en cuenta que no necesitamos la

ubicación precisa del usuario, el tiempo que tarda el GPS en localizar y el permiso extra

de localización que se tendría que pedir.

En su lugar, se ha optado por usar la información de la red en la que el usuario se

encuentra conectado para obtener el país. Primero de la red móvil y en caso de que no

estuviera disponible, de la red de internet. Una vez teniendo el país se obtiene la divisa

como en la estrategia anterior. Este método resulta muy rápido y funcionará

correctamente a no ser que el usuario se encuentre sin tarjeta SIM64, sin cobertura o

usando un VPN65 de otro país.

Al iniciar la aplicación por primera vez, se obtiene la información mediante estos dos

métodos para las divisas de origen y destino. Al ir guardando las divisas que usan los

usuarios en las preferencias, no se calcularán cada vez que se inicie la app, evitando así

que los usuarios tengan sensación de que la app se reestablece cada vez. En su lugar, se

ha añadido una opción en la barra superior para la localización de la divisa de origen

cuando el usuario determine oportuno.

64 Tarjeta SIM: del inglés Subscriber Identity Module se tratan de las tarjetas que las operadoras

usan para identificar a sus usuarios y poder ofrecerles conectividad. 65 VPN: del inglés Virtual Private Network dícese de las redes que emulan estar conectados a otra

red diferente.

Page 90: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

89

Similar al sprint anterior, al cumplir los objetivos marcados todavía había tiempo

restante. Por ello, se ha decidido continuar añadiendo algunos detalles más para mejorar

la experiencia de usuario.

Uno de esos detalles ha sido una opción superior para encender y apagar el flash. De

esta manera, aunque no haya apenas iluminación el usuario podrá activar el flash y seguir

realizando conversiones.

Otra de las cosas que se han realizado es la inclusión de tooltips, mensajes de ayuda, al

hacer una pulsación larga en los elementos más importantes de la interfaz, como los

botones y opciones; mejorando así la accesibilidad de la herramienta. Un ejemplo de ello

se puede encontrar en la siguiente Figura 23.

Figura 23: Ejemplo de Tooltip

(Fuente propia)

Para seguir con los interfaces definidos en el apartado 8.6 de la memoria, y

especialmente el mapa de interacciones, se ha cambiado la ejecución de la app para que

el modo AR sea el principal; el modo que se abre al ejecutar la app desde cero. Para

acceder al modo manual se ha añadido una opción en la parte izquierda de la barra

superior de opciones de este modo de AR.

Page 91: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

90

Figura 24: Interfaz final del modo AR

(Fuente propia)

Adicionalmente, también se ha implementado una pequeña función de invertir las

divisas activas pulsando en la flecha entre las mismas. Esto podría resultar útil en

ocasiones donde se estuviera cambiando de uno a otro y viceversa continuamente.

Por otra parte, se ha aprovechado el tiempo para incluir las librerías de Firebase

Crashlytics y Performance Monitoring para poder analizar posteriormente los problemas

que los usuarios se encuentran con Exploratu, además de poder monitorizar el

rendimiento.

Finalmente, mencionar que se ha intentado, sin éxito, implementar la fuente definida en

la guía de estilos, IBM Plex, usando la función de fuentes descargables66 de Android. Esto

permite que la fuente se descargue fuera de la descarga inicial de la app, y en caso de

que ya se esté usando por otra app instalada, la reutilizaría y no haría falta volver a

descargarla; ahorrando espacio y la misma descarga en cuestión. Desafortunadamente,

por razones desconocidas, la fuente elegida, a pesar de formar parte de la colección de

fuentes abiertas de Google Fonts67, no está disponible bajo este servicio de fuentes

descargables.

66 https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts 67 https://fonts.google.com/?query=ibm+plex

Page 92: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

91

Por esta razón y para no incrementar el tamaño de la aplicación innecesariamente,

perjudicando así a los usuarios que podrían estar descargándoselo bajo condiciones

poco optimas al estar de viaje, se ha decidido prescindir de esta familia de fuentes y

apostar por la similar Roboto, incluida en todo dispositivo Android.

Page 93: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

92

10. Pruebas y validación

Durante el periodo del desarrollo se ha ido probando su funcionamiento en el dispositivo

de desarrollo, Xiaomi Mi MIX 2 sobre Android 9 (API level 28), viendo que los nuevos

cambios funcionasen correctamente y no interferían con funcionalidades anteriormente

implementadas.

Al finalizar la implementación, las pruebas se han expandido a otros dispositivos que se

encontraban al alcance, como el Xiaomi Mi Note 2 / Mi 8, incluyendo dispositivo de gama

baja como el Redmi 3. En ninguno de los dispositivos se ha notado apenas ralentización,

asegurando un correcto y fluido funcionamiento.

Figura 25: Realización de pruebas en dispositivos físicos

(Fuente propia)

De esta manera se ha testeado Exploratu en varios dispositivos que reflejarían los

diversos usuarios de la misma; tanto usuarios con dispositivos de gama alta como baja,

nuevos y antiguos.

A continuación, antes de dejar en manos de usuarios externos, se han realizado pruebas

automáticas en el mencionado Firebase Test Lab; usando el test automático mediante la

herramienta Robo, probando diferentes configuraciones a los que no teníamos acceso

directo.

Page 94: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

93

Figura 26: Tests Robo en Firebase Test Lab

(Fuente propia)

Todos los tests se han pasado con éxito y sin ningún fallo de funcionamiento. En cuanto

al rendimiento, se han podido ver los beneficios de programar nativamente. Aun

teniendo varios elementos de alto coste como la cámara, procesado de la imagen o

acceso al disco entre otros; el procesador, la memoria o los gráficos se han mantenido

en niveles razonables, como indica la próxima Figura 27.

Figura 27: Resultados de rendimiento en el Google Pixel (API level 26)

(Fuente propia)

Page 95: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

94

Una vez con una mínima certeza de la estabilidad de la app y de que los usuarios no se

encontarán con constantes cierres inesperados, se ha decidido probarla con los primeros

usuarios externos. El objetivo principal: evaluar la precisión de las detecciones de texto

y ver si se encuentran con algún problema durante su uso. Además de su feedback

directo, también se han recogido reportes mediante la herramienta de Firebase

Crashlytics y Performance Monitoring.

Como ejemplo de la efectividad de Firebase Crashlytics se encuentra el siguiente caso.

A uno de los usuarios de los que se animaron a probar la aplicación no se le llegaba a

iniciar, su ejecución se terminaba inesperadamente antes. De otra manera, teniendo en

cuenta la distancia al usuario y su disponibilidad, hubiera sido difícil encontrar el

problema y solucionarlo. Pero, gracias a la integración de Crashlytics se pudo saber

inmediatamente qué era lo que fallaba, incluyendo la línea que había causado el

problema, y solucionarlo rápidamente.

Figura 28: Captura de los cuadros de mando de Firebase Crashlytics

(Fuente propia)

Similarmente, los cuadros de mandos de Performance Monitoring nos permiten observar

si hay algún problema de rendimiento, ya sea de la aplicación/dispositivo en sí, la

conexión a la API o de red. De esta manera podremos saber cuándo se encuentra la API

caída o si hay alguna parte de la aplicación que genere demasiada lentitud.

Page 96: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

95

Figura 29: Captura de los cuadros de mando de Firebase Performance Monitoring

(Fuente propia)

Como se puede observar en la siguiente Figura 29, todo parece que está dentro de los

valores adecuados.

Finalmente, pasando a validar la capacidad de detección de precios de Exploratu, gracias

al feedback directo de los primeros usuarios se ha podido saber dicha efectividad. De los

20 diferentes tests que se han realizado, se han podido obtener resultados positivos,

mediante la cámara, en un 80% de las ocasiones (16 veces). Las otras veces se ha tenido

que recurrir a la introducción manual de cifras.

Figura 30: Ejemplo de casos en los que no se ha conseguido un resultado óptimo

(Fuente propia)

Page 97: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

96

Analizando las situaciones donde no se ha podido obtener un resultado favorable del

reconocimiento de texto nos encontramos más problemas cuando:

- Hay poco contraste entre cifras/fondo.

- Se usan fuentes de texto fuera de los habituales y más simples.

- Se utiliza una coma para separar cifras decimales. Se observa una peor tasa de

detección frente al punto.

Adicionalmente, el feedback ha incluido otras frentes que pulir para futuras iteraciones:

- Solapamiento entre las cantidades convertidas.

- Gran parpadeo de cifras al estar en constante detección.

- Conversión de cifras que no son precios.

Muchas de estas cosas se podrían ir solucionando con mayor o menor facilidad en

próximas versiones. La mayoría de éstos surgen por la inexactitud del sistema de

detección y OCR empleado, la API de Google ML Kit Vision. Por lo tanto, como se detalla

en el apartado de trabajo futuro, se tendría que centrar la mayor parte del esfuerzo en

mejorar esto.

La creación de un modelo propio de detección de precios usando Machine Learning que

mejore la detección obtenida por el sistema genérico de OCR de Google podría ser una

opción.

Con la validación, además de las pruebas, realizada y habiendo podido detectar y

solucionar los errores más graves a tiempo, se ha pasado a la publicación de Exploratu

en la Google Play Store, siguiendo el plan de publicación del Apéndice I.

Page 98: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

97

Page 99: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

98

11. Resultados

En esta sección pasamos a analizar el producto final y mostrar los resultados del

proyecto de Exploratu.

11.1. Producto Final

Para ello, primero se hará un recorrido de sus interfaces, mostrando en la mayoría de las

capturas la versión del tema oscuro junto al claro.

Figura 31: Aviso pidiendo permiso para usar la cámara

(Fuente propia)

Lo primero que los usuarios ven al abrir la aplicación es este aviso pidiendo el acceso a

la cámara. Si se acepta, se pasaría a la Figura 33; en caso de rechazarlo no dejaría usar

el modo AR, aunque sí las funciones manuales de la Figura 19.

Page 100: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

99

Figura 32: Posibilidad de darle permiso a la cámara a posteriori

(Fuente propia)

De todas formas, en caso de que se rechazase, Exploratu muestra un aviso permanente

para que el usuario pueda darle permisos a la cámara a posteriori, como se muestra en

la Figura 32.

Figura 33: Exploratu avisando de tener cuidado al usar AR

(Fuente propia)

Page 101: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

100

A continuación, aparece un segundo aviso, requerido por las políticas del Google Play

Store como visto en el Apéndice I. En éste se alerta al usuario de que extreme la atención

al usar el modo de realidad aumentada, así como que esté supervisado si así se requiere,

por ejemplo, si se trata de un niño.

Si se presiona “I understand” no nos volverá a salir el aviso, pero si se presiona “Remind

me next time” o fuera del aviso, se volverá a advertir de tomar las precauciones

adecuadas la próxima vez que se lance la aplicación.

Figura 34: Modo AR de Exploratu

(Fuente propia)

Ahora sí entramos en la interfaz principal del modo de AR de Exploratu. Al iniciar por

primera vez, la aplicación intentará detectar automáticamente las divisas de origen y

destino.

Para determinar la moneda de destino usará la configuración del dispositivo, mientras

que para la moneda de origen la ubicación de la red en la que se encuentra el dispositivo.

De esta manera, en el ejemplo de la Figura 34, al estar conectado en una red española,

ha detectado el Euro como la divisa de origen, y al tener configurado el móvil en inglés

de Estados Unidos, el Dólar Estadounidense como divisa destino.

Page 102: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

101

Simultáneamente, al estar conectado a internet, se obtienen las últimas ratios de

conversión desde el Banco Central Europeo; ya que al ser la primera vez que abrimos la

app, las incluidas están desactualizadas.

Con esta información Exploratu comienza a detectar el texto que ve la cámara y extraer

los posibles precios que se ven para convertirlos, como se muestra en la Figura 34.

Adicionalmente, desde esta pantalla podemos acceder al modo manual, Figura 19, con

el botón izquierdo de la barra superior. También podremos activar/desactivar el flash con

el botón que se encuentra a su derecha, en el otro extremo de la barra, así como volver

a auto detectar la moneda de origen, en caso de que nos hubiéramos cambiado de país

o hubiésemos cambiado la divisa para probar otra.

Similarmente, en la parte inferior, podremos cambiar las monedas de origen y destino

usando el selector de la Figura 21, pulsando en la divisa que se quiere reemplazar.

También se pueden invertir dichas divisas haciendo clic en la fecha que los separa, y

pausar/restaurar el feed de la cámara pulsando en el botón de pausa/play.

En el modo manual, Figura 19, se puede convertir entre tres divisas en tiempo real, se

marca uno, pulsándolo, y simplemente usando el teclado propio se puede ir convirtiendo

las cantidades deseadas. También se muestra de cuándo es el cambio que se está

usando en la app, permite cambiar las divisas usando el mismo selector que en el modo

AR, el de la Figura 21. Finalmente, permite volver al modo de AR pulsando el fab central.

11.2. Recepción

Todavía es pronto para saber cómo será recibido, pero en los primeros tres días de

publicación ha tenido más de 50 descargas en la Google Play Store y las opiniones han

sido muy positivas: las 21 valoraciones recibidas han sido de cinco estrellas, puntuación

máxima.

Page 103: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

102

Figura 35: Algunas opiniones en el Google Play Store

(Fuente propia)

Los resultados en Product Hunt, web que muestra nuevas aplicaciones que van saliendo

cada día y donde también se ha publicado Exploratu, han sido similarmente positivas.

Figura 36: Resultados del lanzamiento de Exploratu en Product Hunt

(Fuente propia)

Page 104: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

103

Como muestra la Figura 36, Exploratu logró estar destacado en la página principal, el día

30 de Julio de 2019, y terminó en el puesto veintidós de ese día, con cuarenta y tres

votos y seis comentarios.

Figura 37: Comentarios del lanzamiento de Exploratu en Product Hunt

(Fuente propia)

Además, cabe destacar que la gente pareció interesada en la idea y propuso mejoras

que podrían implementarse en un futuro para seguir mejorando el producto.

11.3. Coste temporal

Gracias a la detallada fase de análisis y especificación además del diseño, el tiempo de

implementación ha sido algo menos a la estimada, 65h frente a las 84h que se

esperaban. Además, por cuestiones personales, no se han podido disponer de los 14

días estimadas, y se ha realizado jornadas más intensas durante 8 días.

En cuanto al TFG en general, el retraso se tratará de algo más de dos semanas de lo

originalmente planificado, principalmente debido a cuestiones personales que han

impedido dedicarle el tiempo originalmente previsto.

Page 105: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

104

Adicionalmente, no se había planificado tiempo para el despliegue o publicación de la

app, el cual ha llevado casi 10h en total. Gracias a haber podido terminar la

implementación antes de lo previsto, el proyecto no se ha retrasado más.

Page 106: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

105

Page 107: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

106

12. Conclusiones y trabajo futuro

En este apartado se recogen las conclusiones extraídas a lo largo de todo el desarrollo

del trabajo y proyecto.

12.1. Estado actual

Actualmente Exploratu se puede considerar como MPV o mínimo producto viable

completado. Se han cumplido al completo los objetivos y funcionalidades requeridas,

aunque algunos requisitos no funcionales, como el de estabilidad (RNF-SYS-008),

requerirán más tiempo para poder observar y asegurar que se cumplen.

La aplicación es capaz de realizar con éxito su función principal, ofrecer la conversión de

divisas directamente en AR automatizando todo el proceso de introducción de datos.

Figura 38: Capturas del correcto funcionamiento de Exploratu

(Fuente propia)

Además, el diseño de la aplicación se ha hecho de forma modular, tanto la base de datos

como la aplicación en sí. De esta manera, en un futuro se podrá ampliar de la forma más

fácil y sencilla posible; ya sean diferentes funcionalidades, localización a distintos

idiomas o lo que se estipule oportuno.

Page 108: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

107

Por otra parte, mencionar que la aplicación se encuentra disponible en la tienda de

Google Play Store para que todo el mundo lo pueda probar, además de poder distribuir

actualizaciones para añadiendo correcciones y funcionalidades de una manera sencilla

y controlada.

Finalmente, gracias a la parte de back-office implementado usando la suite de Firebase

se puede monitorizar el comportamiento de los usuarios, así como los problemas de

rendimiento y errores que vayan teniendo para solucionar las cosas a tiempo y ofrecer la

mejor experiencia de usuario posible.

12.2. Mejoras y ampliaciones

En cuanto a las posibles mejoras y ampliaciones de cara a trabajo futuro, durante el

desarrollo del proyecto se han encontrado con varias características que podrían ser

mejorados:

- La detección: aunque funcione mejor de lo que originalmente se esperaba, todavía

tiene margen de mejora. Además de ajustar la extracción de precios de todo el texto

detectado, habría que probar con modelos propios de detección de precios, para así

mejorar la detección en general, detectar únicamente precios y despreciar el resto

de los números.

- Solapamiento: al tener dos cifras muy cercanas la conversión de una tapa la otra.

Habría que controlar dónde se está mostrando cada conversión y mostrar los otros

resultados de forma que no solapen entre ellos.

Otra solución podría ser ofrecer la posibilidad de mostrar los resultados encima de la

cifra original en vez de a su lado, de esta manera dos cifras no se solaparían, aunque

se podrían encontrar situaciones donde la conversión tuviese problemas para

mostrarse, por ejemplo, al no tener suficiente espacio y por tanto no entrar.

- Mostrar las conversiones: la forma en la que Exploratu muestra actualmente las

conversiones no es la más atractiva. Queda un poco tosca y podría ser mejorada en

futuras versiones para llamar más la atención. Además, se podría mostrar el símbolo

de la moneda de destino para que quedase más claro lo que se está haciendo, así

como ajustar el tamaño del recuadro que muestra la conversión teniendo en cuenta

la longitud del número resultante de la conversión.

Page 109: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

108

- Fuentes de datos para las conversiones: si bien es cierto que la API empleada incluye

las divisas más habituales, es verdad que todavía hay divisas bastante comunes

como la libra egipcia o el dólar taiwanés que no están en Exploratu. Por lo tanto,

incluir otras fuentes, así como dejar al usuario que elija su preferida, podría resultar

útil. De esta manera incluso se podría usar el cambio que usa la tarjeta de crédito de

cada uno, como VISA o MasterCard, en vez del cambio del mercado real que luego

no se aplica en los pagos.

- Acabado: por cuestiones de tiempo no se han podido incluir apenas animaciones ni

otros aspectos que redondean este tipo de aplicaciones. Ayudan a transmitir lo que

se está haciendo en cada momento y en general mejoran la experiencia de usuario.

Se podrían añadir animaciones, por ejemplo, al encender/apagar el flash, localizar

la divisa origen automáticamente, invertir las divisas seleccionadas, pasar del modo

AR al manual y viceversa…

Similarmente, hay otras funciones que han surgido durante la ideación, desarrollo o la

publicación del proyecto y que podrían resultar interesantes incorporarlas en futuras

versiones de Exploratu:

- Poder importar una imagen de la galería y que la app realice las conversiones de los

precios detectados.

- Detectar la divisa de origen basándose en el símbolo de la moneda que se detectaría

mediante la cámara al acompañar al precio.

- Similarmente, detectar el idioma del texto que rodea el precio para sugerir un posible

cambio de divisa de origen.

- Añadir la función de “deslizamiento rápido” en el selector de divisas. Es decir, poner

un índice lateral para poder ir saltando de grupo en grupo de divisas basándose en la

letra del que empiezan.

- Añadir opción de porcentaje de sobrepago. Se podrían añadir diferentes porcentajes

de cobros extra como comisión por el cambio de divisas, impuestos o propinas para

realmente saber lo que nos costaría en total.

- Añadir la posibilidad de guardar conversiones realizadas para disponer de un historial

de precios convertidos, así como poder tener una idea general del gasto total del

viaje.

- Añadir publicidad, por ejemplo, publicidad intercalada después de una cantidad de

conversiones o tiempo, o un banner inferior permanente en la sección de conversión

manual. Adicionalmente, añadir la posibilidad de eliminar dicha publicidad con

alguna compra in-app o incluso subscripción.

Page 110: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

109

- Expandir la conversión de divisas a otro tipo de divisas que podrían resultar útiles en

un viaje. Por ejemplo, de zonas horarias o de tallas de ropa y zapatos.

12.3. Nociones aprendidas

Nunca me había enfrentado a un trabajo de estas características y sobre todo

dimensiones; pasar de observar una problemática a diseñar una solución e

implementarla no se trata de una tarea sencilla y requieren de mucho tiempo y

dedicación.

Los mayores problemas con los que se han enfrentado han sido debido a la poca

definición o no haber centrado suficiente la idea, y han llevado a la casi completa

reescritura de la primera mitad de esta memoria en dos ocasiones. Gracias a esto se ha

podido entender la importancia que tienen las primeras fases y como todo el trabajo

previo a la implementación se acaba agradeciendo mientras se va construyendo la

solución.

Una vez con la idea clara y definida es infinitamente más sencillo seguir con el resto de

las fases de desarrollo: han asegurado que se haya podido llevar a cabo de una manera

exitosa.

Gracias a la utilización de fuentes externas y librerías existentes para realizar la mayor

parte del trabajo interno de la aplicación, se ha podido centrar en la creación de una

interfaz usable, así como funcionalidades y características que beneficien y mejoren la

experiencia del usuario.

Esto ha permitido aprender paradigmas, técnicas, metodologías, tecnologías, lenguajes

y librerías, entre muchas otras cosas, que se están usando actualmente en el mercado y

así facilitar la entrada a esta industria de desarrollo móvil que cada vez está más en alza.

Además, el resultado ha gustado mucho más de lo que se anticipaba al comienzo,

ofreciendo una buena base donde seguir construyendo una aplicación que pueda ayudar

a una gran cantidad de usuarios facilitando sus próximos viajes.

Page 111: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

110

Referencias

Android Developer. (22 de 07 de 2019). Launch checklist. Obtenido de Android

Developers: https://developer.android.com/distribute/best-

practices/launch/launch-checklist

Android Developers. (07 de 05 de 2019). Distribution dashboard. Obtenido de Android

Developers: https://developer.android.com/about/dashboards

Android Developers. (s.f.). ANRs. Obtenido de Android Developers:

https://developer.android.com/topic/performance/vitals/anr#android_vitals

Android Developers. (s.f.). Crashes. Obtenido de Android Developers:

https://developer.android.com/topic/performance/vitals/crash#android_vitals

Android Developers. (s.f.). Save data in a local database using Room. Obtenido de

Android Developers: https://developer.android.com/training/data-storage/room

Apple Inc. (s.f.). Swift - Apple Developer. Obtenido de Apple Developer:

https://developer.apple.com/swift/

Bank For International Settlements. (11 de 12 de 2016). Triennial Central Bank Survey -

Foreign exchange turnover in April 2016. pág. 10. Obtenido de

https://www.bis.org/publ/rpfx16fx.pdf

Beck, K., Beedle, M., Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., . . .

Thomas, D. (2001). Principles behind the Agile Manifesto. Obtenido de Manifesto

for Agile Software Development: https://agilemanifesto.org/principles.html

Berná Martínez, J. (20 de 11 de 2017). Guía para el desarrollo de TFG Multimedia.

Obtenido de Repositorio Institucional de la Universidad de Alicante:

http://rua.ua.es/dspace/handle/10045/73967

Page 112: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

111

Comscore Inc. (2017, 08 24). The 2017 U.S. Mobile App Report. Retrieved from

Techcrunch: https://techcrunch.com/2017/08/25/majority-of-u-s-consumers-

still-download-zero-apps-per-month-says-comscore/

Doran, G. T. (1981). En There's a S.M.A.R.T Way to Write Managemetn's Goals and

Objectives (págs. 35-36).

Expósito, S. (11 de Agosto de 2015). El análisis DAFO. Obtenido de Comunicae Blog:

https://blog.comunicae.es/el-analisis-dafo/

Facebook. (s.f.). React Native · A framework for building native apps using React.

Obtenido de Github: https://facebook.github.io/react-native/

Google. (s.f.). Announcing Flutter beta 1: Build beautiful native apps. Obtenido de Google

Developers: https://developers.googleblog.com/2018/02/announcing-flutter-

beta-1.html

Google LLC. (s.f.). Google Translate. Obtenido de Google Play Store:

https://play.google.com/store/apps/details?id=com.google.android.apps.transla

te

Holidaysafe. (24 de 01 de 2017). Evolution of the Backpacker. Obtenido de Holidaysafe:

https://www.holidaysafe.co.uk/blog/evolution-backpacker-infographic/

Ionic. (s.f.). Build Amazing Native Apps and Progressive Web Apps with Ionic Framework

and Angular. Obtenido de Ionic Framework: https://ionicframework.com/

JetBrains. (s.f.). Kotlin on Android. Now official. Obtenido de Kotlin Blog:

https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/

Leung, H. (24 de 07 de 2017). Tesseract vs Google Vision, Round 1, Fight! The Text

extraction Wars! Obtenido de Linkedin:

Page 113: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

112

https://www.linkedin.com/pulse/tesseract-vs-google-vision-round-1-fight-text-

extraction-hanley-leung/

Ortiz-Ospina, E., Beltekian, D., & Roser, M. (October de 2018). Trade and Globalization.

Obtenido de Our World in Data: https://ourworldindata.org/trade-and-

globalization

Our World in Data. (2019). Tourism. Obtenido de Our World in Data:

https://ourworldindata.org/tourism

Progress Software Corporation. (s.f.). NativeScript: Native mobile apps with Angular,

Vue.js, TypeScript, JavaScript. Obtenido de https://www.nativescript.org/

RealtimeBlog. (s.f.). How to choose between Agile and Lean, Scrum and Kanban — which

methodology is the best? Obtenido de RealtimeBlog:

https://realtimeboard.com/blog/choose-between-agile-lean-scrum-kanban/

Ritchie, H., & Roser, M. (2018). Technology Adoption. Obtenido de Our World in Data:

https://ourworldindata.org/technology-adoption

Sajjad, Z. (24 de 10 de 2018). Choose the Right On-Device Text Recognition (OCR) SDK on

Android Using DeltaML. Obtenido de Heartbeat: https://heartbeat.fritz.ai/choose-

the-right-on-device-text-recognition-sdk-on-android-using-deltaml-

9b4b3e409b6e

Tolomei, S. (20 de 11 de 2017). Shrinking APKs, growing installs. Obtenido de Medium:

https://medium.com/googleplaydev/shrinking-apks-growing-installs-

5d3fcba23ce2

Travel Tao, Ltd. (s.f.). xCurrency. Obtenido de Google Play Store:

https://play.google.com/store/apps/details?id=com.tratao.xcurrency&hl=en

Page 114: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

113

Wikipedia. (s.f.). Xamarin. Obtenido de Wikipedia: https://en.wikipedia.org/wiki/Xamarin

Word Tourism Organization. (2019, 01 21). International Tourist Arrivals Reach 1.4

billion Two Years Ahead of Forecasts. Retrieved from UNWTO:

https://www2.unwto.org/press-release/2019-01-21/international-tourist-

arrivals-reach-14-billion-two-years-ahead-forecasts

Xe Corporation. (s.f.). About Us. Obtenido de Xe: https://www.xe.com/company/

Page 115: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

114

Apéndice I – Publicación en la Google Play Store

Para realizar la publicación de una forma adecuada, estructurada y exitosa se ha seguido

el plan de despliegue de Google (Android Developer, 2019). En ella se definen una serie

de pasos y recomendaciones que seguir para llegar a lanzar nuestra app en la tienda de

aplicaciones de Google para Android.

Entre las más relevantes destacamos:

- Entender las Políticas del Programa de Desarrollador68. Cualquier app publicada en

la Google Play Store tiene que seguir y cumplir estas políticas diseñadas para

asegurar la fiabilidad de la tienda.

- Testear siguiendo las guías de calidad de Android, así como tests propios. El objetivo

es asegurar que la app cumple con unos mínimos de calidad. Además de los test

propios, vistos en el apartado de Pruebas y validación de la memoria, Google

recomienda seguir su guía de calidad69. En esta ocasión, por restricciones de tiempo,

no se han podido probar todos los requisitos establecidos, pero sí la mayoría,

asegurando así un funcionamiento correcto.

- Compilar la aplicación usando el sistema de Android App Bundle. Frente a los

paquetes de aplicaciones Android (APK) universales tradicionales, los App Bundle,

ofrecen mucha mayor flexibilidad y modularidad. Además, gracias a esto Google Play

puede distribuir la versión necesaria para cada dispositivo, con los recursos

adecuados para su resolución y traducción al idioma configurado, disminuyendo así

el tamaño de cada app.

- Definir una política de privacidad. Uno de los aspectos más importantes a la hora de

hacer pública cualquier proyecto hoy en día. Se ha creado una política de privacidad70

explicando los datos recopilados de las diferentes librerías usadas y cómo se

procesarán. Al descargar la aplicación desde la Google Play Store los usuarios

aceptan dicha política.

- Completar la ficha de la app. Uno de los aspectos más costos del proceso de

publicación y que más pueden marcar el éxito o fracaso de una app. El título,

68 https://play.google.com/about/developer-content-policy/ 69 https://developer.android.com/docs/quality-guidelines/core-app-quality 70 https://izadi.xyz/exploratu/privacy/

Page 116: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

115

subtítulo y la descripción son los elementos clave a la hora de mejorar el

posicionamiento en la tienda. Es aquí donde se tiene que realizar el ASO, App Store

Optimization, para que la app sea lo más fácil de encontrar por los usuarios.

Para ello, se ha realizado una pequeña búsqueda de palabras clave de la

competencia, visto en el Análisis del mercado, además de seleccionar algunas

propias de elementos diferenciadores de Exploratu, para llegar a la siguiente lista

empleada en la descripción: exchange rates, exchanges, rate, converter, currency,

currencies, price, money, offline, AR, OCR, camera, free.

Esto, junto a las capturas de pantalla mostrando funciones relevantes de la app y su

uso, atraerá a los usuarios para que descarguen y prueben la app.

Decir que esto sería la primera versión de la descripción y gráficos empleados. Dadas

las facilidades que ofrece el Google Play Store en un futuro se realizarán

“experimentos en la ficha”, es decir pruebas A/B71, para ver qué combinación de

descripción, capturas, icono etc. resulta en mayores cantidades de instalaciones.

- Subir el Android App Bundle. Una vez teniendo la ficha cumplimentada con su política

de privacidad toca subir la aplicación en sí. Esto se podría subir a diferentes canales

de distribución como alpha, beta o producción. En el caso de Exploratu al ser la

primera versión disponible públicamente se distribuirá en el canal de producción. En

un futuro, para probar funciones y ver que todo funciona correctamente antes de

desplegarlo para todo el mundo se podría hacer uso de estos otros canales más

“experimentales”.

- Determinar y elegir las opciones de distribución tanto regional como de edad. Se

realizan diferentes cuestionarios para definir los usuarios que podrán acceder a la

app. Esto se realiza tanto para dispositivos, regiones, así como del contenido y edad.

Junto con esto último se obtienen los certificados adecuados para cada categoría de

edad como el PEGI. En este caso, al no contener ningún tipo de contenido sensible,

se dispondrá para todo tipo de público, para todas las regiones y dispositivos

compatibles.

- Publicar y publicitar la app. El último paso para la publicación de la app. Con todo lo

anterior listo pasaríamos finalmente a la distribución de Exploratu.

71 Pruebas A/B: pruebas donde se crean dos o más versiones de algún elemento del sistema y se

prueba para ver cuál obtiene en mejores resultados.

Page 117: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

116

Al publicarlo, Google Play Store pasa a verificar que la aplicación cumple con las

políticas de del programa desarrollador antes de mostrarlo en la tienda. Este proceso

puede durar varios días, aunque normalmente suele ser de menos de 24 horas.

Con Exploratu, 23 horas después de enviarlo para la publicación, se recibió un correo

diciendo que no cumplía con todos los requisitos de la política del programa

desarrollador y si no se solucionaba no podría ser publicado en la tienda.

El problema resultó ser que, al haber seleccionado que la app podría usarse por

personas de todas las edades, hay un requisito extra para aplicaciones de realidad

aumentada que debe implementarse. Esto no es más que advertir a los usuarios de

que tengan cuidado con su alrededor al usar dicho modo, y en caso de que fuera

necesario, lo hagan bajo la supervisión de un adulto.

En Exploratu se ha solucionado dicho problema incluyendo un aviso al entrar en el

modo de AR. Con opciones para que no vuelva a salir el aviso o que se muestre la

próxima vez.

Figura 39: Modal de alerta avisando de haber entrado en el modo de AR

(Fuente propia)

Con este problema solucionado ya se ha podido publicar Exploratu en la Google Play

Store72 de forma correcta, siguiendo las recomendaciones de Google.

A partir de aquí queda publicitar la aplicación entre amigos, familiares, redes sociales

y portales tecnológicos, como Product Hunt73, para conseguir los primeros usuarios

y que la aplicación se dé a conocer.

72 https://play.google.com/store/apps/details?id=xyz.izadi.exploratu 73 https://www.producthunt.com/posts/exploratu

Page 118: Exploratu - rua.ua.es...8 Motivación, justificación y objetivo general La idea de este Trabajo Final de Grado surgió a finales de mi año de movilidad; mientras viajaba en metro

117