85
Implementación de una app móvil para realizar deporte en casa Memoria FACULTAD DE INFORMÁTICA DE BARCELONA - Q1 Curso 2020/2021 Especialización en Ingeniería del Software Autor: Marc Obiols Rubio Directora: María José Casañ Guerrero Fecha: 22/01/2021

Implementación de una app móvil para realizar deporte en casa

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Implementación de una app móvil para

realizar deporte en casa

Memoria

FACULTAD DE INFORMÁTICA DE BARCELONA - Q1 Curso 2020/2021

Especialización en Ingeniería del Software

Autor: Marc Obiols Rubio

Directora: María José Casañ Guerrero

Fecha: 22/01/2021

Resumen

Este proyecto consiste en diseñar y desarrollar una aplicación móvil que permita a los

usuarios planificar, controlar y gestionar su actividad física desde su casa. La App

contará con funcionalidades que posibilitaran al usuario el seguimiento y evolución de

su estado físico. Por otro lado, el usuario podrá hacer un seguimiento de su

alimentación, así como posibles cambios en ella a través de varias herramientas.

En primera instancia se define la problemática y se detallan los objetivos y requisitos.

Posteriormente, se elaboran los informes del alcance, planificación temporal,

presupuesto económico y sostenibilidad del proyecto. Finalmente, en las etapas de

diseño, arquitectura e implementación se desarrolla la aplicación, se especifican los

detalles técnicos y las decisiones tomadas en cada iteración.

Resum

Aquest projecte consisteix a dissenyar i desenvolupar una aplicació mòbil que permeti

als usuaris planificar, controlar i gestionar la seva activitat física des de casa. L'App

comptarà amb funcionalitats que possibilitin a l'usuari el seguiment i evolució del seu

estat físic. D'altra banda, l’usuari podrà fer un seguiment de la seva alimentació, així

com possibles canvis en ella a través de vàries eines.

En primera instància es defineix la problemàtica i es detallen els objectius i requisits.

Posteriorment, s'elaboren els informes de l'abast, planificació temporal, pressupost

econòmic i sostenibilitat del projecte. Finalment, en les etapes de disseny, arquitectura

i implementació es desenvolupa l'aplicació, s'especifiquen els detalls tècnics i les

decisions preses en cada iteració.

Abstract

This project consists of designing and developing a mobile application that allows users

to plan, control and manage their physical activity from home. The App will have

functionalities that will enable the user to monitor and evolve their physical condition. On

the other hand, the user will be able to keep track of their feeding, as well as possible

changes in it through various tools.

In the first instance, the problem is defined and the objectives and requirements are

detailed. Subsequently, reports on the scope, time planning, economic budget and

sustainability of the project are prepared. Finally, in the design, architecture and

implementation stages, the application is developed, the technical details and the

decisions made in each iteration are specified.

Índice de contenido

1 Contextualización .................................................................................................. 10

1.1 Introducción ....................................................................................................... 10

1.2 Definición de conceptos .................................................................................... 10

1.2.1 Actividad física ............................................................................................ 10

1.2.2 Dieta equilibrada ......................................................................................... 11

1.2.3 Indicadores de la salud ............................................................................... 12

1.3 Identificación del problema ................................................................................ 14

1.4 Actores implicados ............................................................................................ 16

2 Justificación ........................................................................................................... 17

2.1 Soluciones existentes ........................................................................................ 17

2.2 Justificación de la elección ................................................................................ 19

3 Alcance ................................................................................................................... 20

3.1 Objetivos ........................................................................................................... 20

3.2 Requisitos no funcionales .................................................................................. 21

3.3 Riesgos y obstáculos......................................................................................... 22

4 Metodología ............................................................................................................ 23

4.1 Herramientas de seguimiento ............................................................................ 23

5 Planificación proyecto ........................................................................................... 25

5.1 Definición tareas ................................................................................................ 25

5.1.1 Gestión del proyecto ................................................................................... 26

5.1.2 Iteración 1 ................................................................................................... 26

5.1.3 Iteración 2 ................................................................................................... 27

5.1.4 Iteración 3 ................................................................................................... 29

5.1.5 Documentación final ................................................................................... 30

5.2 Resumen tareas ................................................................................................ 31

6 Estimaciones y Diagrama de Gantt ..................................................................... 32

7 Gestión del riesgo: planes alternativos y obstáculos ......................................... 34

8 Presupuesto ........................................................................................................... 35

8.1 Identificación de costes ..................................................................................... 35

8.1.1 Costes personal .......................................................................................... 35

8.1.2 Recursos materiales ................................................................................... 37

8.1.3 Contingencias ............................................................................................. 37

8.1.4 Imprevistos ................................................................................................. 38

8.1.5 Presupuesto final ........................................................................................ 38

8.2 Control de gestión ............................................................................................. 38

9 Sostenibilidad ........................................................................................................ 40

9.1 Autoevaluación .................................................................................................. 40

9.2 Dimensión económica ....................................................................................... 40

9.3 Dimensión ambiental ......................................................................................... 41

9.4 Dimensión social ............................................................................................... 41

10 Definición requisitos ........................................................................................... 43

10.1 Proceso de adquisición ................................................................................... 43

10.2 Requisitos funcionales ..................................................................................... 44

10.2.1 Gestión de usuario .................................................................................... 44

10.2.2 Gestión Rutinas ........................................................................................ 45

10.2.3 Gestión Alimentación ................................................................................ 46

10.2.4 Gestión dietas ........................................................................................... 47

10.2.5 Gestión ejercicios ...................................................................................... 47

10.3 Requisitos no funcionales ................................................................................ 48

11 Arquitectura y diseño del sistema ...................................................................... 50

11.1 Componentes del sistema ............................................................................... 50

11.2 Patrones utilizados .......................................................................................... 52

11.2.1 Modelo Vista Controlador .......................................................................... 52

11.2.2 Data transfer object (DTO) ........................................................................ 53

11.2.3 Singleton ................................................................................................... 53

11.2.4 Adaptador ................................................................................................. 53

11.2.5 ViewHolder ............................................................................................... 54

11.3 Diseño BackEnd .............................................................................................. 55

11.4 Esquema base de datos .................................................................................. 56

11.5 Interfaz gráfica ................................................................................................. 58

11.5.1 Pantallas de la aplicación .......................................................................... 58

11.5.2 Popups ..................................................................................................... 62

12 Implementación.................................................................................................... 64

12.1 Tecnologías utilizadas ..................................................................................... 64

12.2 Desarrollo ........................................................................................................ 66

12.2.1 Sprint 1 ..................................................................................................... 66

12.2.2 Sprint 2 ..................................................................................................... 68

12.2.3 Sprint 3 ..................................................................................................... 70

13 Testing .................................................................................................................. 71

13.1 BackEnd .......................................................................................................... 71

13.2 FrontEnd ......................................................................................................... 73

14 Planificación final ................................................................................................ 75

15 Conclusiones ....................................................................................................... 77

15.1 Consolidación competencias técnicas ............................................................. 78

15.2 Trabajo futuro .................................................................................................. 80

16 Referencias .......................................................................................................... 81

Índice figuras

Figura 1: Cálculo del TMB .......................................................................................... 13

Figura 2: Actividad física mujeres y hombres .............................................................. 14

Figura 3: Actividad física mujeres ............................................................................... 15

Figura 4: Actividad física hombres .............................................................................. 15

Figura 5: Captura pantalla Sworkit entrenador ............................................................ 18

Figura 6: Captura pantalla Lifesum ............................................................................. 18

Figura 7: Diagrama Gantt ........................................................................................... 33

Figura 8: Disponibilidad Heroku .................................................................................. 49

Figura 9: componentes del sistema ............................................................................ 50

Figura 10: Diagrama del patrón MVC .......................................................................... 52

Figura 11: Esquema base de datos ............................................................................ 56

Figura 12: Pantalla carga ............................................................................................ 58

Figura 13: Iniciar sesión .............................................................................................. 58

Figura 14: Registrarse ................................................................................................ 58

Figura 15: Menú principal .......................................................................................... 59

Figura 16: Datos usuario ............................................................................................ 59

Figura 17: Ejercicios .................................................................................................. 59

Figura 18: Información ejercicio ................................................................................. 59

Figura 19: Rutinas usuario ......................................................................................... 59

Figura 20: Rutinas Predeterminadas ........................................................................... 59

Figura 21: Rutinas de otros usuarios .......................................................................... 60

Figura 22: Consultar ejercicios Rutina externa ............................................................ 60

Figura 23: Buscador alimentos ................................................................................... 60

Figura 24: Historial de alimentación ............................................................................ 60

Figura 25: Alimentos consumidos ............................................................................... 60

Figura 26: Dieta .......................................................................................................... 60

Figura 27: Consultar rutina propia ............................................................................... 61

Figura 28: Ejecución rutina ......................................................................................... 61

Figura 29: Alimentación actual .................................................................................... 61

Figura 30: Progreso usuario ........................................................................................ 61

Figura 31: Información usuario ................................................................................... 61

Figura 32: Dietas ........................................................................................................ 61

Figura 33: Modificar datos usuario .............................................................................. 62

Figura 34: Consultar/añadir datos alimento ................................................................. 62

Figura 35: Eliminar rutina…….. ................................................................................... 62

Figura 36: Eliminar alimento…. ................................................................................... 62

Figura 37: Filtrar ejercicios…… ................................................................................... 62

Figura 38: Gráfico de alimentación consumida ........................................................... 62

Figura 39: Filtrar rutinas externas……. ....................................................................... 63

Figura 40: Modificar ejercicio de rutina ....................................................................... 63

Figura 41: Añadir ejercicio a rutina……… ................................................................... 63

Figura 42: Crear/modificar rutina………. . .................................................................... 63

Figura 43: Emuladores utilizados en las pruebas ........................................................ 73

Índice tablas

Tabla 1: planificación temporal en etapas ................................................................... 25

Tabla 2: Resumen tareas ............................................................................................ 30

Tabla 3: Riesgos y planes alternativos ........................................................................ 34

Tabla 4: Costes por cada perfil del proyecto ............................................................... 35

Tabla 5: Coste personal por actividad ......................................................................... 36

Tabla 6: Costes materiales ......................................................................................... 37

Tabla 7: Costes software ............................................................................................ 37

Tabla 8: Costes con contingencias ............................................................................. 37

Tabla 9: Costes imprevistos ........................................................................................ 38

Tabla 10: Presupuesto proyecto ................................................................................. 38

Tabla 11: Resumen tareas final .................................................................................. 76

10

1 Contextualización

1.1 Introducción

Este trabajo final de grado corresponde a la especialidad de Ingeniería del Software

dentro del Grado en Ingeniería Informática, impartido por la Facultad de Informática de

Barcelona [1] (FIB).

El proyecto procura proporcionar una aplicación móvil para que el usuario pueda

alcanzar sus objetivos personales combinando algunos aspectos de su forma de vida

como hacer más actividad física y una dieta más equilibrada, sin la necesidad de estar

inscrito en ninguna instalación deportiva.

1.2 Definición de conceptos

1.2.1 Actividad física

Según la Organización Mundial de la Salud (OMS) [2] se considera actividad física

cualquier movimiento corporal producido por los músculos que exija gasto energético.

Estos movimientos corporales pueden ser de dos tipos aeróbicos o anaeróbicos, dos

conceptos que se refieren a la forma en que nuestro cuerpo obtiene la energía para

poder realizarlos.

El ejercicio aeróbico o de baja intensidad como dice la periodista experta en salud Eva

Salabert [3], es aquel que requiere la respiración para su práctica. Este tipo de actividad

física se suele realizar con el objetivo de quemar grasa y conseguir mayor resistencia.

Para calcular la intensidad del ejercicio aeróbico se miden las pulsaciones cardíacas por

minuto. Normalmente dicha intensidad suele tomar valores entre 70% y 80% del máximo

número de pulsaciones por minuto (NPM), 220 para el caso de los hombres y 210 para

mujeres. La duración de este tipo de ejercicios suele ser de largos periodos de tiempo.

Algunos de los beneficios que nos pueden aportar estos ejercicios son:

● Reducir la grasa corporal.

● Menor riesgo a fracturas.

● Disminuir la presión arterial y los niveles de colesterol (LDL).

● Aumentar la capacidad de resistencia.

11

● Mejora del estado de ánimo.

● Mejora del sistema circulatorio y capacidad pulmonar.

Por otro lado, el ejercicio anaeróbico o de alta intensidad según la periodista experta en

salud Eva Salabert [4], es aquel que no requiere la respiración implícita para su práctica.

La duración de los ejercicios anaeróbicos es de pequeños plazos de tiempo, ya que se

ejecutan a intensidades superiores al 85% del NPM. Este tipo de ejercicios se utilizan

para adquirir fuerza y masa muscular provocando un fortalecimiento del sistema

musculoesquelético. A diferencia de los ejercicios aeróbicos los anaeróbicos nos

ofrecen otro tipo de beneficios como se muestra a continuación:

● Fortalece los músculos.

● Mejora del estado cardiorrespiratorio.

● Mejora la capacidad para combatir fatiga.

