APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos
Abstract
Grado en Ingeniería Informática
Full text
Universidad de Valladolid Escuela de Ingeniería Informática Trabajo Fin de Grado Grado en Ingeniería Informática Mención en Tecnologías de la Información. APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos Autor: Alejandro Pescador González
Universidad de Valladolid Escuela de Ingeniería Informática Trabajo Fin de Grado Grado en Ingeniería Informática Mención en Tecnologías de la Información. APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos Autor: Alejandro Pescador González Tutora: Margarita Gonzalo Tasis
Resumen Con el avance de la tecnología y el aumento de su uso, el objetivo de este proyecto es el desarrollo de una aplicación con la que facilitar la labor de decidir por donde poder dar un paseo en una ciudad desconocida cuando se dispone de un tiempo limitado. Para llevar a cabo esta labor se hará uso de todo lo aprendido durante el estudio del grado en Ingeniería Informática junto con otras técnicas modernas que ayudarán con el desarrollo. Esto implica la adquisición de nuevos conocimientos y competencias, lo que resulta una manera ideal para acabar de cumplimentar el estudio del grado. Abstract As technology and its usage keeps in progress, this project’s purpose is to develop an app which helps to decide where they could go for a walk in an unknown city when their time is limited. For its development, the knowledge acquired during the degree of computer ingeniering will be put on it apart from other modern techniques. This implies that the acquisition of new knowledge and skills have been get it, which is an excellent way to finish the degree study
INDICE DE CONTENIDO: Capítulo 1: Introducción y contexto. ................................................................................ 1 1.1 Contexto y motivación. ........................................................................................... 1 1.2 Objetivos. ................................................................................................................ 1 1.3 Estudio de mercado. ............................................................................................... 2 1.3.1 Estudio de aplicaciones del mercado. .............................................................. 2 1.3.2 Público objetivo y necesidades de este. .......................................................... 6 1.4 Estructura de la memoria. ...................................................................................... 6 Capítulo 2: Planificación del proyecto. ............................................................................. 7 2.1 Metodología de trabajo (Scrum). ........................................................................... 7 2.1.1 Motivos para la elección de Scrum. ................................................................. 7 2.1.2 Artefactos Scrum usados en el proyecto. ........................................................ 7 2.1.3 Roles Scrum usados en el proyecto. ................................................................ 8 2.1.4 Eventos Scrum utilizados en el proyecto. ........................................................ 8 2.1.5 Herramientas usadas para apoyar Scrum (Azure DevOps). ............................. 9 2.1.6 Seguimiento de Scrum en el desarrollo del proyecto. ..................................... 9 2.2 Plan de gestión de riesgos. ................................................................................... 11 2.2.1 Identificación, plan de contingencia y mitigación. ......................................... 12 2.2.2 Seguimiento y monitorización de los posibles riesgos. ................................. 19 2.3 Presupuesto. ......................................................................................................... 19 2.3.1 Presupuesto simulado. ................................................................................... 20 2.3.2 Presupuesto real. ........................................................................................... 20 Capítulo 3: Análisis. ........................................................................................................ 23 3.1 Especificación de requisitos. ................................................................................. 23 3.1.1 Requisitos funcionales.................................................................................... 23 3.1.2 Requisitos de información. ............................................................................ 24 3.1.3 Requisitos no funcionales. ............................................................................. 24 3.2 Roles y actores del sistema. .................................................................................. 25 3.3 Diagrama de casos de uso. ................................................................................... 25 3.4 Descripción de los casos de uso. ........................................................................... 26 3.5 Diagrama de secuencia de los casos de uso. ........................................................ 33 3.6 Modelo de dominio............................................................................................... 41 Capítulo 4: Diseño. .......................................................................................................... 43 4.1 Arquitectura del sistema. ...................................................................................... 43 4.2 Diagrama de despliegue. ...................................................................................... 44
4.3 Frameworks utilizados. ......................................................................................... 45 4.3.1 Ionic. ............................................................................................................... 45 4.3.2 Angular Js. ...................................................................................................... 45 4.4 Patrones arquitectónicos. ..................................................................................... 46 4.4.1 Data Mapper. ................................................................................................. 46 4.4.2 Capas y databinder. ........................................................................................ 46 4.5 Modelo de base de datos. .................................................................................... 47 4.6 Diseño de la interfaz de usuario. .......................................................................... 47 4.7 Diagrama de clases de diseño. .............................................................................. 48 4.8 Diagrama de clases detallado. .............................................................................. 49 Capítulo 5: Implementación. .......................................................................................... 51 5.1 Herramientas. ....................................................................................................... 51 5.1.1 Visual Studio Code. ......................................................................................... 51 5.1.2 GitHub. ........................................................................................................... 51 5.1.3 Azure DevOps. ................................................................................................ 51 5.1.4 Android Studio. .............................................................................................. 52 5.1.5 Firebase. ......................................................................................................... 52 5.1.6 Turf. ................................................................................................................ 53 5.1.7 Mapbox. ......................................................................................................... 53 5.1.8 Draw.io. .......................................................................................................... 53 5.1.9 Astah. .............................................................................................................. 53 5.2 Decisiones de implementación y algoritmos utilizados. ...................................... 53 5.2.1 Versiones de Android soportadas. ................................................................. 53 5.2.2 Algoritmos usados. ......................................................................................... 54 5.2.3 Protección de datos y seguridad. ................................................................... 56 5.3 Organización del código. ....................................................................................... 57 Capítulo 6: Pruebas. ........................................................................................................ 59 6.1 Criterio de evaluación de las pruebas. .................................................................. 59 6.2 Definición y resultado de las pruebas. .................................................................. 60 6.3 Pruebas de usuarios reales. .................................................................................. 64 Capítulo 7: Conclusiones y trabajo futuro. ..................................................................... 65 7.1 Conclusiones. ........................................................................................................ 65 7.2 Trabajo futuro. ...................................................................................................... 65 Webgrafía y Bibliografía. ................................................................................................ 67 Anexo I: Guía de Instalación. .......................................................................................... 69
Anexo II: Guía de usuario. ............................................................................................... 71 Registro de usuario e inicio de sesión. ....................................................................... 71 Búsqueda de una localización. .................................................................................... 71 Creación y guardado de un paso ................................................................................ 72 Seguimiento de un paseo. .......................................................................................... 74 Eliminar un paseo. ...................................................................................................... 75 Cerrar sesión. .............................................................................................................. 75
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 2 técnico, como de usuario. Permitiendo así hacer uso de ella y para aquellas personas con un cierto conocimiento técnico, ampliar la funcionalidad y seguir con el desarrollo. 1.3 Estudio de mercado. En este apartado se analizarán las opciones existentes para realizar funciones similares a las de la aplicación que se quiere desarrollar. Del mismo modo se hará un estudio de cuál es el público objetivo de esta aplicación con el fin de ver cuál sería el lugar que ocuparía está en el mercado. 1.3.1 Estudio de aplicaciones del mercado. A continuación, se analizarán una serie de aplicaciones ya disponibles en el mercado, concretamente analizaremos opciones disponibles en Google Play. El análisis se hará con el fin de analizar las diferentes opciones existentes y ver implementaciones con funcionalidades similares a las que dispondrá nuestra aplicación. Maps.me: Se trata de una aplicación de mapas con funciones que yo consideraría básicas de una aplicación de este tipo, como puede ser la búsqueda de lugares de interés, búsqueda de direcciones, creación de rutas con puntos de inicio, final e intermedios y la descarga de mapas entre alguna otra. Figura 1. Imágenes capturadas durante las pruebas de la aplicación Maps.me. Fortalezas de la aplicación: - Esta aplicación permite la descarga de mapas de forma gratuita, además, esta descarga es bastante ligera y el uso de los mapas una vez descargados tiene muy buen rendimiento. - La creación de rutas una vez sabes utilizarla es bastante rápida y cómoda ya que con mantener pulsado un punto del mapa puedes directamente usarlo como punto de inicio, del mismo modo con el punto final y los puntos de paso de la ruta. - Uso de Open Street Map[1] para la gestión de los mapas, lo cual es una gran ventaja ya que se trata de un proyecto para la creación de mapas gratuito y que cuenta con una gran comunidad. - Al hacer las pruebas, el rendimiento en términos de tiempos de respuesta ha sido bastante satisfactorio ya que a pesar de usar un móvil relativamente antiguo todo ha funcionado de forma fluida.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 3 Limitaciones de la aplicación: - Las funcionalidades con las que cuenta son básicas comparado con otras aplicaciones populares como Google maps, y en cuanto a la funcionalidad básica de nuestro proyecto, no la cubre, pue no permite crear rutas adaptandose a un tiempo. - Los atajos para la creación de las rutas no son intuitivos y tampoco hay ningún tutorial ni manual que lo explique, por lo que a ciertas personas con poca experiencia en el uso de móvil les puede ser complejo su uso. - Por defecto no cuenta con la opción de mapa con vista de satélite que para mí personalmente es la más cómoda. Puntuación y valoración de la comunidad de usuarios en Google play: La puntuación de esta aplicación es de 4’6 estrellas sobre 5 y teniendo en cuenta que han votado más de un millón doscientos mil usuarios, me parece una valoración bastante buena. En cuanto a las valoraciones de los usuarios se puede ver que muchos de ellos están contentos con la aplicación y sus funcionalidades, pero en cuanto a lo negativo se repiten principalmente tres temas de queja, que son: la ausencia de indicaciones de voz cuando se realiza una ruta, problemas al descargar los mapas y ausencia o fallos a la hora de buscar o localizar ciertos puntos. Just Draw It: Esta aplicación tiene un enfoque similar al de la aplicación que quiero desarrollar ya que la funcionalidad básica de esta es el diseño de paseos, concretamente esta aplicación lo que te permite es preparar tus paseos con la simple acción de dibujar en el mapa por donde quieres pasear. Cuenta con una versión de pago con la que aumentan sus funcionalidades permitiendo la exportación de las rutas en formato ‘.gpx’, Soporte para mapas OpenStreetMap y la ausencia de límites a la hora de realizar búsquedas y compartir rutas. Figura 2. Imágenes capturadas durante las pruebas de la aplicación Just Draw It. Fortalezas de la aplicación:
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 4 - La versión gratuita permite personalizar la interfaz de los mapas pudiendo elegir la que más cómoda o agradable resulte para el usuario. - La versión de pago se puede conseguir a través de un pago único en vez de a través de una tarifa periódica. - El hecho de poder preparar una ruta con el simple gesto de dibujar cual se desea que sea el recorrido resulta fácil e intuitivo, además no es necesario dibujar exactamente por donde se va a caminar ya que la propia aplicación es capaz de corregir el recorrido, de manera que no trazas el recorrido exactamente por encima de una calle, camino o carretera transitable es capaz de corregirlo. - Permite compartir rutas creadas con otros usuarios. Limitaciones de la aplicación: - Alguna función interesante solo se puede acceder a través de la versión de pago. - Solo permite la creación de rutas con el método de dibujar sobre el mapa, no permite establecer un punto de inicio y uno de final ni la búsqueda de puntos concretos para la creación de rutas. Puntuación y valoración de la comunidad de usuarios en Google Play: La puntuación de esta aplicación es de 4’4 estrellas sobre 5 por lo que parece una buena puntuación, aunque únicamente han valorado la aplicación unas tres mil personas. En las valoraciones los usuarios la tendencia general es de agrado con la aplicación, destacando su buen funcionamiento y la facilidad de uso. Komoot: Se trata de una aplicación cuya finalidad principal es el diseño de rutas y la monitorización de estas durante su realización. A demás de esto también cuenta con opciones de red social en la que se puede añadir amigos, comunicarse con ellos y compartir la actividad. Como información adicional esta aplicación usa MapBox para la gestión de mapas que como ya hemos comentado se trata de una ventaja. Fortalezas de la aplicación: - Permite la conexión de la aplicación a través de bluetooth con una serie de dispositivo como bicis eléctricas, relojes inteligentes, ordenadores para bicicleta, etc. - La interfaz resulta intuitiva y aporta información sobre cómo se deben de hacer ciertas acciones. En general resulta sencillo la creación de nuevas rutas. - Permite adaptar las rutas teniendo en cuenta tu estado de forma, dependiendo del estado de forma que aportes, la aplicación adapta la velocidad media con la que se va a realizar la ruta. - La aplicación dispone de un apartado de monitorización de la ruta. - Para cada ruta aporta una ficha técnica muy completa con información como desnivel, tiempo, tipo de superficie por la que pasa la ruta, meteorología (se necesita versión premium).
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 5 Figura 3. Imágenes capturadas durante las pruebas de la aplicación Komoot. Limitaciones de la aplicación: - No permite la edición del estilo del mapa. Puntuación y valoración de la comunidad de usuarios en Google play: La puntuación de la aplicación es de 4’6 puntos sobre 5 lo cual me parece una buena puntuación teniendo en cuenta que han votado casi dos cientos mil usuarios. Sobre las valoraciones sí que se puede ver en este caso alguna en concreto de usuarios a los que no les funciona correctamente, pero en general parece que es todo lo contrario, de hecho, muchos de los usuarios que han añadido una valoración destacan funcionalidades de esta aplicación como la ficha técnica relativa a la ruta o la existencia de rutas que otras aplicaciones como Google Maps no tiene en cuenta. Por otro lado, también hay muchas quejas de que el precio de la versión premium es elevado para las funcionalidades que te ofrece.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 6 1.3.2 Público objetivo y necesidades de este. El público al que va dirigida esta aplicación es principalmente aquellas personas que desean dar un paseo y por alguna razón tienen tiempo de sobra y deciden usar un software que les ayude, con esta aplicación podrán crear variaciones de la ruta sin que esta sea necesariamente por el camino más corto, pudiendo elegir el tiempo en el que desean completar la ruta. La intención con esta aplicación es que no sea necesario un control avanzado de dispositivos móvil, si no que cualquier persona que sepa manejar mínimamente un teléfono inteligente y sea capaz de usar las funciones básicas de aplicaciones de mapas pueda también hacer uso de las funciones más básicas de la aplicación. En cuanto al sesgo de edad, esta aplicación no está orientada a un rango de edades en particular, aunque lógicamente hay que tener en cuenta que se trata de una aplicación para la generación de rutas por lo que su público comenzará normalmente con una edad mínima de unos 15-16 años ya que antes considero que lo normal no es hacer rutas solo, sino acompañado de algún adulto responsable. Por otro lado, ha de considerarse que esta aplicación no está orientada para gente que hace rutas de forma muy exigente o incluso profesional, sino que está orientado más hacia aquellas personas que de forma ocasional deciden dar un paseo y por no hacer el recorrido de siempre usan la aplicación para generar la ruta a realizar. 1.4 Estructura de la memoria. La organización del contenido del documento de la memoria va a ser el siguiente: Capítulo 1: Introducción y contexto. Este capítulo se trata de una presentación del proyecto, el problema que va a cubrir, los objetivos y un estudio de soluciones similares. Capítulo 2: Planificación del proyecto. En este capítulo se desarrolla la metodología de trabajo utilizada, la planificación de las actividades a realizar y se hace un seguimiento de cuales han sido los pasos seguidos en el desarrollo del proyecto. Capítulo 3: Análisis. Se realiza un estudio de las características que debe tener el sistema a desarrollar en el proyecto y como se desea que funcione. Capítulo 4: Diseño. Extiende el trabajo realizado en el capítulo anterior, adaptando lo obtenido en el análisis a un nivel más cercano a la implementación. También se explica la arquitectura utilizada por el sistema, la estructura de los datos, patrones de diseño software, etc. Capítulo 5: Implementación. Se trata de un capítulo puramente técnico en el que se explican las particularidades que han acontecido durante la implementación del sistema. Se indagará más en las tecnologías y herramientas utilizadas. Capítulo 6: Pruebas. Capítulo en el que se reflejan los ensayos hechos a la aplicación y los resultados obtenidos para comprobar que funciona correctamente. Capítulo 7: Conclusiones y trabajo futuro. Resumen de lo obtenido durante el desarrollo del proyecto y las posibles mejoras que podrían implementarse en esta.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 7 Capítulo 2: Planificación del proyecto. Capítulo dedicado a todo lo relacionado con la planificación del proyecto. Se explicará la metodología utilizada para trabajar, se realizará un análisis de los posibles riesgos relacionados con el proyecto, se estimará el presupuesto necesario para la realización del proyecto y por último se hará un seguimiento del trabajo realizado. 2.1 Metodología de trabajo (Scrum). Para el desarrollo del proyecto se ha seguido en todo momento una metodología ágil, en la que se han adaptado el marco de trabajo Scrum a las circunstancias de personal y disponibilidad de este proyecto. Más concretamente en este proyecto ha sido imprescindible adaptar la distribución de los roles, porque al tratarse de un TFG el proyecto lo han formado dos personas, entre los que había que repartir dichos roles. Por tanto, también ha sido importante adaptarse a la disponibilidad ya que se ha compaginado el desarrollo del TFG con un trabajo a jornada completa. 2.1.1 Motivos para la elección de Scrum. Para la planificación del proyecto se ha hecho uso de metodologías ágiles, concretamente del marco de desarrollo Scrum. Los motivos [2] por los que se ha tomado la decisión de usar esta metodología son los siguientes: - Una de las características básicas de Scrum es la realización de entregas periódicas y parciales, lo que permite ver de forma más clara el avance del proyecto y ayuda al equipo a mantenerse motivado, ya que con cada entrega se puede ver como el proyecto avanza. - Scrum nos va a permitir evitar confusiones con los clientes, ya que periódicamente van a tener acceso a entregas incrementales del producto en las que paulatinamente aumenta su funcionalidad y les permite decidir si la dirección tomada por el proyecto es la correcta o no. - Cuando el proyecto dio comienzo los requisitos no estaban definidos en su totalidad, sino que se irían adaptando a medida que avanzara el proyecto. Característica que encaja muy bien con la flexibilidad que otorga Scrum a la hora de ir redefiniendo y ajustando los requisitos. 2.1.2 Artefactos Scrum usados en el proyecto. Scrum está compuesto por una serie de artefactos [3] que se utilizan para el correcto desempeño del marco de trabajo, estos artefactos son: - Sprint: Es el periodo de tiempo predefinido por el equipo en el que se realiza la entrega de un incremento del proyecto. Normalmente el tiempo de un sprint se define rondando una duración de entre 2 a 4 semanas, pero dada la situación en la que se encontraba el equipo de desarrollo (el alumno) en este proyecto no se ha establecido una duración fija si no que se ha adaptado la
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 8 duración a la disponibilidad del equipo, quedando como resultado sprints que tenían una duración de en torno a 20 horas de trabajo. - Backlog: Lista dinámica compuesta de los requisitos y actividades que el equipo de desarrollo debe desempeñar para la realización del proyecto. Dentro del backlog se clasifican los elementos dependiendo de su criticidad, su prioridad, si se tratan de un bug, de una nueva funcionalidad, etc. - Sprint Backlog: Lista formada a partir de elementos del backlog que conforma los requisitos y actividades que se deben cumplir durante un sprint. - Incrementos: Fracción del proyecto que se ha desempeñado durante la actividad de un sprint y que se entrega como muestra del avance. 2.1.3 Roles Scrum usados en el proyecto. Un equipo Scrum normalmente está compuesto por un grupo de personas de entre cinco y doce personas, cada una de estas personas desempeña un rol [4] diferente que se centra en unas responsabilidades concretas, con el fin común que es sacar a flote el proyecto. En este caso en concreto hemos tenido que adaptar estos roles a un equipo formado de dos personas, un alumno haciendo su trabajo de fin de grado y su tutora. A continuación, se explica el reparto de los roles y las responsabilidades correspondientes a cada uno de ellos: - Product Owner: Se trata del encargado de gestionar los requisitos a medida que avanza el proyecto manteniendo el backlog estructurado, priorizado y detallado. A demás, tiene que entender a la perfección cuales son los objetivos del proyecto y cuáles son los pasos a seguir en cada sprint. En el proyecto que nos ocupa este rol le pertenece a la profesora encargada de tutorizar el TFG, ya que es ella quien tiene la idea final de cómo tiene que ser la aplicación. - Scrum Master: Es el encargado de que la metodología Scrum se lleve a cabo correctamente, para ello tiene que encargarse de eliminar todos aquellos contratiempos que aparezcan en el camino, con el fin de que en el proceso de scrum se sigan haciendo entregas de valor con cada iteración. Este rol será tomado principalmente por el alumno, pero no es un rol que desempeñe exclusivamente una persona por lo que será apoyado por el tutor cuando este lo considere. - Equipo de desarrollo: Es el grupo de personas que siguiendo la metodología Scrum se encarga de desarrollar el proyecto, autogestionándose para realizar una entrega cada vez que sea necesario. El alumno será el encargado de desempeñar este rol en su totalidad. 2.1.4 Eventos Scrum utilizados en el proyecto. Scrum define cinco eventos básicos con los que apoyar al proyecto a lograr su éxito, entre estos eventos encontramos los Sprint Planning, los Daily Scrum, Sprint Review y reunión de refinamiento. - Sprint Planning: Se trata de una reunión que se realiza antes de comenzar cada sprint en el que participan tanto el tutor como el alumno (roles de equipo de desarrollo, scrum master y Proyect Owner). En esta reunión se planifica el trabajo que se va a realizar en el sprint, siempre teniendo en mente que al final de este se debe haber una entrega parcial. - Daily Scrum: Es una reunión que se realiza de forma diaria en la que participa el alumno (con el rol de equipo de desarrollo) y culla finalidad es aclarar que hizo el día anterior para contribuir a las metas del sprint, que va a hacer en el día y si tiene algún impedimento para lograr la entrega. En este caso no se trata de una reunión como tal ya que solo participa una persona, pero antes de empezar con el trabajo cada día el alumno ha de tomarse unos minutos para pensar en estos tres aspectos.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 9 - Sprint review: Reunión que se celebra al finalizar el sprint en la que se hace un análisis del incremento creado en el sprint. En esta reunión participan tanto alumno como tutor (con los roles de equipo de desarrollo y Producto Owner). En esta implementación concreta de scrum el Sprint Review se ha celebrado junto con el Sprint planning, de forma que en una misma sesión alumno y tutor revisaban el trabajo realizado durante el sprint y posteriormente planificarán el siguiente. - Refinamiento: Reunión en la que participan todos los implicados en el proyecto en la que se hace una revisión y filtrado del Backlog, consiguiendo un backlog más limpio y centrado en el objetivo del proyecto. 2.1.5 Herramientas usadas para apoyar Scrum (Azure DevOps). Para llevar la gestión del backlog y todo lo relacionado con el proyecto se ha hecho uso de la herramienta proporcionada de forma gratuita por Microsoft llamada Azure DevOps. Se trata de una herramienta web con la que se puede llevar un seguimiento sencillo y visual de todas las actividades realizadas por el equipo de desarrollo, mantener un seguimiento actualizado de los sprints, el estado de cada tarea, asignación de estas, etc. Y todo esto a través de una interfaz de usuario fácil e intuitiva. Figura 4. Ejemplo de cómo se ve la gestión de un sprint en una pizarra de Kanban ofrecida por Azure DevOps. Se pude ver el Sprint 7 correspondiente al proyecto. 2.1.6 Seguimiento de Scrum en el desarrollo del proyecto. A continuación, se mostrarán las actividades realizadas en cada uno de los 16 sprints que han sido necesarios para desempeñar este proyecto: SPRINT 1 (01/01/2021-24/01/2021): - Inicio de la memoria: incluyendo actividades como preparar el formato del documento, planificación del proyecto, primera versión de requisitos, análisis del mercado. - Estudio de las tecnologías a utilizar en el proyecto: Estudiar funcionamiento de Mapbox, de las APIs rest de Mapbox y las bases de Ionic y su funcionamiento. - Instalación de todo el software necesario para la realización del proyecto: Ionic, Visual Studio Code, Android Studio, etc. SPRINT 2 (25/01/2021-01/02/2021):
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 10 - Inicio de la aplicación con la creación de una pantalla en la que aparezca un mapa centrado en la localización del dispositivo. SPRINT 3 (01/02/2021-08/02/2021): - Estudiar la manera en la que se puede implementar Firebase en el proyecto, ver si es viable y en caso de que lo sea, estudiar su funcionamiento. - Implementar cabecera en la página del mapa con un botón que abra un menú lateral con el que navegar entre las páginas de la aplicación. SPRINT 4 (08/03/2021-19/02/2021): - Implementar servicio de registro de usuario, inicio de sesión y cerrado de sesión con Firebase Authenticaction. SPRINT 5 (19/02/2021-07/03/2021): - Crear esquema de la base de datos e implementar métodos básicos para la utilización de esta. - Crear bocetos de las pantallas que van a formar la aplicación. SPRINT 6 (08/03/2021-15/03/2021): - Implementar método para la obtención de información de Firestore. SPRINT 7 (16/03/2021-26/03/2021): - Implementación de las vistas de la aplicación siguiendo los bocetos creados en el sprint 5. SPRINT 8 (27/03/2021-23/04/2021): - Comenzar con la funcionalidad de creación de paseo con actividades como, la búsqueda de un punto según un texto identificativo de la localización y diseñar algoritmo para ajustar un paseo al tiempo. - Ajustes en las vistas implementadas en el sprint 7. SPRINT 9 (24/04/2021-30/04/2021): - Escribir en la memoria información sobre la metodología de trabajo utilizada (SCRUM). - Continuar con la creación de paseos. Implementar el algoritmo para que se obtengan los paseos, dibujar los paseos en el mapa e introducir comprobaciones para que todos los datos necesarios para la realización del paseo estén disponibles. SPRINT 10 (01/05/2021-07/01/2021): - Implementar mecanismo para la limpieza del mapa en el proceso de creación de paseo. - Escribir en la memoria el análisis realizado de la aplicación. Estudio de roles y de los actores del sistema, actualizar requisitos, diagrama de casos de uso y Modelo de dominio. SPRINT 11 (07/05/2021-14/05/2021): - Implementar mecanismo para informar al usuario del tiempo mínimo para crear un paseo entre dos puntos. - Adaptar paseo al ritmo introducido por el usuario.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 11 - Mostrar paseos obtenidos como una lista al usuario. - Describir la arquitectura del sistema en la memoria. - Terminar la parte de análisis en la memoria con el modelo de clases inicial y el modelo de dominio. SPRINT 12 (14/05/2021-23/05/2021): - Sprint dedicado a la memoria en su totalidad. Repasar el capítulo de análisis y acabar el capítulo de diseño. SPRINT 13 (23/05/2021-06/06/2021): - Arreglar bug con la vista del mapa aparecido en el sprint anterior. - Actualizar requisitos en el capítulo de Análisis. - Escribir capítulo de conclusiones y trabajo futuro en la memoria. - Guardar paseos creados en la base de datos. SPRINT 14 (07/06/2021-12/06/2021): - Implementación de página de términos y condiciones de uso. - Repasar lo que está escrito en la memoria. - Arreglar bug de registro de usuario, dejó de funcionar. - Implementar funcionalidad de la página de paseos guardados. SPRINT 15 (13/06/2021-19/06/2021): - Escribir términos y condiciones de usuario. - Implementar página de seguimiento de paseo y borrado de paseos. - Escribir capítulo de implementación en la memoria. SPRINT 16 FINAL (10/06/2021-28/06/2021): - Escribir capítulo de pruebas en la memoria. - Revisar memoria. - Escribir Anexos y bibliografía en la memoria. - Repasar el código limando detalles vistos por los usuarios que han probado la aplicación, limpiando el código de depuración e introducción de lo logotipos de la aplicación. - Generar archivo ‘.apk’. 2.2 Plan de gestión de riesgos. Para la realización del plan de gestión de riesgos se va a seguir las indicaciones del libro Software Project Management [5], según el cual se considera que los riesgos son aquellos eventos o condiciones que en el caso de materializarse provocarían un efecto con respecto a los objetivos definidos para el proyecto, siempre teniendo en cuenta que los riesgos hacen referencia a los posibles problemas del futuro, no a los problemas actuales y que siempre están compuestos de una causa y un efecto. Para la realización de este proceso se llevarán a cabo cuatro actividades: - Identificación y definición de los riesgos. - Análisis de los riesgos y su impacto. - Diseño de un plan de control de los riesgos en caso de que estos llegaran a materializarse.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 18 Identificador R10 – Problemas de comunicación entre cliente y trabajador. Descripción Falta de entendimiento entre cliente y trabajador e incluso desacuerdo en algún punto del proyecto. Consecuencias Desmotivación y baja de la productividad del trabajador. Dudas a la hora de avanzar con el desarrollo. Impacto Moderado. Probabilidad 40% Exposición Media. Plan de Contingencia Realizar de forma estricta y periódica reuniones en las que fluya la comunicación. Comunicar cualquier duda o petición existente sin miedo al reproche o la desaprobación. Plan de mitigación Convocar una reunión en la que se trate como tema principal la comunicación entre cliente y trabajador, en la que cada uno exponga sus ideas y cómo ve la situación para tratar de llegar a un acuerdo y cambiar los métodos de comunicación. Tabla 11. Análisis del riesgo R10. Identificador R11 – Falta de seguimiento del proyecto. Descripción No llevar a cabo un proceso de monitorización suficiente durante la realización del proyecto. Consecuencias El proyecto toma un rumbo diferente el especificado en la planificación y la definición de los requisitos. Impacto Preocupante. Probabilidad 10% Exposición Media. Plan de Contingencia Mantener revisiones periódicas en las que ver cómo está siendo el avance del proyecto. Uso de metodologías agiles como SCRUM en la que se realizan reuniones diarias en las que se ve como avanza el trabajo. Plan de mitigación Revisar el trabajo hecho hasta el momento en el que se ve el problema y revisar la planificación. Tabla 12. Análisis del riesgo R11.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 19 Identificador R12 – Mal diseño. Descripción El diseño no se ajusta a las especificaciones requeridas por el cliente. Consecuencias El producto que se obtiene no es el solicitado por el cliente o sí que lo es, pero no tiene el funcionamiento óptimo. Impacto Preocupante. Probabilidad 50% Exposición Media. Plan de Contingencia Estudiar bien los requisitos solicitados por el cliente y ante cualquier duda acudir a ellos para que no haya mal entendidos. No precipitarse con la toma de decisiones de diseño. Plan de mitigación Localizar los errores y repetir el diseño. Tabla 13. Análisis del riesgo R12. 2.2.2 Seguimiento y monitorización de los posibles riesgos. Durante el desarrollo del proyecto se han materializado tres de los riesgos identificados en el apartado anterior, concretamente son los siguientes: - R1 Improvistos personales. Al desarrollarse el proyecto al mismo tiempo que se trabajaba, ha habido días que teniendo planificado trabajar en el TFG, no se ha podido, lo que ha provocado que algunos sprints se hayan alargado más de lo esperado. Pero es algo que era esperable por lo que no ha resultado crítico y aplicando los planes de mitigación se ha solventado. - R5 Desconocimiento de las tecnologías. Al igual que con el R1 esto ha provocado el retraso en la entrega de multitud de sprints. Para su mitigación como se ha indicado en el plan de gestión de riesgos lo que se ha hecho ha sido replanificar los sprints, priorizar aquellas tareas más críticas y dedicar tareas en los sprints más tempranos para estudio. - R3 Pérdida del trabajo realizado. En el sprint 13 fue necesario actualizar una serie de paquetes utilizados en el desarrollo del proyecto, esto hizo que la aplicación dejara de funcionar. Gracias a las copias periódicas y al sistema de gestión de versiones se pudo recuperar el trabajo en menos de una hora. 2.3 Presupuesto. En este apartado se hará un análisis estimado del coste del proyecto. Al tratarse de un TFG y tratarse de un proyecto que se desarrolla en un ámbito puramente académico, se va a realizar un análisis simulando que se tratara de un proyecto a realizar en un ámbito laboral lo más fiel a la realidad posible y por otro lado, se va a hacer un análisis más realista ajustando el presupuesto a las condiciones reales del proyecto.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 20 2.3.1 Presupuesto simulado. Lo primero que se va a analizar es el coste de la mano de obra. Teniendo en cuenta el salario base publicado en el BOE el 6 de marzo de 2018 [6], en el convenio colectivo de empresas de consultoría y teniendo en cuenta que la persona encargada de desarrollar el proyecto tiene una experiencia laboral inferior a tres años. Tenemos que el salario es de 7’71€/h. Analizando las horas de trabajo, tenemos que se van a cubrir las horas equivalentes a 12 créditos, lo cual nos da un total de 300 horas de trabajo por lo que si hacemos cuentas tenemos que la mano de obra tendrá un coste de 2.313€. Seguidamente analizamos los materiales que se utilizarán para trabajar en el proyecto. Para ello se necesitaría un ordenador con sus periféricos correspondientes a partir de 800€, un teléfono móvil para realizar las pruebas (200€) y material de oficina para apoyar en el trabajo (15€). En cuanto al material tenemos un gasto aproximado de 1.015€. También hay que ver cuál sería el coste asociado a pagar una estancia adecuada donde poder trabajar. Para ello tendría que contar con los servicios de internet, calefacción y electricidad cubiertos. El trabajo se va a desarrollar en la ciudad de Valladolid, por lo que para alquilar una casa con todo cubierto estaríamos hablando de un precio de unos 400€ al mes y teniendo en cuenta que para cumplir con las 300 horas de trabajo estimadas en el párrafo anterior se van a necesitar como mínimo dos meses si se realiza una jornada completa de ocho horas de trabajo diarias. Cubrir con el alojamiento y servicios de luz, agua, calefacción e internet tendría un coste de 800€. Por último, tendremos en cuenta los costes de las licencias software necesarias para el desarrollo del proyecto. La única licencia indispensable, será la de Astah profesional que tiene un precio de 7’50€ mensuales por lo que si contamos que el trabajo se desarrolla en dos meses tenemos un coste de licencias de 15€. Recapitulando los gastos comentados en el apartado tenemos que el proyecto requerirá un presupuesto estimado de 3.843€. 2.3.2 Presupuesto real. Al tratarse de un proyecto desarrollado en el contexto de un TFG muchos de los gastos comentados en el apartado anterior no tienen sentido. Primeramente, el coste de la mano de obra se suprime ya que el proyecto ha sido desarrollado por un estudiante que necesitaba de su realización para finalizar su formación de grado, y en este caso concreto no ha recibido ningún tipo de ayuda o beca. En cuanto a los gastos relacionados con los materiales son muy difíciles de calcular ya que el alumno ya dispone de un ordenador, los periféricos y material de oficina para la realización del TFG. A si que como no van a suponer ningún gasto nuevo se va a tomar como un gasto de 0€ en este aspecto. En cuanto al alojamiento y los servicios de agua, internet, calefacción y electricidad. No se dispone de los datos exactos por que el alumno vive en casa de sus padres y no tiene acceso a ellos. En lo que respecta a la licencia de Astah, es un gasto nulo ya que la Universidad de Valladolid proporciona una licencia de forma gratuita a sus alumnos.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 21
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 22
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 23 Capítulo 3: Análisis. A continuación, se realizará el análisis del sistema. Para ello se hará un estudio del problema que quiere cubrir la aplicación realizando una especificación de requisitos, se identificarán los roles del sistema, se analizarán los posibles casos de uso y se creará un modelo de dominio relacionado con el problema. 3.1 Especificación de requisitos. En este apartado se hará un análisis detallado de las necesidades que el sistema debe de satisfacer una vez esté desarrollado y puesto en producción. 3.1.1 Requisitos funcionales. A continuación, en la tabla 14 se puede ver la especificación de requisitos funcionales. ID NOMBRE DESCRIPCIÓN RF-001 Registro de usuario. El sistema permitirá a los usuarios registrarse con su correo en el sistema. RF-002 Inicio de sesión. El sistema requerirá que los usuarios a tengan sesión iniciada para poder hacer uso de este. RF-003 Recuperar contraseña olvidada. El sistema permitirá a los usuarios recuperar su contraseña si la han olvidado mediante el envío de un correo de recuperación. RF-004 Cerrar sesión. El sistema permitirá al usuario cerrar sesión en su cuenta. RF-005 Creación de paseos. El sistema permitirá al usuario generar un paseo ajustándose a una localización inicial, una localización final, un ritmo y un tiempo especificado por el usuario. RF-006 Opciones de paseos. El sistema proporcionará una lista de opciones de paseo en el proceso de creación de paseo siempre que sea posible. RF-007 Almacenado de paseos. El sistema permitirá almacenar los paseos creados por los usuarios y relacionados a su cuenta de usuario. RF-008 Paseos en cualquier dispositivo. El sistema permitirá acceder a los paseos asociados a una cuenta desde cualquier dispositivo en el que se inicie sesión. RF-009 Eliminar paseos. El sistema permitirá a los usuarios eliminar paseos. RF-010 Ajustes de la aplicación. El sistema permitirá a los usuarios almacenar ajustes personalizados en el sistema.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 24 RF-011 Tiempo mínimo. El sistema controlará que el usuario no genere un paseo con un tiempo menor que el de la ruta más rápida entre los puntos de inicio y final. RF-012 Seguridad y privacidad. El sistema debe garantizar la privacidad y seguridad de los datos de usuario. RF-013 Término s de uso y condiciones El sistema no podrá registrar un usuario si no acepta unos términos de uso y condiciones. RF-014 Seguimiento del paseo El sistema permitirá al usuario seguir un paseo mostrándole la ruta y su geolocalización en tiempo real. Tabla 14. Requisitos funcionales. 3.1.2 Requisitos de información. A continuación, en la tabla 15 pueden verse los requisitos de información. ID RI-001 Descripción Almacenar información correspondiente a los usuarios del sistema. Datos - Id de usuario. - Nombre. - Correo. - Fecha de Creación. - Ultima conexión. RI-002 Descripción Información correspondiente con los paseos generados por el sistema. Datos - Id del paseo. - Punto donde comienza el paseo. - Punto donde finaliza el paseo. - Duración del paseo. - Ritmo del paseo. - Conjunto de puntos por los que discurre el paseo. - Longitud del paseo. Tabla 15. Requisitos de información. 3.1.3 Requisitos no funcionales. A continuación, en la tabla 16 se puede ver la especificación de requisitos no funcionales.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 25 ID NOMBRE DESCRIPCIÓN RNF-001 Plataforma Android. El sistema estará desarrollado para ser usado en sistema operativo Android. RNF-002 GPS. El sistema hará uso del GPS del dispositivo para geolocalizar al usuario. RNF-003 Mapas de Mapbox. El sistema usará Mapbox como sistema proveedor de mapas. RNF-004 Autenticación con Firebase. El sistema usará Firebase Authentication para la gestión de las cuentas de usuario. RNF-005 Base de datos Firestore. El sistema usará como base de datos Firebase Firestore. RNF-006 Versión Android. El sistema debe poder ejecutarse en versiones Android 5.0 en adelante. RNF-007 No almacenar contraseña. El sistema no almacenará la contraseña de los usuarios en plano. RNF-008 Encriptar comunicaciones con la base de datos. El sistema debe encriptar las comunicaciones con la base de datos para garantizar seguridad de los datos. Tabla 16. Tabla de requisitos no funcionales. 3.2 Roles y actores del sistema. En esta aplicación únicamente interaccionaran con ella los usuarios registrados, que a efectos de funcionalidad no existirá diferencia entre ellos por lo que se pueden identificar dos actores, los usuarios registrados y los usuarios no registrados cuyo único caso de uso será el de registrarse. 3.3 Diagrama de casos de uso. El diagrama de la Figura 5 representa la funcionalidad que proporciona la aplicación, para la elaboración de este, se ha usado la información recopilada en la especificación de requisitos y el análisis de los roles del sistema.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 26 Figura 5. Diagrama de casos de uso de la aplicación 3.4 Descripción de los casos de uso. En este apartado se detallará cada uno de los casos de uso identificados en el diagrama de casos de uso del apartado anterior. CU-001 Registro de usuario Descripción El usuario se crea una cuenta de usuario en el sistema. Actor Usuario no registrado. Precondición El usuario que interactúa con la aplicación no está registrado en la aplicación. Flujo básico 1. El usuario selecciona la opción “Registro de usuario”. 2. El sistema solicita los datos requeridos para el registro de un usuario (correo electrónico, nombre y contraseña). 3. El usuario introduce los datos y selecciona la opción “Crear cuenta”. 4. El sistema muestra la página de inicio tras hacer inicio de sesión con los datos proporcionados. Postcondición No hay. Flujo alternativo 2.a, 3.a: El usuario cancela la operación, el caso de uso termina y queda sin efecto. 3.a: Las contraseñas introducidas por el usuario no coinciden, por lo que se vuelve al paso 2.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 27 3.b: El correo electrónico introducido por el usuario ya existe en el sistema por lo que el caso de uso vuelve al paso 2. Tabla 17. Descripción CU-001 CU-002 Iniciar sesión Descripción El usuario inicia sesión con su cuenta de usuario del sistema. Actor Usuario registrado. Precondición El usuario ya está registrado en el sistema (CU-001). El dispositivo se encuentra sin ninguna cuenta de usuario iniciada. Flujo básico 1. El usuario selecciona la opción “Iniciar sesión”. 2. El sistema solicita correo electrónico y contraseña. 3. El usuario introduce correo electrónico, contraseña y selecciona la opción “Enviar”. 4. El sistema realiza el inicio de sesión. Postcondición No hay. Flujo alternativo 1.a, 3.a: El usuario cancela la operación, el caso de uso finaliza y queda sin efecto. 3.a El usuario introduce datos erróneos, el sistema muestra un mensaje informativo y continua en el paso 2. 3.b El usuario no recuerda las credenciales de su cuenta para iniciar sesión por lo que el caso de uso continua en el caso de uso CU-004. Tabla 18. Descripción CU-002 CU-003 Cerrar sesión Descripción El usuario desea cerrar sesión en su cuenta del sistema. Actor Usuario registrado. Precondición El usuario ha iniciado sesión previamente en el sistema.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 34 Figura 6. Diagrama de secuencia del CU001.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 35 Figura 7. Diagrama de secuencia del CU002. Figura 8. Diagrama de secuencia del CU003.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 36 Figura 9. Diagrama de secuencia del CU004. Figura 10. Diagrama de secuencia del CU005.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 37 Figura 11. Diagrama de secuencia del CU006.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 38 Figura 12. Diagrama de secuencia del CU007. Figura 13. Diagrama de secuencia del CU008.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 39 Figura 14. Diagrama de secuencia del CU009. Figura 15. Diagrama de secuencia del CU010.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 40 Figura 16. Diagrama de secuencia del CU011.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 41 3.6 Modelo de dominio En la Figura 17 se puede ver un diagrama en el que se representa el modelo de dominio que de manera abstracta resume las entidades que forman parte del problema que va a cubrir la solución. Figura 17. Diagrama del modelo de dominio en análisis. A continuación, se explica las clases que forman el diagrama: Usuario: - Descripción: Clase que modela el perfil de los usuarios del sistema. - Atributos: - Uuid: identificador único de cada usuario en el sistema. - nombre: Nombre del usuario en el sistema. - correo: Correo electrónico del usuario con el que iniciará sesión. - FechaDeCreacion: Fecha en la que el usuario se creo la cuenta. - ultimaConexion: Fecha en la que el usuario se conectó al sistema por última vez. - configuración: Conjunto de parámetros de configuración que el usuario desea tener en el sistema. Paseo: - Descripción: Clase que modela los paseos generados por los usuarios. - Atributos: - Id: identificador único de cada paseo. - puntoInicial: Punto geodésico en el que da comienzo el paseo. - puntoFinal: Punto geodésico en el que finaliza el paseo. - duración: Tiempo que el usuario desea que lleve realizar la ruta del paseo. - ritmo: Velocidad que con la que el usuario estima que va a caminar y con la que se calculará el paseo. - camino: Conjunto de coordenadas por las que transcurrirá el paseo. - longitud: Distancia que cubrirá el paseo.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 42
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 43 Capítulo 4: Diseño. En este capítulo se presentará el diseño del sistema, haciendo énfasis en la solución del problema. Se analizará con detalle la arquitectura del sistema, tanto lógica como física, el modelo de datos necesario para cubrir las necesidades de la aplicación y los bocetos iniciales de la interfaz de usuario. 4.1 Arquitectura del sistema. La arquitectura utilizada por el sistema es una arquitectura en capas, como se puede ver en la Figura 18, para la que se ha utilizado una distribución de tres capas y un elemento llamado ‘binder’ que aparece entre las capas de presentación y Lógica de negocio debido al uso del framework web Angular, esto se explica con más detalle en el apartado 4.3.2. Figura 18. Modelo arquitectónico del sistema.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 50 Figura 26. Clases detallas de la capa de lógica de negocio. Figura 27. Clases detalladas de la capa de servicios.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 51 Capítulo 5: Implementación. En este capítulo se tratan las técnicas, herramientas, algoritmos y decisiones tomadas a lo largo del proceso de implementación de la aplicación. 5.1 Herramientas. A continuación, se describen todas aquellas herramientas utilizadas para el desarrollo del proyecto. 5.1.1 Visual Studio Code. Ha sido el editor de código elegido para el desarrollo del proyecto, se trata de un editor desarrollado y mantenido por Microsoft. El motivo principal por el que se ha usado es porque el alumno ya había trabajado con él y estaba familiarizado de antemano con su funcionamiento. Por otro lado, también cuenta con funcionalidades muy potentes que ayudan al desarrollo de este tipo de aplicaciones como la integración con Git para llevar el control de versiones, la gestión de línea de comandos del sistema, soporte para depuración, existencia de gran variedad de plugins desarrollados por la comunidad … lo que han hecho de esta herramienta la piedra angular sobre la que se ha desarrollado el proyecto. La versión utilizada ha sido la 1.57.1. 5.1.2 GitHub. Se trata de una compañía sin ánimo de lucro que ofrece alojamiento de repositorios en la nube utilizando el método de control de versiones de Git. GitHub cuenta con una página web y software de escritorio que permiten llevar el control de gestiones a través de una interfaz gráfica de usuario, lo que facilita el trabajo. También es importante su compatibilidad para sincronizar los repositorios remotos a través de Visual Studio Code, lo que se trata de una funcionalidad muy útil ya que en este proyecto se ha trabajado desde diferentes dispositivos y en diferentes localizaciones. 5.1.3 Azure DevOps. Herramienta proporcionada por Microsoft que en el ámbito de este proyecto ha sido utilizada para la gestión de Scrum en el proyecto. Esta herramienta proporciona una aplicación Web con todo lo necesario para hacer el seguimiento de un proyecto que use Scrum (Entre otros métodos de gestión). La aplicación permite personalización de la gestión, pero en el caso de este proyecto se ha usado la opción de Scrum por defecto existente en la propia Herramienta. Además, esta herramienta está
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 52 pensada para facilitar el trabajo en equipo por lo que facilita mucho la comunicación con el tutor ya que en todo momento este va a poder ver el estado de todas las actividades definidas en el backlog e incluso añadir o eliminar si fuera necesario. El seguimiento del estado de actividades es muy visual, utiliza una pizarra de Kanban como se puede ver en la Figura 28. Figura 28. Vista de la pizarra de Kanban en el seguimiento del Sprint 14 del proyecto. 5.1.4 Android Studio. Android Studio es el entorno de desarrollo oficial para aplicaciones Android. En este proyecto el uso de Android estudio ha sido principalmente para usar el emulador integrado y hacer pruebas sin necesidad de un dispositivo físico. También se ha usado para generar los archivos ejecutables que posteriormente serán instalados en los dispositivos donde se quiera hacer uso de la aplicación. 5.1.5 Firebase. Plataforma gestionada por Google [9], formada por una serie de herramientas en la nube orientadas a facilitar el desarrollo de aplicaciones móvil y páginas web. Entre los servicios que ofrece Firebase, podemos encontrar: Autenticación, base de datos no relacional, almacenamiento, alojamiento de servicios, servicios de machine learning y muchos más. Pero en lo que concierne a este proyecto hemos hecho uso de dos servicios, Firestore Database y Firestore Authentication. - Firestore Database: Se trata de un servicio de base de datos no relacional que se ha usado en el proyecto para almacenar todos los datos necesarios para el funcionamiento de la aplicación. La estructura de datos usada se ha detallado en el apartado 4.4 del capítulo de Diseño. - Firebase Authentication: Servicio que se ha usado para gestionar de forma sencilla y segura la creación, autenticación y gestión de cuentas de usuario. Para el uso de los servicios de Firebase ha sido necesario instalar el SDK para JavaScript, crearse una cuenta de Google, crear un proyecto de Firebase, registrar la aplicación y obtener el objeto de configuración de Firebase, en el que se encuentra toda la información necesaria para que la aplicación pueda hacer uso de los servicios de Firebase a través del SDK de forma segura.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 53 5.1.6 Turf. Turf [11] es una librería escrita en JavaScript cuyo fin es el procesamiento de datos geoespaciales a través de objetos GeoJson y puede ser ejecutado tanto lado del servidos como en lado del cliente. En este proyecto se ha hecho uso de esta librería para cubrir dos necesidades, que son: El mapeo de datos geoespaciales a objetos GeoJson cuando son devueltos de las API rest de Mapbox y por otro lado se ha usado para obtener los puntos de intersección entre Isócronas usados para calcular las rutas y que se explicarán más adelante con más detenimiento. 5.1.7 Mapbox. Mapbox [18] es un proveedor de mapas que ofrece una gran variedad de servicios relacionados con la geolocalización y los mapas. Para ello, hemos instalado la librería Mapbox GL JS, que se trata de una librería enfocada al trabajo con mapas vectoriales en aplicaciones web, del mismo modo se va a hacer uso de tres de las API REST que proporcionan. Las API REST que se usarán en este proyecto son las siguientes: - Geocoding: API que ofrece el servicio de transformar un texto relacionado con una ubicación en unas coordenadas y al revés, lo cual se ha usado para obtener las localizaciones de los lugares buscados por los usuarios en la aplicación. - Isochrone: API que ofrece el servicio de obtener perímetros isócronos desde unas coordenadas determinadas. En el próximo apartado se explicará más en detalle lo que es un perímetro isócrono, pero básicamente es que cada punto perteneciente al perímetro está a al mismo tiempo del punto especificado. - Directions: API que ofrece servicios para la creación de rutas, permite seleccionar entre diversos atributos como el medio de transporte, la velocidad, utilizar más de un punto de paso, formato de la respuesta, etc. 5.1.8 Draw.io. Es una herramienta de creación y edición de diagramas multiplataforma. La aplicación cuenta con multitud de posibilidades y muchos recursos ya creados que se pueden reutilizar. En este proyecto, se ha utilizado para hacer los bocetos iniciales de la interfaz y para la creación de algunos de los diagramas descritos en la memoria, como por ejemplo el de la Figura 18 con la arquitectura del sistema. 5.1.9 Astah. Se trata de una herramienta de modelado de software con la que se puede hacer diagramas UML, de secuencia, de flujo, mapas conceptuales, etc. Es uno de los softwares más estandarizados para el apartado de diseño. También cuenta con la posibilidad de usar plug-ins que aumentan su potencia y sus posibilidades. La universidad nos proporciona una licencia para hacer uso de el. 5.2 Decisiones de implementación y algoritmos utilizados. 5.2.1 Versiones de Android soportadas. La elección de versiones de Android en las que funcionará la aplicación se trata de una decisión fundamental a la hora de hacer una aplicación móvil, ya que de forma muy directa limitará el número de usuarios que podrán usar esta.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 54 En la Figura 29, se puede ver las proporciones de usuarios que soporta cada versión de Android en la actualidad. A demás de analizar los datos de uso de cada versión, al tratarse de una aplicación desarrollada con un framework orientado a la creación de aplicaciones híbridas, para poder ejecutarla es necesario que los dispositivos cuenten con Android Web View [15]. Si accedemos al portal de descarga de software Uptodown podemos ver que para instalar el componente web View exige una versión de Android superior a la 5.0 Lollipop. Con la información que hemos comentado en el párrafo anterior, lo más sensato es implementar la aplicación de manera que podamos asegurar que cualquier usuario que posea Android 5.0 o superior y el componente Web View instalado, pueda hacer uso de la aplicación. Por eso, en el capítulo 3 se especificó como requisito no funcional que el sistema debe de poder correr en versiones de Android 5.0 o mayor. Figura 29. Estadísticas de la distribución de usuarios en las diferentes versiones de Android. 5.2.2 Algoritmos usados. Este apartado resulta ser uno de los más importantes para comprender el funcionamiento de la aplicación, pues resuelve el problema de la creación de las rutas que se usarán como paseos, lo que responde al caso de uso principal del sistema. Para ello se ha creado un algoritmo, que haciendo uso de las APIS de Mapbox y sus limitaciones, nos permite generar un paseo que se adapte al tiempo y al ritmo que desee el usuario. Pero antes de explicar los pasos que componen este algoritmo es necesario tener claro el concepto de isócrona [10], este concepto lo que viene a representar un conjunto de puntos que a partir de un punto central resultan estar al mismo tiempo. En la Figura 31 se pueden ver dos áreas dibujadas de color azul y amarillo, donde el perímetro que rodea a estas áreas se trata de un conjunto de puntos isócronos con respecto de sus puntos centrales, pintados con un marcador azul. Con este concepto entendido ya podemos pasar a explicar el algoritmo: - Datos de entrada: Son los datos a partir de los cuales el algoritmo obtiene las rutas. Estos datos los conforman el punto geodésico de inicio de la ruta, el punto final de la ruta, la duración de la ruta (en segundos) y el ritmo con el que se quiere realizar la ruta (en metros por segundo). Todos estos datos serán datos que el usuario introduzca en la aplicación a través de la interfaz de usuario.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 55 - Datos de salida: El resultado del algoritmo será un grupo de rutas, formadas por un conjunto de coordenadas geodésicas que representan la ruta que cumple con las restricciones impuestas por los datos de entrada. - Precondiciones: La única precondición que exige este algoritmo es que el tiempo usado en la ruta más rápida entre el punto de inicio y el de final tiene que ser menor que la duración usada como dato de entrada. - Pasos del algoritmo: Serie de pasos que garantizan que si se cumple se obtiene una ruta que cumple con las limitaciones deseadas por el usuario: 1. Obtener valor de la duración adaptada en relación con el ritmo introducido para calcular la ruta. El motivo de este paso es que el método de la API de Mapbox encargada de calcular los isócronos usada más adelante en el algoritmo no permite adaptar la velocidad si no que lo hace con una velocidad por defecto de 1,42m/s o 5,1m/s. Para obtener este valor se utiliza la expresión de la Figura 30, donde v’ es la velocidad de entrada del algoritmo, t es el tiempo de entrada del algoritmo y t’ es la duración adaptada. 𝑡𝑡′= 𝑣𝑣′ 5,1 ⋅ 𝑡𝑡 Figura 30. Expresión para adaptar el tiempo de duración del paseo. 2. Con el valor obtenido en el primer punto y los puntos de inicio y de final hay que obtener los isócronos correspondientes a estos puntos y a t’/2. Para obtener estos isócronos se ha hecho a través de la API rest de Mapbox dedicada a este tipo de cálculos. 3. Obtenemos las intersecciones existentes entre los dos isócronos obtenidos. Si se cumple la precondición siempre va a existir como mínimo una. Para calcular estas intersecciones hemos usado el método lineIntersect proporcionado por la librería especializada en cálculos geoespaciales Turf. 4. Una vez obtenidos los puntos de las intersecciones lo que hay que hacer es calcular las rutas. Se obtendrán tantas rutas alternativas como puntos de intersección encontrados y para obtener estas rutas hay que hacer una petición a la API rest de Mapbox dedicada a este tipo de tareas, especificando la velocidad, el punto de inicio, un punto de intersección, el punto final e indicarle que se quiere obtener una ruta caminando. A esta petición la API respondería con los datos correspondientes a la ruta que se va a ofrecer al usuario. Figura 31. Representación de isócronas en una demo ofrecida por Mapbox.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 56 5.2.3 Protección de datos y seguridad. Al tratarse de una aplicación que utiliza y almacena datos personales es importante proporcionar protección y seguridad sobre estos. Y no solo como buena práctica si no que está legislado en el Reglamento General de Protección de Datos (GDPR). Por ello, lo primero es saber que datos personales se utilizan en la aplicación, cuáles de ellos se almacenan y de qué manera se almacenan estos datos. La aplicación desarrollada en el proyecto hace uso de los siguientes datos personales: nombre del usuario, correo electrónico, contraseña, la geolocalización de dispositivo y los paseos creados por los usuarios. De estos datos mencionados anteriormente se almacenan: el nombre, el correo, la contraseña y los paseos creados por el usuario. Mientras que la geolocalización sí que se usa, pero en ningún momento se almacena. Los datos de los que se ha hablado en el párrafo anterior se almacenan usando los servicios de Firebase Authentication y Firestore, pertenecientes a Google, entidad que en este proyecto tendrá el rol de procesador de datos, rol definido en el GDPR y que representa la persona física o virtual, autoridad pública, agencia u organismo que se encargará de procesa datos personales en nombre del responsable de los datos, en este caso el dueño del proyecto. Una vez especificados los roles y los datos involucrados en el sistema, es momento de comprobar que se cumple con los derechos de los usuarios definidos el GDPR: - Obligación por parte del dueño de los datos de comunicar de forma clara y concisa al usuario, los datos que se van a utilizar y el tratamiento de estos. Para ello se ha implementado una opción en el proceso de registro de usuario donde el usuario podrá leer una declaración con toda la información al respecto y que no podrá, finalizar con el proceso si no acepta expresamente dicha declaración. - Obligación de proporcionar a los usuarios la posibilidad de retirar su consentimiento, para ello se ha habilitado un buzón de correo electrónico donde se podrá comunicar a los responsables de los datos dicha intención para posteriormente retirar los datos del usuario. - Implementación del derecho al olvido, esto significa que, si el usuario decide eliminar su cuenta, el sistema debe ser capaz de eliminar sus datos de forma permanente. Para ello al igual que en el apartado anterior se ha habilitado un buzón donde comunicar a los responsables de los datos dicha intención. - Existencia de un delegado de protección de datos. Será la persona encargada de supervisar como se tratan los datos. En este caso el alumno será el que desempeñe este rol. - Existe un encargado del tratamiento de los datos que es la persona que dicta el fin y la forma en la que se van a tratar estos datos, en este caso el rol lo desempeñara el alumno. En cuanto a la seguridad [21] de los datos, se pueden destacar dos momentos bien diferenciados. El primero de estos momentos sería el transporte y la comunicación de los datos entre el dispositivo donde corre la aplicación y el almacenamiento físico de los datos, sobre esto Google nos garantiza que encripta los datos con HTTPS asegurando la integridad de los datos. Por otro lado, tenemos el momento en el que los datos se almacenan en reposo en sus correspondientes servidores, en concreto en los servicios usados por esta aplicación (Authentication y Firestore) también se nos garantiza que los datos se encuentran encriptados. Por último, sobre la seguridad se ha de destacar que los servicios de Google utilizados en la aplicación están certificados por los principales estándares de seguridad y privacidad ISO y SOC, más
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 57 concretamente Google nos garantiza el cumplimiento de los procesos de certificación ISO 27001, ISO 27017, ISO 27018, SOC 1, SOC 2 y SOC 3. 5.3 Organización del código. La organización del código viene marcada por la implementación de un proyecto con el framework Angular y la arquitectura de capas usada en el proyecto. Todo el código y los recursos usados en la implementación de la aplicación se encuentran en la carpeta src/app dentro del proyecto y dentro de ella se organiza en diferentes directorios: - Recursos multimedia: en la aplicación se hace uso de una serie de imágenes que se plasman en las diferentes vistas. Estos recursos se verán alojados en la carpeta src/app/assets/images. - Capa de dominio y de presentación: La implementación de estas capas se encuentra en lo que en Angular se conoce como componentes, cada componente está formado por dos archivos de presentación (.html y .scss) y de uno de lógica de negocio que se trata de un archivo escrito en typescript (derivación de Javascript usada en Angular). El código se encuentra en los directorios src/app/components y src/app/pages, en este último hay un directorio dedicado para cada ventana de la vista. - Capa de servicios: La implementación de esta capa se encuentra en el directorio src/app/services , donde se encuentran dos archivos, uno para la conexión con Firebase y otro para la conexión con Mapbox. - Carpeta de Guards: Es un directorio que contiene la lógica para restringir las rutas a las que pueden acceder los usuarios, se encuentra en la dirección src/app/guards
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 58
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 59 Capítulo 6: Pruebas. En este capítulo se describirá el proceso llevado a cabo para hacer las pruebas de funcionamiento a la aplicación desarrollada. Durante la implementación se han ido realizando pruebas de caja negra con cada método que aquí no se describen. En este apartado, nos centraremos en lo que son pruebas de caja negra guiadas por caso de uso, lo que significa que no se va a tocar el código, sino que se va a comprobar que cada caso de uso definido en el capítulo de análisis, está implementado y funciona correctamente. Las pruebas se llevarán a cabo en el dispositivo móvil personal del alumno con sistema operativo Android. Por último, en el apartado final del capítulo se hablará de las pruebas realizadas por usuarios reales a los que se les ha instalado la aplicación en sus móviles personales. 6.1 Criterio de evaluación de las pruebas. Lo primero, antes de ponerse a realizar las pruebas es definir las métricas que nos van a permitir entender el grado de éxito o de fracaso que se ha obtenido de ellas. En la tabla 28 se puede ver especificado el criterio que se va a seguir para evaluar las pruebas. Evaluación Criterio Buena El caso de uso se completa con éxito, obteniendo el resultado esperado y con un funcionamiento adecuado. Aceptable El caso de uso se completa con éxito, el resultado obtenido es bueno, pero existen problemas de rendimiento. Mejorable El caso se completa de una forma parcial, dando un resultado cercano al esperado. Bug No se obtiene el resultado esperado. Tabla 28. Clasificación de los resultados obtenidos en las pruebas.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 66 - Con el trabajo ya hecho y gracias a Ionic 4 sería interesante adaptar la aplicación para que funcionara en plataformas web e IOS. Esto debería ser un trabajo sencillo de lograr, pero sería necesario adaptar las interfaces a estas otras plataformas lo cual llevaría más trabajo. - Mejorar el seguimiento de los paseos, como reportó uno de los usuarios que probó la aplicación, estaría bien que la aplicación te informara si el ritmo está siendo bueno y que te diera indicaciones de por dónde va el paseo. - Para aumentar el público objetivo de la aplicación sería interesante introducir algún tipo de gamificación en los paseos, ya sea llevando la cuenta de los paseos e introduciendo un sistema de puntos y socialización con otras cuentas, o bien que durante el seguimiento del paseo se introdujeran funciones que hagan del paseo parecer un juego. - Añadir opciones de socialización en la aplicación, introduciendo funcionalidades para compartir paseos e importar paseos de otros usuarios. - Mejorar el algoritmo de creación de rutas evitando que un paseo pase dos veces por la misma calle o añadiendo la posibilidad de que el usuario pueda seleccionar un punto intermedio por el que quiere que pase el paseo. - Añadir funcionalidad para editar un paseo ya creado, cambiando los valores introducidos en la creación.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 67 Webgrafía y Bibliografía. [1] Martínez, S. (2020, 7 octubre). Qué es Open Street Maps y cómo descargar sus datos. Cursos GIS | TYC GIS Formación. https://www.cursosgis.com/que-es-open-street-maps-y-comodescargar-sus-datos/ [2] Beneficios de Scrum. (2008, 4 agosto). Beneficios de Scrum. https://proyectosagiles.org/beneficios-de-scrum/ [3] Qué es SCRUM. (2018, 9 octubre). Proyectos Ágiles. https://proyectosagiles.org/que-esscrum/ [4] Scrum: roles y responsabilidades. (2019, 14 enero). Deloitte Spain. https://www2.deloitte.com/es/es/pages/technology/articles/roles-y-responsabilidadesscrum.html [5] Hughes, B., & Cotterell, M. (2009). Software Project Management (5.a ed.). McGraw-Hill Education. [6] Ministerio de Empleo y Seguridad Social. (2018, marzo). Resolución de 22 de febrero de 2018, de la Dirección General de Empleo, por la que se registra y publica el XVII Convenio colectivo estatal de empresas de consultoría y estudios de mercado y de la opinión pública. BOE. https://www.boe.es/boe/dias/2018/03/06/pdfs/BOE-A-2018-3156.pdf [7] Open-Source UI Toolkit to Create Your Own Mobile or Desktop Apps. (2020, 7 diciembre). Ionic Docs. https://ionicframework.com/docs [8] Patil, S. (2019). Two-way Binding in Angular. Two way data binding. https://www.linkedin.com/pulse/two-way-binding-angular-sagar-patil/ [9] Add Firebase to your JavaScript project. (2021, 18 junio). Documentación Firebase. https://firebase.google.com/docs/web/setup [10] Documentation. (s. f.). Documentación Mapbox. Recuperado 25 de junio de 2021, de https://docs.mapbox.com/ [11] Turf.js | Advanced Geospatial Analysis. (s. f.). Documentación Turf.js. Recuperado 25 de junio de 2021, de https://turfjs.org/ [12] I. (2021). Your First Ionic App: Angular - Ionic Documentation. Ionic Docs. https://ionicframework.com/docs/angular/your-first-app [13] Kumar, V. (2017). How to Integrate Mapbox GL JS Maps with an Ionic Application. Information and Technology Blog - Gowriter. https://www.gowriter.in/2017/02/how-tointegrate-mapbox-gl-js-maps-with.html [14] Protección de Datos conforme al reglamento RGPD. (2021, 26 marzo). Your Europe. https://europa.eu/youreurope/business/dealing-with-customers/data-protection/dataprotection-gdpr/index_es.htm#shortcut-0 [15] Fernández, Y. (2021, 23 marzo). WebView del sistema Android: qué es, qué beneficios tiene y por qué hay que tenerlo actualizado. Xataka. https://www.xataka.com/basics/webview-sistema-android-que-que-beneficios-tiene-quehay-que-tenerlo-actualizado [16] Download Android Studio and SDK tools | Android Studio. (s. f.). Android Developers. Recuperado 25 de junio de 2021, de https://developer.android.com/studio?hl=es [17] Primeros pasos: Escribe, prueba e implementa tus primeras funciones. (s. f.). Firebase, primeros pasos. Recuperado 25 de junio de 2021, de https://firebase.google.com/docs/functions/get-started?hl=es [18] API Reference | Mapbox GL JS. (s. f.). Mapbox. Recuperado 25 de junio de 2021, de https://docs.mapbox.com/mapbox-gl-js/api/ [19] colaboradores de Wikipedia. (2020, 2 abril). Mapa isócrono. Wikipedia, la enciclopedia libre. https://es.wikipedia.org/wiki/Mapa_is%C3%B3crono
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 68 [20] Privacidad y seguridad en. (s. f.). Firebase. Recuperado 25 de junio de 2021, de https://firebase.google.com/support/privacy?hl=es-419#data_encryption
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 69 Anexo I: Guía de Instalación. En este anexo, se describirá el proceso requerido para poner la aplicación en marcha en un smartphone con sistema operativo Android superior a la versión 5.0 y tener el WebView instalado, que por defecto viene en todos los dispositivos Android. Lo primero será hacerse con el archivo ‘PaseAppV1.0.apk’ que podemos encontrar en el GitLab dedicado al proyecto y tener controlada su ubicación en el dispositivo. El archivo se puede encontrar en l última versión de entrega existente (Resumen del proyecto > Versiones) o bien en el directorio raíz del proyecto. La dirección de acceso a este repositorio es la siguiente: https://gitlab.inf.uva.es/alepesc/PaseApp El segundo paso consiste en activar los permisos para instalar aplicaciones desconocidas lo cual será necesario ya que el ‘.apk’ no se encuentra firmado de forma oficial y no está distribuido por los servicios de Google Play. Para activar estos permisos hay que acceder a la siguiente opción dentro de los ajustes del dispositivo: Ajustes > Protección y privacidad > Permisos especiales > Instalar aplicaciones desconocidas. Este proceso puede variar dependiendo del dispositivo, pero en general suele ser algo parecido a esto. El tercer paso es abrir un gestor de archivos instalado en el teléfono, ir a la ubicación donde se encuentra el archivo ‘.apk’, pulsar sobre él y aceptar la instalación de la aplicación en el dispositivo. Con este paso la aplicación ya estaría instalada en el teléfono. Por último, para poder utilizar la aplicación hay que darle permisos para utilizar la ubicación del dispositivo, asegurarnos de tener activa la ubicación y tener una conexión a internet estable. Para dar el permiso de acceso a la ubicación a la aplicación, cuando se vaya a abrir la aplicación ésta te solicitará el permiso y automáticamente te abrirá los ajustes donde darle esos permisos. Sin embargo, si se quisieran dar los permisos manualmente hay que acceder a la siguiente opción dentro de los ajustes del dispositivo: Ajustes > Aplicaciones > PaseApp > Permisos > Permisos de Ubicación. Al igual que antes, las opciones para dar permisos pueden variar entre dispositivos, pero en la mayoría serán muy parecidas.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 70
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 71 Anexo II: Guía de usuario. Una vez seguidos los pasos del anexo I y ya teniendo la aplicación instalada y funcionando en un dispositivo, vamos a explicar con ejemplos el funcionamiento de la aplicación. Registro de usuario e inicio de sesión. Lo primero que nos encontraremos al entrar en la aplicación será con la página de inicio de sesión (Figura 32 a la izquierda) donde se nos pedirá un correo asociado a una cuenta y su contraseña. En caso de no tener aún una cuenta lo primero que se debe hacer es registrarse. Para realizar el registro, desde la página de inicio de sesión se pulsará en el botón de registro y se accederá a la pantalla de registro (Figura 32 las dos capturas centrales) de usuario donde el usuario deberá introducir su nombre, correo electrónico, contraseña y aceptar los términos y condiciones de uso de la aplicación. Si quisiera leer los términos, en esta página tenemos un botón donde pone “Leer términos y condiciones”, el cual nos llevará a una página con el texto. Una vez introducidos los datos y pulsado al botón de registrar usuario, se nos abrirá la página de Home con el mapa (Figura 32 a la derecha del todo), y en caso de no haber dado aún permisos para acceder a la ubicación, se nos abrirá un cuadro de diálogo donde activar dichos permisos y la sesión de la nueva cuenta se iniciará automáticamente. En el caso de ya tener una cuenta creada en el sistema lo único que habría que hacer para iniciar sesión sería introducir tu correo y contraseña en la página de inicio de sesión. Figura 32. Pagina de inicio de sesión y de registro de usuario, en la creación de un nuevo usuario. Búsqueda de una localización. Una vez iniciada la sesión y estando en la página de Home (Figura 33) podemos hacer búsqueda de localizaciones. Para ello lo que hay que hacer es introducir el nombre de la localización que queremos en el cuadro de búsqueda de la parte superior izquierda lo que desplegará una lista de posibles localizaciones debajo del cuadro de texto, seleccionaremos la que más se ajuste a nuestra búsqueda y entonces el mapa dibujará un marcador sobre dicha localización y se trasladará hasta ella. Se puede ver un ejemplo en la Figura 33 haciendo una búsqueda de la ciudad de Valladolid.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 72 Figura 33. Pagina Home con mapa y búsqueda de localización. Creación y guardado de un paso La creación de un paseo se hace desde la página Home, a través del menú que se despliega desde la parte inferior de la pantalla al pulsar el botón azul que aparece sobre el mapa en la parte inferior derecha. Una vez desplegado el menú de creación de paseos (Figura 34) lo que hay que hacer es introducir en formato de texto la ubicación donde queremos que comience el paseo, con la misma dinámica que la búsqueda de una localización. Una vez añadido el punto de inicio se pintará sobre la localización deseada un marcador de color verde que se podrá ajustar arrastrándolo con el dedo por el mapa, y ahí donde se deje el marcador, será el punto de inicio del paseo. Para el punto de finalización del paseo, hacemos el mismo proceso que con el punto de origen, esta vez el marcador que aparecerá será rojo (Figura 34).
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 73 Figura 34. Pagina Home en la creación de un paseo, añadiendo el punto de inicio. Lo siguiente, será seleccionar el tiempo y el ritmo que se desea que dure el paseo. Para ello hay que pulsar donde pone “Duración” y seleccionar una de las opciones posibles, y hacer lo mismo con el ritmo. En la figura 35 se puede ver un ejemplo de cómo se selecciona la duración y el ritmo del paseo. Figura 35. Pagina Home, ejemplo de la selección de ritmo y duración en la creación de un paseo. Por último, para crear un paseo, hay que pulsar en el botón de “vista previa”, la aplicación calculará todas las opciones y las dibujará sobre el mapa. El usuario tendrá que seleccionar una de ellas, ya sea pulsando sobre la ruta que quiere o bien pulsando en la lista de opciones que se desplegará en el menú de creación de paseos.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 74 Figura 36. Pagina Home, añadiendo punto de fin, duración, ritmo, generando opciones de paseo y seleccionando una de ellas. Una vez se ha creado el paseo, si se desea guardar, lo único que hay que hacer es añadir un texto en el campo de nombre y pulsar sobre el botón “guardar”, el paseo se guardará y si todo ha ido bien la aplicación mostrará un mensaje indicándolo. Seguimiento de un paseo. Para hacer el seguimiento de un paseo, previamente éste debe de haber sido creado y guardado. Con el paseo creado y guardado, accedemos a la lista de paseos guardados desde del menú lateral, que se puede abrir desde cualquier punto de la aplicación deslizando desde el lateral izquierdo o bien desde la página de Home, pulsando en el botón que aparece en la parte izquierda de la cabecera. En el menú lateral pulsamos sobre el texto “Paseos Guardados”, lo que nos llevará a la página de paseos guardados donde seleccionaremos el paseo que deseamos seguir. Esto abrirá la pagina de seguimiento donde se verá la ruta pintada sobre el mapa y los dos marcadores de inicio y final. Una vez llegados a este punto, si pulsamos en el botón de geolocalización que aparece en la parte superior derecha del mapa, se dibujará en el mapa un punto situado en el lugar donde nos encontramos y que nos seguirá según nos vayamos moviendo, pudiendo ver en todo momento donde nos encontramos y por dónde hay que seguir el paseo.
APP DE PASeo-GAM: estudio y generación de rutas de paseo por tiempos 75 Figura 37. Manu lateral, página de paseos guardados y de seguimiento. Eliminar un paseo. Si el usuario desea eliminar un paseo, lo debe hacer desde la página de seguimiento de paseo, en la parte derecha de la cabecera aparecerá un icono de una papelera, el usuario deberá pulsar sobre él e inmediatamente le aparecerá una ventana que le pedirá confirmar si desea eliminar el paseo. Una vez confirmas, el paseo se elimina y la aplicación nos lleva a la página Home. Figura 38. Pagina de seguimiento, confirmar eliminar un paseo. Cerrar sesión. Para cerrar sesión hay que acceder a la página de Ajustes desde el menú lateral, y una vez abierta esta pestaña pulsar sobre el botón de cerrar sesión. La aplicación cerrará la sesión y se irá a la página de inicio de sesión.