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
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.