La cantidad de tiempo a la semana que debe aplicar una persona depende de varios

factores, como edad, enfermedades u objetivos personales. Según Sanitas [5] una

persona debería realizar ejercicio aeróbico con una intensidad moderada (60%-75% de

NPM) durante 150 minutos a la semana o 75 minutos semanales con una intensidad

vigorosa (75%-85% de NPM), combinándolo con ejercicios anaeróbicos que trabajen

tanto la parte superior como la inferior del cuerpo. La combinación de estos dos tipos de

ejercicios nos proporcionará un programa de entrenamiento equilibrado.

1.2.2 Dieta equilibrada

Una dieta equilibrada es aquella que contiene productos de los principales grupos

alimenticios en las proporciones correctas. Aunque una dieta debe ser personalizada

según las condiciones de cada individuo, debe cumplir unos requisitos básicos para

poder considerarse saludable y equilibrada.

12

Según la OMS [6] una dieta equilibrada debe contemplar los siguientes requisitos. El

primero a cumplir es que las calorías ingeridas deben corresponderse con las gastadas,

es decir el gasto calórico debe ser 0. Los hidratos de carbono, fuente principal de energía

para el organismo, deben representar entre el 55% y 60% del valor calórico total. Por lo

que respecta a las proteínas se recomienda un 15% del valor calórico total, para ser

más precisos se debería consumir 0,7 gramos al día de proteína por cada kilogramo de

peso corporal. Los lípidos o grasas no deberían superar el 30% de la ingesta calórica

total, donde menos del 10% debe provenir de grasas saturadas y el resto de insaturadas

o saludables. La cantidad de sodio a consumir debería ser inferior a 5 gramos diarios.

Finalmente, en cuanto a las frutas y verduras consumir al menos 400 gramos al día,

equivalente al popular dato de las 5 piezas de fruta.

1.2.3 Indicadores de la salud

Los indicadores de salud representan medidas-resumen que capturan información

relevante sobre distintos atributos y dimensiones del estado de salud y del desempeño

del sistema de salud de un individuo. Los indicadores elegidos para el proyecto han sido

extraídos del documento Nutrición Humana 2017 [7] y son los siguientes:

• IMC (índice de masa corporal): Es un sistema que se utiliza para estimar la

cantidad de grasa corporal de una persona, y así poder saber si su peso está

dentro del rango normal o, por el contrario, padece sobrepeso o delgadez. El

IMC es el resultado de la relación entre el peso y la estatura, IMC = Peso (kg) /

altura (m)2. Además, es utilizado para determinar el peso máximo, mínimo e ideal

de una persona.

• Peso máximo: Es el mayor peso dentro del rango de peso necesario para que

una persona se encuentre en forma y saludable.

• Peso ideal: Es el peso medio necesario dentro del rango de peso necesario para

que una persona se encuentre en forma y saludable. Se llama peso ideal porque

es el adecuado para la persona, logrando así prevenir múltiples enfermedades.

• Peso mínimo: Es el menor peso dentro del rango de peso necesario para que

una persona se encuentre en forma y saludable.

13

• TMB (tasa metabólica basal): Es la energía que necesita el cuerpo humano

para sobrevivir realizando las funciones básicas, como respirar, bombear el

corazón, filtrar la sangre, sintetizar hormonas o parpadear. El cálculo del TMB

no es una tarea simple, ya que intervienen varios factores como la edad o el

género como se muestra en la siguiente figura:

Figura 1: Cálculo del TMB

Pc: peso corporal

Una vez se calcula la TMB es necesario añadir la energía empleada en la

actividad física, mediante la siguiente fórmula: TMB = TMB + TMB * 7/10.

• Macronutrientes: Son nutrientes que se consumen en cantidades relativamente

grandes, como las proteínas, los hidratos de carbono simples y complejos, y

las grasas y ácidos grasos. El consumo de estos depende del TMB y su cálculo

es el siguiente:

➢ Hidratos 62% del TMB.

➢ Proteínas 12 % del TMB.

➢ Grasas 22% del TMB.

➢ Fibra 4% del TMB.

14

1.3 Identificación del problema

Este proyecto pretende desarrollar una aplicación móvil para planificar, controlar y

gestionar la actividad física de una persona sin necesidad de estar inscrito en ninguna

instalación deportiva y facilitar el seguimiento de una dieta equilibrada. Para ello, el

usuario podrá personalizar su entrenamiento de la semana seleccionando los ejercicios

que más se adecuen a sus gustos, en el caso de usuarios inexpertos se los ofrecerá la

posibilidad de entrenamientos predeterminados. La aplicación también proporcionará la

opción de observar el progreso físico y metas personales motivando al usuario a seguir

mejorando su estado de forma física. Por último, el seguimiento de la alimentación se

podrá realizar registrando la ingesta calórica diaria, comparándola con la ingesta

calórica ideal calculada previamente por el sistema, todo ello teniendo en cuenta la

condición física del individuo. Por lo tanto, los problemas a resolver son dos: mejorar la

forma física y la alimentación.

Según el estudio científico ANIBES [8] el 63,8% de la población española entre 18 y 75

años cumple con las recomendaciones de actividad moderada, y solo un 34,6% de la

población adulta realiza las recomendaciones de actividad vigorosa. Cabe destacar los

datos en el caso de la actividad física vigorosa.

Figura 2: Actividad física mujeres y hombres

15

En el caso de los hombres el 54,4% y 43,8% cumplen con las recomendaciones de

ejercicio moderado y vigoroso respectivamente. Podemos observar un incremento del

ejercicio con intensidad vigorosa, pero un decremento en la moderada. Por lo que

respecta a las mujeres sucede el caso contrario, hay una gran parte que cumple con las

recomendaciones de actividad física moderada, con un 72,5%, y pocas que cumplen las

recomendaciones de actividad física vigorosa, con solo un 26,0%.

Figura 3: Actividad física mujeres Figura 4: Actividad física hombres

Son varios los motivos por los que las personas no cumplen con las recomendaciones

de actividad física. Dentro de estos motivos son comunes la escasez de tiempo, falta de

motivación e interés, o limitaciones económicas. Además, lamentablemente el Covid-19

también ha afectado al mundo del deporte, siendo un nuevo motivo más para no realizar

deporte y provocando un efecto negativo en otros mencionados como la carencia

económica.

En cuanto a la mala alimentación, según el artículo de Alimente [9] alrededor de 44.000

personas murieron en España en 2016 por enfermedades cardiovasculares derivadas

de una mala alimentación. Además, el 80% de los hombres y el 55% de las mujeres

tendrán obesidad en 2030, consecuencia en gran medida de una mala alimentación,

como indica la Revista de Cardiología Española [10], una tendencia que va en aumento

a lo largo de los años. La mala alimentación principalmente se debe al desconocimiento

sobre nutrición y escasez de tiempo para dedicar al tema.

16

1.4 Actores implicados

A continuación, se listan los diferentes stakeholders implicados en el proyecto, ya sean

interesados, beneficiarios, afectados y participantes del proyecto.

● Directora: La directora del proyecto final de grado es Maria José Casañ

Guerrero involucrada en supervisar y encarrilar el proyecto.

● Desarrollador: El desarrollador del proyecto es Marc Obiols Rubio, encargado

de diseñar y desarrollar la aplicación móvil, documentar el proyecto y realizar las

pertinentes pruebas de testing.

● Usuario final: Personas que quieran utilizar la aplicación móvil una vez esté

finalizada en beneficio propio.

● Expertos en nutrición: Profesionales en el campo de la salud especializados

en nutrición. Encargados de aportar feedback al proyecto para poder realizar un

buen seguimiento de la alimentación de una persona.

● Expertos en ejercicio físico: Profesionales en el campo de la actividad física.

Su rol es proporcionar feedback al desarrollador para que la aplicación tenga

una variedad de ejercicios.

17

2 Justificación

2.1 Soluciones existentes

Siendo la actividad física y la dieta equilibrada dos aspectos fundamentales en la vida

de las personas, ya existen varias aplicaciones que ofrecen soluciones parciales

parecidas a las planteadas en este proyecto. Sin embargo, ninguna de ellas es capaz

de combinar los dos conceptos (ejercicio físico y alimentación saludable) para que el

usuario pueda realizar un buen seguimiento. A continuación, se muestran las más

completas:

● MyFitnessPal [11]: La más completa. Es un contador de calorías con una base

de datos de alimentos para que el usuario pueda ser consciente de las

características nutricionales de los alimentos que consume. También, cuenta

con una base de datos de ejercicios físicos para saber el número de calorías que

consume el cuerpo humano al realizarlos. Sin embargo, no se ofrece información

de cómo realizar los ejercicios, el número de ejercicios es escueto y no cuenta

con ninguna herramienta para que el usuario pueda diseñar y gestionar su

actividad física. Por lo que respecta a la interfaz puede ser compleja para

usuarios principiantes.

● Ejercicios Caseros [12]: Dedicada para realizar ejercicios desde casa. Cuenta

con una gran variedad de ejercicios bien documentados aportando imágenes de

ejemplo para que el usuario pueda realizarlos correctamente. También, ofrece

alarmas para programar los entrenamientos. La verdad es que es una aplicación

completa para realizar deporte desde casa, pero no cuenta con ejercicios de

calentamiento (fase esencial para evitar lesiones) y ningún tipo de funcionalidad

para tener un seguimiento de la alimentación.

● Lifesum [13]: Ofrece varias dietas adaptadas según los objetivos y gustos

alimenticios del usuario. También, cuenta con un contador de calorías como

MyFitnessPal pero entrando más en detalle en las características nutricionales

de los alimentos. A pesar de todo, no tiene en cuenta la actividad física, el mismo

problema que sucedía con Ejercicios Caseros con la nutrición. Además, la

versión gratuita no ofrece ninguna funcionalidad útil para el usuario obligándolo

a pagar dinero para ser aprovechada.

18

● Sworkit entrenador [14]: Dirigido a un público más experimentado en el mundo

del fitness, Sworkit entrenador permite personalizar, con una gran variedad de

parámetros, el plan de entrenamiento del usuario. Además, añade la opción de

comunicarse con un entrenador personal para consultar dudas al respecto.

Como parte negativa es que para un usuario inexperto utilizar Sworkit entrenador

pueda resultar una tarea complicada y la opción del entrenador personal es de

pago, como era de esperar.

Figura 5: Captura pantalla Sworkit entrenador Figura 6: Captura pantalla Lifesum

19

2.2 Justificación de la elección

Todas las aplicaciones mencionadas anteriormente ofrecen un buen servicio al usuario,

pero ninguna de ellas consigue combinar los conceptos de actividad física y dieta

equilibrada, provocando que las personas interesadas en estos ámbitos tengan que

utilizar más de una aplicación para alcanzar sus objetivos. Por este motivo pensamos

en desarrollar una aplicación que considere ambos campos (ejercicio físico y

alimentación saludable) para facilitar el cumplimiento de los objetivos de los usuarios.

Además, ninguna aplicación tiene en cuenta el factor de la motivación originado por la

realización de deporte y dieta equilibrada que pueden producir que la persona se sienta

mejor, con lo cual sería interesante proporcionar al usuario alguna herramienta que le

permita alcanzar esta motivación.

20

3 Alcance

A continuación, se tratarán los objetivos principales del proyecto, los requisitos no

funcionales y posibles obstáculos y riesgos que puedan surgir en el desarrollo de la

aplicación.

3.1 Objetivos

Los objetivos descritos a continuación permitirán resolver el problema inicial explicado

anteriormente. Cada uno de ellos se divide en diferentes sub-objetivos que se han de

cumplir para alcanzarlos.

● Permitir a los usuarios la gestión de su sesión

➢ Registro login y logout a los usuarios para acceder a su información.

➢ Los usuarios utilizarán un apodo como identificación.

➢ Verificación de los perfiles de los usuarios vía Gmail.

➢ Los usuarios podrán modificar la información de su perfil.

● Permitir a los usuarios gestionar sus entrenamientos personalizados

➢ Los usuarios podrán crear entrenamientos según sus condiciones y

gustos.

➢ Los usuarios podrán seleccionar entrenamientos predeterminados.

➢ Los usuarios podrán añadir ejercicios de calentamiento a sus

entrenamientos.

➢ Los usuarios podrán modificar sus entrenamientos.

➢ Los usuarios podrán eliminar los entrenamientos que ya no necesiten.

➢ Los usuarios podrán hacer públicos sus entrenamientos.

➢ Los usuarios podrán consultar entrenamientos públicos de otros

usuarios.

21

● Permitir a los usuarios el seguimiento de su actividad calórica

➢ Los usuarios podrán consultar las características nutricionales de los

alimentos

➢ Los usuarios podrán seleccionar los alimentos consumidos durante el

día.

➢ Los usuarios podrán modificar sus objetivos nutricionales.

➢ Los usuarios podrán observar su ingesta calórica diaria.

➢ Los usuarios podrán consultar el número de calorías quemadas al día.

➢ Los usuarios podrán consultar sus metas nutricionales.

3.2 Requisitos no funcionales

Además de los objetivos, hay que tener en cuenta otros aspectos como los requisitos

