Aplicación móvil para la generación del calendario semanal alimentario
Abstract
Grado en Ingeniería Informática de Servicios y Aplicaciones
Full text
Universidad de Valladolid ESCUELA DE INGENIERÍA INFORMÁTICA DE SEGOVIA Grado en Ingeniería Informática de Servicios y Aplicaciones Aplicación móvil para la generación del calendario semanal alimentario Alumno: Carlos Patiño Rivas Tutora: Pilar Grande González
Índice general Resumen 1 I Memoria del proyecto 3 1. Descripción del proyecto 5 1.1. Introducción................................... 5 1.2. Objetivosdeltrabajo.............................. 6 1.3. Entornodeaplicación.............................. 7 1.3.1. Background............................... 7 1.3.2. Oportunidades de negocio . . . . . . . . . . . . . . . . . . . . . . . 7 1.4. Visiónyalcance................................. 10 1.4.1. Árbol de características . . . . . . . . . . . . . . . . . . . . . . . . . 10 2. Metodología 13 2.1. Procesodedesarrollo.............................. 13 2.2. Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3. Arquitectura................................... 16 2.3.1. Arquitectura física . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.2. Arquitectura lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3. Planificación 19 3.1. Estimación del esfuerzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.1. Método de Albretch . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.2. COCOMOII .............................. 22 3.1.3. Estimación por casos de uso . . . . . . . . . . . . . . . . . . . . . . 24 3.2. Metodología................................... 27 3.3. Planificación temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3.1. Planificación inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3.2. Duraciónfinal.............................. 29 3.4. Presupuestoeconómico............................. 31 3.4.1. Hardware y software . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.4.2. Recursoshumanos ........................... 35 3.4.3. Presupuestototal............................ 36 i
3.4.4. Plandenegocio............................. 36 4. Conclusiones 37 4.1. Consecución de objetivos y posibles mejoras y ampliaciones . . . . . . . . . 37 4.2. Conocimiento adquirido . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 II Documentación técnica 39 5. Análisis 41 5.1. Requisitos.................................... 41 5.1.1. Actores ................................. 41 5.1.2. Requisitos de información . . . . . . . . . . . . . . . . . . . . . . . 41 5.1.3. Diagrama entidad relación . . . . . . . . . . . . . . . . . . . . . . . 42 5.1.4. Requisitos de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.1.5. Matriz de trazabilidad . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.1.6. Diagrama de casos de uso . . . . . . . . . . . . . . . . . . . . . . . 43 5.1.7. Especificación de los casos de uso . . . . . . . . . . . . . . . . . . . 44 5.2. Atributosdecalidad .............................. 56 5.3. Diagrama de colaboración . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6. Diseño 59 6.1. Diseñodedatos................................. 59 6.1.1. Diccionario de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.2. Diagramasdesecuencia............................. 62 7. Implementación 65 7.1. Librerías para el uso de la base de datos SQLite . . . . . . . . . . . . . . . 65 7.2. Librería para la serialización de datos . . . . . . . . . . . . . . . . . . . . . 65 7.3. Librerías para la transformación de imágenes . . . . . . . . . . . . . . . . . 66 7.4. Librerías para la creación del PDF . . . . . . . . . . . . . . . . . . . . . . 66 8. Pruebas 69 8.1. Pruebas de caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.2. Pruebasdecajanegra ............................. 70 III Manuales de aplicación 79 9. Manuales 81 9.1. Manualdeinstalación ............................. 81 9.2. Manualdeusuario ............................... 83 9.2.1. Inicio................................... 83 9.2.2. Añadirunplato............................. 85 ii Carlos Patiño Rivas
Índice general 9.2.3. Listados................................. 88 9.2.4. Ver plato y opciones . . . . . . . . . . . . . . . . . . . . . . . . . . 89 9.2.5. Generar calendario y guardarlo . . . . . . . . . . . . . . . . . . . . 91 9.2.6. Ver calendario y opciones . . . . . . . . . . . . . . . . . . . . . . . 93 IV Apéndices 97 10.Anexos 99 10.1. Información complementaria . . . . . . . . . . . . . . . . . . . . . . . . . . 99 10.2.ContenidodelCD................................ 99 Referencias 100 iii Carlos Patiño Rivas
iv Carlos Patiño Rivas
Índice de figuras 1.1. Gráfico de distribución de tiempo . . . . . . . . . . . . . . . . . . . . . . . 7 1.2. Aplicación Dieta balanceada . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3. Aplicación Diario de alimentos . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4. Aplicación Runtastic Balance . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5. AplicaciónFitMenCook ............................ 9 1.6. Árbol de Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1. Arquitecturalógica............................... 17 3.1. Estimación.................................... 28 3.2. Diagrama de Gantt inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3. Duraciónfinal.................................. 29 3.4. Diagrama de Gantt final . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1. Diagrama entidad relación . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2. Matriz de trazabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3. Diagrama de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.4. Diagrama de colaboración: Añadir plato . . . . . . . . . . . . . . . . . . . 56 5.5. Diagrama de colaboración: Generar calendario . . . . . . . . . . . . . . . . 57 5.6. Diagrama de colaboración: Generar resumen PDF . . . . . . . . . . . . . . 57 6.1. Diagrama de secuencia: Añadir plato . . . . . . . . . . . . . . . . . . . . . 63 6.2. Diagrama de secuencia: Modificar plato . . . . . . . . . . . . . . . . . . . . 64 9.1. Advertencia de instalación desde Drive . . . . . . . . . . . . . . . . . . . . 81 9.2. Ajuste de instalación desde Drive . . . . . . . . . . . . . . . . . . . . . . . 82 9.3. Ajuste de instalación desde Gestor de archivos . . . . . . . . . . . . . . . . 82 9.4. Ajuste desde orígenes desconocidos . . . . . . . . . . . . . . . . . . . . . . 83 9.5. Iniciodelaaplicación.............................. 83 9.6. Menú de perfil de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 9.7. Selección de perfil de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . 84 9.8. Perfil de usuario seleccionado . . . . . . . . . . . . . . . . . . . . . . . . . 85 9.9. Pantalla 1 añadir plato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 9.10. Pantalla 2 añadir plato, receta . . . . . . . . . . . . . . . . . . . . . . . . . 86 v
9.11. Pantalla 2 añadir plato, ingredientes . . . . . . . . . . . . . . . . . . . . . 87 9.12. Pantalla 3 añadir plato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 9.13.Listadocalendarios............................... 88 9.14.Listadoplatos.................................. 88 9.15.Informacióndeplato .............................. 89 9.16.Recetadelplato................................. 90 9.17.Eliminarelplato ................................ 90 9.18. Pantalla generar calendario . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 9.19. Pantalla guardar calendario . . . . . . . . . . . . . . . . . . . . . . . . . . 92 9.20. Información de calendario . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 9.21. Eliminar el calendario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 9.22. Visualización del PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 9.23. Apertura del PDF con aplicación externa . . . . . . . . . . . . . . . . . . . 95 9.24. Resumen calórico del calendario . . . . . . . . . . . . . . . . . . . . . . . . 95 vi Carlos Patiño Rivas
Índice de tablas 2.1. Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2. Ventajas y desventajas de las herramientas utilizadas . . . . . . . . . . . . 15 3.1. Pesos puntos de función . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2. Tabla criterios de evaluación ficheros lógicos . . . . . . . . . . . . . . . . . 19 3.3. Tabla criterios de evaluación salidas y consultas . . . . . . . . . . . . . . . 20 3.4. Tabla criterios de evaluación entradas . . . . . . . . . . . . . . . . . . . . . 20 3.5. Tabla de parámetros de entrada, salida, consulta y ficheros internos . . . . 20 3.6. Tabla de puntos de función sin ajustar . . . . . . . . . . . . . . . . . . . . 21 3.7. Tabla de factores de complejidad y factores de ajuste . . . . . . . . . . . . 21 3.8. Tabla de los puntos de función ajustados . . . . . . . . . . . . . . . . . . . 22 3.9. Tabla COCOMO intermedio . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.10. Tabla factores de ajuste COCOMO . . . . . . . . . . . . . . . . . . . . . . 23 3.11. Tabla de la estimación con COCOMO intermedio orgánico . . . . . . . . . 23 3.12. Tabla de los factores de peso de los actores . . . . . . . . . . . . . . . . . . 24 3.13. Tabla del peso de los casos de uso sin ajustar . . . . . . . . . . . . . . . . . 25 3.14. Tabla de los factores de complejidad técnica . . . . . . . . . . . . . . . . . 25 3.15. Tabla de los factores de entorno . . . . . . . . . . . . . . . . . . . . . . . . 26 3.16. Tabla de los factores de productividad . . . . . . . . . . . . . . . . . . . . 26 3.17. Horas dedicadas al proyecto según los casos de uso . . . . . . . . . . . . . . 27 3.18. Tabla del presupuesto hardware con puntos de función . . . . . . . . . . . 32 3.19. Tabla del presupuesto software con puntos de función . . . . . . . . . . . . 32 3.20. Tabla del presupuesto hardware con COCOMO . . . . . . . . . . . . . . . 32 3.21. Tabla del presupuesto software con COCOMO . . . . . . . . . . . . . . . . 33 3.22. Tabla del presupuesto hardware con casos de uso . . . . . . . . . . . . . . 33 3.23. Tabla del presupuesto software con casos de uso . . . . . . . . . . . . . . . 34 3.24. Tabla del presupuesto hardware real . . . . . . . . . . . . . . . . . . . . . . 34 3.25. Tabla del presupuesto software real . . . . . . . . . . . . . . . . . . . . . . 34 3.26. Tabla del presupuesto de recursos humanos con puntos de función . . . . . 35 3.27. Tabla del presupuesto de recursos humanos con COCOMO . . . . . . . . . 35 3.28. Tabla del presupuesto de recursos humanos con casos de uso . . . . . . . . 35 3.29. Tabla del presupuesto real de recursos humanos . . . . . . . . . . . . . . . 36 3.30.Tabladecostes ................................. 36 vii
2Carlos Patiño Rivas
Parte I Memoria del proyecto 3
Capítulo 1 Descripción del proyecto 1.1. Introducción La motivación de este proyecto viene dada por la falta de planificación que las personas suelen dedicar a la alimentación. Muy poca gente planifica su dieta de acuerdo a sus necesidades, principalmente porque es una tarea costosa que requiere un tiempo del que no solemos disponer. La falta de planificación hace que la alimentación se base en lo que se tiene más a mano, o aquello que resulta más rápido y cómodo pero que no es nada beneficioso para la salud. Esto hace que en la actualidad la obesidad sea algo común, en muchas ocasiones debido a que un gran número de esas personas, que no disponen del tiempo para planificar lo que van a comer, les gustaría poder tener un calendario con aquello que les corresponde comer sin tener que preocuparse en pensarlo. Por ello, una aplicación Android para la elaboración del calendario alimentario semanal sería algo que gran número de personas agradecerían, ya que, ahorrarían el tiempo de planificar los menús. Si además esta aplicación elabora la lista de la compra para la dieta semanal, ahorrarían más tiempo todavía. Además hoy en día existe una tendencia creciente de usar los robots de cocina sofisticados que reducen significativamente el tiempo de cocinado de los alimentos, por lo que son aliados perfectos para nuestra aplicación. Usando mucho la imaginación, quién sabe si la creación de esta aplicación puede ser el germen de parte del software de un futuro sistema completamente automático de alimentación, un sistema que él mismo elabore los menús de la semana, que a raíz de esto haga la compra vía Internet y que con apenas o nada de colaboración por parte del usuario haga el cocinado, haciendo que en el usuario prácticamente tenga que sentarse a la mesa a comer. 5
1.2. Objetivos del trabajo A nivel personal: Lo primero es el aprendizaje de llevar a cabo un proyecto con lo aprendido durante la carrera desde su diseño hasta su implementación que servirá para recordar y afianzar los conocimientos; otro objetivo es mejorar el autoaprendizaje porque va a ser esencial tanto para la realización de este trabajo como para el ámbito laboral, ya que, en un campo como es la informática el autoaprendizaje es un pilar básico para la consecución de objetivos o resolución de problemas y por último realizar una aplicación móvil que sea funcional a nivel personal, que solvente el problema de no saber qué hacer para comer y no emplear tiempo en pensar y organizar el calendario de comidas. A nivel teórico/práctico: Aplicación a la que, en posibles iteraciones futuras, sea fácil añadir funcionalidades relacionadas con el ámbito de la vida sana e incluso el mundo fitness. Aplicación que pueda llegar a ser utilizada por personas que, ya sea por decisión propia o por criterio médico, la utilicen para llevar un buen control de su alimentación. Aplicación que pueda ser usada por cafeterías, restaurantes, comedores para elaborar sus menús semanales de forma más cómoda, pudiendo planificar con más antelación. Aplicación móvil cuyo diseño y funcionalidades permitan que en el futuro pueda ser implementada en el otro gran sistema operativo móvil, IOS. A nivel práctico: Permitir a los usuarios almacenar los platos que cocinan. Generar de forma automática, a partir del tipo de dieta que seleccione llevar el usuario, el calendario semanal con los platos correspondientes a cada día y cada comida. Dependiendo del calendario generado, obtener la lista de la compra de los ingredientes que deberá comprar el usuario para los platos de esa semana. Facilitar el control de calorías, pudiendo obtener el valor calórico por plato, valor calórico total por día y el valor calórico total de la semana. Proporcionar la posibilidad al usuario de generar un resumen en PDF de la planificación generada, que facilite su impresión en papel. 6Carlos Patiño Rivas
1.3. Entorno de aplicación 1.3. Entorno de aplicación 1.3.1. Background Si se consulta una encuesta elaborada por el INE (ver:https://www.ine.es/prensa/np669.pdf), acerca del empleo del tiempo en función del tipo de actividad se puede observar que el tiempo dedicado al hogar y la familia, que es donde se engloban las actividades culinarias, no es nada desdeñable. Figura 1.1: Gráfico de distribución de tiempo Dentro de este apartado de hogar y familia también se encuentran otras actividades además de las actividades culinarias, tales como: actividades para el hogar y la familia no especificadas, mantenimiento del hogar, confección y cuidado de ropa, jardinería y cuidado de animales, construcción y reparaciones, compras y servicios, gestión del hogar, cuidado de niños y ayuda a adultos miembros del hogar. Se sabe que son actividades bastante repetitivas pero de gran importancia, por lo que el tiempo que se consiga ahorrar en estas actividades es valioso para dedicarlo a otras actividades de mayor importancia de este mismo apartado o incluso de otro. Con lo cual, si se ofrece la oportunidad de ahorrar aunque sean minutos de tiempo, poca gente rechazará la oportunidad. 1.3.2. Oportunidades de negocio Si se revisan las distintas aplicaciones del tema alimentación que se puede encontrar en el Google Play, se puede observar que abundan, debido a que hoy en día es muy común que la gente haga dietas, ya sea por salud, para realizar actividades deportivas, para adelgazar ... etc. Algunos ejemplos de aplicaciones orientadas a la alimentación podrían ser: 7Carlos Patiño Rivas
Dieta balanceada: Esta aplicación está enfocada a la vida sana y el ejercicio, se basa en llevar un control sobre aquello que el usuario come según el grupo alimenticio, con consejos alimenticios y de hábitos de expertos, que los dan de forma individualizada para que quien la use alcance sus objetivos y además la aplicación indica la cantidad de cada alimento que debe tomar el usuario comparándolos con objetos cotidianos. Figura 1.2: Aplicación Dieta balanceada Diario de alimentos: Esta aplicación ofrece la posibilidad de llevar el control de aquello que has comido para ayudar a prevenir comer en exceso, muestra artículos sobre alimentación que pueden añadir los usuarios y elabora un informe semanal de tendencias según los objetivos que haya marcado el usuario. Figura 1.3: Aplicación Diario de alimentos 8Carlos Patiño Rivas
1.3. Entorno de aplicación Runtastic Balance: En este caso la aplicación da consejos acerca de nutrición y vida saludable y permitir apuntar todo lo que el usuario come, además cuenta las calorías. Está especialmente dirigida para la realización de planes nutricionales, ya que, dependiendo del plan que elija el usuario se establecerá una cantidad de calorías objetivo. Figura 1.4: Aplicación Runtastic Balance FitMenCook: El enfoque de esta aplicación es para el mundo del gimnasio, está al tanto de las calorías y los macro nutrientes, contiene centenares de recetas organizadas por etiquetas y además estas recetas indican cantidades de ingredientes a granel, para aprovechar lo sobrante en posteriores días y ahorrar tiempo. Figura 1.5: Aplicación FitMenCook 9Carlos Patiño Rivas
Oportunidades de la Aplicación móvil para la generación del calendario semanal alimentario: Las aplicaciones nombradas anteriormente tienen funciones parecidas, suelen coincidir en llevar el control de la dieta registrando aquello que el usuaro come y medir las calorías por alimento. Pero ninguna elabora lo que es el calendario de aquello que se tiene que comer y es ahí cuando la aplicación que se propone en este proyecto tiene sentido, porque lo diferencial es que va destinada a las personas que quieran aprovechar sus platos para que, sin ellos pensar, organizar y cuadrar, se les elabore una dieta que les diga cuándo deben comer determinados platos de su recetario. Los propios usuarios son los que añaden los platos y la aplicación se encargará de repartirlos de tal manera que se ajuste más a la dieta que quiera llevar el usuario. 1.4. Visión y alcance La visión de esta aplicación puede llegar a ser, si se mira a largo plazo, extensa si se contempla la posibilidad de que sea una aplicación total en lo que a salud y organización personal se refiere. Pudiendo tratar el tema de la alimentación de forma más exhaustiva, incluyendo recetas, recomendaciones de cantidad de comida, diario de aquello que se ha comido, etc. Además se podría añadir el apartado deportivo, donde se pudiera medir y registrar la actividad física realizada por el usuario, un generador del calendario semanal de rutinas de entrenamiento dependiendo de la disciplina elegida, un apartado de registro de parámetros de salud (como el peso, pulsaciones, horas de sueño, etc). En esta primera iteración que es la que se va a llevar a cabo en este proyecto, el alcance van a ser los objetivos prácticos señalados anteriormente, una aplicación que de forma sencilla permita a los usuarios conocer su menú diario, con su cantidad calórica e indicándoles lo que deben comprar. 1.4.1. Árbol de características El árbol de características sería el siguiente: 10 Carlos Patiño Rivas
1.4. Visión y alcance Figura 1.6: Árbol de Características 11 Carlos Patiño Rivas
18 Carlos Patiño Rivas
Capítulo 3 Planificación 3.1. Estimación del esfuerzo Para la estimación del esfuerzo se van a aplicar la técnica de estimación de puntos de función, la técnica de estimación COCOMO y la técnica de estimación por casos de uso. 3.1.1. Método de Albretch Parámetro Complejidad baja Complejidad media Complejidad alta Entradas x3 x4 x6 Salidas x4 x5 x7 Consultas x7 x10 x15 Ficheros Internos x5 x7 x10 Ficheros Externos x3 x4 x6 Tabla 3.1: Pesos puntos de función Ficheros lógicos externos e internos Datos elementalesRegistros elementales 1-19 20-50 >51 1 Baja Baja Media 2-5 Baja Media Alta >6 Media Alta Alta Tabla 3.2: Tabla criterios de evaluación ficheros lógicos 19
Salidas y consultas Datos elementalesRegistros elementales 1-5 6-19 >20 0-1 Baja Baja Media 2-3 Baja Media Alta >4 Media Alta Alta Tabla 3.3: Tabla criterios de evaluación salidas y consultas Entradas Datos elementalesRegistros elementales 1-4 5-15 >16 0-1 Baja Baja Media 2-3 Baja Media Alta >3 Media Alta Alta Tabla 3.4: Tabla criterios de evaluación entradas Parámetro Elemento Complejidad Entrada Añadir un nuevo plato. Baja Entrada Modificar plato. Baja Entrada Eliminar plato. Baja Entrada Guardar calendario. Baja Entrada Eliminar calendario. Baja Salida Generar calendario. Media Salida Generar resumen PDF. Media Salida Generar resumen calórico semanal. Media Salida Lista de la compra. Baja Consulta Listado de platos. Baja Consulta Ver plato. Baja Consulta Listado de calendarios. Baja Consulta Ver calendario. Media Consulta Ver receta. Baja Ficheros Internos Base de datos de la aplicación. Baja Tabla 3.5: Tabla de parámetros de entrada, salida, consulta y ficheros internos 20 Carlos Patiño Rivas
3.1. Estimación del esfuerzo Parámetros Cantidad Valor complejidad Resultado Entradas B 5 3 15 M 0 4 0 A 0 6 0 Salidas B 1 4 4 M 3 5 15 A 0 6 0 Consultas B 4 7 28 M 1 10 10 A 0 15 0 Ficheros Internos B 1 5 5 M 0 7 0 A 0 10 0 Ficheros Externos B 0 3 0 M 0 4 0 A 0 6 0 Sumatorio 77 Tabla 3.6: Tabla de puntos de función sin ajustar NºFactor Valor FC 1 Comunicación de datos. 0 2 Funciones distribuidas. 0 3 Rendimiento. 1 4 Configuraciones fuertemente utilizadas. 0 5 Frecuencia de Transacciones. 0 6 Entrada de datos on-line. 0 7 Eficiencia del usuario final. 1 8 Actualizaciones on-line. 0 9 Procesos complejos. 3 10 Reusabilidad. 2 11 Facilidad de instalación. 1 12 Facilidad de operación. 0 13 Instalación en lugares distintos. 2 14 Facilidad de cambio. 2 Factores de ajuste FA = (0,01 * PFC) + 0,65 = (0,01 * 12) + 0,65 = 0,77 Tabla 3.7: Tabla de factores de complejidad y factores de ajuste 21 Carlos Patiño Rivas
Puntos de función ajustados Resultado PFA = PFNA * FA = 77 * 0,77 = 59,29 Tabla 3.8: Tabla de los puntos de función ajustados Si consultamos las líneas de código por punto de función que corresponden con Java son 53 LDC/PF. LDC = 53 LDC/PF * 59,29 PF = 3142 LDC Tiempo por puntos de función La media de horas diarias se obtendría de realizar el cálculo: 583 horas / 201 días = 2,9 horas aproximadamente. Tiempo = PFA * 2,9 = 59,29 * 2,9 = 172 horas 3.1.2. COCOMO II El proyecto dispone de una especificación de requisitos más o menos terminada, por lo tanto se usará COCOMO intermedio y al ser un proyecto de pequeño tamaño, con pocas innovaciones y es realizado por una única persona, el modelo de COCOMO que se usará será el orgánico. Modelo de desarrollo Persona-mes Tiempo desarrollo Orgánico E = 3,2KLDC1,05 TD = 2,5PM0,38 Semiacoplado E = 3,0KLDC1,12 TD = 2,5PM0,35 Empotrado E = 2,8KLDC1,2TD = 2,5PM0,32 Tabla 3.9: Tabla COCOMO intermedio 22 Carlos Patiño Rivas
3.1. Estimación del esfuerzo Valor de los factores Factores de coste Muy bajo Bajo Medio Alto Muy alto Extra Valor Fiabilidad del sofware 0,75 0,88 1,00 1,15 1,4 1,00 Tamaño de la bases datos 0,94 1,00 1,08 1,16 0,94 Complejidad del software 0,70 0,85 1,00 1,15 1,30 1,65 1,00 Restricciones de rendimiento en tiempo de ejecución 1,00 1,11 1,30 1,66 1,00 Restricciones de memoria 1,00 1,06 1,21 1,56 1,00 Volatilidad del entorno de la máquina virtual 0,87 1,00 1,15 1,30 1,00 Tiempo de respuesta requerido 0,87 1,00 1,07 1,15 0,87 Capacidad de los analistas 1,46 1,19 1,00 0,86 0,71 1,00 Experiencia con el tipo de aplicación 1,29 1,13 1,00 0,91 0,82 1,00 Experiencia con el hardware 1,21 1,10 1,00 0,90 1,00 Experiencia con el lenguaje de programación 1,14 1,07 1,00 0,95 1,00 Capacidad de los programadores 1,42 1,17 1,00 0,86 0,70 1,00 Técnicas modernas de programación 1,24 1,10 1,00 0,91 0,82 1,00 Utilización de herramientas software 1,24 1,10 1,00 0,91 0,83 1,00 Restricciones en la planificación temporal 1,23 1,08 1,00 1,04 1,10 1,08 Resultado 0,883 Tabla 3.10: Tabla factores de ajuste COCOMO COCOMO Resultado E = 3,2KLDC1,05 * FCC = 3,2∗3,1421,05 * 0,883 = 9,40 Personas-mes TD = 2,5PM0,38 =2,5∗9,400,38 =5,86 Meses Tabla 3.11: Tabla de la estimación con COCOMO intermedio orgánico Las horas correspondientes a COCOMO las obtenemos al multiplicar la duración en meses según COCOMO por 30 días que tiene un mes por las 2,9 horas diarias: Tiempo = 5,86 * 30 * 2,9 = 510 horas 23 Carlos Patiño Rivas
3.1.3. Estimación por casos de uso Cálculo del factor de peso de los actores sin ajustar (UAW) Se comienza estableciendo la complejidad de interacción entre un actor y el sistema. Las posibles complejidades son las siguientes: Simple: Son aquellas interacciones que se realizan a través de un API, tendría un peso de 1. Medio: Son aquellas interacciones que se realizan a través de un protocolo, tendría un peso de 2. Complejo: Son aquellas interacciones que se realizan a través de una interfaz gráfica, tendría un peso de 3. En la tabla 3.12 se indicarían los factores de peso de los actores sin ajustar en el proyecto. Actor Tipo de actor Factor Usuario Complejo 3 Resultado 3 Tabla 3.12: Tabla de los factores de peso de los actores Cálculo del peso de los casos de uso sin ajustar (UUCCW) Se calcula la complejidad de cada caso de uso, según el número de interacciones que se realicen en el caso de uso, las posibles complejidades son las siguientes: Simple: Se realizan 3 o menos interacciones, tendría un peso de 5. Medio: Se realizan de 4 a 7 interacciones, tendría un peso de 10. Complejo: Se realizan 7 o más interacciones, tendría un peso de 15. En la tabla 3.13 se indicarían el peso de los casos de uso sin ajustar en el proyecto. Actor Caso de uso Transacciones UUCW Usuario Añadir plato 3 5 Usuario Modificar plato 2 5 Usuario Eliminar plato 2 5 Usuario Guardar calendario 1 5 Usuario Eliminar calendario 2 5 Usuario Generar calendario 1 5 Usuario Generar resumen PDF 1 5 Usuario Generar resumen calórico semanal 1 5 24 Carlos Patiño Rivas
3.1. Estimación del esfuerzo Actor Caso de uso Transacciones UUCW Usuario Lista de la compra 1 5 Usuario Listado de platos 1 5 Usuario Ver plato 1 5 Usuario Listado calendarios 1 5 Usuario Ver calendario 1 5 Usuario Ver receta 1 5 Resultado 75 Tabla 3.13: Tabla del peso de los casos de uso sin ajustar Cálculo de los puntos de casos de uso sin ajustar (UUCP) Los puntos de casos de uso sin ajustar se obtienen de la combinación de la suma de los factores de peso de los actores sin ajustar más la suma de los pesos de los casos de uso sin ajustar. UUCP =UAW +UUCW = 3 + 75 = 78 UUCP. Cálculo de los factores de complejiad técnica (TCF) Factor Descripción Peso Valor Resultado R1 Sistema distribuido 2 0 0 R2 Objetivos de rendimiento 1 1 1 R3 Eficiencia respecto al usurio 1 0 0 R4 Procesamiento complejo 1 1 1 R5 Código reutilizable 1 1 1 R6 Instalación sencilla 0,5 5 2,5 R7 Fácil utilización 0,5 5 2,5 R8 Portabilidad 2 2 4 R9 Facilidad de cambio 1 2 2 R10 Uso concurrente 1 0 0 R11 Características de seguridad 1 0 0 R12 Accesible por terceros 1 0 0 R13 Requerimiento de formación 1 0 0 Resultado 14 Tabla 3.14: Tabla de los factores de complejidad técnica TCF = 0,6 + (0,01 ∗ 13 X i=1 Ri)=0,6 + (0,01 ∗14) = 0,74 25 Carlos Patiño Rivas
Cálculo de los factores de entorno (EF) Factor Descripción Peso Valor Resultado E1 Familiar con modelo proyecto (RUP) 1,5 3 4,5 E2 Experiencia en la apliación 0,5 3 1,5 E3 Experiencia en orientación a objetos 1 4 4 E4 Capacidades de análisis 0,3 1 1,5 E5 Motivación 1 4 4 E6 Requisitos estables 2 4 8 E7 Trabajadores a tiempo parcial -1 0 0 E8 Lenguaje complejo -1 0 0 Resultado 23,5 Tabla 3.15: Tabla de los factores de entorno EF = 1,4+(−0,03 ∗ 8 X i=1 Ei)=1,4+(−0,03 ∗23,5) = 0,705 Cálculo de los puntos de caso de uso ajustados(UCP) Para calcular los puntos de casos de uso ajustados debemos multiplicar los puntos de casos de uso sin ajustar por los factores de complejidad técnica y por los factores de entorno. UCP =UUCP ∗TCF ∗EF = 78 ∗0,74 ∗0,705 = 40,6926 = 41 UCP Cálculo del esfuerzo Comprobamos el valor que se obtiene de comprobar el número de factores que cumplen unas condiciones en los factores de entorno. Con ese valor y con los puntos de caso de uso ajustados se calculará el esfuerzo. Condición Factor de productividad Valor ≤220 horas persona/UCP Valor ≤428 horas persona/UCP Valor ≥536 horas persona/UCP Tabla 3.16: Tabla de los factores de productividad Nºde factores entre E1 y E6 con valor menor o igual a 3: 2. Nºde factores entre E7 y E8 con valor mayor o igual a 3: 0. Valor = 2 + 0 = 2=⇒20 horas persona/UCP 26 Carlos Patiño Rivas
3.2. Metodología E=UCP ∗20 = 41 ∗20 = 820 horas-persona Este esfuerzo que se ha calculado correspondería con la actividad de codificación, por lo que en base a los porcentajes correspondientes a cada actividad podríamos saber la duración de cada actividad y la duración total. Actividad % Proyecto Duración Análisis 10 205 horas-persona Diseño 20 410 horas-persona Codificación 40 820 horas-persona Pruebas 15 307,5 horas-persona Documentación 15 307,5 horas-persona Resultado 2050 horas-persona Tabla 3.17: Horas dedicadas al proyecto según los casos de uso 3.2. Metodología La metodología de desarrollo iterativa incremental, debido a que permite que se vaya desarrollando la aplicación por partes, por lo que se puede realizar el desarrollo de las distintas características de la aplicación por iteraciones. El plan para este proyecto es realizarlo en 3 iteraciones: en la primera iteración se centraría en el desarrollo de la gestión de los platos, en la segunda iteración se enfocaría en el desarrollo de la gestión del calendario y finalmente en la tercera iteración se desarrollarían las funciones adicionales. Las tareas de una iteración serían: Análisis: Durante esta etapa es donde se recogen los requisitos que caracterizan la aplicación. Diseño: En esta etapa se detalla mediante modelos y otras herramientas cómo será la aplicación. Implementación: Durante esta etapa se produce la codificación de lo planeado en la fase de diseño. Pruebas: En este periodo se realizan las pruebas para comprobar que la aplicación cumple con lo que se estableció previamente o que no se produzcan fallos. Documentación: Para acabar se documenta todo lo anterior para que quede todo englobado en un documento. 27 Carlos Patiño Rivas
Recurso Vida Útil % de uso Coste Total Coste Real Sistema operativo 1 año 100% 0€0€ Overleaf - - 0€0€ Drive - - 0€0€ Draw.io - - 0€0€ Android Studio - - 0€0€ Market de Google De por vida 100% 25€25€ Tom’s Planner - - 0€0€ Tabla 3.23: Tabla del presupuesto software con casos de uso El coste total con casos de uso de los gastos relacionados con el software serían: 25€. Coste real En la tabla que sigue a este párrafo contempla todos los recursos hardware que se han utilizado durante el proyecto, el coste viene dado por el porcentaje de la vida útil del recurso que se ha utilizado durante el proyecto, este porcentaje se aplica sobre el coste total del recurso obteniendo el coste que ha tenido el proyecto sobre el recurso. Recurso Vida Útil % de uso Coste Total Coste Real MacBook Pro 10 años 5,51% 3000€165,30€ Internet 1 mes 25% 50€/mes x 7 87,50€ Tabla 3.24: Tabla del presupuesto hardware real El coste total real de los gastos relacionados con el hardware serían: 252,80€. La siguiente tablas que contempla todos los recursos software que se han utilizado durante el proyecto que al igual que los recursos hardware, se calcula el coste usando el porcentaje de uso sobre la vida útil del recurso y aplicándolo sobre el coste total del recurso. Recurso Vida Útil % de uso Coste Total Coste Real Sistema operativo 1 año 55,07% 0€0€ Overleaf - - 0€0€ Drive - - 0€0€ Draw.io - - 0€0€ Android Studio - - 0€0€ Market de Google De por vida 100% 25€25€ Tom’s Planner - - 0€0€ Tabla 3.25: Tabla del presupuesto software real El coste total real de los gastos relacionados con el software serían: 25€. 34 Carlos Patiño Rivas
3.4. Presupuesto económico 3.4.2. Recursos humanos Debido a las tareas que se realizan en cada iteración se van a desempeñar 2 roles, para las tareas de análisis, diseño y documentación se desempeñará el rol de analista y para las tareas de implementación y pruebas se desempeñará la de programador. Como se ha invertido un 40% del tiempo al rol de analista y un 60 % al de programador se mantendrá estos porcentajes para las estimaciones. Si consultamos ofertas de trabajo en "https://www.infojobs.net/"los sueldos para analista y programador fluctúan: para analista suele ser un término medio de 36000€anuales y el término medio de programador suelen ser unos 24000€anuales, lo que se traduce en 2571,43€mensuales para el analista y en 1714,29€para el programador, que traduciéndolo en 20 días de trabajo al mes y 8 horas de trabajo obtenemos un coste a la hora de 16,07€para el analista y de 10,71€para el programador. Puntos de función Rol Coste a la hora Horas Coste Total Analista 16,07€69 1108,83€ Programador 10,71€103 1103,13€ Total 2211,96€ Tabla 3.26: Tabla del presupuesto de recursos humanos con puntos de función COCOMO Rol Coste a la hora Horas Coste Total Analista 16,07€204 3278,28€ Programador 10,71€306 3277,26€ Total 6555,54€ Tabla 3.27: Tabla del presupuesto de recursos humanos con COCOMO Casos de uso Rol Coste a la hora Horas Coste Total Analista 16,07€820 13177,40€ Programador 10,71€1230 13173,30€ Total 26350,70€ Tabla 3.28: Tabla del presupuesto de recursos humanos con casos de uso 35 Carlos Patiño Rivas
Coste real Rol Coste a la hora Horas Coste Total Analista 16,07€233 3744,31€ Programador 10,71€350 3748,50€ Total 7492,81€ Tabla 3.29: Tabla del presupuesto real de recursos humanos 3.4.3. Presupuesto total Una vez calculados los costes de los recursos hardware, software y humanos, es hora de combinarlos para saber el coste total del proyecto. Hardware Software Recursos humanos Coste Total Puntos función 75,10€25€2211,96€2312,06€ COCOMO 208,90€25€6555,54€6789,44€ Casos de uso 876,40€25€26350,70€27252,10€ Real 252,80€25€7492,81€7770,61€ Tabla 3.30: Tabla de costes 3.4.4. Plan de negocio Como plan de negocio, la aplicación podría ponerse en venta en el Market de Google por un precio de 1€, por lo que con 7771 descargas de la aplicación se recuperaría la inversión inicial, y todas las demás descargas serían beneficio, también como posibilidad podría incluirse opciones de adquisición de listas de platos, con toda la información acerca de ellos, para que así puedan disponer de una amplia lista y puedan descubrir nuevas recetas, por un precio de 0,50€cada paquete de platos. 36 Carlos Patiño Rivas
Capítulo 4 Conclusiones En este capítulo se recogen las conclusiones finales del proyecto, desde el punto de vista de la consecución de los objetivos que se plantearon inicialmente y se analiza qué posibles mejoras y ampliaciones se pueden realizar en el futuro. También se encuentran las reflexiones sobre el conocimiento que se ha ido adquiriendo a lo largo del proyecto. 4.1. Consecución de objetivos y posibles mejoras y ampliaciones Objetivos En mi opinión se han alcanzado los objetivos que en un principio se establecieron, el objetivo principal, que es el de generar el calendario, se ha alcanzado permitiendo generar calendarios lo más adecuados para la persona que haga uso de la aplicación y según la dieta, en lo referente a la gestión de los platos se ha conseguido que de forma cómoda un usuario pueda tener un recetario con sus platos y sus diversas características para que pueda consultarlos de forma rápida y cómoda, además también se ha conseguido que las funciones adicionales como generar el PDF, ver el resumen calórico y la lista de la compra, faciliten el control y planificación de la alimentación. Mejoras y ampliaciones Las posibles mejoras que se podrían hacer a la aplicación serían: Mejorar la precisión a la hora de ajustar las calorías a la dieta y persona que hace uso de la aplicación. Mejoras a nivel visual para que sea más atractiva visualmente e intuitiva. 37
Las posibles ampliaciones que se podrían hacer a la aplicación serían: Añadir más tipos de dietas a seleccionar, como dieta de gimnasio, para adelgazar... etc. La posibilidad de que el usuario contemple en su perfil sus alergias para descartar los platos que contengan los alérgenos especificados. Añadir otros idiomas para la internacionalización (principalmente el inglés). La posibilidad de hacer compatible y poder subir a las plataformas de robots de cocina las recetas de los platos. La posibilidad de compartir platos y calendarios entre usuarios. Añadir funciones de control de peso, actividad física, horas de sueño, que controlen aspectos de la salud del usuario. Desarrollo de la aplicación en otros entornos como podría ser IOS. 4.2. Conocimiento adquirido Respecto al conocimiento adquirido, la realización de trabajo de fin de grado me ha servido para saber calcular mejor, y no con tanto optimismo, los tiempos de vida de un proyecto, ya que, los imprevistos pueden durar más de lo esperado y alargar más de lo estimado el desarrollo. También he ganado perseverancia debido a que a pesar de la falta de tiempo en la mayor parte de la realización del proyecto he ido trabajando diariamente. En cuanto al conocimiento obtenido, el realizar el desarrollo de la aplicación me ha servido para conocer más acerca de la programación en Android, saber el manejo de elementos de forma dinámica en pantalla y también a aprender sobre el almacenamiento de elementos más complejos en SQLite como objetos e imágenes. Durante la programación del código de la aplicación ha habido momentos de avance lento o estancamiento, pero con constancia en los intentos e investigando se ha podido finalmente avanzar y es una valiosa experiencia para otros retos de programación. En resumen, he ganado experiencia valiosa para la consecución de futuros proyectos y debo esforzarme y mejorar en aquello que se me ha complicado durante la realización de este trabajo de fin de grado. 38 Carlos Patiño Rivas
Parte II Documentación técnica 39
Capítulo 5 Análisis 5.1. Requisitos 5.1.1. Actores Identificador Nombre Descripción AC-01 Usuario genérico Este actor corresponde a la persona que ejecuta la aplicación en su dispositivo móvil. Tabla 5.1: Actores 5.1.2. Requisitos de información Los requisitos de información van a describir las entidades que forman la base de datos. Identificador Descripción RI-01 De los ingredientes se almacenará el nombre, la categoría (verdura, carne, pescado, marisco, fruta, dulce, lácteo, legumbre, hongo, fruto seco, cereal, hidrato de carbono, aceite, líquido/salsa y otros) y el número de calorías por cada 100g. RI-02 De los platos se almacenará el nombre, los ingredientes, la hora de ingesta(comida, cena o indistintamente), las calorías totales, el turno del plato (primero, segundo o plato único) y, si el usuario lo desea, una foto y la receta del plato. RI-03 Si el usuario quiere almacenar un calendario generado se almacena el nombre, los platos que lo componen y la dieta a la que corresponde. Tabla 5.2: Requisitos de información 41
5.1.3. Diagrama entidad relación El diagrama entidad relación es una técnica clásica para modelar las entidades (grupos de información) que describen el dominio del problema, permite describir de forma conceptual la base de datos de la aplicación. Figura 5.1: Diagrama entidad relación 5.1.4. Requisitos de Usuario Mediante los requisitos de usuario se detallan las posibles acciones que van a poder realizar los usuarios de la aplicación. Identificador Descripción RU-01 El usuario podrá añadir un nuevo plato. RU-02 El usuario podrá eliminar un plato. RU-03 El usuario podrá modificar un plato. RU-04 El usuario podrá ver el listado de platos. RU-05 El usuario podrá generar el calendario semanal de comidas. RU-06 El usuario podrá guardar el calendario generado. RU-07 El usuario podrá eliminar un calendario almacenado. RU-08 El usuario podrá visualizar un listado de calendarios guardados. RU-09 El usuario podrá ver un calendario guardado. RU-10 El usuario podrá ver un resumen calórico semanal. RU-11 El usuario podrá ver la lista de la compra del calendario generado. RU-12 El usuario podrá generar el resumen del calendario semanal generado en un PDF. RU-13 El usuario podrá visualizar un plato guardado. RU-14 El usuario podrá ver la receta de un plato. Tabla 5.3: Requisitos de usuario 42 Carlos Patiño Rivas
5.1. Requisitos 5.1.5. Matriz de trazabilidad Mediante la matriz de trazabiliad se puede observar la correspondencia entre las características que se establecieron para la aplicación y los requisitos de usuario que definen el funcionamiento. Figura 5.2: Matriz de trazabilidad 5.1.6. Diagrama de casos de uso Con los diagramas de casos de uso se representa de forma visual, a alto nivel, los requisitos de usuario, también permite ver los elementos externos que interactúan con la aplicación, en este caso al ser un único agente externo, que es el único usuario de la aplicación, solo se mostraría un único diagrama de casos de uso. Figura 5.3: Diagrama de casos de uso 43 Carlos Patiño Rivas
Nombre e ID del CU CU-06. Guardar calendario Actor Usuario Descripción El usuario almacena el calendario que ha generado para poder ser consultado posteriormente. Precondiciones PRE-1. Haber realizado el caso de uso CU-05 Generar calendario. Postcondiciones POST-1. El calendario ha quedado almacenado. POST-2. Se realiza el CU-09 Ver calendario. Flujo normal FN1 El usuario introduce el nombre deseado para el calendario que acaba de generar. FN2 El sistema recoge el nombre introducido para el calendario. FN3 El usuario solicita almacenar el calendario. FN4 Si el nombre dado no existe y es correcto, el sistema registra el calendario. Flujo alternativo 1 FA3 Si existe el nombre del calendario se le notifica al usuario y se le pide que introduzca otro nombre volviendo al paso FN1. Flujo alternativo 2 FA3 Si no se ha introducido un nombre o ha introducido solo caracteres especiales se le notifica al usuario y se pide que introduzca uno válido volviendo al paso FN1. Excepciones E1 Ya existe un calendario con ese nombre. E2 El nombre nombre del calendario no puede estar vacío. E3 El nombre del calendario no puede estar formado solo por caracteres especiales. Prioridad Alta Otra info Tabla 5.9: CU-06. Guardar calendario 50 Carlos Patiño Rivas
5.1. Requisitos Nombre e ID del CU CU-07. Eliminar calendario Actor Usuario Descripción El usuario realiza la petición de eliminar el calendario que está visualizando. Precondiciones PRE-1. Haber realizado el caso de uso CU-09 Ver calendario. Postcondiciones POST-1. El calendario ha sido eliminado de la aplicación POST-2. Se realiza el caso de uso CU-08 Ver listado de calendarios. Flujo normal FN1 El usuario solicita eliminar el calendario que está visualizando. FN2 El sistema borra toda la información referente al calendario que se ha solicitado y se lo notifica al usuario. Prioridad Alta Excepciones Tabla 5.10: CU-07. Eliminar calendario Nombre e ID del CU CU-08. Ver listado de calendarios Actor Usuario Descripción El usuario visualiza el listado de todos los calendarios registrados en la aplicación. Precondiciones Postcondiciones POST-1. Se visualiza el listado de calendarios que tiene almacenados la aplicación. Flujo normal FN1 El usuario solicita visualizar los calendarios almacenados en la aplicación. FN2 El sistema recupera los nombres de los calendarios y los muestra diferenciando entre los que superan las calorías del usuario y los que no. Flujo alternativo 1 FA2 Si no hay calendarios almacenados no se mostrará ningún resultado. Excepciones E1 No hay calendarios almacenados. Prioridad Alta Tabla 5.11: CU-08. Ver listado calendarios 51 Carlos Patiño Rivas
Nombre e ID del CU CU-09. Ver calendario Actor Usuario Descripción El usuario puede ver un calendario que especifica como están distribuidos los platos para las ingestas de cada día de la semana. Precondiciones PRE-1. Haber realizado el caso de uso CU-06 Guardar calendario o el CU-08 Ver listado de calendarios. Postcondiciones POST-1. Se visualiza gráficamente el calendario con los platos que hay para cada día, el nombre dado al calendario y la dieta a la que pertenece. POST-2. Se habilitan los caso de uso CU-07 Eliminar calendario, CU-10 Ver resumen calórico, CU-11 Ver lista de la compra y CU- 12 Generar resumen PDF. Flujo normal FN1 El usuario solicita ver la información de un calendario concreto. FN2 El sistema recupera el nombre del calendario, la dieta a la que pertenece y el listado de platos y se los muestra al usuario. Flujo alternativo 1 FA2 Si el calendario supera las calorías semanales del usuario, además de mostrar el nombre del calendario, la dieta a la que pertenece y el listado de platos, se mostrará un mensaje de que se exceden las calorías. Flujo alternativo 2 Excepciones Prioridad Alta Otra info Tabla 5.12: CU-09. Ver calendario Nombre e ID del CU CU-10. Ver resumen calórico Actor Usuario Descripción El usuario puede ver un calendario que especifica las calorías por ingesta, por día y semanalmente. Precondiciones PRE-1. Haber realizado el caso de uso CU-09 Ver calendario. Postcondiciones POST-1. Se visualiza gráficamente el calendario con las calorías por cada plato y la suma de calorías tanto diarias como semanales, además de las calorías recomendadas para el perfil de usuario. 52 Carlos Patiño Rivas
5.1. Requisitos Flujo normal FN1 El usuario solicita ver el resumen calórico del calendario que está visualizando. FN2 El sistema realiza el cálculo de calorías totales de cada plato según los ingredientes que tenga, hace la suma de calorías de los platos de cada día y después hace la suma de calorías de todos los días de la semana, también calcula las calorías semanales del perfil de usuario y muestra todos estos cálculos al usuario. Flujo alternativo 1 Flujo alternativo 2 Excepciones Prioridad Alta Otra info Tabla 5.13: CU-10. Ver resumen calórico Nombre e ID del CU CU-11. Ver lista de la compra Actor Usuario Descripción El usuario obtiene la lista de todos los ingredientes con sus cantidades que debe comprar para elaborar los platos de la semana. Precondiciones PRE-1. Haber realizado el caso de uso CU-09 Ver calendario. Postcondiciones POST-1. Se obtiene el listado con todos los ingredientes y sus cantidades. Flujo normal FN1 El usuario solicita ver la lista de la compra que corresponde al calendario que está visualizando. FN2 El sistema recupera los ingredientes para cada plato de esa semana y va sumando las cantidades para cada ingrediente, mostrando finalmente al usuario la lista de los ingredientes con sus cantidades para poder elaborar los platos de la semana. Flujo alternativo 1 Excepciones Prioridad Alta Otra info Tabla 5.14: CU-11. Ver lista de la compra 53 Carlos Patiño Rivas
Nombre e ID del CU CU-12. Generar resumen PDF Actor Usuario Descripción El usuario obtiene el resumen en PDF que muestra el calendario con los platos que lo forman, las calorías totales para esa semana y la lista de la compra. Precondiciones PRE-1. Haber realizado el caso de uso CU-09 Ver calendario. Postcondiciones POST-1. Se obtiene el fichero PDF con el resumen que contiene el calendario de platos de esa semana, con el resumen calórico, con lista de la compra, la lista de platos y las recetas que haya. Flujo normal FN1 El usuario solicita generar el resumen semanal. FN2 Si el usuario ha solicitado previsualizar el PDF, el sistema recoge la información del calendario, la información calórica de la semana, la lista de la compra, la lista de los platos que forman el calendario y las recetas que hay de los platos y elabora un PDF con esa información mostrándoselo al usuario. Flujo alternativo 1 FA2 Si el usuario ha solicitado generar el resumen semanal y verlo en otra aplicación, el sistema elaboraría el PDF con el calendario semanal, la información calórica de la semana, la lista de la compra, la lista de platos y las recetas que hay de los platos y lo enviaría a la aplicación PDF que decida el usuario. Excepciones Prioridad Alta Otra info Al generar el PDF facilita la impresión en papel de la información generada por la aplicación. Tabla 5.15: CU-12. Generar resumen PDF Nombre e ID del CU CU-13. Visualizar plato Actor Usuario Descripción El usuario visualiza la información un plato concreto. Precondiciones Haber realizado el CU-01 Añadir plato o el CU-04 Ver listado de platos Postcondiciones POST-1. El usuario visualiza la información del plato elegido. POST-2. Se habilitan los casos de uso CU-02 Eliminar plato, CU- 03 Modificar plato y CU-14 Ver receta. 54 Carlos Patiño Rivas
5.1. Requisitos Flujo normal FN1 El usuario solicita ver la información de un plato en concreto. FN2 El sistema recupera el nombre del plato, las calorías, el turno, la hora de ingesta, los ingredientes que lo forman y la foto si la tuviera. Flujo alternativo 1 FA2 Si el plato supera las calorías diarias del usuario, además de mostrar el nombre del plato, las calorías, el turno, la hora de ingesta, los ingredientes y la fotos, se mostrará un mensaje de que ese plato no será seleccionado al superar las calorías diarias. Excepciones Prioridad Alta Otra info Tabla 5.16: CU-13. Visualizar plato Nombre e ID del CU CU-14. Ver receta Actor Usuario Descripción El usuario visualiza la receta que se haya almacenado de un plato. Precondiciones Haber realizado el CU-13 Visualizar plato Postcondiciones POST-1. El usuario visualiza el texto correspondiente a la receta registrada para un plato. Flujo normal FN1 El usuario solicita ver la receta del un plato que está visualizando. FN2 Si se ha registrado una receta, el sistema la recupera y se la muestra al usuario. Flujo alternativo 1 FA2 Si no se ha registrado la receta para el plato seleccionado, el sistema informa al usuario de que no hay receta. Excepciones E1 No se ha registrado la receta del plato. Prioridad Alta Otra info Tabla 5.17: CU-14. Ver receta 55 Carlos Patiño Rivas
5.2. Atributos de calidad Los atributos de calidad describen, además de numerosas características de la aplicación que se está desarrollando, los requisitos no funcionales de la aplicación. Identificador Descripción Restricciones AC-1 No se crean calendarios con platos que superen las calorías diarias del usuario que los genera. AC-2 No se crean calendarios con platos que sean inferiores al 20 % las calorías diarias del usuario que los genera. Rendimiento AC-3 Toda gestión relacionada con los platos se realizará en tiempo inferior a 1 segundo. AC-4 El sistema generará los calendarios en un tiempo inferior a 2 segundos. Tabla 5.18: Atributos de Calidad 5.3. Diagrama de colaboración Los diagramas de colaboración son útiles para mostrar las interacciones que se producen en el sistema y el intercambio de mensajes entre el usuario y objetos. A continuación se muestra los diagramas de colaboración correspondientes al CU-01 Añadir plato, al CU-05 Generar calendario y al CU-12 Generar resumen PDF. CU-01 Añadir plato Figura 5.4: Diagrama de colaboración: Añadir plato 56 Carlos Patiño Rivas
5.3. Diagrama de colaboración CU-05 Generar calendario Figura 5.5: Diagrama de colaboración: Generar calendario CU-12 Generar resumen PDF Figura 5.6: Diagrama de colaboración: Generar resumen PDF 57 Carlos Patiño Rivas
58 Carlos Patiño Rivas
Capítulo 6 Diseño 6.1. Diseño de datos La elección como modelo de datos ha sido el diagrama Entidad-Relación, donde se muestran las entidades existentes y cómo se relacionan. 6.1.1. Diccionario de datos Con el diccionario de datos se describen de forma detallada las entidades de datos utilizadas en el sistema y las relaciones que éstas tienen, contempla información como los tipos de datos, la composición de entidades, los valores permitidos, etc que permiten establecer los criterios de validación de los datos. Entidades RI-E1 Ingrediente Definición Ingrediente es todo aquel elemento alimenticio que al combinarse con otros ingredientes forma un plato. Consideraciones En algunos casos, puede que haya ingredientes que sean resultado de la combinación de otros ingredientes sin llegar a ser un plato. Atributos ID Nombre Descripción Dominio Unique Null Notas RI-E1.1 IDIngrediente Identificador del ingrediente. INTEGER Sí No Clave primaria RI-E1.2 NombreI El nombre del ingrediente. TEXT Sí No 59
com.google.gson que mediante un método consigue la transformación de ArrayList a JSON. 7.3. Librerías para la transformación de imágenes Para la transformación de las imágenes en un array de bytes y que éste pueda ser almacenado, se necesita hacer uso de tres librerías: android.graphics.Bitmap android.graphics.BitmapFactory com.squareup.picasso.Picasso android.graphics.BitmapFactory Esta librería permite transformar desde varios orígenes, ya sean ficheros, streams o byte-arrays en un objeto bitmap. android.graphics.Bitmap Esta librería permite la creación de objetos bitmap. Posteriormente este objeto servirá para contener la imagen y poder ser mostrada o para ser el objeto que inicialmente contenga la imagen recogida desde la ruta deseada y posteriormente se comprimirá en un stream que luego será transformado a array de bytes, que será lo que finalmente se almacenará en la bases de datos. com.squareup.picasso.Picasso Esta librería permite adaptar el tamaño de la foto del plato para que pueda ser contenida en un Bitmap y así ser manipulada, ya que, las imágenes realizadas con las cámaras del móvil al tener tanta resolución tienen un un tamaño demasiado grande para ser alojadas en un Bitmap. 7.4. Librerías para la creación del PDF En la aplicación se va a crear un PDF con la información el calendario seleccionado. El PDF se puede visualizar en la propia aplicación y también se puede abrir con un lector de PDFs, por lo que habrá que distinguir entre las librerías que crean el PDF y la librería que permite crear un ’lienzo’ en donde presentar el PDF. 66 Carlos Patiño Rivas
7.4. Librerías para la creación del PDF Creación del fichero PDF Para la creación del PDF las librerías que tienen relevancia para la generación son: com.itextpdf.text.pdf.PdfWriter com.itextpdf.text.pdf.PdfPTable com.itextpdf.text.pdf.PdfPCell com.itextpdf.text. Estas librerías permiten elaborar el fichero PDF. La librería com.itextpdf.text.pdf.PdfWriter permite plasmar en un fichero la información que se está añadiendo a un documento con la información del calendario. Por su parte, las librerías com.itextpdf.text.pdf.PdfPTable ycom.itextpdf.text.pdf.PdfPCell van a servir para la elaboración de las tablas que se añaden al documento y las diversas librerías de com.itextpdf.text. se emplean para el formato del documento, del texto y demás elementos visuales. Creación del "lienzo" La librería com.github.barteksc.pdfviewer.PDFView se utiliza para la creación del "lienzo", que permite crear el objeto que alojará el fichero generado anteriormente y que se pueda mostrar en la aplicación a través del fragment correspondiente. Para poder usar estas librerías hay que añadir en el build.gradle las siguientes dependencias: compile ’com.itextpdf:itextg:5.5.10’ compile ’com.github.barteksc:android-pdf-viewer:2.8.1’ 67 Carlos Patiño Rivas
68 Carlos Patiño Rivas
Capítulo 8 Pruebas 8.1. Pruebas de caja blanca Las pruebas de caja blanca son las pruebas que se hacen sobre una implementación concreta, a bajo nivel, a nivel de los detalles procedimentales del software. Estas pruebas se fueron llevando a cabo a medida que se iban implementando cada una de las funcionalidades. Traspaso de información entre activities: Se comprobaba que, en caso de que una activity le transfiriera información a otra, la receptora recibiera toda la información enviada. Selección de ingredientes: Se comprobaba que del listado de todos los ingredientes, el usuario puede seleccionar aquellos que desee y estos queden correctamente seleccionados. Registro de elementos en la base de datos: Se comprobaba que tanto los datos de un plato o de un calendario quedaban registrados en la base de datos. Registro correcto de las características de un plato: Se comprobaba que campos como los ingredientes con sus cantidades, y si se añadía la foto al plato, quedan registrados de forma correcta para poder ser usados posteriormente. Generación del calendario: Se comprobaba que se ha seleccionado los platos siguiendo si es posible los criterios de la dieta. Composición del calendario: Se comprobaba que la información que se ha generado se muestra en el lugar que le corresponde a cada elemento. Recuperación de elementos de la base de datos: Se comprobaba que tanto los datos de un plato o de un calendario se recuperan correctamente de la base de datos. Composición del PDF: Se comprobaba que la información resumen del calendario queda correctamente plasmada tal y como se quería mostrar. 69
8.2. Pruebas de caja negra Mediante las pruebas de caja negra se pretende comprobar el correcto funcionamiento de la aplicación respecto a los requisitos que se establecieron inicialmente. Las pruebas se han realizado con el emulador de Android Studio. CN-1: Añadir plato Objetivo Almacenar la información de un plato. Precondiciones Ninguna. Datos de entrada Nombre del plato: Escalope de ternera con patatas fritas. Turno: Segundo. Hora de ingesta: Comida. Foto: escalope-patatasfritas.jpeg Receta: 1. Cortar las patatas, freír y reservar 2. Cortar un tomate en porciones 3. Empanar los filetes 4. Calentar a fuego medio el aceite en una sartén y freír los filetes 5. Servir los filetes junto con el tomate y las patatas Ingredientes: Aceite de oliva, carne de ternera, huevo, pan, patata y tomate. Cantidad de ingredientes: 20g, 200g, 20g, 30g, 150g y 100g. Acción esperada Se registra y se muestra la información del plato que se acaba de registrar. 70 Carlos Patiño Rivas
8.2. Pruebas de caja negra Secuencia Pulsar sobre el icono del símbolo más Completar el nombre del plato Seleccionar el turno Seleccionar la hora de ingesta Seleccionar la foto Pulsar sobre ’Continuar’ Completar la receta de elaboración Seleccionar los ingredientes y pulsar en ’Ok’ Completar las cantidades de los ingredientes y pulsar en ’Finalizar’ Resultado El resultado es correcto. Tabla 8.1: Prueba caja negra 1 CN-2: Eliminar plato Objetivo Eliminar la información de un plato. Precondiciones Estar visualizando la información del plato que se quiere eliminar. Datos de entrada Acción esperada Se elimina la información del plato que se estaba visualizando. Secuencia Pulsar sobre ’Eliminar’ Pulsar como confirmación sobre la opción ’Eliminar’ Resultado El resultado es correcto. Tabla 8.2: Prueba caja negra 2 71 Carlos Patiño Rivas
CN-3: Modificar plato Objetivo Modificar la información de un plato almacenado. Precondiciones Estar visualizando el plato que se quiere modificar. Datos de entrada Nombre del plato: Tortilla francesa Turno: Segundo Hora de ingesta: Cena Foto: tortilla-francesa.jpeg Receta: 1. Batir los huevos 2. Poner una pequeña cantidad de aceite de oliva en una sartén y calentar a fuego medio alto 3. Echar los huevos batidos en la sartén y esperar a que cuajen por ambos lados 4. Sacar de la sartén y servir Ingredientes: Aceite de oliva y Huevos Cantidad de ingredientes: 7g y 150g Acción esperada Se modifica y se muestra la información del plato que se estaba visualizando. Secuencia Pulsar sobre ’Modificar’ Completar el nombre del plato Seleccionar el turno Seleccionar la hora de ingesta Seleccionar la foto Completar la receta de elaboración Seleccionar los ingredientes y pulsar en ’Ok’ Completar las cantidades de los ingredientes y pulsar en ’Finalizar’ Resultado El resultado es correcto. Tabla 8.3: Prueba caja negra 3 72 Carlos Patiño Rivas
8.2. Pruebas de caja negra CN-4: Ver listado de platos Objetivo Ver la lista de todos los platos que se han registrado. Precondiciones Ninguna. Datos de entrada Acción esperada Se visualiza el listado de platos almacenados. Secuencia Pulsar sobre sobre el icono del plato con los cubiertos. Resultado El resultado es correcto. Tabla 8.4: Prueba caja negra 4 CN-5: Generar calendario Objetivo Generar un calendario con los platos de la semana según una dieta. Precondiciones Tener algún plato almacenado. Datos de entrada Dieta: Equilibrada Acción esperada Se visualiza el calendario que se ha generado según la dieta, con la posibilidad de guardarlo. Secuencia Pulsar sobre sobre el icono triangular Seleccionar el tipo de dieta Pulsar en ’Generar’ Resultado El resultado es correcto. Tabla 8.5: Prueba caja negra 5 73 Carlos Patiño Rivas
CN-6: Guardar calendario Objetivo Guardar un calendario que se acaba de generar. Precondiciones Haber generado un calendario. Datos de entrada Nombre calendario: Prueba Acción esperada Se almacena el calendario que se ha generado y se visualiza su información. Secuencia Completar el nombre del calendario Pulsar en ’Guardar calendario’ Resultado El resultado es correcto. Tabla 8.6: Prueba caja negra 6 CN-7: Eliminar calendario Objetivo Eliminar la información de un calendario. Precondiciones Estar visualizando la información del calendario que se quiere eliminar. Datos de entrada Acción esperada Se elimina la información del calendario que se estaba visualizando. Secuencia Pulsar sobre ’Eliminar’ Pulsar como confirmación sobre la opción ’Eliminar’ Resultado El resultado es correcto. Tabla 8.7: Prueba caja negra 7 CN-8: Ver listado de calendarios Objetivo Ver la lista de todos los calendarios que se han registrado. Precondiciones Ninguna. Datos de entrada Acción esperada Se visualiza el listado de calendarios almacenados. Secuencia Pulsar sobre sobre el icono del calendario. Resultado El resultado es correcto. Tabla 8.8: Prueba caja negra 8 74 Carlos Patiño Rivas
8.2. Pruebas de caja negra CN-9: Ver calendario Objetivo Ver la información de un calendario en concreto. Precondiciones Haber seleccionado el calendario a visualizar del listado de calendarios. Datos de entrada Acción esperada Se visualiza la información del calendario que se ha seleccionado. Secuencia Pulsar sobre el nombre del calendario deseado. Resultado El resultado es correcto. Tabla 8.9: Prueba caja negra 9 CN-10: Ver resumen calórico Objetivo Ver plasmado en un calendario las calorías que se consumirían siguiendo el calendario seleccionado. Precondiciones Estar visualizando el calendario del que se quiere ver el resumen calórico. Datos de entrada Acción esperada Se visualiza la información calórica en un calendario según la ingesta, el día y para la semana. Secuencia Pulsar sobre ’Resumen calórico’. Resultado El resultado es correcto. Tabla 8.10: Prueba caja negra 10 75 Carlos Patiño Rivas
Pulsando en ajustes, se accede al apartado de Instalar apps desconocidas, concretamente en los permisos de Drive, pudiendo habilitar mediante el interruptor que Drive sea un posible origen de aplicaciones. Figura 9.2: Ajuste de instalación desde Drive Si la aplicación está descargada en el dispositivo y se quiere instalar, se tendrá que comprobar que está habilitada la instalación desde el gestor de archivos. Figura 9.3: Ajuste de instalación desde Gestor de archivos 82 Carlos Patiño Rivas
9.2. Manual de usuario Para instalar la aplicación desde orígenes desconocidos como ocurre en el LG G3, es preciso ir a Ajustes, al apartado General, Seguridad y marcar Orígenes desconocidos. Figura 9.4: Ajuste desde orígenes desconocidos 9.2. Manual de usuario 9.2.1. Inicio Al iniciar por primera vez la aplicación, se muestra un mensaje solicitando acceso al almacenamiento interno (la aplicación lo requiere para la creación del PDF), por lo que se debe pulsar sobre ’Permitir’ para el correcto funcionamiento. Figura 9.5: Inicio de la aplicación Una vez permitido el acceso al almacenamiento interno, pulsaremos sobre el símbolo de la llave inglesa en la barra superior, con ello llegaremos al apartado de configuración de nuestro perfil de usuario. 83 Carlos Patiño Rivas
Figura 9.6: Menú de perfil de usuario Pulsar sobre cada uno de los apartados y seleccionar las características deseadas. Figura 9.7: Selección de perfil de usuario 84 Carlos Patiño Rivas
9.2. Manual de usuario Quedando el perfil establecido según lo seleccionado. Figura 9.8: Perfil de usuario seleccionado 9.2.2. Añadir un plato Para añadir un plato se pulsa sobre el símbolo ’+’ en la barra superior, aparecerá una primera pantalla en la que se introduce en el primer campo el nombre que deseado para el plato, seleccionar en el desplegable el turno, en otro desplegable la hora de ingesta, seleccionar una foto si se deseara establecer una para el plato y pulsar sobre ’Continuar’. 85 Carlos Patiño Rivas
Figura 9.9: Pantalla 1 añadir plato Aparecerá una segunda pantalla, en la que hay un apartado en el que si se deseara se podría escribir la receta del plato. Figura 9.10: Pantalla 2 añadir plato, receta 86 Carlos Patiño Rivas
9.2. Manual de usuario Debajo de este apartado esta el botón de selección de ingredientes que al pulsarlo sale la lista de posibles ingredientes a elegir. Una vez estén seleccionados se pulsa sobre ’Ok’. Figura 9.11: Pantalla 2 añadir plato, ingredientes Por último aparece la pantalla en la que se seleccionan las cantidades de cada ingrediente y se terminaría pulsando sobre finalizar. Figura 9.12: Pantalla 3 añadir plato 87 Carlos Patiño Rivas
9.2.3. Listados Si se desea ver el listado de Calendarios, habría que pulsar sobre el símbolo de la izquierda del todo de la barra superior. Figura 9.13: Listado calendarios Si se desea ver el listado de platos, se pulsaría sobre el símbolo de un plato y cubiertos de la barra superior. Figura 9.14: Listado platos 88 Carlos Patiño Rivas
9.2. Manual de usuario 9.2.4. Ver plato y opciones Para ver la información de un plato concreto, simplemente habría que seleccionarlo del listado de platos. Figura 9.15: Información de plato Para modificar el plato se pulsa sobre ’Modificar’ y se modificaría el plato de la misma manera que al añadir un plato pero con la información actualmente del plato y con una pantalla menos. 89 Carlos Patiño Rivas
Si se pulsa sobre ’Ver receta’ se puede ver la receta que se registró para ese plato. Figura 9.16: Receta del plato Y si se pulsa sobre eliminar, aparecerá un cuadro de diálogo preguntando si se quiere eliminar. Figura 9.17: Eliminar el plato 90 Carlos Patiño Rivas
9.2. Manual de usuario 9.2.5. Generar calendario y guardarlo Para generar el calendario, se pulsa sobre el símbolo de play (triángulo tumbado), apareciendo la pantalla para iniciar la generación del calendario, pulsando sobre ’Generar’ se iniciaría. Figura 9.18: Pantalla generar calendario 91 Carlos Patiño Rivas
Capítulo 10 Anexos 10.1. Información complementaria INE: Instituto Nacional de Estadística. COCOMO: Constructive Costs Model, sirve para estimar mediante un modelo matemático el coste de un proyecto software. LDC: Líneas de Código. JSON: Javascript Objetct Notation, formato sencillo de texto usado para el intercambio de datos. 10.2. Contenido del CD El CD contiene dos carpetas que podemos ver en la raíz: La carpeta ’Documentos’ contiene la memoria en PDF y un PDF con un la información de un calendario generado. La carpeta ’Aplicación’ contiene la aplicación con el nombre Gencal.apk, que deberá ser instalada en un dispositivo Android 6.0 Marshmallow o superior para que pueda funcionar. 99
100 Carlos Patiño Rivas
Referencias Blog, V. P. (2011). Obtener valor de EditText de listado: https://vikaskanani.wordpress.com/2011/07/27/android-focusable-edittext-inside- listview/. Blog, V. P. (2019). Consultar sueldos: https://www.infojobs.net/. Bregón, A. B. (2017). Apuntes Plataformas Software Móviles. Cabrera, F. G. (2018). Apuntes Gestión de Proyectos basados en las Tecnologías de la Información (bloque II). codeday. (2019). Guardar Arraylist en base de datos: https://codeday.me/es/qa/20190212/193957.html. Demos, C. (2016). Android multiple choice list dialog tutorial. Descargado de https:// www.youtube.com/watch?v=wfADRuyul04 Developers, A. (2019). Solicitar permiso almacenamiento interno: https://developer.android.com/training/permissions/requesting. fatsecret. (2019). fatsecret: https://www.fatsecret.es/calorías-nutrición/. INE. (2017). INE empleo de tiempo: https://www.ine.es/prensa/np669.pdf. Méndez[codigofacilito], M. (2017). Generar PDF en Android. Descargado de https:// www.youtube.com/watch?v=FIleHM7u4IY Nestlé. (2019). Menú Planner: https://nestlemenuplanner.es. Nguyen, Q. (2016). Saving Image And Text Into SQLite database. Descargado de https://www.youtube.com/watch?v=4bU9cZsJRLI UNED. (2019). Ingesta de calorías recomendadas: https://www2.uned.es/pea-nutricion- y-dietetica-I/guia/guia_nutricion/recom_calorias.htm. 101