no funcionales, ya que aportan valor de mercado a nuestra aplicación.

● Usabilidad: La aplicación ha de ser usable para cualquier tipo de usuario, desde

los adolescentes hasta adultos menos experimentados.

● Escalabilidad: La aplicación permitirá un incremento de usuarios respecto a los

iniciales.

● Disponibilidad: El sistema tiene que estar el máximo de tiempo operativo.

● Seguridad: La aplicación solo permitirá acceder a los datos a las personas con

permisos para acceder.

● Legalidad: La aplicación debe cumplir con las leyes descritas por el RGPD [15].

● Adaptabilidad: El sistema debe permitir su utilización en la mayoría de

dispositivos Android.

22

3.3 Riesgos y obstáculos

Finalmente, existen diferentes riesgos que podrían dificultar el desarrollo de la aplicación

y por lo tanto reducir su valor.

● Inexperiencia: El hecho de la utilización de tecnologías de las cuales el

desarrollador del proyecto no es experto y en algunos casos no ha utilizado

nunca, como la implementación del back de una aplicación, añade un tiempo de

aprendizaje que alargará el desarrollo del sistema.

● Desconocimiento: El desarrollador de la aplicación no tiene ningún tipo de

formación en el ámbito de la salud/nutrición y los conocimientos acerca del

mundo del fitness son básicos. Por lo tanto, el tiempo de aprendizaje será más

alto alargando el desarrollo de la aplicación

● Fecha de entrega: Tener una fecha de entrega fija provoca poco margen de

fallo, ya que en el caso de que suceda algún contratiempo en alguna fase del

proyecto puede resultar en el incumplimiento de algún objetivo planteado

anteriormente y la aplicación se vería afectada negativamente en su valor.

● Derechos de copyright: La utilización de imágenes como descripción de los

ejercicios requiere la compra de sus derechos de autor, ya que el desarrollador

no dispone del tiempo y conocimientos del desarrollo de las imágenes.

● Permiso denegado Base de datos de alimentos: Desarrollar completamente

la funcionalidad para que el usuario pueda seguir su ingesta calórica requiere de

una base de datos de alimentos con sus características nutricionales. En este

proyecto por falta de tiempo y recursos no se implementará una propia, y como

consecuencia es necesario el servicio de alguna base de datos de alimentos de

terceros, pero dicho servicio puede ser denegado.

23

4 Metodología

La metodología a utilizar para el desarrollo de este proyecto será Agile [16]. Agile, es

una metodología utilizada principalmente para el desarrollo software. Es un proceso en

el que se aplican iteraciones de duración corta (1-3 semanas), conocidas como Sprints,

donde se implementan las funcionalidades establecidas previamente en el backlog por

el equipo de trabajo. El equipo se divide en roles, pero en el caso de este proyecto todos

recaerán sobre el desarrollador.

El backlog es un tablero donde se apuntan las historias de usuario que debe cumplir el

proyecto, además cada una es puntuada según la dificultad de implementación. Las

historias de usuario corresponden con las funcionalidades del sistema. En cada sprint

se escogen las historias de usuario a realizar y se asignan a los diferentes miembros

del equipo, las cuales deberán estar finalizadas al final del sprint.

4.1 Herramientas de seguimiento

A continuación, se comentarán el conjunto de herramientas de seguimiento que se

utilizarán por el desarrollador para el desarrollo del proyecto.

● Git [17]: Es un sistema de control de versiones gratuito y de código abierto.

Utilizado por la mayoría de desarrolladores de software, permite compartir código

y gestionar las versiones a través de repositorios y ramas.

● Github [18]: Es un programa que permite gestionar los repositorios de Git.

Además, ofrece otras funcionalidades como la integración continua.

● Taiga [19]: Es una plataforma gratuita para la gestión de proyectos. Incorpora

funcionalidades como el tratamiento de issues, gestionar historias de usuario o

gestionar el backlog.

● Integración continua: Es una práctica que consiste en hacer integraciones

automáticas de código para poder detectar posibles fallos. Para su práctica se

ha utilizado GitHub.

24

● Google meet: es un servicio de videotelefonía proporcionado por Google.

Utilizado para las reuniones con la tutora.

25

5 Planificación proyecto

La duración del proyecto es de aproximadamente 4 meses, con fecha de inicio el 21 de

septiembre de 2020 y con fecha de finalización el 25 de enero de 2021. Al utilizar una

metodología Agile el proyecto se divide en diferentes etapas, las cuales son: gestión del

proyecto, iteraciones y documentación final.

La fase inicial, gestión del proyecto, supondrá la etapa de incepción del trabajo con una

duración de 80 horas y 20 horas de carga semanal. Esta fase se inicia el 21 de

septiembre y finaliza el 19 de octubre.

En cuanto a las iteraciones el proyecto contará con 3 iteraciones con una duración de 3

semanas cada una. La suma de horas de trabajo será de aproximadamente 405, con

una carga de trabajo semanal de 44 horas. Las iteraciones se iniciarán el 20 de octubre

y acabarán el 21 de diciembre.

Finalmente, en la última etapa, documentación final, se acabará la redacción de la

memoria empezando el 22 de diciembre y finalizando el 25 de enero de 2021.

Etapa Inicio Final Tiempo

Gestión del proyecto

21 de setiembre de 2020 19 de octubre de 2020

80 h

Sprint 1 20 de octubre de 2020 9 de noviembre de 2020

135 h

Sprint 2 10 de noviembre de 2020 30 de noviembre de 2020

135 h

Sprint 3 1 de diciembre de 2020 21 de diciembre de 2020

135 h

Documentación memoria

22 de diciembre de 2020 25 de enero de 2021 30 h

Total 515 h

Tabla 1: planificación temporal en etapas

5.1 Definición tareas

Las diferentes tareas identificadas a continuación, están divididas en gestión del

proyecto (GP), Desarrollo (DS), Documentación (DC) y Validación (VD).

26

5.1.1 Gestión del proyecto

• GP1 - Documentación contextualización y alcance: Definir el contexto y

determinar el alcance del proyecto.

Duración: 25 horas

Dependencias: -

Recursos humanos: Jefe proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word

• GP2 - Planificación temporal: Definición de tareas y planificación temporal.

Duración: 17.5 horas

Dependencias: Documentación contextualización y alcance

Recursos humanos: Jefe proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word,

Lucidchart

• GP3 - Gestión económica y sostenibilidad: Definición del plan económico e

informe de sostenibilidad.

Duración: 17.5 horas

Dependencias: Planificación temporal

Recursos humanos: Jefe proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word, Microsoft

Office Excel

• GP4 - Documento final: Juntar los documentos anteriores y arreglar posibles

errores, para alcanzar una buena definición del proyecto.

Duración: 15 horas

Dependencias: Gestión económica y sostenibilidad

Recursos humanos: Jefe proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word

• GP5 - Historias de usuario: Definir las historias de usuario del sistema.

Duración: 5 horas

Dependencias: Documento final

Recursos humanos: Jefe proyecto

Recursos materiales: Ordenador con internet, Taiga

5.1.2 Iteración 1

• DS1 - Preparación del desarrollo: Preparación del entorno de trabajo para la

creación del proyecto. Descarga y aprendizaje de los programas y librerías a

utilizar. Además, el diseño de la base de datos.

Duración: 35 horas

Dependencias: -

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, Github, editor de texto

27

• DS2 - Buscar información: Informarse sobre conceptos relacionados con la

nutrición y el deporte, para poder implementar una aplicación funcional.

Duración: 10 horas

Dependencias: -

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet

• DS3 - Registro y autentificación del usuario: Desarrollar las funcionalidades

de registro e inicio de sesión del usuario, diseño de pantallas pertinentes y

cifrado de datos personales.

Duración: 35 horas

Dependencias: Preparación del desarrollo

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor de texto, Github

• DS4 - Calculo automático metas usuario: Desarrollar el programa capaz de

calcular los objetivos nutricionales y físicos del usuario. También, diseñar las

pantallas para mostrar y modificar (en algunos campos) la información y

progresión del usuario.

Duración: 40 horas

Dependencias: Preparación del desarrollo, Registro y autentificación del

usuario, Buscar información

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor texto, Github

• GP6 - Retrospectiva iteración 1: Valorar el trabajo realizado durante la iteración

1 y, identificar y solucionar problemas que han ocurrido durante la iteración.

Duración: 5 horas

Dependencias: Preparación del desarrollo, Registro y autentificación del

usuario, Buscar información

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, Taiga, Microsoft Office Word

• DC1 - Documentación iteración 1: Redacción de la documentación relacionada

con la iteración 1.

Duración: 10 horas

Dependencias: -

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word

5.1.3 Iteración 2

• DS5 - Gestión ejercicios - Backend: Añadir a la base datos ejercicios con sus

respectivos parámetros. También, desarrollar la parte de Backend de las

funcionalidades de listar y filtrar los ejercicios del sistema.

Duración: 35 horas

Dependencias: Iteración 1

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor de texto, Github

28

• DS6 - Gestión entrenamiento - Backend: Desarrollar la parte de Backend de

las funcionalidades crear, planificar y editar entrenamientos, y añadir a la BD

entrenamientos predeterminados.

Duración: 35 horas

Dependencias: Gestión ejercicios - Backend

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor de texto, Github

• DS7 - Gestión ejercicios - Frontend: Desarrollar las pantallas para poder listar

y filtrar ejercicios, y consultar los parámetros de un ejercicio en concreto.

Duración: 25 horas

Dependencias: Gestión ejercicios - Backend

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor de texto, Github

• DS8 - Gestión entrenamiento - Frontend: Desarrollar las pantallas de crear,

planificar y editar entrenamientos. Además de poder consultar los

entrenamientos personales y predeterminados ya creados.

Duración: 25 horas

Dependencias: Gestión entrenamiento – Backend, Gestión ejercicios - Frontend

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor de texto, Github

• GP7 - Retrospectiva iteración 2: Valorar el trabajo realizado durante la iteración

2, identificar y solucionar problemas que han ocurrido durante la iteración.

Duración: 5 horas

Dependencias: Gestión ejercicios - Backend, Gestión entrenamiento –

Backend, Gestión ejercicios – Frontend, Gestión entrenamiento – Frontend

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, Taiga, Microsoft Office Word

• DC2 - Documentación iteración 2: Redacción de la documentación relacionada

con la iteración 2.

Duración: 10 horas

Dependencias: iteración 1

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word

29

5.1.4 Iteración 3

• DS9 - Gestión Dietas: Desarrollar las funcionalidades para listar y mostrar las

dietas del sistema al usuario. También añadir a la BD dietas para poder listarlas

y comunicar el sistema con alguna API para consultar las características

nutricionales de cada alimento.

Duración: 45 horas

Dependencias: Iteración 2

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor de texto, Github

• DS10 - Consultar usuarios: Desarrollar la funcionalidad para consultar

entrenamientos públicos de otros usuarios y poder añadirlos a tus

entrenamientos.

Duración: 25 horas

Dependencias: iteración 2

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, editor de texto, Github

• DS11 - Mejora interfaz gráfica: Mejorar la interfaz gráfica y usabilidad de la

aplicación.

Duración: 30 horas

Dependencias: gestión dietas, consultar usuarios

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, editor de texto, Github

• VD1 - Validación proyecto: Verificar si la aplicación cumple con los objetivos y

requisitos planteados en la fase de incepción.

Duración: 20 horas

Dependencias: mejora interfaz gráfica

Recursos humanos: Desarrollador

Recursos materiales: Ordenador con internet, Github, editor de texto

• GP8 - Retrospectiva iteración 3: Valorar el trabajo realizado durante la iteración

3, identificar y solucionar problemas que han ocurrido durante la iteración.

Duración: 5 horas

Dependencias: validación proyecto, mejora interfaz gráfica, gestión dietas,

consultar usuarios

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, Taiga, Microsoft Office Word

• DOC3 - Documentación iteración 3: Redacción de la documentación

relacionada con la iteración 3.

Duración: 10 horas

Dependencias: iteración 2

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word

30

5.1.5 Documentación final

• DC4 - Documentar memoria: Finalización de la memoria y preparación para

lectura del proyecto.

Duración: 30 horas

Dependencias: Iteración 3

Recursos humanos: Jefe del proyecto

Recursos materiales: Ordenador con internet, Microsoft Office Word

31

5.2 Resumen tareas

A continuación, en la tabla 1 se muestra un resumen de las tareas descritas previamente

y la duración individual de cada una. También, se indica la duración de cada etapa.

Como resultado de la planificación temporal obtenemos un total de 515 horas de trabajo.

Etapa proyecto

Tarea

Horas tarea

Horas etapa

Gestión del proyecto

GP1 25

80 GP2 17.5

GP3 17.5

GP4 15

GP5 5

Iteración 1

DS1 35

135 DS2 10

DS3 35

DS4 40

GP6 5

DC1 10

Iteración 2

DS5 35

135 DS6 35

DS7 25

DS8 25

GP7 5

DC2 10

Iteración 3

DS9 45

135

DS10 25

DS11 30

VD1 20

GP8 5

DC3 10

Documentación final DC4 30 30

Total

515

Tabla 2: Resumen tareas

32

6 Estimaciones y Diagrama de Gantt

En la figura 1 se puede observar el diagrama Gantt del proyecto mostrando el reparto

temporal de las tareas. Cada etapa del proyecto es diferenciada por un color diferente.

El eje temporal se inicia el 21 de septiembre de 2020 y finaliza el 25 de enero de 2021.

En cuanto a las tareas de documentación de las iteraciones se ha optado a realizarlas

de manera concurrente a todas las demás tareas de la iteración. En cambio, las tareas

de desarrollo no son concurrentes entre ellas, ya que existen dependencias que

dificultarían la concurrencia.

En el siguiente enlace se puede acceder al diseño original del diagrama de Gantt para

obtener una mayor calidad de imagen: https://lucid.app/invitations/accept/e649d5be-

4e57-4c6a-806a-63d1cb597ab3

33

Figura 7: Diagrama Gantt

34

7 Gestión del riesgo: planes alternativos y

obstáculos

En la siguiente tabla se comentan los diferentes riesgos y obstáculos que pueden

suceder en el transcurso del proyecto, indicando su impacto, probabilidad de que

sucedan y por último un plan alternativo para mitigarlos.

Riesgo

Impacto

Probabilidad

Plan alternativo

Inexperiencia con

tecnologías

Alto

Alta

Se han añadido tareas para el aprendizaje y preparación de estas tecnologías. Además, las primeras tareas que implican el uso de tecnologías de las que no soy experto han sido sobreestimadas en cuanto tiempo.

Planificación temporal incorrecta

Bajo

Media

La última etapa del proyecto tiene una duración de un mes donde no solo se realizará la redacción de la memoria, sino que se acabarán posibles tareas atrasadas de las iteraciones. Además, al utilizar metodología agile las tareas inacabadas de una iteración se trasladarán a la siguiente.

Desconocimiento del tema

Medio

Media

En la iteración 1 se ha añadido una tarea pensada para buscar información sobre la temática de la aplicación. También estoy en contacto con un experto en nutrición que aportará mayor valor al proyecto.

Derechos de copyright

Medio

Alto

Utilizar imágenes sin derechos de autor o asumir el coste económico de los derechos de dichas imágenes.

Permiso denegado API alimentos

Alto

Alto

Se añadirían más y mejores dietas predeterminadas relacionadas con el deporte. También, se mejoraría la gestión de ejercicios y entrenamiento.

Tabla 3: Riesgos y planes alternativos

35

8 Presupuesto

8.1 Identificación de costes

En este apartado se identificarán los diferentes costes implicados en el proyecto.

Primero se analizarán los costes totales del personal, después los recursos materiales

que se utilizarán para el desarrollo, ya sean hardware o software, y finalmente las

contingencias e imprevistos que puedan surgir.

8.1.1 Costes personal

En la tabla 3 se puede observar el sueldo por hora de cada perfil de trabajador implicado

en el proyecto. Los sueldos se muestran tanto en neto como en bruto, añadiendo los

costes debidos a la Seguridad Social, según la información obtenida por GlassDoor [20].

Perfil salario neto/hora salario bruto/hora

Jefe proyecto 19€ 23.75€

Analista Software 16€ 20€

Arquitecto Software 18.5€ 23.13€

Desarrollador 15€ 18.75€

Tester 16€ 20€

Tabla 4: Costes por cada perfil del proyecto

Teniendo en cuenta los costes por hora de cada perfil implicado, es momento de calcular

los costes de cada tarea. En la siguiente tabla, por cada tarea, se muestra las horas

dedicadas por cada rol y su coste total. Estos datos son el resultado de multiplicar las

horas dedicadas por cada perfil por el coste por hora del perfil pertinente.

36

Tarea

Horas de trabajo según perfil

Coste (€) Jefe proyecto

Analista Software

Arquitecto Software Desarrollador Tester

GP1 25 594

GP2 17,5 416

GP3 17,5 416

GP4 15 355

GP5 5 119

DS1 5 10 20 705

DS2 10 188

DS3 7,5 7,5 15 5 705

DS4 5 7,5 20 7,5 797

GP6 5 119

DC1 10 236

DS5 5 7,5 20 2,5 697

DS6 5 7,5 20 2,5 697

DS7 2,5 5 15 2,5 497

DS8 2,5 5 15 2,5 497

GP7 5 119

DC2 10 238

DS9 5 7 30 3 883

DS10 3 4,5 15 2,5 494

DS11 5 5 15 5 597

VD1 2,5 5 10 2,5 402

GP8 5 119

DC3 10 236

DC4 30 713

Total

155 48 71,5 205 35,5

10849 515 Tabla 5: Coste personal por actividad

37

8.1.2 Recursos materiales

A continuación, se analizarán los recursos materiales utilizados para el proyecto. Un PC

de sobremesa con una CPU Intel(R) Core(TM) i5-7500, para el desarrollo y

documentación del proyecto.

Con la siguiente fórmula obtenemos el cálculo de la amortización:

Coste equipo €

Años vida útil ⋅ 220 días laborables/año ⋅ 8 horas/día∗ 515 horas TF𝐺

Elemento Coste (€) Vida útil Amortización (€)

PC sobremesa 760 4 años 55,60

Tabla 6: Costes materiales

Por último, los recursos software utilizados son gratuitos, a excepción de los derechos

de autor de las imágenes para la descripción visual de los ejercicios.

Recurso software Coste (€)

Derechos autor imágenes ejercicios 63,99

Tabla 7: Costes software

8.1.3 Contingencias

Como en todo proyecto, es necesario diseñar un plan de contingencias para contemplar

la posibilidad de que surjan imprevistos no anticipados. En este caso se ha optado por

un nivel del 10 % del coste del presupuesto calculado anteriormente. En la tabla 5 se

puede observar los costes teniendo en cuenta el extra de contingencia.

Tipo coste Coste (€) Contingencia (%) Coste final (€)

Personal 10849

10

11934

Recursos materiales 55,6 61.16

Recursos software 63.99

70,39

Tabla 8: Costes con contingencias

38

8.1.4 Imprevistos

Contaremos como coste de imprevistos la posibilidad de que algún recurso material se

averíe. Por lo tanto, los imprevistos del apartado gestión del riesgo no se han tenido en

cuenta porque ya han sido cubiertos con sus pertinentes soluciones.

Elemento Coste Reparación (€) Probabilidad avería (%) Coste (€)

PC sobremesa 100 15 15

Tabla 9: Costes imprevistos

8.1.5 Presupuesto final

Finalmente, en la siguiente tabla se muestra el precio total del proyecto.

Tipo coste Coste con contingencia (€)

Personal 11934

Recursos materiales 61,16

Recursos software 70,39

Total 12065.55

Imprevistos 15

Total proyecto 12080.55 Tabla 10: Presupuesto proyecto

8.2 Control de gestión

Para tener una buena gestión del proyecto es necesario mantener un control en el

presupuesto elaborado. Por este motivo, una vez el proyecto vaya avanzando a lo largo

del tiempo se actualizará el presupuesto inicial. Se calcularán las desviaciones entre los

valores reales y los estimados con las siguientes fórmulas:

Desviación horas consumidas por tarea = (Horas estimadas – Horas reales) * Coste

estimado

Desviación costes según horas consumidas por tarea = (Horas estimadas – Horas

reales) * Coste real

39

Desviación horas = Horas estimadas – Horas reales

Desviación costes = Coste total estimado – Coste total real

Desviación costes recursos humanos por tarea = (Coste estimado – Coste real) *

Horas reales

Desviación costes personal = Coste personal estimado – Coste personal real

Desviación Costes materiales = Coste material estimado – Coste material real

Desviación costes imprevistos = Coste imprevistos estimados – Coste imprevistos

reales

40

9 Sostenibilidad

9.1 Autoevaluación

La sostenibilidad es una temática a tener en cuenta en el desarrollo de un proyecto, todo

y parecer un asunto relevante en el ámbito de las ingenierías. Una vez realizada la

encuesta propuesta por el equipo de profesores de la asignatura gestión de proyectos

(GEP) es hora de llevar a cabo las conclusiones de dicha encuesta.

Antes de realizar la encuesta, diseñada por el proyecto EDINSOT, era consciente de

que mis conocimientos sobre las diferentes dimensiones de la sostenibilidad eran

suficientes para un estudiante, sin embargo, después de finalizarla me he dado cuenta

de que dichos conocimientos eran escasos e insuficientes. En la encuesta se planteaban

diferentes ideas y problemáticas de las cuales no tenía idea alguna. No obstante, por lo

que respecta a la dimensión económica de un proyecto, al cursar asignaturas durante

la carrera, como el caso de EEE, estoy al corriente de aspectos relacionados con la

viabilidad económica o economía del bien común. En cuanto a la dimensión ambiental

en artículos y documentales académicos había leído y observado las consecuencias

ambientales que pueden provocar las tecnologías empleadas para el desarrollo de

proyectos, pero no conocía ninguna herramienta o procedimiento capaz de analizar y

calcular su impacto. Por último, respecto la dimensión social he de reconocer que no

había escuchado el concepto de herramientas colaborativas y sus ventajas, aunque sí

que sabía que el software desarrollado ha de respetar unas leyes éticas.

Como conclusión, decir que para este proyecto y en un futuro tendré en cuenta las

diferentes dimensiones de la sostenibilidad, ya sea analizándolas o tratarlas de forma

correcta.

9.2 Dimensión económica

En cuanto al presupuesto planteado para este proyecto se ha estimado un coste

ajustado a la realidad teniendo en cuenta todos los recursos necesarios para su

desarrollo. Por lo tanto, no existe ningún desperdicio de dinero ni de recursos.

41

Asimismo, al ser un proyecto sin el objetivo de recaudar dinero, los usuarios podrán

acceder a las funcionalidades de la aplicación sin coste alguno. Además, uno de los

objetivos principales del proyecto era la realización de ejercicio sin la necesidad de estar

inscrito a una instalación deportiva, provocando un pequeño ahorro en los usuarios de

la aplicación.

Por otro lado, el Software será reusable y de código abierto. Por ello, todo el que quiera

podrá modificarlo o utilizarlo a su antojo sin la necesidad de pagar los costes de

desarrollo.

9.3 Dimensión ambiental

El impacto negativo ambiental es la electricidad utilizada por los dispositivos implicados

en la fase de desarrollo y todos los recursos naturales empleados para su fabricación,

tanto por el PC de sobremesa como los servidores. No obstante, al ser un proyecto que

se desarrollará desde casa no se provocará ningún impacto medioambiental por

desplazamientos.

Como recursos reutilizados podemos incluir el servicio proporcionado por alguna

empresa para poder consultar las características nutricionales de los alimentos.

La solución propuesta no ofrece ningún beneficio o daño ambiental respecto a las demás

aplicaciones del mercado, ya que también han pasado por un periodo de desarrollo y

utilizan servidores para su buen funcionamiento.

9.4 Dimensión social

Personalmente creo que un proyecto como este puede aportarme una gran cantidad de

experiencia y conocimientos técnicos, no solo en el ámbito de la informática, sino que

también en el campo de la nutrición y el deporte. Además, he de añadir el aprendizaje

sobre gestión, planificación y presupuesto de un proyecto al cursar la asignatura de

GEP.

42

De cara al público en general, el proyecto les ofrecerá una alternativa para realizar

deporte y seguimiento de su progreso y alimentación que provocará una mejora en su

calidad de vida. También, aprenderán conceptos de nutrición y ejercicios gracias a las

dietas y rutinas predeterminadas que ofrecerá el sistema. El poder consultar rutinas de

otros usuarios experimentados también les aportará nuevas ideas que poner en

práctica.

Realmente no existe ninguna necesidad para el desarrollo del proyecto, ya que existen

varias alternativas que, si se utilizan conjuntamente pueden suplir su función, pero de

todas formas, creo que una plataforma que abarque aspectos diferentes como lo son el

deporte y el ejercicio facilita a las personas llevar un estilo de vida sana.

43

10 Definición requisitos

10.1 Proceso de adquisición

Los requisitos de un proyecto software son la descripción de las características y

funcionalidades del sistema. Muestran las expectativas de los clientes y pueden ser

obvios o estar ocultos, conocidos o desconocidos, esperados o inesperados, des del

punto de vista del consumidor.

La gran parte de requisitos fueron obtenidos en la fase inicial (Gestión del proyecto),

donde se identificaba y comprendía la problemática a la que se enfrentaba el trabajo.

Mediante el estudio de aplicaciones similares, se determinaron distintos problemas a

resolver que generaron la mayoría de los requisitos.

No obstante, a medida que avanzaba la fase de desarrollo aparecieron algunos

requisitos nuevos. Estos nuevos requisitos surgieron gracias al feedback de usuarios

que pudieron probar la aplicación en fase de desarrollo. Aquí se adquirieron algunos

requisitos nuevos como por ejemplo la creación de videos para explicar el

funcionamiento de los ejercicios del sistema.

Los requisitos han sido agrupados en dos grupos: funcionales y no funcionales. Los

funcionales son aquellos que definen las funciones de un sistema, mientras que los no

funcionales son los que especifican los criterios que se pueden usar para juzgar el

funcionamiento del sistema.

44

10.2 Requisitos funcionales

Los requisitos funcionales han sido detallados mediante historias de usuario, indicando

su nombre y una breve descripción. Una historia de usuario es una explicación general

e informal de una función de software escrita desde la perspectiva del usuario final.

Además, las historias de usuario están agrupadas en las siguientes temáticas: Gestión

usuario, gestión rutinas, gestión alimentación, gestión ejercicios y gestión dietas.

10.2.1 Gestión de usuario

• Historia de usuario: Registro de usuario Descripción: Como usuario no registrado necesito registrarme con mi correo

electrónico con la finalidad de acceder a todas las funcionalidades de la

aplicación.

• Historia de usuario: Eliminar perfil Descripción: Como usuario que ha iniciado sesión necesito borrar toda la

información sobre mi cuenta con la finalidad de dejar de utilizar la aplicación y

eliminar todos los datos relacionados con mi perfil.

• Historia de usuario: Iniciar sesión Descripción: Como usuario registrado necesito iniciar sesión con la finalidad de

acceder a la aplicación.

• Historia de usuario: Cerrar sesión Descripción: Como usuario que ha iniciado sesión necesito cerrar sesión con la

finalidad de iniciar sesión con otras cuentas.

• Historia de usuario: Consultar datos plan nutricional Descripción: Como usuario que ha iniciado sesión necesito observar mi plan

nutricional con la finalidad de saber la cantidad de macronutrientes que debo

consumir.

• Historia de usuario: Consultar indicadores de estado físico Descripción: Como usuario que ha iniciado sesión necesito observar los

indicadores sobre mi estado físico con la finalidad de saber el estado de forma

en el que me encuentro.

• Historia de usuario: Consultar historial peso Descripción: Como usuario que ha iniciado sesión necesito observar el historial

sobre mi peso con la finalidad de saber cómo ha evolucionado mi peso durante

el uso de la aplicación.

45

• Historia de usuario: Consultar información perfil Descripción: Como usuario que ha iniciado sesión necesito ver la información

asociada a mi cuenta con la finalidad de verificar la información personal de mi

perfil.

• Historia de usuario: Modificar datos de salud Descripción: Como usuario que ha iniciado sesión necesito cambiar mis datos

sobre la salud con la finalidad de actualizar mi información o seguir nuevos

planes nutricionales.

10.2.2 Gestión Rutinas

• Historia de usuario: Crear Rutina Descripción: Como usuario que ha iniciado sesión necesito crear una nueva

rutina con la finalidad de planear un nuevo entrenamiento que realizar en un

futuro.

• Historia de usuario: Modificar datos rutina Descripción: Como usuario que ha iniciado sesión y ha creado una rutina

necesito modificarla con la finalidad de gestionarla y ajustarla a mis gustos

personales.

• Historia de usuario: Eliminar rutina Descripción: Como usuario que ha iniciado sesión y ha creado una rutina

necesito eliminarla con la finalidad de no volver a realizarla y hacer espació para

nuevas rutinas.

• Historia de usuario: Listar mis rutinas Descripción: Como usuario que ha iniciado sesión necesito listar mis propias

rutinas con la finalidad de observar todas las rutinas que he creado.

• Historia de usuario: Listar rutinas de usuarios Descripción: Como usuario que ha iniciado sesión necesito observar todas las

rutinas públicas de otros usuarios con la finalidad de consultar alguna de ellas y

añadirla en caso de mi agrado.

• Historia de usuario: Filtrar rutinas Descripción: Como usuario que ha iniciado sesión necesito filtrar las rutinas de

otros usuarios con la finalidad de realizar una búsqueda más específica.

• Historia de usuario: Consultar rutina Descripción: Como usuario que ha iniciado sesión necesito consultar una rutina

con la finalidad de ver sus especificaciones y modificarla en caso que sea una

propia o añadirla si es ajena.

46

• Historia de usuario: Añadir rutina Descripción: Como usuario que ha iniciado sesión y no ha creado la rutina

necesito añadir una rutina a mi listado con la finalidad de poder realizarla o

gestionarla según mis requisitos.

• Historia de usuario: Añadir ejercicio rutina Descripción: Como usuario que ha iniciado sesión y ha creado una rutina

necesito agregar un ejercicio a mi rutina con la finalidad de realizarlo en un futuro.

• Historia de usuario: Eliminar ejercicio rutina Descripción: Como usuario que ha iniciado sesión y ha creado una rutina

necesito eliminar un ejercicio de mi rutina con la finalidad de no realizarlo y añadir

otro tipo de ejercicios.

• Historia de usuario: Modificar ejercicio rutina Descripción: Como usuario que ha iniciado sesión y ha creado una rutina sesión

necesito modificar un ejercicio de mi rutina con la finalidad de cambiar su

realización.

10.2.3 Gestión Alimentación

• Historia de usuario: Buscar alimentos Descripción: Como usuario que ha iniciado sesión necesito hacer una

búsqueda de alimentos con la finalidad de consultarlos y añadirlos si cumplen

mis requisitos.

• Historia de usuario: Consultar alimento Descripción: Como usuario que ha iniciado sesión necesito consultar los datos

de un alimento con la finalidad de observarlo y añadirlo en caso que quiera.

• Historia de usuario: Añadir alimento Descripción: Como usuario que ha iniciado sesión necesito añadir un alimento

a mi registro diario con la finalidad de registrar mi consumo diario.

• Historia de usuario: Eliminar alimento Descripción: Como usuario que ha iniciado sesión necesito eliminar un alimento

de mi registro diario con la finalidad de añadir nuevos alimentos o eliminar un

alimento mal añadido.

• Historia de usuario: Consultar historial de alimentación Descripción: Como usuario que ha iniciado sesión necesito consultar mi

historial alimenticio con la finalidad de consultar algún día en concreto.

• Historia de usuario: Consultar alimentación día Descripción: Como usuario que ha iniciado sesión necesito consultar la

alimentación de un día en concreto con la finalidad de observar la actividad

alimenticia de dicho día.

47

10.2.4 Gestión dietas

• Historia de usuario: Listar dietas Descripción: Como usuario que ha iniciado sesión necesito listar todas las

dietas del sistema con la finalidad de consultar aquella que más interés me

genere.

• Historia de usuario: Consultar dieta Descripción: Como usuario que ha iniciado sesión necesito consultar una dieta

en concreto con la finalidad de ver toda su información.

10.2.5 Gestión ejercicios

• Historia de usuario: Listar ejercicios Descripción: Como usuario que ha iniciado sesión necesito listar todos los

ejercicios del sistema con la finalidad de consultar el ejercicio que desee.

• Historia de usuario: Filtrar ejercicios Descripción: Como usuario que ha iniciado sesión necesito filtrar los ejercicios

del sistema con la finalidad de realizar una búsqueda más selecta.

• Historia de usuario: Consultar ejercicio Descripción: Como usuario que ha iniciado sesión necesito consultar un

ejercicio con la finalidad de observar toda su información.

48

10.3 Requisitos no funcionales

• Usabilidad: Es un atributo de calidad que mide lo fácil que es de usar la interfaz

para los usuarios. Para ello, las pantallas han sido diseñadas a partir de ciertos

criterios. Además, se realizaron varias pruebas sobre la experiencia de usuario

para considerar distintas opiniones sobre la navegación, distribución de

componentes o colores utilizados.

• Adaptabilidad: Es la capacidad del producto de ser adaptado a diferentes

entornos sin la aplicación de acciones o medios distintos de los aportados para

este propósito por el software considerado. La aplicación es compatible con

todos los dispositivos que tengan una versión Android 5.0 (Lollipop) o superior,

es decir un 94.1% de los dispositivos, según estadísticas proporcionadas por

Android. Además, los dispositivos en la versión 4.4 (KitKat) también podrán

disfrutar de la mayoría de funcionalidades.

• Legalidad y seguridad: La aplicación cumple con las leyes descritas por el

RGPD. La información almacenada catalogada como sensible solo puede ser

consultada por los propietarios de esta y no deja de ser datos personales, como

sexo, edad o peso. Las contraseñas de los usuarios son encriptadas antes de

ser guardadas en la BD. La integridad de la base de datos es la ofrecida por

MongoDB.

• Escalabilidad: Es la capacidad que tiene un sistema de soportar un estrés

creciente porque recibe más tráfico o usuarios. Al haber utilizado Node.js y el

framework Express la parte del servidor puede soportar más de 35 000

peticiones por segundo. La base de datos está limitada a 500 MB, pero este valor

podría aumentar fácilmente al aportar una cantidad monetaria para los gastos de

capacidad y mantenimiento. En cuanto a la conexión a la base de datos de

alimentos actualmente solo se pueden realizar 10 peticiones cada 10 minutos

entre todos los usuarios, pero se podría aumentar con la misma solución que

con la BD, mediante pagos mensuales.

49

• Disponibilidad: Es la capacidad de que el sistema esté total o parcialmente

operativo al mismo tiempo que es requerido para manejar eficazmente las fallas

que puedan afectar la disponibilidad del sistema. La aplicación está alojada en

Heroku que en caso de fallo/caída ofrece una solución sencilla de ejecutar, ya

que solo se requiere de ejecutar un comando. Por otro lado, en la figura 8

podemos ver como de operativa son los servidores con más de un 99,99%, por

lo tanto, el sistema estará operativo gran parte del tiempo.

Figura 8: Disponibilidad Heroku

50

11 Arquitectura y diseño del sistema

En este apartado se detallan y explican los aspectos más técnicos relacionados con la

arquitectura de la aplicación, así como los patrones de diseño, componentes del

sistema, esquema de la base de datos o la interfaz gráfica.

11.1 Componentes del sistema

Figura 9: componentes del sistema

En la figura 9 se pueden ver los diferentes componentes que forman el sistema y su

interacción. En primer lugar, el cliente ha sido desarrollado mediante Android Studio, un

entorno de desarrollo integrado oficial para la plataforma Android, e implementado en el

lenguaje de programación Java.

Para la obtención de la información sobre los alimentos la aplicación accede a la API

(Application Programming Interface) de base de datos de alimentos de la empresa

EDAMAM [21], con más de 700.000 alimentos y recetas. La comunicación requiere de

un Aplication ID y de un Application Keys, ambos utilizados para la autentificación de las

peticiones. Las respuestas son enviadas en formato JSON con un gran número de

campos detallados en la documentación de la API.

51

Los videos elegidos para la explicación detallada de los ejercicios son extraídos de la

API del reproductor de Android de Youtube [22], la cual permite incorporar la

funcionalidad de reproducción de video en las aplicaciones de Android. Grosso modo el

funcionamiento consiste en la biblioteca cliente de API que interactúa con un servicio

que se distribuye como parte de la aplicación de YouTube para la plataforma Android.

La parte del BackEnd está alojada en Heroku [23], una plataforma de servicio de

computación en la nube que soporta distintos lenguajes de programación. Uno de ellos

es Node.js utilizado para la implementación de la capa del servidor. Node.js es un

entorno de ejecución multiplataforma, de código abierto, para la capa del servidor

basado en el lenguaje de programación JavaScript, es asíncrono, con una arquitectura

orientada a eventos y basado en el motor V8 de Google.

Las razones por las que la capa del servidor ha sido desarrollada en Node.js son varias.

En primer lugar, es una opción perfecta para aplicaciones que trabajen en tiempo real

gracias al motor V8 que ofrece una gran velocidad de ejecución. En segundo lugar,

Node.js incluye NPM (Node Package Manager) un repositorio con casi 50 000 paquetes

para compartir, actualizar o reutilizar fácilmente el código. Además, permite conectarse

a otros servicios como por ejemplo la API de Gmail.

Para el almacenamiento de la mayoría de información el servidor utiliza la base de datos

MongoDB [24], un sistema de base de datos NoSQL (no relacional), orientado a

documentos y de código abierto. Para la creación y tratamiento de esquemas el servidor

utiliza la biblioteca de JavaScript Mongoose [25], un Object Document Mapper (ODM).

Finalmente, para la validación de las cuentas de los usuarios y sus emails el servidor se

comunica con la API de Gmail [26].

52

11.2 Patrones utilizados

En este apartado se presenta tanto el patrón arquitectónico como los patrones de diseño

utilizados en el FrontEnd del sistema.

11.2.1 Modelo Vista Controlador

El patrón Modelo-Vista-Controlador (MVC) [27] es un patrón de arquitectura del software

que separa la lógica y la capa de representación entre sí. En un principio se utilizaba

para interfaces gráficas de usuario de escritorio, pero en la actualidad se ha hecho

popular para el diseño de aplicaciones web y aplicaciones móviles. Está estructurado

en tres componentes:

• Vista: Presenta el modelo en un formato adecuado para interactuar, por lo tanto,

requiere la información de dicho modelo que debe representar como salida.

• Controlador: Responde a eventos e invoca peticiones al modelo cuando se hace

alguna solicitud sobre la información.

• Modelo: Es la representación de la información con la cual el sistema opera, por

lo tanto, gestiona todos los accesos a dicha información, tanto consultas como

actualizaciones.

El principio del patrón es que cada uno de los componentes esté separado en diferentes

clases.

Figura 10: Diagrama del patrón MVC

53

En el proyecto es utilizado en la parte de FrontEnd. Como vistas tenemos los ficheros

XML donde se presentan los datos del modelo al usuario. Los controladores son

representados por las Activities o Fragments, los cuales escuchan los eventos

desencadenados por las vistas y ejecutan los procedimientos adecuados a estos

eventos. Finalmente, los modelos son aquellas clases que representan objetos dentro

del contexto de la aplicación, como por ejemplo Dieta.java, Alimento.java o Usuario.java.

11.2.2 Data transfer object (DTO)

Este patrón [28] consiste en el uso de un objeto de transferencia de datos. Este objeto

sirve para transportar datos entre distintos procesos. La motivación de su uso tiene

como objetivo reducir la complejidad y reducir la comunicación entre procesos.

En este proyecto el DTO ha sido utilizado para transportar la información obtenida en el

FrontEnd hacia la parte del BackEnd. Para ello se ha implementado la clase

Connection.java encargada de realizar dicha función.

11.2.3 Singleton

El Singleton [29] es un patrón que permite restringir la creación de objetos

pertenecientes a una clase o el valor de un tipo a un único objeto. Es decir, Una vez se

halla instanciado un objeto de esta clase será imposible crear un nuevo objeto de este

tipo. Además, la accesibilidad a esta clase es global, cualquier parte del programa podrá

acceder a ella sin ningún problema.

En este proyecto el Singleton se ha utilizado para almacenar toda la información

relacionada con el usuario una vez haya hecho login. La clase encargada de realizar

esta tarea es UsuarioSingleton.java que permite acceder a sus parámetros por el resto

de las clases del sistema.

11.2.4 Adaptador

El patrón Adaptador [30] es utilizado para transformar una interfaz en otra, de tal modo

que una clase que no pueda utilizar la primera haga uso de ella a través de la segunda.

Es decir, dos clases incompatibles entre ellas a través de otra clase (adaptadora) podrán

comunicarse y ser compatibles.

54

El patrón adaptador dentro del proyecto es utilizado en la capa de FontEnd, cuando se

deben listar diferentes elementos, ya que se vincula la instancia de una clase a

elementos de una vista.

11.2.5 ViewHolder

Uno de los elementos básicos de cualquier aplicación son las listas. En Android las listas

se suelen crear mediante Adapters a los que añadimos la información y, si queremos

personalizar la lista mínimamente, también el diseño con el que se mostrarán. Pero esto

se complica cuando queremos cargar listas muy largas, ya que los dispositivos pueden

alcanzar fácilmente ciertos límites de procesamiento y de memoria. El patrón

ViewHolder, permite alcanzar un procesamiento un 15% más rápido de las listas, ya que

evita la invocación del método findViewById() cada vez que se tenga que mostrar un

elemento de la lista. En el proyecto es utilizado en todas las clases que implementen

listas.

55

11.3 Diseño BackEnd

Una API REST es una biblioteca apoyada en el estándar HTTP. Visto de una forma más

sencilla, una API REST es un servicio que nos provee de funciones que nos dan la

capacidad de hacer uso de un servicio web que no es nuestro, dentro de una aplicación

propia, de manera segura.

El BackEnd ha sido implementado como si se tratara de una API REST. Cada

funcionalidad es representada mediante una función diferente, la cual recibe la

información del cliente, en caso de que lo requiera, la gestiona y devuelve la pertinente

respuesta. Tanto la información de las respuestas de la API como la de las peticiones

que esta recibe, están en formato JSON, uno de los lenguajes de intercambio de datos

más usados. Algunos de los endpoints implementados son los siguientes:

• /users/register

• /users/login

• /users/modificar/:id

• /users/delete/:id

• /ejercicio/filtrados

• /ejercicio/:id

• /ejercicios

• /dietas

• /dietas/info/:id

• /plan/:idUser

• /rutina/datos/:id

• /rutina/addEjercicio/:id

• /rutina/modificar/:id

• /rutina/eliminar/:id

• /rutina/predeterminada

• /rutina/usuarios

• /rutina/copiar

• /validate/:id

• /alimentación/dia/:id

• /alimentación/addAlimento/:id

• /alimentación/removeAlimento/:id

• /alimentación/concreta/:id

56

11.4 Esquema base de datos

Figura 11: Esquema base de datos

En Usuario podemos encontrar un total de 16 variables como el IMC, peso_deseado o

peso_actual utilizados para gestionar su información. Los usuarios tienen asociado un

único plan, calculado por el propio sistema, y una sola Alimentación. En esta última se

encuentra toda la información relacionada con la actividad alimenticia del usuario. Cada

Día contenido representa la cantidad de Kcal, proteínas, carbohidratos, fibra y grasas

consumidas en un solo día, además cada uno de estos días registra los objetos

Alimento, donde se halla la información de cada plato/ingrediente consumido.

En cuanto a las Rutinas un usuario puede crear múltiples, indicando los ejercicios a

realizar e introduciendo a su gusto los valores de los diferentes parámetros. Por otro

lado, las dietas serán recomendadas por el sistema a los usuarios. Una Dieta está

formada por 7 Menús, donde cada uno de estos objetos representa todos los platos

divididos en desayuno, comida, merienda y cena que debe consumir una persona en un

día.

57

La información del sistema se encuentra en MongoDB una base de datos NoSQL

orientada a documentos y de código abierto. La información es almacenada en formato

BSON (una especificación similar a JSON), aun así, los datos son guardados

respetando el esquema anterior.

Se ha optado por una base de datos no relacional en vez de una relacional. La diferencia

principal entre estos tipos es que las no relacionales no tienen un identificador que sirva

de relación entre un conjunto de datos y otros. Las bases de datos relacionales se

utilizan para situaciones donde se requiere una gran consistencia y seguridad de los

datos como por ejemplo una aplicación que utilice datos bancarios. Tienen dificultades

cuando el volumen de datos almacenados empieza a incrementar, ya que aumenta el

coste del mantenimiento. Por otro lado, las no relacionales permiten una mayor

flexibilidad y escalabilidad. Los datos se pueden almacenar de cualquier manera, como

gráficos o multimedia. Cada documento tiene su propia estructura sin afectar a los

demás y se pueden agregar más campos a medida que se avanza. Por lo tanto, gracias

a estos motivos se ha elegido una base de datos no relacional.

58

11.5 Interfaz gráfica

La interfaz gráfica es un aspecto importante a tener en cuenta en la implementación de

una aplicación móvil. Durante el desarrollo el diseño de la interfaz gráfica ha ido variando

ya sea por requisitos que debe cumplir, gustos propios o asesoramiento de personas

que la testearon.

En cuanto a las pantallas se organizan en tres componentes diferentes. Para el fondo

se utiliza un gradiente formado por los siguientes colores: azul oscuro (hexadecimal:

#000066) y morado oscuro (hexadecimal: #330066). Para el texto que se visualizará en

la interfaz se utiliza el color blanco (hexadecimal: #FFFFFF). Para los elementos que

aparecen se utiliza otro gradiente con los colores naranja (hexadecimal: #F56040) y rosa

fucsia (hexadecimal: #E1306C), excepto para las listas que se utiliza color blanco para

el fondo de cada elemento y negro para la información que contengan.

En el caso de los Popups se ha optado por un sistema más básico. Donde se utiliza el

blanco para el fondo, el negro para todo el texto a presentar y para los componentes el

mismo gradiente utilizado en las pantallas para los elementos.

11.5.1 Pantallas de la aplicación

Figura 12: Pantalla carga Figura 13: Iniciar sesión Figura 14: Registrarse

59

Figura 15: Menú principal Figura 16: Datos usuario Figura 17: Ejercicios

Figura 18: Información ejercicio Figura 19: Rutinas usuario Figura 20: Rutinas Predeterminadas

60

Figura 21: Rutinas de otros usuarios Figura 22: Consultar ejercicios Rutina externa Figura 23: Buscador alimentos

Figura 24: Historial de alimentación Figura 25: Alimentos consumidos Figura 26: Dieta

61

Figura 27: Consultar rutina propia Figura 28: Ejecución rutina Figura 29: Alimentación actual

Figura 30: Progreso usuario Figura 31: Información usuario Figura 32: Dietas

62

11.5.2 Popups

Figura 33: Modificar datos usuario Figura 34: Consultar/añadir datos alimento

Figura 35: Eliminar rutina Figura 36: Eliminar alimento

Figura 37: Filtrar ejercicios Figura 38: Gráfico de alimentación consumida

63

Figura 39: Filtrar rutinas externas Figura 40: Modificar ejercicio de rutina

Figura 41: Añadir ejercicio a rutina Figura 42: Crear/modificar rutina

64

12 Implementación

12.1 Tecnologías utilizadas

• Java [31]: Comercializado por primera vez en 1995 por Sun Microsystems, es

un lenguaje de programación de código abierto y orientado a objetos. Es seguro,

simple, fiable y rápido. Tiene aspectos parecidos a otros lenguajes estudiados

en el grado como C++. Cuenta con una gran comunidad de usuarios y

documentación para la resolución de problemas. La compilación se asimila al

lenguaje máquina permitiendo que se pueda ejecutar en cualquier dispositivo sin

problema alguno.

• JavaScript [32]: Es un lenguaje de programación interpretado dialecto del

estándar ECMAScript. Es definido como orientado a objetos y dinámico. Fue

diseñado con una sintaxis familiar a C, aunque adopta nombres y convenciones

de Java. Es simple, por lo que la curva de aprendizaje es elevada, y además

también es rápido, es decir, tiende a ejecutar funciones al instante.

• Android Studio [33]: Es un entorno de desarrollo integrado para la plataforma

de Android, publicado en el 2014. Basado en el software IntelliJ IDEA de

JetBrains, pese a que fue publicado de forma gratuita a través de la Licencia

Apache 2.0. Es multiplataforma y está constantemente actualizándose. Cuenta

con una gran variedad de emuladores para testear el diseño de los proyectos.

Además, al ser puramente Android permite al desarrollador aprovechar las

funcionalidades de dicho sistema operativo.

• Visual Studio Code [34]: Es un editor de código fuente desarrollado por

Microsoft para Windows, macOS y Linux. Fue comercializado el 18 de noviembre

de 2015. Incluye control integrado con Git, finalización de código inteligente y

refactorización de código. Es gratuito y de código abierto, aunque la descarga

oficial está bajo software privativo e incluye características personalizadas

por Microsoft.

65

• Android [35]: Es un sistema operativo móvil basado en núcleo Linux y otros

softwares de código abierto. Inicialmente fue desarrollado por Android Inc, que

adquirió Google en 2005. Android fue presentado en 2008. Diseñado para

teléfonos inteligentes, tabletas, relojes inteligentes, automóviles y televisores. Es

el sistema operativo móvil más utilizado en todo el mundo.

• Node.js [36]: Es un entorno de ejecución multiplataforma, de código abierto,

para la capa del servidor basado en el lenguaje de programación JavaScript,

asíncrono, con una arquitectura orientada a eventos y basado en el motor V8 de

Google. Creado por Ryan Dhal en 2009 y en la actualidad está apadrinado por

la empresa Joyent. Provee al usuario múltiples librerías y diversas utilidades para

facilitar y simplificar el manejo de tareas comunes. Implementa los protocolos de

comunicaciones más comunes, como HTTP, SSL, DNS, SPDY o TLS mejorando

su rendimiento y permitiendo un gran ahorro en costes de infraestructura.

• Postman [37]: Es una herramienta dirigida a desarrolladores web que permite

realizar peticiones HTTP a cualquier API. Es utilizado a la hora de programar y

hacer pruebas, puesto que ofrece la posibilidad de comprobar el funcionamiento

de una API. Permite organizar las peticiones en colecciones diferentes. Es

gratuito, aunque presenta dos versiones de pago que mejoran las

características.

• Git: Es un software para el control de versiones diseñado por Linus Torvalds,

pensando en la eficiencia, confiabilidad y compatibilidad de versiones de

aplicaciones. Al principio fue ideado como un motor de bajo nivel sobre el cual

otros pudieran escribir la interfaz de usuario como Cogito o StGIT. Sin embargo,

se ha convertido en un sistema de control de versiones con funcionalidad plena.

• GitHub: Es una plataforma de desarrollo colaborativo para alojar proyectos

utilizando el sistema de control de versiones Git. Utilizado principalmente para la

creación de código fuente de programas de ordenador. Publicado en enero de

2008 y diseñado con el lenguaje Ruby on Rails. Cada proyecto cuenta con una

página web y gráficos para ver cómo los desarrolladores trabajan.

66

12.2 Desarrollo

En este apartado se detallará la fase de implementación del proyecto. Al haber utilizado

una metodología ágil para el desarrollo se organiza este apartado en función de las

tareas realizadas en los 3 Sprints involucrados en el desarrollo. De tal forma que se

podrá observar cómo ha ido avanzando el proyecto y tener una visión completa de esta

fase.

12.2.1 Sprint 1

En el Sprint 1 se realizaron todos los objetivos propuestos en la planificación y se

empezó a trabajar con algunos del siguiente Sprint, ya que se acabó con la

programación del Sprint 1 antes de lo previsto. Como en la mayoría de trabajos de este

calibre se empezó con la preparación y familiarización del entorno de trabajo.

Para la capa de FrontEnd se eligió como entorno de desarrollo (IDE) Android Studio y

como lenguaje de programación Java. En cuanto al BackEnd se optó por Node.js y como

base de datos MongDB. Todo este proceso conllevó un periodo de documentación sobre

cómo y porque utilizar estás tecnologías. Además, se crearon los proyectos de cada

capa y se asociaron con sus respectivos repositorios. Durante este y el siguiente Sprint

la parte del servidor se ejecutaba a nivel local.

Una vez familiarizado con el entorno empecé a implementar las primeras

funcionalidades del proyecto, registrarse e iniciar sesión. Primero se definieron las rutas

URL correspondientes a cada funcionalidad y las tablas involucradas, en este caso

Usuario. A continuación, se implementó y testeó el código de cada tarea. Para acabar

se diseñaron, implementaron y testearon las pantallas pertinentes. En este momento los

usuarios no eran validados a través de la API de Gmail, ya que en un inicio no se había

tenido en cuenta. Cabe recalcar que la mayoría de historias de usuario se han

desarrollado de la misma forma que la descrita anteriormente:

1. Rutas URL.

2. Tablas BD.

3. Implementación BackEnd.

4. Testeo código BackEnd.

5. Implementación FrontEnd.

6. Diseño y Testeo Pantallas FrontEnd.

67

Para seguir con la planificación planteada al principio se implementaron las historias de

usuario relacionadas con el cálculo automático de las metas del usuario. Al principio se

tuvo que añadir una fase de documentación para saber que indicadores elegir y como

calcularlos. Para ello me puse en contacto con un estudiante de medicina que me

proporcionó unos apuntes sobre nutrición de los cuales se extrajeron indicadores como

la tasa metabólica basal (TMB) o el índice de masa corporal (IMC) entre otros. Después

se desarrollaron los objetivos siguiendo el mismo procedimiento descrito anteriormente,

en este caso teníamos como tablas relacionadas Usuario y Plan.

En teoría el Spint 1 debería haber finalizado en este momento, pero aún faltaban varios

días para su cierre. Entonces se decidió empezar con algunas metas del Sprint 2, es

decir, la gestión de las rutinas o como se nombró en un principio gestión del

entrenamiento. Para este Sprint simplemente se definió la tabla Rutina y parte del código

relacionado con el BackEnd.

El principal problema que surgió fue la comunicación entre las dos capas, en concreto

la parte del FrontEnd no se conectaba al BackEnd. Aunque el BackEnd se ejecutaba a

nivel local, desde un inicio se intentaba establecer una comunicación cliente-servidor.

Finalmente, se logró y no hubo retrasos en la planificación.

Conjuntamente se documentaba toda la información relacionada con todas estas tareas

realizadas. Las horas totales planteadas inicialmente eran de 135 y se incrementaron a

145.

68

12.2.2 Sprint 2

Como se muestra en la planificación, el Sprint 2 estaba destinado a implementar todas

las funcionalidades vinculadas con la gestión de ejercicios y entrenamiento/rutina, y así

fue, pero durante la iteración surgió un problema que obligó a cambiar los planes, ya

que imposibilito la realización de algunas tareas.

Como en el anterior Sprint se realizaron algunas labores sobre la gestión de

entrenamiento el principio de este Sprint 2 se dedicó a finalizarla. Esto implicó la

creación, modificación y eliminación de rutinas, además de poder consultarlas y añadir

rutinas predeterminadas. Las únicas historias de usuario que en teoría no se tenían que

implementar eran consultar y añadir rutinas de otros usuarios. En esta fase se trabajó

como si la gestión de los ejercicios ya estuviera finalizada.

Siguiendo la misma rutina que en procesos anteriores se implementó y testeó el código

de BackEnd (las URL y tablas ya estaban definidas) y posteriormente se realizó el

pertinente código de FrontEnd. Aunque en el Sprint anterior se cogió soltura con el

entorno de trabajo para esta funcionalidad se ha seguido estudiando y leyendo

documentación, sobre todo para la capa del cliente donde empezaban a aparecer las

listas de elementos que conllevan la aplicación y aprendizaje de los patrones de diseño

Adaptador y ViewHolder.

Para seguir con la planificación se empezó con la gestión de los ejercicios, en otras

palabras, añadir todos los ejercicios al sistema con sus respectivos parámetros y

hacerlos visibles al usuario. Primero se hizo una búsqueda de imágenes sobre ejercicios

que se pudieran realizar fuera de una instalación deportiva. Después de haberlos

seleccionado en teoría tenía pensado desplazarme a un gimnasio y preguntar a un

profesional del deporte una serie de preguntas sobre dichos ejercicios, pero no se pudo

llevar a cabo, ya que me infecté de Covid-19 y más adelante las autoridades decidieron

cerrar este tipo de establecimientos. Por lo tanto, esta tarea se desplazó al Sprint 3. Aun

así, se siguió con la implementación de la gestión de los ejercicios como si ya hubieran

sido añadidos, implementando el código de ambas capas y creando la tabla Ejercicio y

asociándola con Rutina.

69

Para compensar el movimiento de una tarea del Sprint 2 al 3 y, ya que aún faltaban

varios días a que finalizará la iteración, la tarea DS10 (Consultar usuarios) se trasladó

al Sprint 2. Esta funcionalidad entra dentro del grupo de gestión del entrenamiento, ya

que consiste en consultar entrenamientos públicos de otros usuarios y añadirlos como

un entrenamiento propio, por lo que el traslado es justificado.

La documentación también se realizó paralelamente al desarrollo del código. Las horas

totales rondaron aproximadamente las 135, lo que se había calculado en un inicio.

70

12.2.3 Sprint 3

Este Sprint se inició con la idea de empezar con la gestión de las dietas, que dividiremos

en dos partes: el contador de calorías y las dietas del sistema. El primero en

implementarse fue el contador de calorías. Para ello, investigué bases de datos de

alimentos que se ajustaran a las necesidades requeridas. CalorieKing fue la primera que

encontré que cubriera todos los requisitos, pero no me dieron los permisos para poder

acceder a sus servicios. Edamam fue la segunda opción, envié la petición solicitando

acceso y al momento me respondieron ofreciendo las claves de acceso. A diferencia de

todas las otras tareas implementadas esta empezó desde el FrontEnd para ver que

funcionaba la comunicación entre la app y la base de datos. Este proceso fue

relativamente sencillo gracias a la experiencia obtenida en el Sprint 1. Después se

diseñaron las URL, se crearon las tablas Alimentación, Día y Alimento, y se implementó

y testeó el código pertinente del BakcEnd. Finalmente, se diseñaron y testearon las

pantallas del FrontEnd.

Para las dietas primero me puse en contacto con un licenciado en nutrición y dietética

para hablar de las dietas. Una vez fueron planeadas se ejecutó el mismo procedimiento

que en los demás Sprints. Las tablas Dieta y Menú fueron creadas en este instante.

Cuando se reabrieron los centros deportivos me puse en contacto con un entrenador

personal que me facilito la documentación de los ejercicios que se seleccionaron en el

Sprint anterior. Después se reemplazaron los ejercicios de prueba que se habían

añadido por los documentados.

En ese instante ya se habían implementado todas las funcionalidades iniciales, pero

decidí añadir la validación de las cuentas vía Gmail. Se creó un proyecto en la plataforma

de desarrolladores de Google y se solicitó el acceso a la API de Gmail. Posteriormente

se implementó el código en la capa de BackEnd.

Por último, era necesario realizar la fase de validación del proyecto, donde se verificó si

la aplicación cumplía con los objetivos y requisitos planteados. Además, se mejoró la

interfaz gráfica arreglando algunos problemas en los diseños de las pantallas y la

repartición de los colores en los diferentes componentes de la interfaz. El tiempo total

de esta iteración fue de 120 h, 15 menos de lo calculado.

71

13 Testing

El testing es de gran importancia dentro de un proyecto para asegurarse que no hay

fallos o comportamientos no deseados en la lógica del sistema. Las pruebas se han ido

realizando de forma incremental, a medida que se implementaban las funcionalidades

se testeaban. El testing de este trabajo ha sido dividido en dos partes, uno para la capa

del BackEnd y otro para el FrontEnd.

13.1 BackEnd

El testing del BackEnd ha consistido en diseñar juegos de prueba para cada

funcionalidad que comprueben todas sus posibles formas de acabar. Para ello, se ha

utilizado la herramienta Postman para realizar peticiones HTTP a la API. Las peticiones

HTTP que hace el cliente al servidor constan de una serie de campos que se explican a

continuación. La cabecera está formada por la acción requerida (GET, POST, PUT …)

seguido de la URL del recurso y la versión HTTP que soporta el cliente. Después

tenemos el cuerpo (no todas las acciones permiten este campo). En cambio, las

repuestas del servidor al cliente están formadas por el código de respuesta y el cuerpo

con la información a retornar y el formato en el que se encuentra.

A continuación, se puede observar el caso concreto del login:

• Login cuenta verificada:

URL: https://vidasana.herokuapp.com/users/login Post

Cuerpo: {"username": "prueba","password": "prueba"}

Respuesta: {"fechas": ["2020-12-30T14:54:04.856Z"], "pesos": [70],

"validado": true, "dieta_recomendada": ["5fe0dcc3c9ffb72ed491b4fb",

"5fe0dcc3c9ffb72ed491b4fb"], "url_img": "no",

"_id": "5fec948daf40f70017d2cb88", "username": "prueba",

"password": "655e786674d9d3e77bc05ed1de37b4b6bc89f788829f9f3c679e7687b410c89b"

, "altura": 170, "peso_actual": 70, "peso_deseado": 65, "peso_ideal": 64,

"fecha_nacimiento": "2000-12-30T00:00:00.000Z", "fecha_creacion": "2020-12-

30T14:54:05.381Z", "email": "[email protected]", "sexo": "mujer",

"IMC": 24.22, "__v": 0} status 200

72

• Login cuenta no verificada:

URL: https://vidasana.herokuapp.com/users/login Post

Cuerpo: {"username": "cro","password": "cro"}

Respuesta: "No esta validado" status 410

• Login username incorrecto:

URL: https://vidasana.herokuapp.com/users/login Post

Cuerpo: {"username": "cr","password": "cro"}

Respuesta: "Nombre usuario incorrecto" status 411

• Login password incorrecto:

URL: https://vidasana.herokuapp.com/users/login Post

Cuerpo: {"username": "cro","password": "cr"}

Respuesta: "Password incorrecto" status 411

• Login username y password incorrectos:

URL: https://vidasana.herokuapp.com/users/login Post

Cuerpo: {"username": "cr","password": "cr"}

Respuesta: " Nombre usuario incorrecto" status 411

Para la autentificación se han diseñado 5 juegos de prueba diferentes donde cada uno

testea un caso en concreto. Los sucesos implementados han sido los siguientes:

1. Inició de sesión de un usuario existente y verificado.

2. Inició sesión usuario existente pero no verificado.

3. Inició de sesión con username incorrecto.

4. Inició de sesión con password incorrecta.

5. Inicio de sesión con username y password incorrecto.

El resto de funcionalidades del BackEnd han sido testeadas aplicando el mismo método

que el del login.

73

13.2 FrontEnd

El testeo de la capa de FrontEnd ha sido realizado gracias a los diferentes emuladores

de Android Studio. Cada funcionalidad era comprobada a medida que se iba

implementando y añadiendo nuevas partes de código. Este proceso se realizaba en dos

emuladores diferentes, el primero era el Pixel_3a y el segundo el Nexus 5x, para

observar como se adaptaba la aplicación a diferentes tamaños de pantalla.

Figura 43: Emuladores utilizados en las pruebas

Además, como he mencionado anteriormente, también se realizaron pruebas con

diferentes usuarios reales. Estos test consistían en observar como el usuario se

manejaba con la interfaz sin ayuda inicial, realizar preguntas relacionadas con su

experiencia de uso y de una valoración final de este señalando puntos fuertes y débiles.

Algunas de estas pruebas sirvieron de ayuda y gracias a ellas fueron implementadas,

como por ejemplo, navegabilidad, diseño de la interfaz, nuevas funcionalidades o

adaptabilidad, ya que cada usuario disponía de un dispositivo móvil diferente. Por otro

lado, también ayudaron a la detección de bugs inesperados.

74

En la navegación, como gran cambio podemos destacar la pantalla de menú principal.

En un inició estaba diseñado para que al acceder a la aplicación después de iniciar

sesión, el usuario viera directamente la pantalla Datos usuario y desde esta pudiera

acceder al resto gracias a un bottom navigation bar, un componente muy común en

aplicaciones móvil.

En cuanto a nuevas funcionalidades son destacables la adición de videos explicativos

para un mejor entendimiento de los ejercicios (comentado por varios usuarios) y un

historial para poder consultar la actividad alimenticia que ha seguido el usuario durante

toda la aplicación, ya que solo se podía acceder a la del día actual y el resto eran

eliminadas.

75

14 Planificación final

La planificación temporal del proyecto que se presentó al inicio no ha sido modificada.

El trabajo empezó el 21 de setiembre de 2020 con la fase de Gestión del proyecto, la

cual finalizó el 19 de octubre con un total de 80 horas de trabajo. El Sprint 1, como se

había planificado, inició al día siguiente el 20 de octubre y acabó tres semanas más

tarde el 9 de noviembre. El Sprint 2 igual que el anterior Sprint tuvo una duración de 3

semanas empezando el 10 de noviembre y finalizando el 30 de noviembre. El Sprint 3

empezó el 1 de diciembre y finalizó el 21 de diciembre. Una vez se cerró la última

iteración la fase de documentación de la memoria tomó inicio hasta el 22 de enero de

2021.

Por lo que respecta a los objetivos planteados en las diferentes etapas sí que ha habido

cambios significativos. Esto ha sucedido en la fase de desarrollo, es decir en el Sprint

1, 2 y 3. Los cambios se produjeron por varios motivos comentados en el apartado

Desarrollo. Los cambios son los siguientes:

• Los objetivos DS6 y DS8 pasaron del Sprint 2 al 1.

• El objetivo DS10 se movió del Sprint 3 al 2.

• La tarea DS5 (en concreto añadir ejercicios a la BD) se pospuso del Sprint 2 al

3.

• La parte de verificación de cuentas de la tarea DS3 se añadió al Sprint 3.

En la siguiente tabla se puede observar la planificación inicial aplicando los cambios

anteriores:

76

Etapa proyecto

Tarea

Gestión del proyecto

GP1

GP2

GP3

GP4

GP5

Iteración 1

DS1

DS2

DS3

DS4

DS6

DS8

GP6

DC1

Iteración 2

DS5

DS7

DS10

GP7

DC2

Iteración 3

DS9

DS3 (verificación cuentas)

DS5 (añadir ejercicios a la BD)

DS11

DS12

VD1

GP8

DC3

Documentación final

DC4

Tabla 11: Resumen tareas final

77

15 Conclusiones

Finalmente, llegados a la fase final del trabajo final de grado es momento de ver si se

han alcanzado todos los objetivos propuestos, consolidación de las competencias

técnicas definidas al inicio y posibles trabajos fututos para seguir con la continuación del

trabajo.

En cuanto a los objetivos del proyecto, creo que se han completado correctamente todos

los planteados en la fase inicial. Se ha logrado diseñar una aplicación móvil funcional y

su respectivo BackEnd que permite al usuario planificar, controlar y gestionar su

actividad física desde su casa. Con esta aplicación el usuario también podrá gestionar

su alimentación con un contador de calorías y una serie de dietas ofrecidas por el

sistema. Además, una de estas dietas será recomendada de manera proactiva según

las necesidades que presente el usuario.

Sin embargo, soy consciente que se podría haber mejorado algunos detalles de la

aplicación, como el caso del diseño de las pantallas. Esto puede ser consecuencia de

no haber creado los Mock Ups de las pantallas (fotomontajes que permiten a los

diseñadores gráficos mostrar sus diseños) de la aplicación.

Durante la realización de este trabajo se han aplicado muchos conceptos estudiados en

la especialidad de Software como los patrones de diseño, análisis de requisitos o la

gestión de metodologías agile en grandes proyectos. Haber podido utilizar dichos

conceptos supone un hecho reconfortante a nivel personal, ya que aplicarlos en un

proyecto de esta escala aporta confianza y experiencia en mi prematura carrera

profesional.

Para finalizar, ha resultado ser un proyecto interesante y ameno, ya que el deporte y la

nutrición son dos temáticas de mi agrado. He podido aprender nuevas técnicas y

tecnologías con las que no había podido trabajar, conocer la importancia de una buena

planificación, conceptos básicos en el mundo del deporte y nutrición, y el valor de ser

constante en un trabajo de esta magnitud.

78

15.1 Consolidación competencias técnicas

• CES1.3: Identificar, avaluar y gestionar los riesgos potenciales asociados a la

construcción de software que se puedan presentar.

Nivel de satisfacción: Bastante.

Este proyecto consiste en el diseño de una aplicación móvil desde cero, por lo tanto, es

necesario trabajar esta competencia. He implementado todo el software del sistema y

durante este proceso he identificado y gestionado con profundidad los riesgos

originados en la construcción de una aplicación. El proceso de análisis me ha sido de

ayuda durante la fase de desarrollo y lo será para futuros trabajos.

• CES1.5: Especificar, diseñar, implementar y evaluar bases de datos.

Nivel de satisfacción: Un poco.

Gran parte de la información con la que trata la aplicación es almacenada en una base

de datos no relacional siguiendo el esquema especificado en el apartado Esquema de

la base de datos. En él inició del primer Sprint se evaluaron algunas bases de datos y

se optó por MongoDB, porque se adapta mejor a las necesidades requeridas.

• CES1.7: Controlar la calidad y diseñar pruebas en la producción de software.

Nivel de satisfacción: Un poco.

Durante toda la fase de implementación se ha trabajado esta competencia creando

juegos de prueba para las diferentes funcionalidades y test con diferentes usuarios

reales. Recalcar que la última iteración fue en la que más se puso en práctica esta

competencia donde se dedicó gran parte del tiempo a la validación y testeo de la

aplicación. En todo proyecto software es necesario dedicar cierto tiempo al control de la

calidad y diseñar pruebas.

• CES2.1: Definir y gestionar los requisitos de un sistema software.

Nivel de satisfacción: Bastante.

Los diferentes requisitos del proyecto han sido definidos por el sistema software. Han

sido listados y documentados con detalle en el apartado requisitos del sistema siguiendo

el formato de historias de usuario para los funcionales. En cambio, los no funcionales

hacen referencia a aspectos técnicos relacionados con la satisfacción del usuario.

79

• CES3.1: Desarrollar servicios y aplicaciones multimedia.

Nivel de satisfacción: Un poco.

La aplicación trabaja con varios archivos multimedia. Las fotos de perfil son

almacenadas en la propia BD junto a las imágenes de los ejercicios. En cuanto a los

videos explicativos de los ejercicios son proporcionados por la API de YouTube y las

imágenes de los ingredientes se encuentran en la BD de Edamam.

80

15.2 Trabajo futuro

La aplicación móvil cuenta con todas las funcionalidades planteadas al principio. Pese

a esto existe una gran cantidad de trabajo para realizar en un futuro.

En primer lugar, se podría ampliar el contenido de la aplicación añadiendo nuevos

ejercicios y dietas al sistema. Esto requiere seguir realizando entrevistas a profesionales

de ambos campos. También se podría mejorar alguno de los diseños de las pantallas,

como he comentado en la conclusión, aplicando nuevos y actualizados elementos de la

interfaz móvil y reestructurándolas.

En caso de que la aplicación tuviera una recepción positiva por parte de los usuarios y

el número de usuarios activos empezara a aumentar sería necesario incrementar la

escalabilidad del proyecto. Para ello empezaríamos con el aumento de peticiones hacia

la API de base de datos de alimentos y si fuera necesario incrementando la capacidad

de la base de datos.

En cuanto a nuevas funcionalidades se podría añadir un chat entre usuarios y

entrenadores personales para que pudieran consultar las dudas deportivas o

alimenticias que les surgieran mientras utilizan la aplicación. La implementación de esta

funcionalidad implicaría una iteración más de desarrollo, ya que conllevaría la

realización de varias tareas de dificultad elevada.

Paralelamente a estas tareas también se estaría estudiando y leyendo las valoraciones

de los usuarios que hayan podido probar la aplicación, mejorando los puntos débiles y

reforzando los puntos fuertes.

81

16 Referencias

[1] Facultat d’Informàtica de Barcelona. https://www.fib.upc.edu/

Última conexión: 21/09/2020.

[2] Organización Mundial de la Salud. OMS | Actividad Física

https://www.who.int/dietphysicalactivity/pa/es/

Última conexión: 21/09/2020.

[3] Ejercicio aeróbico cuales son y beneficios - Ejercicio y deporte

https://www.webconsultas.com/ejercicio-y-deporte/vida-activa/tipos-de-deporte/el-

ejercicio-aerobico-1889

Última conexión: 21/09/2020.

[4] Ejercicio anaeróbico cuales son y beneficios - Ejercicio y deporte

https://www.webconsultas.com/ejercicio-y-deporte/vida-activa/tipos-de-deporte/el-

ejercicio-anaerobico-1888

Última conexión: 21/09/2020.

[5] Ejercicio: ¿de qué tipo y cuanto?

https://www.sanitas.es/sanitas/seguros/es/particulares/biblioteca-de-salud/ejercicio-

deporte/Consejos-para-correr/san041668wr.html

Última conexión: 21/09/2020.

[6] OMS | Dieta https://www.who.int/dietphysicalactivity/diet/es/

Última conexión: 22/09/2020.

82

[7] Nutrición Humana (2017) 2º Medicina universidad autónoma de Barcelona (UAB) -

Ona Alsinet Reig.

[8] Los patrones de actividad física de la población española están determinados

principalmente por el sexo y la edad: resultados obtenidos

http://www.fen.org.es/anibes/archivos/documentos/ANIBES_numero_6.pdf

Última conexión: 22/09/2020

[9] Dieta: La mala alimentación causa 44.000 muertes en España (17/01/2019)

https://www.alimente.elconfidencial.com/bienestar/2019-01-15/dieta-enfermedades-

cardiovasculares_1756054/

Última conexión: 22/09/2020.

[10] Exceso de peso en España: situación actual, proyecciones para 2030 y

sobrecoste directo estimado para el Sistema Nacional de Salud (09/07/2018)

https://www.revespcardiol.org/es-exceso-peso-espana-situacion-actual-articulo-

S0300893218303877

Última conexión: 22/09/2020.

[11] Contador de calorías, diario de dieta y ejercicios gratuitos | MyFitnessPal.com

https://www.myfitnesspal.com/es/

Última conexión: 23/09/2020.

[12] Ejercicios Caseros

https://play.google.com/store/apps/details?id=com.ejercicioscaseros&hl=es

Última conexión: 28/09/2020.

[13] Lifesum Health App - Get Healthy & Lose Weight - Lifesum https://lifesum.com/es

Última conexión: 23/09/2020.

83

[14] Sworkit Entrenador https://play.google.com/store/apps/details?id=sworkitapp.sworkit.com&hl=es

Última conexión: 28/09/2020.

[15] RGPD https://www.boe.es/doue/2016/119/L00001-00088.pdf

Última conexión: 24/09/2020.

[16] Agile https://study.com/academy/lesson/agile-documentation-methodology-requirements-examples.html

Última conexión: 24/09/2020.

[17] Git https://git-scm.com/

Última conexión: 24/09/2020.

[18] GitHub https://github.com/

Última conexión: 24/09/2020.

[19] Taiga https://taiga.io/

Última conexión: 24/09/2020.

[20] GlassDoor https://www.glassdoor.es/

Última conexión: 11/10/2020.

[21] EDAMAM Edamam - Eat better!

Última conexión: 19/12/2020.

[22] API Youtube YouTube Android Player API | YouTube API de Android (google.com)

Última conexión: 14/12/2020.

[23] Heroku Personal apps | Heroku

Última conexión: 23/12/2020.

[24] MongoDB MongoDB Atlas: Cloud Document Database | MongoDB

Última conexión: 4/01/2021.

84

[25] Mongoose Mongoose ODM v5.11.11 (mongoosejs.com)

Última conexión: 4/12/2020.

[26] API Gmail Gmail API | Google Developers

Última conexión: 21/12/2020.

[27] MVC Patrón Modelo Vista Controlador - EcuRed

Última conexión: 8/01/2021.

[28] Design patterns: elements of reusable object-oriented software - Gamma, E.;

Helm, R.; Johnson, R.; Vlissides, J, Addison-Wesley, 1995.

Design Patterns: Elements of Reusable Object-Oriented Software - Erich Gamma,

Richard Helm, Ralph Johnson, John Vlissides - Google Libros

Última conexión: 10/01/2021.

[29] Singleton Patrón Singleton en Java, con ejemplos - Jarroba

Última conexión: 8/01/2021.

[30] Adaptador Adapter - EcuRed

Última conexión: 8/01/2021.

[31] Java Java | Oracle

Última conexión: 10/01/2021.

[32] Javascript JavaScript.com

Última conexión: 10/01/2021.

[33] Android Studio Cómo instalar Android Studio | Desarrolladores de Android

Última conexión: 10/01/2021.

[34] Visual Studio Code IDE de Visual Studio, editor de código, Azure DevOps y App Center - Visual Studio (microsoft.com)

Última conexión: 10/01/2021.

85

[35] Android Android | La plataforma que amplía los límites de lo posible

Última conexión: 10/01/2021.

[36] Node.js Node.js

Última conexión: 10/01/2021.

[37] Postman Postman | The Collaboration Platform for API Development

Última conexión: 10/01/2021.