ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
GRADO EN INGENIERÍA INFORMÁTICA Curso académico 2013 / 2014
Trabajo Fin de Grado
DESARROLLO DE UNA APLICACIÓN PARA LA GESTIÓN DE MENÚS SEMANALES BASADOS EN UNA DIETA EQUILIBRADA: “CHEFTASTIC”
─ Autor ─
Víctor Hernández Bermejo ─ Tutor ─
María Teresa González de Lena
i
Agradecimientos En primer lugar quiero agradecer a mis padres su apoyo incondicional, su cariño y su sacrificio para que yo haya tenido la posibilidad de estudiar lo que realmente me gusta y apasiona. En segundo lugar agradecer a Sergio San Victoriano Huertas por enseñarme la lección más valiosa que he podido aprender: trabajar duro y esforzarme a diario para conseguir cualquier cualquier cosa que me proponga. Gracias. Cómo no, agradecer a mi compañero y amigo Diego Sepúlveda, porque sin él la carrera habría sido mucho más aburrida y sobre todo por las interminables tardes de biblioteca. Y en último lugar el agradecimiento más especial de todos a mi pareja. Gracias por haber estado en cada momento de éste último año, por darme tu ilusión y tu fuerza a cada instante, sin ti esto no habría sido si do posible.
iii
Resumen En los últimos años el mundo de la tecnología y la informática ha experimentado una revolución con la aparición de los teléfonos móviles inteligentes o smartphones, y más recientemente, recientemente, con la evolución evolución de las tablets. La tremenda popularidad que han alcanzado estos dispositivos ha ocasionado que estos avances tecnológicos hayan calado rápidamente en la sociedad. Si bien hace diez años Internet empezaba a expandirse al ámbito doméstico, los smartphones y tablets permiten a día de hoy el acceso a Internet desde prácticamente cualquier cualquier lugar, con lo que se han convertido en dispositivos casi indispensables para muchas personas en su día a día. Estos dispositivos además, tienen unas especificaciones técnicas que hacen posible desarrollar aplicaciones que permitan a sus usuarios trabajar con ellos casi como si estuvieran frente a un ordenador. Estas tecnologías permiten a los profesionales de la informática desarrollar sus competencias laborales en un sector en crecimiento y con prometedoras proyecciones para el futuro. Así, el objeto del presente trabajo fin de grado será el desarrollo, desde su análisis hasta la puesta en producción mediante la publicación en una tienda de aplicaciones, de una aplicación para dispositivos móviles y tablets que permita gestionar y obtener automáticamente menús semanales que sigan las recomendaciones de una dieta sana y equilibrada.
v
Índice General Capítulo I Introducción ............................................................................................................................................... 1 I.1 Estado del arte ..................................................................................................................................................... 1 I.2 Motivación ............................................................................................................................................................. 2 Capítulo II Objetivos ..................................................................................................................................................... 3 II.1 Estudio de alternativas .................................................................................................................................. 3 II.2 Metodología empleada .................................................................................................................................. 5 Capítulo III Requisitos del sistema ....................................................................................................................... 7 III.1 Elicitación de requisitos .............................................................................................................................. 7 III.2 Alcance del trabajo fin de grado .............................................................................................................. 9 Capítulo IV Conceptos teóricos previos .......................................................................................................... 11 IV.1 Nutrición y salud .......................................................................................................................................... 11 Capítulo V Descripción informática................................................................................................................... 13 V.1 Sprint 1 ................................................................................................................................................................ 13 V.1.1 Planificación ............................................................................................................................................ 13 V.1.2 Desarrollo ................................................................................................................................................. 14 V.1.2.1 Base de datos ................................................................................................................................. 14 V.1.2.2 Carga y actualización de datos en la aplicación ........................................................... 15 V.1.2.3 Interfaz de usuario ...................................................................................................................... 16 V.1.3 Revisión ..................................................................................................................................................... 16 V.2 Sprint 2 ................................................................................................................................................................ 18 V.2.1 Planificación ............................................................................................................................................ 18 V.2.2 Desarrollo ................................................................................................................................................. 18 V.2.3 Revisión ..................................................................................................................................................... 19 V.3 Sprint 3 ................................................................................................................................................................ 21 V.3.1 Planificación ............................................................................................................................................ 21 V.3.2 Desarrollo ................................................................................................................................................. 21 V.3.2.1 Listado de recetas ........................................................................................................................ 21 V.3.2.2 Ficha de receta .............................................................................................................................. 23 V.3.2.2 Explorador de recetas ............................................................................................................... 24 V.3.3 Revisión ..................................................................................................................................................... 26 V.4 Sprint 4 ................................................................................................................................................................ 28 V.4.1 Planificación ............................................................................................................................................ 28
vi V.4.2 Desarrollo ................................................................................................................................................. 29 V.4.2.1 Barra lateral de navegación.................................................................................................... 29 V.4.2.2 Ajustes ............................................................................................................................................... 31 V.4.2.3 Vista de menú semanal ............................................................................................................. 31 V.4.3 Revisión ..................................................................................................................................................... 32 V.5 Sprint 5 ................................................................................................................................................................ 34 V.5.1 Planificación ............................................................................................................................................ 34 V.5.2 Desarrollo ................................................................................................................................................. 35 V.5.2.1 Vista de menú semanal ............................................................................................................. 35 V.5.2.2 Confección de menús creados por el usuario................................................................ 37 V.5.3 Revisión ..................................................................................................................................................... 37 V.6 Sprint 6 ................................................................................................................................................................ 39 V.6.1 Planificación ............................................................................................................................................ 39 V.6.2 Desarrollo ................................................................................................................................................. 39 V.6.2.1 Algoritmo de generación de menús equilibrados ....................................................... 40 V.6.2.2 Integración de la generación de menús equilibrados con la interfaz de usuario .............................................................................................................................................................. 41 V.6.3 Revisión ..................................................................................................................................................... 42 V.7 Sprint 7 ................................................................................................................................................................ 44 V.7.1 Planificación ............................................................................................................................................ 44 V.7.2 Desarrollo ................................................................................................................................................. 44 V.7.2.1 Diseño e implementación del gráfico de información nutricional ..................... 44 V.7.2.2 Diseño e implementación de la ficha de información nutricional ...................... 45 V.7.2.3 Diseño e implementación del widget de de resumen nutricional ............................. 47 V.7.3 Revisión ..................................................................................................................................................... 49 V.8 Sprint 8 ................................................................................................................................................................ 50 V.8.1 Planificación ............................................................................................................................................ 50 V.8.2 Desarrollo ................................................................................................................................................. 51 V.8.2.1 Corrección de errores ................................................................................................................ 51 V.8.2.2 Mejoras .............................................................................................................................................. 51 V.8.2.3 Publicación en Play Store ........................................................................................................ 54 V.8.3 Revisión ..................................................................................................................................................... 54 Capítulo VI Conclusiones ........................................................................................................................................ 57 VI.1 Consecución de los objetivos ................................................................................................................. 57 VI.2 Trabajos futuros ........................................................................................................................................... 58
vii Bibliografía ..................................................................................................................................................................... 59 Glosario ............................................................................................................................................................................ 61 Anexo A Tablas de datos ......................................................................................................................................... 63 Anexo B Scrum ............................................................................................................................................................. 65 B.1 Teoría de Scrum ............................................................................................................................................. 65 B.2 Roles del equipo Scrum .............................................................................................................................. 66 B.2.1 Dueño de producto o Product Owner ........................................................................................ 66 B.2.2 Equipo de desarrollo ........................................................................................................................... 66 B.2.3 Scrum Master .......................................................................................................................................... 67 B.3 Eventos de Scrum .......................................................................................................................................... 68 B.3.1 Sprint........................................................................................................................................................... 68 B.3.2 Reunión de planificación del Sprint ............................................................................................ 69 B.3.3 Scrum diario ............................................................................................................................................ 69 C.3.4 Revisión del Sprint ............................................................................................................................... 70 C.3.5 Retrospectiva del Sprint .................................................................................................................... 71 B.4 Artefactos de Scrum ..................................................................................................................................... 71 B.4.1 Lista de Producto .................................................................................................................................. 71 B.4.2 Lista del Sprint ....................................................................................................................................... 72 B.4.3 Diagrama de quemado ....................................................................................................................... 72 B.5 Otras metodologías complementarias aplicadas .......................................................................... 72 B.5.1 Método MoSCoW ................................................................................................................................... 73 Anexo C Diagramas de apoyo al diseño ........................................................................................................... 75 C.1 Diagrama Entidad-Relación de la base de datos servidor ........................................................ 75 C.2 Diagrama Entidad-Relación de la base de datos cliente ............................................................ 76 C.3 Diagramas de clases para el modelo de datos................................................................................. 77 Anexo D Listas de Sprint ......................................................................................................................................... 83 Anexo E Especificaciones del diseño de la vista de menú semanal .................................................. 89 Anexo F Manual de usuario ................................................................................................................................... 93 F.1 Primera ejecución .......................................................................................................................................... 93 F.2 Menú semanal .................................................................................................................................................. 93 F.3 Información nutricional.............................................................................................................................. 95 F.4 Navegando entre las pantallas de la aplicación.............................................................................. 96 F.5 Explorador de recetas.................................................................................................................................. 96 F.6 Ajustes ................................................................................................................................................................. 96 F.7 Información sobre la aplicación ............................................................................................................. 96
viii
Índice de figuras e ilustraciones Figura 1 - Cuota de mercado de iOS, Android y Windows Phone en móviles y tablets para el periodo 2011-2013 ....................................................................................................................................................... 4 Figura 2 - Millones de dispositivos vendidos con iOS, Android y Windows Phone para el periodo 2011-2013 ....................................................................................................................................................... 5 Figura 3 - Diagrama de clases del modelo de datos de la aplicación ............................................... 15 Figura 4 - Paleta de colores para las cabeceras de sección y títulos ................................................ 16 Figura 5 - Burn down chart del del Sprint 1 .......................................................................................................... 17 Figura 6 - Diseño de la pantalla de carga ........................................................................................................ 19 Figura 7 - Burn down chart del del Sprint 2 .......................................................................................................... 20 Figura 8 - Diseño de un elemento de la lista de recetas con todos los iconos ............................. 22 Figura 9 - Diseño de un elemento de la lista de recetas únicamente con el icono ‘vegetariano’ .................................................................................................................................................................. 23 Figura 10 - Situación inicial de la barra de puntuación .......................................................................... 23 Figura 11 - Pulsación mantenida sobre la barra de puntuación ........................................................ 24 Figura 12 - Puntuación establecida para la receta .................................................................................... 24 Figura 13 - Diseño de la ficha de receta .......................................................................................................... 24 Figura 14 - Diseño del listado de recetas........................................................................................................ 25 Figura 15 - Diseño del listado de recetas para dispositivos con pantalla grande en horizontal ........................................................................................................................................................................ 25 Figura 16 - Burn down chart del del Sprint 3 ....................................................................................................... 26 Figura 17 - Diseño de la barra lateral de navegación de la aplicación ............................................ 29 Figura 18 - Error al integrar la barra lateral de navegación con el explorador de recetas .. 29 Figura 19 - Rediseño del apartado 'Ingredientes' de la ficha de receta para incluir la cantidad de ingredientes para el número de personas establecido ................................................. 31 Figura 20 - Diseño de la interfaz de usuario de la vista de menú semanal ................................... 32 Figura 21 - Burn down chart del del Sprint 4 ....................................................................................................... 33 Figura 22 - Algoritmo para la navegación al contenido inmediatamente posterior ................ 35 Figura 23 - Algoritmo para la navegación al contenido inmediatamente anterior .................. 35 Figura 24 - Algoritmo para el salto a contenido posterior al mostrado ......................................... 36 Figura 25 - Algoritmo para el salto a contenido anterior al mostrado ........................................... 36 Figura 26 - Barra de la aplicación para agregar recetas al menú ...................................................... 37 Figura 27 - Burn down chart del del Sprint 5 ....................................................................................................... 38 Figura 28 - Iconos para la generación automática de menús semanales ...................................... 41 Figura 29 - Menú contextual para la generación de menús equilibrados ..................................... 42 Figura 30 - Burn down chart del del Sprint 6 ....................................................................................................... 42 Figura 31 - Diseño del gráfico de información nutricional ................................................................... 45 Figura 32 - Diseño de la interfaz de información nutricional nutricional para móviles en posición vertical .............................................................................................................................................................................. 46 Figura 33 - Diseño de la interfaz de información nutricional para tablets en posición horizontal ........................................................................................................................................................................ 47 Figura 34 - Diseño del icono para la ficha de información nutricional ........................................... 48 Figura 35 - Diseño del widget con con el resumen nutricional del menú semanal ........................... 48 Figura 36 - Diseño del widget con con el resumen nutricional del menú semanal para tablets en posición horizontal .................................................................................................................................................... 48
ix Figura 37 - Burn down chart del del Sprint 7 ....................................................................................................... 49 Figura 38 - Nuevo diseño de la barra de título ............................................................................................ 51 Figura 39 - Pantalla de información de la aplicación ............................................................................... 52 Figura 40 - Página de la aplicación una vez publicada en Play Store............................................... 54 Figura 41 - Burn down chart del del Sprint 8 ....................................................................................................... 54 Figura 42 - Burn down chart del del proyecto ..................................................................................................... 55 Figura 43 - Diagrama Entidad-Relación de la base de datos servidor ............................................ 75 Figura 44 - Diagrama Entidad-Relación de la base de datos cliente ................................................ 76 Figura 45 - Diagrama de clases del modelo de datos de la aplicación............................................. 77 Figura 46 - Especificación de la clase CategoriaPlato del modelo de datos ................................. 78 Figura 47 - Especificación de la clase TipoPlato del modelo de datos............................................. 78 Figura 48 - Especificación de la clase GrupoNutricional del del modelo de datos ............................ 78 Figura 49 - Especificación de la clase TipoProducto del modelo de datos .................................... 78 Figura 50 - Especificación de la clase Receta del modelo de datos ................................................... 79 Figura 51 - Especificación de la clase Ingrediente del modelo de datos dat os ............................... ............... .......................... .......... 80 Figura 52 - Especificación de la clase UnidadMedida del modelo de datos .................................. 80 Figura 53 - Especificación de la clase UnidadTiempo del modelo de datos .................................. 80 Figura 54 - Especificación de la clase PasoReceta del modelo de datos ......................................... 81 Figura 55 - Especificación de la clase CantidadIngrediente del modelo de datos ..................... 81 Figura 56 - Menú contextual para los platos con una receta seleccionada................................... 89 Figura 57 - Avanzar una semana en la vista del menú semanal ......................................................... 90 Figura 58 - Retroceder una semana en la vista del menú semanal................................................... 90 Figura 59 - Ejemplo de funcionamiento de la selección de un día de la semana en la vista de menú semanal ............................................................................................................................................................... 91 Figura 60 - Avanzar un día en la vista de menú semanal ....................................................................... 91 Figura 61 - Retroceder un día en la vista de menú semanal ................................................................ 92 Figura 62 - Casos de funcionamiento especial del botón "Atrás" ...................................................... 92 Figura 63 - Pantalla de carga ................................................................................................................................ 93 Figura 64 - Menú semanal ...................................................................................................................................... 94 Figura 65 - Menú de opciones .............................................................................................................................. 94 Figura 66 ......................................................................................................................................................................... 94 Figura 67 - Información nutricional.................................................................................................................. 95 Figura 68 - Icono de la barra de navegación ................................................................................................. 96
Ilustración 1 - Icono de la aplicación ................................................................................................................ 16 Ilustración 2 - Icono para recetas sin gluten ................................................................................................ 22 Ilustración 3 - Iconos para recetas vegetarianas ........................................................................................ 22 Ilustración 4 - Icono para las recetas habituales del usuario .............................................................. 22 Ilustración 5 - Iconos para la puntuación de usuario............................................................................... 23 Ilustración 6 - Icono para la opción 'Menú semanal' de la barra de navegación ....................... 53 Ilustración 7 - Iconos para la opción ‘Recetas’ de la barra de navegación ................................ ............... ..................... .... 53 Ilustración 8 - Icono para la opción 'Ajustes' de la barra de navegación ....................................... 53 Ilustración 9 - Iconos para la opción ‘Información’ de la barra de navegación .......................... 53
x
Índice de tablas Tabla 1 - Lista de Producto inicial ...................................................................................................................... 13 Tabla 2 - Lista del Sprint 1 ..................................................................................................................................... 14 Tabla 3 - Lista de Producto al finalizar el Sprint 1 .................................................................................... 17 Tabla 4 - Lista del Sprint 2 ..................................................................................................................................... 18 Tabla 5 - Lista de Producto al finalizar el Sprint 2 .................................................................................... 20 Tabla 6 - Lista del Sprint 3 ..................................................................................................................................... 21 Tabla 7 - Lista de Producto al finalizar el Sprint 3 .................................................................................... 27 Tabla 8 - Lista del Sprint 4 ..................................................................................................................................... 28 Tabla 9 - Lista del Sprint 4 rectificada ............................................................................................................. 30 Tabla 10 - Lista de Producto al finalizar el Sprint 4 .................................................................................. 33 Tabla 11 - Lista del Sprint 5................................................................................................................................... 34 Tabla 12 - Lista de Producto al finalizar el Sprint 5 .................................................................................. 38 Tabla 13 - Lista del Sprint 6................................................................................................................................... 39 Tabla 14 - Lista de Producto al finalizar el Sprint 6 .................................................................................. 43 Tabla 15 - Lista del Sprint 7................................................................................................................................... 44 Tabla 16 - Lista de Producto al finalizar el Sprint 7 .................................................................................. 49 Tabla 17 - Lista del Sprint 8................................................................................................................................... 50 Tabla 18 - Datos de la cuota de marcado agregada de móviles y tablets ................................ ................ ....................... ....... 63 Tabla 19 - Datos de ventas, en millones de unidades, a nivel internacional ................................ 64 Tabla 20 - Lista del Sprint 1 finalizado ............................................................................................................ 83 Tabla 21 - Lista del Sprint 2 finalizado ............................................................................................................ 83 Tabla 22 - Lista del Sprint 3 finalizado ............................................................................................................ 84 Tabla 23 - Lista del Sprint 4 finalizado ............................................................................................................ 85 Tabla 24 - Lista del Sprint 5 finalizado ............................................................................................................ 86 Tabla 25 - Lista del Sprint 6 finalizado ............................................................................................................ 87 Tabla 26 - Lista del Sprint 7 finalizado ............................................................................................................ 87 Tabla 27 - Lista del Sprint 8 finalizado ............................................................................................................ 88
Capítulo I
Introducción Una aplicación de planificación de menús equilibrados es una herramienta que permite al usuario diseñar el menú semanal para toda la familia y que muestra el valor nutricional del mismo detalladamente, de forma que resulte fácil aprender a mantener unos hábitos alimenticios sanos y equilibrados. Además de permitir al usuario planificar sus propios menús, la aplicación debe ser capaz de generar menús semanales equilibrados automáticamente que el usuario pueda posteriormente modificar para adecuarlos adecuarlos a sus gustos. Para cada una de las recetas se debe poder obtener una ficha en la que muestre toda la información información sobre la misma. Así, desde la ficha de receta se debe poder consultar el tiempo y dificultad de preparación, si debe servirse fría o caliente, los ingredientes y cantidades que serán necesarias para el número de miembros de la familia, los pasos para su elaboración, si contiene gluten, si es apta para dietas vegetarianas y la puntuación personal del usuario usuario para la receta.
I.1 Estado del arte Existen en la actualidad infinidad de páginas web y aplicaciones dedicadas al mundo de la cocina, sin embargo casi en su totalidad consisten en recetarios que en muchas ocasiones contienen recetas que requieren mucha elaboración o que no son de consumo habitual habitual para el día a día. En el ámbito de la alimentación saludable, por el contrario, no existe tanta cantidad de aplicaciones en el mercado. Muchas de ellas contienen información sobre dietas saludables y dan consejos para perder peso, y otras son directamente aplicaciones para contar calorías. En esta categoría se puede citar la aplicación Calorías [1], que cuenta con una base de datos de ingredientes con su aporte calórico y el porcentaje de proteínas, grasas e hidratos que contienen. Pese a que su funcionalidad es limitada, su interfaz de usuario es limpia, cuidada y fácil de usar. Otra aplicación a destacar podría ser MyFitnessPal [2]. Al igual que Calorías permite contar las calorías consumidas, pero en este caso además puede emplearse como diario nutricional. Aun así, presenta el gran inconveniente de que el usuario tiene que introducir los ingredientes empleados en cada comida junto con sus cantidades, o incluso tener que crear los ingredientes consumidos si éstos no existen, recayendo sobre él la responsabilidad de añadir su aporte calórico. calórico. Finalmente, apenas hay un par de d e aplicaciones que permitan gestionar y planificar el menú familiar de toda la semana. Ambas están diseñadas para teléfonos móviles y no aprovechan todo el potencial que ofrecen las dimensiones de las tablets. Además, no ofrecen información nutricional del menú planificado, por lo que resulta imposible verificar que efectivamente se está siguiendo una dieta sana y equilibrada. De este grupo de aplicaciones se puede mencionar MiMenuSaludable [3], más por sus limitaciones que por sus virtudes, pues resulta el ejemplo claro de lo que de ninguna manera se quiere 1
conseguir con el desarrollo de este proyecto: no muestra ninguna clase de información nutricional sobre los menús planificados, la información de las recetas resulta muy escasa, y su interfaz de usuario es muy poco amigable, con imágenes como fondo de las pantallas, que no se adaptan al tamaño del dispositivo y que provocan que la información se muestre descolocada descolocada y sea complicada de leer.
I.2 Motivación No existe una única causa por la que se decidió emprender el desarrollo de este proyecto, sino que se trata más bien de la combinación de una idea que surge ante una necesidad y la oportunidad de desarrollo ofrecida por el trabajo fin de grado. La idea para la aplicación surgió en el año 2009, realizando una beca Erasmus, al verme, por primera vez en la vida, en la situación de decidir cuál iba a ser la compra de la semana. Originalmente se planteaba diseñar y construir una herramienta web con una base de recetas que permitiera elegir la dieta semanal y proporcionara los ingredientes necesarios. El proyecto finalmente no se llevó a cabo debido principalmente a la falta de tiempo, pero desde entonces he seguido evolucionando y dando forma a la idea que ha llevado al desarrollo de la aplicación actual. Por ello, se decidió aprovechar la oportunidad brindada por el trabajo fin de grado para desarrollar e implementar el proyecto. Esta oportunidad, además de temporal, temporal, me ha ha permitido afrontar la gestión y desarrollo de un proyecto de software desde su concepción hasta su puesta en producción, teniendo que hacer uso de muchos de los conocimientos y competencias adquiridas durante la carrera para ser capaz de desarrollar una aplicación con una tecnología y una plataforma plataforma con la que no había trabajado antes.
2
Capítulo II
Objetivos Una de las funcionalidades más importantes que nos ofrece la tecnología actual es la de facilitar y optimizar la realización de tareas cotidianas. cotidi anas. La planificación del menú familiar es una de las más comunes de estas tareas, y de ella depende en gran medida nuestra salud a largo plazo. Así, el principal objetivo a alcanzar con el desarrollo del proyecto será el de obtener una aplicación que permita generar y gestionar menús familiares familiares que se adecuen a una dieta sana y equilibrada. Para ello, la aplicación deberá permitir al usuario visualizar el menú diario y planificarlo a su gusto, o modificar el menú generado por la propia aplicación. De igual manera, la aplicación deberá mostrar la información nutricional referente a las recetas asignadas al menú semanal, de forma que el usuario pueda ver en qué medida está siguiendo las pautas establecidas para una dieta equilibrada y que le resulte sencillo aprender a planificar los menús familiares de manera saludable. Además, planificar correctamente el menú familiar ayuda a ahorrar en la compra semanal, pues sabremos qué y cuánto debemos comprar, lo que nos evitará quedarnos cortos y tener que volver al supermercado o pasarnos y tener que tirar comida. Finalmente, los usuarios finales de la aplicación no pertenecerán a un grupo de edad determinado, por lo que la interfaz de usuario deberá ser clara, limpia y fácil de usar para que cualquier persona, independientemente de la experiencia que tenga en el uso de nuevas tecnologías, tecnologías, sea capaz de aprender rápidamente a utilizar la aplicación.
II.1 Estudio de alternativas Si bien se podrían estudiar las alternativas sobre el tipo de aplicación a desarrollar, las posibilidades que ofrecen los dispositivos móviles y tablets los convierte en el objetivo idóneo para esta aplicación. Así, los usuarios podrán hacer uso de la aplicación en cualquier lugar, pudiendo consultar los ingredientes que necesitan mientras hacen la compra o incluso a la hora de cocinar colocando el dispositivo en atriles específicos para cocina. Para determinar la plataforma para la que se desarrollará la aplicación se tendrán en cuenta tres opciones: iOS, Android y Windows 8 / Windows Phone. En primer lugar se compararán los costes de desarrollo y publicación de aplicaciones en las tiendas oficiales de cada sistema operativo:
El programa de desarrollador para iOS es gratuito para estudiantes universitarios y posteriormente tiene un coste de 99 dólares al año [4]. Las herramientas de desarrollo para Android son completamente gratuitas y de libre acceso y el coste de publicación de aplicaciones en la tienda de aplicaciones Play Store de Google requiere un único pago de 25 dólares [5]. 3
Por último, los servicios de desarrollo y publicación de aplicaciones para Windows Phone son gratuitos para estudiantes universitarios a través del programa DreamSpark [6] y posteriormente tienen un coste de 19 dólares al año [7].
Se debe tener en cuenta también que el sistema operativo Windows para móviles es distinto al de las tablets, por lo que si esta fuera la opción elegida finalmente habría que adaptar el desarrollo a ambos sistemas. Para apoyar apoyar la toma de la decisión final se ha estudiado la cuota de mercado actual y el número de ventas de smartphones de cada sistema operativo. operativo. Para ello se han utilizado los datos de ambos indicadores desde enero de 2011 a diciembre de 2013 trimestre a trimestre. En primer lugar se estudian los datos referidos a la evolución de la cuota de mercado, tanto de móviles como tablets, para los tres sistemas operativos. En el siguiente gráfico se muestra de color claro el valor real obtenido en cada trimestre, y en color oscuro la tendencia que sigue su evolución dentro de la muestra. Las tablas completas de datos [8] con los que se ha elaborado el gráfico pueden ser consultadas en el anexo A. 70,00% 60,00% 50,00% 40,00% 30,00% 20,00% 10,00% 0,00% 2011 2011 2011 2011 2012 2012 2012 2012 2013 2013 2013 2013 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 iOS
Android
Windows Phone
Figura 1 - Cuota de mercado de iOS, Android y Windows Phone en móviles y tablets para el periodo 2011-2013
Dentro del periodo, el sistema operativo Windows / Windows Phone apenas ha aumentado su cuota de mercado debido a que el sistema Windows Phone no fue lanzado hasta el último trimestre de 2010 y la primera tablet con con el sistema operativo Windows 8 no salió a la venta hasta el último trimestre de 2012, mientras que los otros dos competidores ya se encontraban mucho más asentados en este periodo. Tanto iOS como Android ganaron cuota de mercado en el periodo, sin embargo, mientras que Android ha mantenido una tendencia positiva, iOS alcanzó su máximo en la primera mitad del año 2012 y desde entonces su evolución ha sido negativa.
4
Para complementar estos datos, se ha analizado además la información de ventas de móviles con cada uno de los sistemas operativos. En el siguiente gráfico se muestran los datos de ventas a nivel mundial [9], expresados en millones de unidades, para el periodo comprendido entre enero de 2011 a diciembre de 2013. Las tablas con los datos a partir de los cuales se elaboró la gráfica pueden ser consultadas en el anexo A. 250
200
150
100
50
0 2011 2011 2011 2011 2012 2012 2012 2012 2013 2013 2013 2013 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 iOS
Android
WindowsPhone
Figura 2 - Millones de dispositivos vendidos con iOS, Android y Windows Phone para el periodo 2011-2013
Tanto Windows Phone como Android mantienen una tendencia de crecimiento de ventas casi lineal, mientras que la venta de dispositivos para iOS fluctúa, alcanzando sus máximos en las fechas de lanzamientos de nuevas versiones de iPhone. Con estos datos podemos concluir que aunque Android no es a día de hoy el sistema operativo dominante en móviles y tablets tiene una mayor proyección que sus competidores, por lo que desarrollar una aplicación para este sistema parece una apuesta bastante segura a medio y largo plazo. A esto hay que añadir que es el sistema operativo que requiere una inversión menor, ya que si bien los otros dos sistemas ofrecen planes específicos para estudiantes universitarios posteriormente conllevará una cuota anual mantener la aplicación en sus respectivos mercados mercados de aplicaciones. Por estas razones se elige Android como el sistema operativo para el que se desarrollará desarrollará la aplicación.
II.2 Metodología empleada Para el desarrollo de la aplicación se han utilizado metodologías metodologías ágiles, en concreto c oncreto se han aplicado algunas de las directrices que propone Scrum [10]. Según su guía, Scrum es “un marco de trabajo por el cual las personas pueden acometer problemas complejos adaptativos, a la vez que entregar productos del máximo valor posible productiva y creativamente” [11]. Por tanto, Scrum, más que una metodología es un conjunto de recomendaciones y buenas prácticas para el desarrollo y mantenimiento de productos. 5
Desde el punto de vista clásico de la gestión de proyectos, Scrum emplea un enfoque iterativo e incremental para optimizar la predictibilidad y minimizar los riesgos. Ésta es la razón principal por la que se decidió emplear Scrum Scrum para gestionar el desarrollo del proyecto, porque ofrece técnicas que permiten dirigir eficientemente proyectos que evolucionan y porque en cada una de sus evoluciones se debe obtener una versión del producto plenamente plenamente funcional y más completa que la versión anterior. En el caso del proyecto desarrollado, por sus características y por haber sido desarrollado desarrollado individualmente, no se obtuvo una versión plenamente funcional que sirviera de prototipo hasta el final del tercer incremento, en el cual se implementó el listado y la ficha de recetas. A partir de la tercera iteración, todos los demás concluyeron en un prototipo plenamente operativo y con más funcionalidades que el anterior. Desde el punto de vista del usuario final, la primera versión de la aplicación corresponde a la presentada junto a esta memoria, y por tanto nombrada 1.0, puesto que fue la primera versión que cumplía todos los objetivos propuestos al comienzo del proyecto. En el anexo B se explica más en detalle la teoría Scrum, así como sus características principales y los artefactos artefactos a tener en cuenta. Al haber sido desarrollado individualmente, no se pudo aplicar Scrum íntegramente a este proyecto. Sin embargo se adaptaron las siguientes características de Scrum para ser empleadas en el desarrollo:
Sprints, con una duración de dos semanas. De los diez días de trabajo se dedica el primer día a la planificación íntegra del Sprint y el último a la revisión y retrospectiva del trabajo realizado. Pila de Producto, definida al comienzo del primer Sprint y reexaminada en la revisión de cada iteración para actualizar el progreso realizado con el incremento y añadir nuevos requisitos cuando sea conveniente. Sus atributos serán para cada uno de los requisitos su descripción, su valor para el producto 1 y la estimación en jornadas de trabajo que requiere su implementación Pila de Sprint, definida al inicio de cada iteración. En la planificación del Sprint se definen los objetivos a alcanzar y se describen las tareas a realizar para cumplir los requisitos establecidos. establecidos. Diagrama de quemado para cada Sprint a partir de los requisitos y tareas definidas en la Pila del Sprint.
En cuanto a las reuniones que establece Scrum se emplearán los tiempos asignados a las reuniones de planificación, p lanificación, revisión y retrospectiva, retrospectiva, detalladas en el anexo B, para los mismos fines que éstas.
1 Para
6
asignar valor a los requisitos se utiliza el método MoSCoW [13] explicado en el anexo B.
Capítulo III
Requisitos del sistema Este documento, más que la especificación de requisitos y objetivos a alcanzar con el desarrollo de este trabajo fin de grado, se s e debe considerar como la especificación especificación formal y detallada de la idea de producto, lo que permitirá tener una idea clara de los objetivos a medio y largo plazo. Con ello se pretende facilitar el desarrollo y minimizar el número de modificaciones requeridas requeridas sobre el trabajo ya realizado en incrementos anteriores. anteriores. Al final del presente capítulo se detallan los requisitos y objetivos que se establecen establecen para el trabajo fin de grado.
III.1 Elicitación de requisitos Se desea desarrollar una aplicación que permita generar menús familiares que se adapten a los principios de una dieta di eta equilibrada, equilibrada, y que puedan ser personalizados a partir de una serie de preferencias establecidas por el usuario, algunas de estas preferencias, aunque se podrían añadir otras, serán:
Mantener las recetas ya seleccionadas por el usuario y generar el menú semanal en base a éstas. No incluir platos que incluyan un ingrediente o tipo de producto para así poder adaptar los menús a alergias, intolerancias y desórdenes alimentarios. Dar un mayor peso a las recetas mejor valoradas por el usuario. Utilizar mayoritaria o exclusivamente las recetas que se hayan establecido como “habituales” por el usuario.
Si bien la aplicación será capaz de generar menús equilibrados, el usuario podrá modificar dichos menús seleccionando los platos que desee. Además, la aplicación deberá mostrar en qué medida el menú semanal se adapta a una dieta equilibrada ideal. La información nutricional sobre el menú semanal que se presentará al usuario deberá ser lo suficientemente detallada detallada como para que el usuario pueda aprender a planificar una dieta equilibrada. Las recetas pertenecerán a un tipo de plato (aperitivo, sopa, pasta, verdura…) y los
tipos de plato a su vez formarán parte de una categoría de plato (primero, segundo, postre…). De igual manera, cada ingrediente tendrá asignado un tipo de producto (cárnico, legumbre, verdura…) y cada tipo de producto pertenecerá a un grupo nutricional. Todas
las recetas deben tener un tipo de plato asignado, y estos a su vez una categoría de plato; sin embargo, todos los ingredientes deberán pertenecer a un tipo de producto, pero no todos los tipos de producto tendrán su correspondiente correspondiente grupo nutricional. De esta manera, se podrá añadir, por ejemplo, el tipo de producto “Utensilios” que permitirá añadir a las recetas utensilios de cocina poco habituales pero que pueden ser indispensables en la elaboración elaboración de algunas recetas. Sobre su elaboración, cada receta tendrá asignada una serie de pasos, debidamente ordenados, en los que se describirá el proceso a realizar y opcionalmente el tiempo necesario para cada paso. 7
Además, cada receta podría llevar asociada otra receta que pertenezca a la categoría de plato “Guarniciones y salsas” y que puede ser utilizada para aderezar o acompañar el plato. La aplicación permitirá al usuario crear nuevas recetas que se compartirán con el resto de usuarios, para ello podría ser necesario utilizar ingredientes que no estén en la base de datos del sistema, por lo que además, deberá permitir añadir información de nuevos ingredientes. Cada receta estará asociada a un usuario, por lo que será indispensable tener una cuenta de usuario para poder crear nuevas recetas, de manera que sea posible conocer quién es el autor de cada receta. Además, se ofrecerá al autor de la receta la posibilidad de que aparezca su nombre de usuario en la ficha de la receta. Toda la información creada por la comunidad de usuarios podrá ser revisada por la administración de la aplicación con el fin de comprobar que no haya duplicidades y que todos los datos sean correctos y cumplan con las normas de la comunidad, marcando como revisadas aquellas recetas que hayan sido aprobadas. De cada receta se desea guardar la siguiente información:
Nombre. Descripción. Tiempo aproximado de preparación Dificultad Dificultad de preparación Si debe servirse fría o caliente. Ingredientes y cantidades necesarias. Pasos a seguir para su elaboración. Si contiene gluten. Si es apta para una dieta vegetariana. vegetariana. Puntuación del usuario. Puntuación Puntuación media de los usuarios de la comunidad. Si es una receta que el usuario prepara habitualmente. Autor de la receta. Fecha de alta. Tipo y categoría de plato a la que pertenece.
De cada ingrediente se guardará la siguiente información:
Nombre en singular. Nombre en plural. Si contiene gluten. Si es apto para una dieta vegetariana. Autor del ingrediente. Fecha de alta. Tipo de producto y grupo nutricional, cuando proceda, al que pertenece.
Además, la aplicación permitirá al usuario obtener una lista de la compra con los ingredientes necesarios para la elaboración del menú semanal planificado y con las cantidades requeridas para el número de miembros de la familia. 8
III.2 Alcance del trabajo fin de grado Del documento de requisitos anterior, se establece como objetivo del trabajo fin de grado desarrollar desarrollar una aplicación que permita al usuario al menos:
Acceder a un listado de recetas y obtener la información almacenada para cada una de ellas. Planificar manualmente manualmente el menú semanal a partir del listado de recetas. Generar automáticamente automáticamente un menú semanal equilibrado. Obtener la información nutricional del menú planificado. pl anificado.
Preferiblemente Preferiblemente se debería poder personalizar la generación automática de menús equilibrados con alguna de las preferencias enunciadas en el documento de elicitación de requisitos.
9
Capítulo IV
Conceptos teóricos previos En este capítulo se explicarán brevemente algunos algunos de los conceptos teóricos teóricos que se se han aplicado en el desarrollo del trabajo fin de grado y que se consideran necesarios para una buena comprensión del resto de contenidos de este documento. documento.
IV.1 Nutrición y salud La nutrición es la ciencia que estudia los procesos fisiológicos y metabólicos que tienen lugar en el organismo causados por la ingesta de alimentos. Gran cantidad de enfermedades pueden ser prevenidas o aliviadas con una determinada alimentación, por esto, la nutrición tiene como fin entender cuáles son los aspectos dietéticos específicos que influyen en la salud. El cuerpo humano necesita seis clases de nutrientes que es importante consumir diariamente para mantener una función corporal saludable. Estos tipos de nutrientes son los glúcidos, las proteínas, los lípidos, las vitaminas, los minerales y el agua. Un desequilibrio de nutrientes, tanto por exceso como por defecto, puede causar problemas en la salud. Además, la mayoría de nutrientes están involucrados en la señalización de células, por tanto, el exceso o defecto de varias clases de d e nutrientes podría llegar a afectar a la función hormonal, lo que podría ocasionar problemas de salud más graves como la obesidad, la diabetes o algunos tipos de cáncer. Con el fin de facilitar la comprensión de los principales aspectos de la nutrición, n utrición, la Sociedad Española de Dietética y Ciencias de la Alimentación (SEDCA) [12] creó en los años 70 la denominada Rueda de los alimentos, un recurso didáctico muy visual que resulta de gran utilidad en los siguientes contextos:
Como herramienta didáctica para docentes. Como recurso para profesionales de la hostelería a la hora de confeccionar menús equilibrados en comedores, especialmente en colegios, residencias de ancianos y hospitales. Como ejemplo favorecedor favorecedor de la comprensión de los conceptos básicos de la dieta saludable, saludable, incluyendo el papel de los distintos grupos alimenticios.
La Rueda de los alimentos resulta una herramienta ampliamente conocida, pues su uso está muy extendido especialmente en el medio educativo. Por estos motivos, la Rueda de los alimentos es un recurso didáctico muy útil en determinadas situaciones: sit uaciones:
Cuando es necesario hacer comprender la importancia del conjunto de la dieta para una alimentación saludable. Cuando queremos enseñar visualmente que hay diferentes tipos de alimentos clasificados según sus funciones en nuestro organismo. Cuando se requiere de un recurso sencillo para enseñar a elaborar menús sanos válidos para todas las edades y circunstancias. 11
En el año 2007, SEDCA, con la colaboración de un grupo de expertos en nutrición y dietética, elaboró una nueva versión de la Rueda de los alimentos con algunas diferencias frente a la versión original. La Rueda de los alimentos distingue seis grupos alimenticios:
Energético I: composición predominante en hidratos de carbono. A este grupo pertenecen los productos derivados de los cereales, patatas y azúcar. Energético II: composición predominante en lípidos. Alimentos tales como la mantequilla, mantequilla, aceites y grasas en general. Plásticos I: composición predominante en proteínas. A este grupo pertenecen los productos de origen lácteo. Plásticos II: composición predominante en proteínas. Productos cárnicos, huevos, huevos, pescado, legumbres y frutos secos. Reguladores Reguladores I: Hortalizas y verduras. Reguladores Reguladores II: Frutas.
En la versión de 2007 se incluye i ncluye además una mención explícita al ejercicio físico y a la necesidad de ingerir agua en cantidades suficientes. Si bien en la rueda original todos los grupos se mostraban con el mismo tamaño, en la nueva versión cada grupo tiene un tamaño específico, señalando así la importancia relativa en nuestra dieta de los alimentos pertenecientes a cada grupo. Así, los alimentos que deben consumirse en ocasiones esporádicas son representados con un tamaño más reducido, mientras que los de consumo habitual presentan un mayor tamaño dentro de la rueda. A continuación se detalla el porcentaje de cada grupo de alimentos que se debe ingerir a lo largo de una semana para mantener una dieta sana y equilibrada: equilibrada:
Energético I .............................. 28% Energético II ............................. ................ ............. 7% Plásticos I................................... 7% Plástico II ................................... 14% Reguladores I........................... ................. .......... 22% Reguladores II ......................... 22%
Como se ha visto, la rueda de los alimentos se trata de un elemento gráfico muy sencillo de comprender comprender y aplicar. Por esta razón será la herramienta que se utilizará como base teórica para la generación de menús semanales equilibrados.
12
Capítulo V
Descripción informática A partir del documento de requisitos se crea la versión inicial de la Lista de Producto que se utilizará durante la planificación del primer Sprint para decidir el trabajo a realizar en el mismo. En ella se detallan los requisitos detectados para el producto y para cada uno de ellos se determina el valor que se considera que ofrecen al producto, se realiza una estimación de las jornadas de trabajo que consumirán y se hace una planificación inicial del Sprint en el que serán ejecutados. Requisito Base de datos Carga y actualización de datos en la aplicación Listado de recetas Ficha de receta Vista de menú semanal Confección de menús por el usuario Generación automática de menús equilibrados Información nutricional del menú semanal planificado Ajustes Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint 5 1 M M
10
2
M M M M
3 2 6 3
3 3 4 4
M
5
5
S
4
6
C W W W
2 3 3 3
6 7 7 7
Tabla 1 - Lista de Producto inicial
V.1 Sprint 1 El objetivo del primer Sprint será realizar el diseño e implementación de las bases sobre las que se desarrollará el resto del proyecto. V.1.1 Planificación
Los requisitos que se acometerán en la primera iteración del proceso de desarrollo serán los que referidos a la “Base de datos” y a la “Carga y actualización de datos en la aplicación”. Dada la extensión del segundo, se subdividirá en dos requisitos, de forma que durante el primer Sprint se ejecutará parte del mismo, y se finalizará su implementación en la siguiente iteración. it eración. Se añade además un nuevo requisito que no estaba presente en la Lista de Producto, “Interfaz de usuario”, en el que se diseñará el icono de la aplicación y se determinarán los colores y el aspecto general que se deberá mantener en todos los componentes y apartados de la aplicación. 13
A partir de los requisitos a implementar se planifica el trabajo a realizar y se detalla en la Lista del Sprint. Requisito
Estimación Tiempo (en horas real de trabajo) requerido
Base de datos (1) (2) (3) (4) (5) (6)
(7) (8) (9)
(10) (11)
2 Análisis de los requisitos 6 Diseño de la base de datos de la aplicación 8 Implementación Implementación de la base de datos Diseño y codificación de las consultas consultas de recuperación de 8 datos 8 Pruebas Diseño del proceso de carga y actualización de datos en la 2 aplicación Carga y actualización de datos en la aplicación Implementación del programa que genera el archivo de 4 datos para la aplicación desde la base de datos de recetas 6 Diagrama de clases para el modelo de datos de la aplicación 10 Implementación Implementación de las clases del modelo de datos Interfaz de usuario 4 Diseño del icono de la aplicación 2 Diseño de los colores y aspecto global de la aplicación Tabla 2 - Lista del Sprint 1
V.1.2 Desarrollo
V.1.2.1 Base de datos En primer lugar se analizan los requisitos del sistema y a partir de ellos se realiza la implementación de la base de datos para guardar la información necesaria para la aplicación. Se diseñan dos bases de datos, una servidor y otra cliente. La base de datos servidor será única y almacenará todos los datos a partir de los cuales las aplicaciones cliente podrán actualizar su base de datos local. En el anexo C se pueden consultar los diagramas entidad-relación entidad-relación de ambas bases b ases de datos. Las principales diferencias de diseño entre la base de datos servidor y la base de datos cliente son:
14
En la base de datos cliente desaparece la entidad Usuario, pues no tiene sentido que en las aplicaciones cliente se almacene la información referente a todos los usuarios. Este cambio ocasiona que la clave primaria de la entidad Usuario se propague a las entidades Receta e Ingrediente para poder conocer qué usuario es el autor de la receta o del ingrediente. Los atributos Vegetariano y ContieneGluten que en la base de datos servidor únicamente aparecen en la entidad Ingrediente , en la base de datos cliente
también aparecen en la entidad Receta. Esto es debido a que para minimizar los cálculos necesarios para determinar qué recetas son aptas para dietas sin gluten o vegetarianas, éstos serán realizados únicamente cuando la información de la receta se inserte en la base de datos cliente, y podrán ser consultados en cualquier momento. El valor de los atributos únicamente tendría que ser recalculado si se cambiaran los ingredientes in gredientes de la receta, por lo que al tratarse de una operación muy poco habitual raramente serán calculados calculados de nuevo.
Por las mismas razones expuestas en el punto anterior se ha añadido a la entidad Receta de la base de datos cliente seis atributos que indican la cantidad presente en la receta de cada uno de los seis grupos nutricionales que se emplearán emplearán para el cálculo de una dieta di eta equilibrada.
Para su implementación, se utiliza una base de datos relacional MySQL para el servidor, y SQLite para la base de datos cliente. Con el fin de reducir los accesos a la base de datos servidor, el proceso de carga y actualización de datos en el cliente será el siguiente: Se añadirá una tabla en el servidor que servirá de registro de todas las inserciones, modificaciones y borrado de datos que ocurran en el resto de tablas. Esta tabla registro se mantendrá actualizada mediante triggers asociados al resto de tablas que se ejecutarán cada vez que se realice una operación sobre alguna de ellas y registrarán la operación realizada en la tabla de registro. Periódicamente se generará uno o varios archivos de texto con el contenido de la tabla registro, a partir del cual la aplicación cliente actualizará sus datos para mantenerse en el mismo estado que la base de datos servidor. V.1.2.2 Carga y actualización actualización de datos en la aplicación Se diseña e implementa el modelo de datos con las clases que utilizará la aplicación para trabajar con la información de recetas almacenada en la base de datos. El modelo resumido queda reflejado en la siguiente figura.
Figura 3 - Diagrama de clases del modelo de datos de la aplicación
15
En el anexo C se puede consultar la especificación detallada de cada una de las clases del modelo de datos. Además se implementa el programa que permite obtener el fichero de datos a partir de la tabla registro que utilizará la aplicación para cargar y actualizar datos. V.1.2.3 Interfaz de usuario Se definen los colores y apariencia general que se aplicará a toda la aplicación y se diseña el icono de la aplicación:
El fondo de las actividades será de color gris claro, definido por el valor #e5e5e5. El fondo de la actividad de carga y actualización de datos será de color gris muy oscuro, definido por el valor #252525. El texto principal será de color negro. El texto secundario (por ejemplo, para elementos deshabilitados) deshabilitados) será de d e color gris oscuro, definido por el valor: #444444 # 444444 Para el fondo de las fichas o contenedores de contenido se usará un gris muy claro definido por el valor #f7f7f7. Cuando estas fichas sean seleccionables, mientras estén pulsadas el fondo cambiará a un color gris más oscuro definido por el valor #ababab.
Para el fondo de las cabeceras de sección y títulos se utilizarán colores de la siguiente paleta de colores:
Figura 4 - Paleta de colores para las cabeceras de sección y títulos
Además se diseña el icono de la aplicación:
Ilustración 1 - Icono de la aplicación
V.1.3 Revisión
Se revisa el trabajo realizado, comprobando que se hayan completado todos los requisitos establecidos al inicio de la iteración. Se actualiza la Lista del Sprint y su correspondiente gráfico de quemado. En el anexo D se pueden consultar todas las Listas de Sprint con sus valores valores actualizados tras acabar la implementación i mplementación de cada iteración. 16
Se completaron todas las tareas según la planificación establecida, salvo el retraso de la tarea de diseño y codificación de las consultas de recuperación de datos que debía terminar el tercer día de desarrollo y se completó el cuarto. 12 11 10 s e t n e i
d n e p s a e r a T
9 8 7 6 5 4 3 2 1 0 0
1
2
3
4
5
Planificación
6
7
8
Ejecución
Figura 5 - Burn down chart del del Sprint 1
Se actualiza la Lista de Producto para añadir el requisito “Interfaz de usuario” que
no estaba incluido inicialmente, y se reevalúa para determinar el trabajo a realizar en el siguiente Sprint, en el que se decide terminar el requisito de carga y act ualización de datos que se empezó en este Sprint. Para simplificar la Lista de Producto de ahora en adelante se omitirán los requisitos ya terminados. Requisito Carga y actualización de datos en la aplicación (Sprint 2) Listado de recetas Ficha de receta Vista de menú semanal Confección de menús creados por el usuario Generación automática de menús equilibrados Información nutricional del menú semanal planificado Ajustes Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint M
7
2
M M M M
3 2 6 4
3 3 4 4
M
6
5
S
4
6
C W W W
2 3 3 3
6 6 7 7
Tabla 3 - Lista de Producto Producto al finalizar el Sprint 1
17
V.2 Sprint 2 El objetivo establecido para el segundo Sprint será finalizar el requisito “Carga y actualización de datos en la aplicación” , del que se inició su desarrollo en la iteración
anterior. V.2.1 Planificación
Se prepara la Lista del Sprint con las tareas que se realizarán para terminar la implementación implementación del proceso de carga y actualización de datos. Requisito
(12) (13) (14) (15) (16) (17) (18) (19)
Estimación Tiempo (en horas real de trabajo) requerido
Carga y actualización de datos en la aplicación Implementación del manejador de la base de datos Implementación de los métodos de recuperación de información desde la base de datos Diseño de la interfaz de la vista de carga de datos Implementación del funcionamiento de la vista de carga de datos Implementación del proceso de carga y actualización de datos Implementación del proceso de cálculo de valores precalculados Pruebas Revisión y corrección de errores
8 8 2 6 8 8 8 8
Tabla 4 - Lista del Sprint 2
V.2.2 Desarrollo
En el Sprint anterior se implementaron las clases del modelo de datos que permiten transformar la información almacenada en la base de datos cliente en objetos con los que trabajar fácilmente. Sin embargo no existe una conexión con la base de datos que permita recuperar información de ésta y transformarla en los objetos del modelo de datos, para ello se implementa un manejador de la base de datos que sirva de interfaz entre la estructura de clases y los datos. El manejador de la base de datos tendrá las siguientes responsabilidades: responsabilidades:
Crear la estructura de tablas de la base de datos cliente y mantenerla actualizada actualizada ante los cambios que pueda sufrir en futuros incrementos. Cargar y mantener actualizados los datos de la base de datos. Permitir recuperar objetos del modelo de datos desde la base de datos a partir de su identificador. identificador. Permitir modificar la información guardada a partir de instancias de las clases del modelo de datos.
Tras implementar el manejador de la base de datos se realiza el diseño de la pantalla de carga de la aplicación. En la siguiente figura puede verse el diseño realizado: 18
Figura 6 - Diseño de la pantalla de carga
Cuando haya datos que actualizar se mostrarán las barras de progreso, una amarilla, que representa el progreso de la actualización de datos, y una verde que indica el progreso del cálculo de valores (vegetariano, sin gluten, y cantidades nutricionales). Cuando no haya datos que actualizar las barras de progreso no se mostrarán y tan solo será visible el nombre de la aplicación y el número de versión, que se muestra en la esquina inferior izquierda. Finalmente se implementa el diseño de la pantalla de carga y se integra en él el funcionamiento del proceso de carga y actualización de datos. Para probar el correcto funcionamiento del manejador manejador de la base de datos y su correcta integración con la interfaz se generan una serie de datos de prueba que serán utilizados también para realizar pruebas en futuros incrementos del proceso de desarrollo. V.2.3 Revisión
En la revisión del Sprint se revisa el trabajo realizado para comprobar que se hayan completado los objetivos establecidos para la iteración y se actualizan la Lista del Sprint y su gráfico de quemado con la evolución del Sprint. Se completaron todas las tareas planificadas, sin embargo las dos primeras consumieron más tiempo del estimado inicialmente, lo que ocasionó que durante todo el Sprint se trabajara por encima de la planificación establecida, tal y como se refleja en el gráfico de quemado. Sin embargo, al disponer de un día de margen para el desarrollo de la iteración no se produjo ningún retraso ni se provocó que alguna de las tareas planificadas no pudiera ser realizada. 19
9 8 7 s e t6 n e i
d 5 n e p 4 s a e r 3 a T
2 1 0 0
1
2
3 Planificación
4
5 6 Ejecución
7
8
Figura 7 - Burn down chart del del Sprint 2
Tras la revisión del Sprint se revisa la Lista de Producto, actualizando los requisitos ya cumplidos y se determinan los requisitos en los que se trabajará en la siguiente iteración, decidiendo trabajar en los requis itos “Lista de recetas”, “ Ficha de recetas” y “Explorador de recetas”.
Requisito Listado de recetas Ficha de receta Explorador de recetas Vista de menú semanal Confección de menús creados por el usuario Generación automática de menús equilibrados Información nutricional del menú semanal planificado Ajustes Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint 3 3 M 2 3 M 3 3 M 6 4 M 4 4 M M
6
5
S
4
6
C W W W
2 3 3 3
6 6 7 7
Tabla 5 - Lista de Producto Producto al finalizar el Sprint 2
20
V.3 Sprint 3 El objetivo para el tercer Sprint será implementar las interfaces de usuario que permitirán obtener el listado de recetas, ordenadas por categoría de plato, y la información referente referente a cada una de las recetas. V.3.1 Planificación
Durante la planificación planificación se elabora la Lista Li sta del Sprint con las tareas que se llevarán a cabo para completar los requisitos “Listado de recetas”, “Ficha de receta” y “Explorador de recetas”.
Requisito
(20) (21) (22) (23) (24)
(25) (26) (27) (28) (29)
(30) (31) (32) (33) (34)
Listado de recetas Diseño de la interfaz del listado de recetas Diseño de los iconos y elementos gráficos necesarios para el listado de recetas Implementación de la interfaz de los elementos que compondrán la lista Implementación Implementación de la interfaz listado de recetas Implementación del método de recuperación de recetas desde la base de datos e inserción en el listado Ficha de receta Diseño de la interfaz de la ficha de receta Diseño de los iconos y elementos gráficos necesarios para la ficha de receta Implementación Implementación de la interfaz de la ficha de receta Implementación del funcionamiento de recuperación de la información de una receta y mostrado en la ficha Revisión y corrección de errores Explorador de recetas Diseño de la interfaz del explorador de recetas Modificación del listado de recetas para permitir ordenar las recetas por categoría de plato Implementación Implementación de la interfaz del explorador de recetas Integración del listado y ficha de recetas en el explorador de recetas Revisión y corrección de errores
Estimación Tiempo real (en horas de requerido trabajo) 4 4 5 5 6
3 3 6 2 2 2 4 4 8 6
Tabla 6 - Lista del Sprint 3
V.3.2 Desarrollo
V.3.2.1 Listado de recetas Cada uno de los elementos del listado de recetas incluirá el nombre y descripción de la receta, y cuando proceda, los iconos que indican que una receta no contiene gluten, que es apta para una dieta vegetariana, o que es una receta habitual del usuario. 21
En las siguientes ilustraciones se muestra el diseño realizado para los iconos que se usarán en el listado de recetas:
Ilustración 2 - Icono para recetas sin gluten
Ilustración 3 - Iconos para recetas vegetarianas
En el caso de las recetas vegetarianas se diseñan dos versiones del icono. El de la izquierda, con más detalle en las hojas, se utilizará para pantallas con alta densidad de píxeles, generalmente pantallas grandes o de muy alta calidad en las que se puede mostrar tanto nivel de detalle. El icono de la derecha, con menor nivel de detalle y trazos ligeramente más gruesos, se utilizará en pantallas con una densidad de píxeles menor, ya que de usar la versión con alto nivel de detalle se obtendría una imagen menos limpia del icono.
Ilustración 4 - Icono para las recetas habituales del usuario
Con estos iconos y con el nombre y descripción de la receta se realiza el siguiente diseño para los elementos de la lista de recetas.
Figura 8 - Diseño de un elemento de la lista de recetas con todos los iconos
22
En el diseño anterior se muestra un ejemplo de un elemento de la lista de recetas con todos los iconos. De ellos solo se mostrarán en el listado de recetas aquellos que se correspondan con la información de cada receta. El margen derecho relativo a los iconos “sin gluten” y “vegetariano” es fijo, de modo que si una receta contiene gluten y es apta para una dieta vegetariana no se mostrará el icono “sin gluten”, y el icono “vegetariano” se situará a la derecha del todo como se muestra en la siguiente figura:
Figura 9 - Diseño de un elemento de la lista de recetas únicamente con el icono ‘vegetariano’
V.3.2.2 Ficha de receta En la ficha de receta se mostrará toda la información referente a una receta, así como los ingredientes y los pasos necesarios para su elaboración. Además de los recursos gráficos del aparatado anterior, se usarán los siguientes iconos en la ficha de receta:
Ilustración 5 - Iconos para la puntuación de usuario
Se colocarán cinco estrellas para representar y recoger la puntuación del usuario para cada receta, de forma que se pueda dar una puntuación del uno al cinco con la posibilidad de otorgar medias estrellas. Inicialmente las cinco estrellas tendrán el aspecto del icono del medio, cuando el usuario mantenga el dedo pulsado sobre la barra de puntuación se resaltarán el número de estrellas sobre las que se esté presionando con el aspecto del icono de la derecha. Finalmente, cuando se deje de pulsar sobre las estrellas se establecerá la puntuación de usuario y las estrellas resaltadas resaltadas tomarán el aspecto del icono de la izquierda. En las siguientes figuras se muestra de manera gráfica el funcionamiento explicado:
Figura 10 - Situación inicial de la barra de puntuación
23
Figura 11 - Pulsación mantenida sobre la barra de puntuación
Figura 12 - Puntuación establecida para la receta
Por último, con todos los elementos definidos se realiza el diseño de la ficha de receta que se muestra en la siguiente figura. El diseño muestra la interfaz completa de la ficha de receta para tres ingredientes y tres pasos de receta, uno de ellos sin duración de tiempo definida. Al mostrarse la ficha de receta en el dispositivo se mostrarán la barra de la aplicación y las del sistema operativo y se ajustará el contenido a la pantalla, pudiendo desplazarse el contenido cuando éste no quepa entero en la pantalla.
Figura 13 - Diseño de la ficha de receta
V.3.2.2 Explorador Explorador de recetas Por último, con la lista de recetas y la ficha de información completadas, falta por implementar el explorador de recetas, que permitirá al usuario buscar entre las recetas, 24
que se mostrarán ordenadas en pestañas según su categoría de plato, y acceder desde el listado a la ficha de información de cada una de ellas. e llas. En la siguiente figura se muestra el diseño del explorador de recetas:
Figura 14 - Diseño del listado de recetas
Además, se creará un diseño alternativo para los dispositivos con pantallas grandes cuando se encuentren en posición horizontal. En él, se mostrará el listado de recetas en la parte izquierda de la pantalla, y en la parte derecha se mostrará la ficha fi cha de la receta seleccionada como se muestra en la siguiente figura:
Figura 15 - Diseño del listado de recetas para dispositivos con pantalla grande en horizontal
25
V.3.3 Revisión
En la fase de revisión se comprueba que se hayan completado todos los requisitos fijados y se actualiza la Lista del Sprint y su gráfico de quemado. Al revisar el trabajo realizado se detectó un problema con la visualización de los ingredientes y los pasos de elaboración en la ficha de receta cuando alguno de los valores de éstos ocupa más de una línea. Se anota el error para incluir su corrección en la planificación del siguiente Sprint. 16 15 14 13 12 s 11 e t n 10 e i d9 n e8 p s7 a e6 r a5 T 4 3 2 1 0 0
1
2 3 Planificación
4
5 6 Ejecución
7
8
Figura 16 - Burn down chart del del Sprint 3
Tras revisar el trabajo realizado en el Sprint se revisa la Lista de Producto para determinar el trabajo a realizar en la siguiente iteración. Para el siguiente Sprint se decide empezar a implementar la vista de menú semanal, por lo que se necesitará un sistema de navegación para poder acceder a las diferentes secciones de la aplicación. Por ello se añade el requisito “Barra lateral de navegación”,
que
implementará
una
barra
de
navegación
cómo
marcan
las
recomendaciones de diseño para Android [14]. Además se cambia el valor para el producto de los ajustes de la aplicación, y se incluye la definición de los ajustes para añadir la opción que permite establecer el número de personas para las que se cocinará, de manera que también se actualizará la ficha de receta para mostrar las cantidades de ingrediente para el número de personas establecido. Finalmente se diseñará la vista de menú semanal e implementará parte ella, Se dedicará especial cuidado al diseño de su interfaz, pues ésta, al incluir la mayor parte de la funcionalidad, será la vista principal de la aplicación. Los requisitos de la vista de menú semanal que no puedan ser implementados implementados en el cuarto Sprint se terminarán en el quinto.
26
Requisito Barra lateral de navegación Ajustes Vista de menú semanal (Sprint 4) Vista de menú semanal (Sprint 5) Confección de menús creados por el usuario Generación automática de menús equilibrados Información nutricional del menú semanal planificado Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint M 2 4 M 2 4 M 3 4 M 3 5 M 4 5 M
6
6
S
4
7
W W W
3 3 3
7 8 8
Tabla 7 - Lista de Producto Producto al finalizar el Sprint 3
27
V.4 Sprint 4 Se marcan como objetivos del cuarto Sprint el diseño e implementación de la barra lateral de navegación, la implementación de los ajustes de la aplicación con la opción de determinar el número de personas para los que calcular las cantidades de ingredientes, y finalmente el diseño e inicio de la implementación de la vista de menú semanal. V.4.1 Planificación
En la planificación de la iteración se prepara la Lista del Sprint, en la que se especifican las tareas que se llevarán a cabo en el para cumplir con los objetivos establecidos. Requisito
(35) (36) (37) (38)
(39) (40) (41)
Barra lateral de navegación Diseño de la barra lateral l ateral de navegación Implementación Implementación de la barra lateral de navegación Integración de la barra lateral en la aplicación Revisión y corrección de errores Ajustes Definición de los ajustes de la aplicación Implementación o adaptación de los cuadros de dialogo necesarios para los ajustes de la aplicación Implementación Implementación de la vista de ajustes y su funcionamiento Ficha de receta
Estimación Tiempo real (en horas de requerido trabajo) 2 6 4 4 2 6 6
(42)
Corrección del problema de la interfaz que hace que en algunos casos la lista de ingredientes y pasos de la receta aparezca cortada
2
(43)
Implementación de la función de guardado y recuperación recuperación de la puntuación del usuario de las recetas
2
(44)
(45) (46) (47) (48) (49)
Modificación del listado de ingredientes para que muestre las cantidades para el número de personas establecido en los ajustes Vista de menú semanal Diseño de la interfaz de la vista de menú semanal Diseño de los componentes de la interfaz in terfaz Implementación de los componentes del widget con con los días de la semana Implementación del widget con con los días de la semana Implementación de la interfaz del menú de un día Tabla 8 - Lista del Sprint 4
28
2
4 4 6 8 6
V.4.2 Desarrollo
V.4.2.1 Barra lateral de navegación Para navegar entre las secciones de la aplicación se decide crear una barra de navegación tal y como indican las guías de diseño de Android [14]. Consistirá en una lista con el nombre de las secciones, y permanecerá oculta en el uso normal de la aplicación, pudiendo acceder a ella deslizando el dedo desde el borde izquierdo de la pantalla hacia el centro o pulsando el icono de la aplicación situado en la barra de título. En la siguiente figura se muestra el diseño de la barra lateral de navegación:
Figura 17 - Diseño de la barra lateral de navegación de la aplicación
Tras implementar e integrar la barra de navegación lateral con el explorador de recetas se produce el siguiente error en el explorador de recetas:
Figura 18 - Error al integrar la barra lateral de navegación con el explorador de recetas
29
El error fue causado por el uso de la barra de pestañas integrada en la propia barra de título de la aplicación. Para subsanar el error se deberá reimplementar la barra de pestañas como un componente aparte a la barra de título e integrarlo en la vista del explorador de recetas. Cómo la corrección del error llevará sustancialmente más tiempo del inicialmente planificado para la revisión y corrección de errores de la barra lateral de navegación, se deberá revisar y modificar la Lista del Sprint. Se añade a la Lista del Sprint el nuevo requisito para la corrección del error producido por la barra de navegación y se decide eliminar uno de los requisitos a cumplir de la vista de menú semanal. Tras las modificaciones la Lista del Sprint queda como sigue: Requisito
Estimación Tiempo real (en horas de requerido trabajo)
Barra lateral de navegación Diseño de la barra lateral l ateral de navegación Implementación Implementación de la barra lateral de navegación Integración de la barra lateral en la aplicación Revisión y corrección de errores Explorador de recetas
2 6 4 4
Reimplementación de la barra de pestañas para su (38') Reimplementación correcta integración integración con la barra lateral de navegación
8
(35) (36) (37) (38)
(39) (40) (41)
(42)
(43)
(44)
(45) (46) (47) (48)
Ajustes Definición de los ajustes de la aplicación Implementación Implementación o adaptación de los cuadros de dialogo necesarios para los ajustes de la aplicación Implementación de la vista de ajustes y su funcionamiento Ficha de receta Corrección del problema de la interfaz que hace que en algunos casos la lista de ingredientes y pasos de la receta aparezca cortada Implementación de la función de guardado y recuperación de la puntuación del usuario de las recetas Modificación del listado de ingredientes para que muestre las cantidades para el número de personas establecido en los ajustes Vista de menú semanal Diseño de la interfaz de la vista de menú semanal Diseño de los componentes de la interfaz in terfaz Implementación de los componentes del widget con con los días de la semana Implementación del widget con con los días de la semana Tabla 9 - Lista del Sprint 4 rectificada
30
2 6 6
2
2
2
4 4 6 8
2 8 3 2
V.4.2.2 Ajustes Una vez corregido el error en el explorador de recetas se procede a crear los ajustes de la aplicación. Para ello no es necesario implementar ninguna interfaz, pues Android permite definir los ajustes de manera sencilla en un archivo XML y añadir a la aplicación un tipo de actividad especial que se encarga de transformar el archivo de preferencias en la correspondiente interfaz de usuario. Tras definir la opción de usuario que permite establecer el número de personas para las que cocinar se modifica el diseño de la ficha de receta para añadir las cantidades de ingrediente para el número de personas establecido. La sección de ingredientes de la ficha de receta quedará de la siguiente manera.
Figura 19 - Rediseño del apartado 'Ingredientes' de la ficha de receta para incluir la cantidad de ingredientes para el número de personas establecido
Se implementan los cambios en el diseño y se corrigen los errores con la visualización de ingredientes y pasos de receta detectados en el Sprint anterior. V.4.2.3 Vista de menú semanal Como se mencionó anteriormente, anteriormente, la vista de menú semanal será la vista principal de la aplicación, por lo que se dedicará especial atención a que su diseño sea limpio, intuitivo y fácil de utilizar. La vista semanal permitirá al usuario, por un lado, visualizar los menús diarios planificados tanto para la semana actual como para semanas anteriores y posteriores, y por otro lado, modificar el menú semanal ya sea manualmente o generando un nuevo menú automáticamente. automáticamente. En la siguiente figura se muestra el diseño de la interfaz de usuario de la vista de menú semanal diseñada para cumplir con la funcionalidad deseada:
31
Figura 20 - Diseño de la interfaz de usuario de la vista de menú semanal
En el anexo E puede consultarse la especificación detallada del diseño y funcionamiento de la interfaz. V.4.3 Revisión
Una vez finalizado el Sprint se revisa el trabajo realizado y se comprueba el cumplimiento de los objetivos. Como se mencionó, la implementación de la barra lateral de navegación provocó que hubiera que reimplementar la barra de pestañas del explorador de recetas, con lo que se eliminó uno de los requisitos de la Lista del Sprint para ajustar el trabajo al tiempo máximo del Sprint. En el diagrama de quemado del Sprint puede verse como el tercer día de la iteración hubo que añadir un requisito y desde entonces el desarrollo de la iteración ha llevado un retraso de una tarea sobre la planificación inicial. Sin embargo, como estaba planificado terminar la implementación implementación de la vista de menú semanal en el siguiente Sprint se espera que esto no afecte en exceso el desarrollo del siguiente Sprint.
32
15 14 13 12 11
s e10 t n 9 e i
d n e p s a e r a T
8 7 6 5 4 3 2 1 0 0
1 2 Planificación
3 4 5 Planificación rectificada
6
7 Ejecución
8
Figura 21 - Burn down chart del del Sprint 4
Tras revisar el trabajo completado se actualiza la Lista de Producto y se decide el trabajo que se realizará en el siguiente Sprint, para el cual se espera terminar la implementación de la vista de menú semanal y añadirle la funcionalidad que permita al usuario confeccionar sus menús semanales. Requisito Vista de menú semanal (Sprint 5) Confección de menús creados por el usuario Generación automática de menús equilibrados Información nutricional del menú semanal planificado Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint M 3 5 M 4 5 M
6
6
M
4
7
S W W
3 3 3
7 8 8
Tabla 10 - Lista de Producto al finalizar el Sprint 4
33
V.5 Sprint 5 El objetivo del quinto Sprint será finalizar la implementación de la vista de menú semanal diseñada en la iteración anterior y añadir funcionalidad para permitir al usuario planificar sus propios menús. V.5.1 Planificación
En la fase de planificación de la iteración se prepara la Lista del Sprint con el detalle de las tareas a realizar para cumplir con los objetivos fijados. Requisito
(49) (50) (51) (52)
(53) (54) (55)
(56) (57)
(58) (59)
(60)
(61)
Vista de menú semanal 6 Implementación Implementación de la interfaz del menú de un día Implementación del widget que que permite navegar entre 8 los menús diarios 8 Integración de los componentes de la interfaz Revisión y corrección de errores del funcionamiento de 8 la interfaz de menú semanal Confección de menús creados por el usuario Diseño de las tablas y consultas de la base de datos necesarias para almacenar y recuperar los menús diarios planificados Modificar la base de datos con el diseño realizado Implementación de los métodos de recuperación e inserción en el manejador de la base de datos para los menús diarios Listado de recetas Modificar el diseño de la iinterfaz nterfaz del listado de recetas para permitir agregar recetas a los menús Modificar la implementación del listado de recetas para que permita añadir recetas a los menús Vista de menú semanal Permitir agregar, cambiar y quitar las recetas a los menús diarios Recuperar los platos asignados al menú al cargarlo desde la interfaz de usuario
4 4 4
2 6
4 4
Modificar las vistas que muestran los platos de menú 2 para que al hacer clic se abra la ficha de la receta asignada al plato. Confección de menús creados por el usuario Revisión y corrección de errores Tabla 11 - Lista del Sprint 5
34
Estimación Tiempo real (en horas de requerido trabajo)
8
V.5.2 Desarrollo
V.5.2.1 Vista de menú semanal En el Sprint anterior se implementó la interfaz del calendario semanal y queda por implementar la interfaz que contendrá cada uno de los menús diarios. Una vez completadas las interfaces queda por implementar el funcionamiento de éstas detallado en el anexo E, para ello se usará el componente de Android ViewPager [15] [15] que permite agregar varias páginas de contenido y navegar hacia derecha e izquierda para cambiar el contenido mostrado. En este caso se usarán dos ViewPager , uno para el calendario semanal y otra para el menú diario, con tres páginas cada uno. En la página central se mostrará siempre el contenido que se está visualizando, y en las páginas de la izquierda y la derecha el contenido inmediatamente anterior e inmediatamente posterior al mostrado, de forma que se pueda navegar a izquierda o derecha indefinidamente. A partir de la definición del diseño de la interfaz se detectan dos posibles comportamientos. Por un lado, se podrá navegar hacía el día o semana inmediatamente anterior o posterior, o ir a un día en concreto. En las siguientes figuras se detalla el algoritmo que se implementará para la navegación al contenido inmediatamente anterior e inmediatamente posterior de ambos ViewPager : Paso
PÁGINA IZQUIERDA
PÁGINA CENTRAL
PÁGINA DERECHA
Inicio
Estado inicial -1
Estado inicial
Estado inicial +1
El usuario navega a la página derecha 1
Copiar el contenido de la Copiar el contenido de la página central página derecha
Estado inicial +1
Cambiar a la página central sin mostrar transición 2
Estado inicial
Estado inicial +1
Cargar “Estado inicial +2”
Fin
Estado inicial
Estado inicial +1
Estado inicial +2
Figura 22 - Algoritmo para la navegación al contenido inmediatamente posterior
Paso
PÁGINA IZQUIERDA
PÁGINA CENTRAL
PÁGINA DERECHA
Inicio
Estado inicial -1
Estado inicial
Estado inicial +1
El usuario navega a la página izquierda 1
Estado inicial -1
Copiar el contenido de la Copiar el contenido de la página izquierda página central
Cambiar a la página central sin mostrar transición 2
Estado inicial inici al -2
Estado inicial -1
Estado inicial
Fin
Estado inicial -2
Estado inicial -1
Estado inicial
Figura 23 - Algoritmo para la navegación al contenido inmediatamente anterior
35
Para los saltos a días o semanas concretas se implementará el algoritmo indicado en las siguientes figuras: Paso Inicio
PÁGINA IZQUIERDA Estado inicial -1
PÁGINA CENTRAL Estado inicial
PÁGINA DERECHA Estado inicial +1
El usuario selecciona un contenido posterior al actual 1
Copiar el contenido de la página central
Estado inicial
Estado inicial +1
Cambiar a la página izquierda sin mostrar transición 2
Estado inicial
Cargar el contenido del nuevo valor seleccionado
Cargar el contenido del nuevo valor seleccionado +1
Desplazamiento Desplazamiento con transición a la página central 3
Estado inicial
Nuevo contenido seleccionado
Nuevo contenido seleccionado seleccionado +1
Cuando termine el desplazamiento con transición 4 Fin
Cargar el contenido del nuevo valor seleccionado -1 Nuevo contenido seleccionado -1
Nuevo contenido seleccionado Nuevo contenido seleccionado
Nuevo contenido seleccionado seleccionado +1 Nuevo contenido seleccionado seleccionado +1
Figura 24 - Algoritmo para el salto a contenido posterior al mostrado
Paso
PÁGINA IZQUIERDA
PÁGINA CENTRAL
PÁGINA DERECHA
Inicio
Estado inicial -1
Estado inicial
Estado inicial +1
El usuario selecciona un contenido anterior al actual 1
Estado inicial -1
Estado inicial
Copiar el contenido de la página central
Cambiar a la página derecha sin mostrar transición 2
Cargar el contenido del nuevo valor seleccionado -1
Cargar el contenido del nuevo valor seleccionado
Estado inicial
Desplazamiento Desplazamiento con transición a la página central 3
Nuevo contenido seleccionado -1
Nuevo contenido seleccionado
Estado inicial
Cuando termine el desplazamiento con transición a la página central 4 Fin
Nuevo contenido seleccionado -1 Nuevo contenido seleccionado -1
Nuevo contenido seleccionado Nuevo contenido seleccionado
Cargar el contenido del nuevo valor seleccionado +1 Nuevo contenido seleccionado seleccionado +1
Figura 25 - Algoritmo para el salto a contenido anterior al mostrado
Los valores en negrita indican la página que se está mostrando en la interfaz de usuario en cada paso. Con la implementación de estos algoritmos se ofrecerá el funcionamiento establecido en el diseño de la vista de menú semanal. 36
V.5.2.2 Confección Confección de menús creados por el usuario Para permitir al usuario planificar sus propios menús se deberá modificar el listado de recetas de forma que permita seleccionar una receta y agregarla al menú. Cuando el usuario pulse el botón “Agregar” en platos sin receta asignada o la opción “Cambiar receta del menú” en los platos con una receta asignada se abrirá el listado
de recetas con aquellas que pertenezcan a la categoría del plato que haya seleccionado el usuario, primero, segundo o postre. Una vez seleccionada una receta se abrirá la ficha de la receta y la barra de la aplicación cambiará de aspecto y se mostrará cómo se indica en la siguiente figura:
Figura 26 - Barra de la aplicación para agregar recetas al menú
Si el usuario acepta agregar la receta se cambiará automáticamente a la vista del menú semanal con la receta seleccionada agregada al menú. Para implementar estos cambios se añadirá, además, una tabla a la base de datos de la aplicación en la que se guardará la fecha, comida, categoría de plato e identificador de las recetas agregadas a los menús. Además se crea la clase equivalente en el modelo de datos que permitirá el manejo de menús diarios. Igualmente se añaden los métodos necesarios al manejador de la base de datos para facilitar la recuperación, modificación y borrado de platos en los menús diarios. V.5.3 Revisión
Una vez finalizada la implementación del Sprint se procede a su revisión, comprobando que se hayan completado todos los objetivos establecidos al inicio de la iteración. Pese a acarrear un requisito desde el Sprint anterior, ocasionado por el error de integración de la barra lateral de navegación con el explorador de recetas, no solo se pudieron completar todos los requisitos establecidos para el Sprint, sino que el desarrollo fue por debajo de la planificación realizada durante la mayor parte de la iteración.
37
16 15 14 13 12 s 11 e t 10 n e 9 i d n 8 e p 7 s 6 a e 5 r a T 4 3 2 1 0 0
1
2
3 Planificación
4
5 Ejecución
6
7
8
Figura 27 - Burn down chart del del Sprint 5
Tras revisar el trabajo realizado en el Sprint se reevalúa la Lista de Producto para decidir el trabajo que se llevará a cabo en la siguiente iteración. Pese a que la implementación de la generación automática de menús equilibrados está estimada en seis jornadas de trabajo se considera que es un requisito muy importante para la aplicación, por tanto se decide dedicar el siguiente Sprint completo a su desarrollo y no añadir parte del trabajo de otro requisito a la iteración. Requisito Generación automática de menús equilibrados Información nutricional del menú semanal planificado Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint M
6
6
M
4
7
S C C
3 3 3
7 8 8
Tabla 12 - Lista de Producto al finalizar el Sprint 5
38
V.6 Sprint 6 El objetivo que se establece para el Sprint será el diseño e implementación del algoritmo de generación de menús equilibrados y su integración dentro de la interfaz de usuario. V.6.1 Planificación
En la planificación de la iteración se elabora la Lista del Sprint con las tareas que se realizarán para cumplir los objetivos establecidos. Se tendrá en cuenta que se dispondrá de ocho días en lugar de los seis inicialmente estimados para la generación automática de menús semanales. Requisito
(62) (63) (64) (65) (66)
(67)
(68)
(69)
(70)
Estimación (en horas de trabajo)
Tiempo real requerido
Generación automática de menús equilibrados Análisis del problema y diseño del algoritmo de 8 generación de menús equilibrados Implementación del algoritmo de generación de menús 12 equilibrados equilibrados en la aplicación Creación de datos de prueba y verificación del 6 funcionamiento del algoritmo 8 Corrección de errores Diseño del icono de la opción de generación de menús 4 equilibrados Diseño e implementación de un cuadro de dialogo que permita seleccionar seleccionar la semana para la que generar el menú semanal Vista de menú semanal
6
Integrar el icono de generación automática de menús en 4 la vista de menú semanal y mostrar el cuadro de dialogo de selección de semana al hacer clic sobre el icono Añadir la generación de menús semanales equilibrados 4 desde la vista de menú semanal Generación automática de menús equilibrados 8 Revisión y pruebas Tabla 13 - Lista del Sprint 6
V.6.2 Desarrollo
El desarrollo del Sprint se dividirá en dos fases. En primer lugar se diseñará e implementará el algoritmo de generación de menús equilibrados y se realizarán pruebas sobre él para verificar su funcionamiento, corrigiendo cualquier error que se detecte en su revisión. Finalmente se integrará el algoritmo en la aplicación para dotarla de esta funcionalidad.
39
V.6.2.1 Algoritmo de generación de menús equilibrados Para poder evaluar las recetas y poder decidir cuáles agregar al menú se utilizarán las cantidades de cada grupo nutricional que contiene cada una y que fueron calculadas en el proceso de carga de datos, de forma que el algoritmo que se seguirá para la generación de menús equilibrados será el siguiente: 1. Obtener el porcentaje a alcanzar de cada grupo nutricional. nutricional. 2. Para cada plato a agregar al menú semanal: 2.1. Obtener el porcentaje de cada grupo nutricional del menú semanal planificado hasta ahora. 2.2. Calcular la diferencia de cada grupo nutricional del menú semanal con los porcentajes objetivo. objetivo. 2.3. Para cada posible receta a agregar: 2.3.1. Calcular la puntuación de la receta como:
∑
() ()
2.3.2. Añadir a la puntuación puntuación de la receta receta otros otros parámetros. 2.4.
Agregar al menú la receta con mejor mejor puntuación. puntuación.
En el paso 2.3.2 del algoritmo se indica que se añadirán a la puntuación obtenida otros parámetros. Estos parámetros parámetros hacen referencia a las opciones de personalización del proceso de generación de menús que se indicaron en el documento de requisitos. En esta primera versión del algoritmo se incluirán dos de los parámetros enunciados en el documento de requisitos y se añadirán otros dos para intentar garantizar la variabilidad de los menús generados:
Se podrá generar el menú desde cero o utilizando las recetas ya seleccionadas. Este parámetro no se calcula en el paso 2.3.2, sino que a la hora de obtener los platos a agregar al menú semanal se elegirán todos o se usarán los ya asignados según corresponda. Se tendrá en cuenta la puntuación del usuario aplicando la siguiente fórmula:
( )
Para fomentar la variación de las recetas seleccionadas entre semanas se aplicará la siguiente fórmula:
( )
40
Finalmente, para provocar la variación de recetas seleccionadas dentro de una misma semana se dividirá entre dos las puntuaciones de aquellas recetas que ya estén presentes en el menú de la misma semana.
Una vez implementado el algoritmo se generan nuevos datos de prueba en los que se se controla las cantidades de cada grupo nutricional de cada receta y se usan para verificar el correcto funcionamiento funcionamiento del algoritmo. V.6.2.2 Integración de la generación de menús equilibrados con la interfaz de usuario Con el algoritmo de generación de menús semanales implementado y verificado queda añadir a la interfaz de usuario la opción de generar un nuevo menú e integrar el funcionamiento de la interfaz con el proceso de generación. En la siguiente figura se muestra el conjunto de iconos diseñados para añadir la opción de generar un nuevo menú a la vista de menú semanal.
Figura 28 - Iconos para la generación automática de menús semanales
Para este icono se crean dos versiones, una con el fondo claro y otra con el fondo oscuro, y seis variaciones, dependiendo del del estado del icono y de la densidad de píxeles de la pantalla. El motivo por el que se ha creado una versión con el fondo claro y otra con el fondo oscuro es porque actualmente la barra de título de la aplicación es oscura, pero se pretende cambiarla el color por uno más claro en alguno de los Sprints siguientes. Igual que con iconos anteriores, se crean diferentes variaciones según la densidad de píxeles de la pantalla, de forma que en dispositivos con pantallas grandes y de alta densidad de píxeles se mostrará la varita mágica entera; en dispositivos con pantallas grandes y medianas con una densidad de píxeles media se mostrará media varita; y finalmente en dispositivos con una pantalla pequeña o con muy baja densidad de píxeles se mostrará tan solo la punta de la varita.
41
Además, cuando el usuario esté presionando el icono las estrellas pasarán a ser completamente blancas. El cambio, aunque no demasiado sustancial, produce el efecto deseado de hacer ver al usuario que la interfaz responde a sus acciones. Por último, se implementa el siguiente menú contextual para permitir al usuario seleccionar la semana para la que desea generar el menú, y para que defina si se deben mantener las recetas ya seleccionadas. Junto a cada semana se añade el intervalo para el que se generará el menú, en el caso de la semana actual el intervalo comenzará en el día en curso, el viernes en la figura de ejemplo, y terminará en el domingo.
Figura 29 - Menú contextual para la generación de menús equilibrados
V.6.3 Revisión
Al finalizar el desarrollo de la iteración se procede a revisar el trabajo realizado, comprobando comprobando que se hayan cumplido todos los objetivos establecidos en la planificación y se actualiza la Lista del Sprint y su diagrama de quemado. Se completaron todos los requisitos fijados para el Sprint siguiendo, casi exactamente, exactamente, la planificación realizada. 10 9 8 s 7 e t n e i 6
d n e5 p s a4 e r a3 T
2 1 0 0
1
2
3 4 Planificación
5 Ejecución
Figura 30 - Burn down chart del del Sprint 6
42
6
7
8
Tras revisar el desarrollo del Sprint se actualiza la Lista de Producto y se decide el trabajo a realizar en la siguiente iteración. La idea inicial para la pantalla con la información nutricional de los menús semanales consistía en una vista sencilla en la que se mostraban los porcentajes para cada grupo nutricional y sus diferencias con respecto a los valores ideales. Sin embargo se considera que este enfoque no resultaría suficiente para cumplir con el objetivo del proyecto que establece que la información nutricional presentada al usuario debe mostrarle de forma clara y sencilla el valor nutricional del menú planificado, de forma que le resulte sencillo aprender a planificar sus propios menús de manera que sean sanos y equilibrados. Por esto se decide crear una interfaz mucho más detallada que incluya un gráfico similar a la rueda de los alimentos [12] presentada en el capítulo IV y que otorgue una información visual de mucho más valor que los datos en crudo. Así, el siguiente Sprint se dedicará en exclusiva a diseñar e implementar dicho gráfico y a incluirlo en una interfaz de usuario junto con los valores nutricionales y una pequeña descripción de los mismos. Requisito Información nutricional del menú semanal planificado Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint M
8
7
S C C
3 3 3
8 8 8
Tabla 14 - Lista de Producto al finalizar el Sprint 6
43
V.7 Sprint 7 Para el séptimo Sprint se marca como objetivo diseñar e implementar la interfaz de usuario y sus componentes que se usará para presentar la información nutricional del menú semanal planificado. V.7.1 Planificación
Se prepara la Lista del Sprint con el detalle de las tareas a realizar para alcanzar los objetivos establecidos para la iteración. Se tendrá en cuenta que se dedicará el Sprint completo a la implementación de la vista que mostrará la información nutricional del menú semanal planificado, y que se incluirá el diseño e implementación del gráfico que se usará para presentar de forma visual el valor nutricional del menú. Requisito
(71) (72) (73) (74) (75)
(76) (77) (78) (79)
Estimación (en horas de trabajo)
Tiempo real requerido
Información nutricional del menú semanal planificado Diseño de la vista de información nutricional y de sus 8 componentes 14 Implementación Implementación del gráfico de información nutricional Carga y presentación de los datos nutricionales de un 4 menú semanal en el gráfico 6 Implementación Implementación de la interfaz de información nutricional Implementación Implementación de la carga y presentación de los datos nutricionales de un menú semanal en la vista de información nutricional Diseño del widget de de resumen nutricional para la vista de menú semanal Implementación del widget de de resumen nutricional Integración del widget de de resumen nutricional en la vista de menú semanal Revisión y corrección de errores
6 4 6 6 8
Tabla 15 - Lista del Sprint 7
V.7.2 Desarrollo
V.7.2.1 Diseño e implementación del gráfico de información nutricional Para presentar el valor nutricional del menú semanal planificado se empleará un gráfico circular en el que el tamaño de cada porción será fijo, y el porcentaje real obtenido en el menú semanal se adaptará al grupo correspondiente. En la siguiente figura se muestra el diseño del gráfico de información nutricional que se implementará:
44
Figura 31 - Diseño del gráfico de información nutricional
Cada una de las seis porciones del gráfico ocupará un valor fijo establecido por los porcentajes objetivo de una dieta equilibrada, en el diseño se muestran estos porcentajes en color azul en la parte exterior del gráfico, pero en la implementación del gráfico no se incluirán estos valores ni las medidas. Sobre cada una de las porciones con el tamaño de los objetivos a alcanzar se mostrará la información nutricional del menú semanal de la siguiente manera:
Cuando el valor obtenido coincida con el valor objetivo, como en el caso de las barras verdes del ejemplo, se ocupará todo el espacio reservado para el grupo nutricional determinado. determinado. Cuando el valor obtenido exceda el valor objetivo, como sucede con la barra roja y la barra naranja del ejemplo, se ocupará todo el espacio reservado y se presentará en un color más oscuro el porcentaje que se excede del valor ideal. Finalmente, cuando el valor obtenido sea inferior al objetivo, como sucede con las barras azul y morada del ejemplo, no se ocupará todo el espacio reservado, reservado, y se mostrará la diferencia di ferencia con el objetivo en un color más claro.
Para la implementación del gráfico se utilizará el objeto Canvas [16] de Android y las funciones de pintado que ofrece. V.7.2.2 Diseño e implementación de la ficha de información nutricional Con el gráfico implementado se procede a diseñar la ficha de información nutricional, para ello se crearán dos versiones, para móviles y tablets, y dos variantes para cada versión dependiendo de la orientación de la pantalla. En móviles en posición vertical se mostrará la interfaz como se muestra en la siguiente figura: 45
Figura 32 - Diseño de la interfaz interfaz de información nutricional para móviles en posición vertical
Para ver el contenido que no cabe en pantalla el usuario podrá desplazar la información hacia arriba, de manera que se moverá todo el contenido, tanto el gráfico como la tabla con la información nutricional. nutricional. Cuando el móvil se encuentre en posición horizontal no se mostrará el gráfico y la tabla ocupará toda la pantalla. La versión para tablets en posición vertical será similar a la de móviles en la misma posición. El gráfico ocupará la mitad superior de la pantalla y la tabla la mitad inferior, pero en este caso, cuando el contenido no quepa en la pantalla se desplazará únicamente el contenido de la tabla, quedando el gráfico siempre visible. Por último, cuando la interfaz se muestre en tablets en posición horizontal la interfaz se mostrará como se indica en la siguiente figura:
46
Figura 33 - Diseño de la interfaz de información nutricional para tablets en posición horizontal
En este caso el gráfico se mostrará en la mitad izquierda de la pantalla y la tabla con la información nutricional a la derecha. Igual que antes, cuando el contenido de la tabla no quepa en la pantalla se podrá desplazar sólo éste. Quedando el gráfico siempre visible. En todos los casos se mostrará en el centro del gráfico un valor numérico y uno textual que indicará el valor nutricional del menú semanal. Éste valor se calculará a partir de las diferencias entre el porcentaje nutricional del menú semanal con el porcentaje objetivo de cada grupo, aplicando la siguiente fórmula:
En lugar de usar la diferencia media o algún otro valor para dar una valor nutricional la menú semanal, se utilizará esta fórmula con la intención de penalizar aquellos aquellos menús que la suma total de las diferencias sea grande. V.7.2.3 Diseño e implementación del widget de de resumen nutricional Con la ficha de información nutricional implementada falta por integrarla con el resto de la aplicación. Para ello se creará un widget con un pequeño resumen de la información nutricional y que al pulsarlo llevará al usuario a la ficha con la información detallada. Se diseña el siguiente icono, que presenta el mismo aspecto que el gráfico, para incluirlo en el widget de de resumen nutricional.
47
Figura 34 - Diseño del icono para la ficha de información nutricional
Para el widget resumen resumen se crearán dos versiones, una muy resumida en la que sólo só lo se mostrará el valor nutricional del menú menú semanal y otra en la que se mostrará mo strará el gráfico y el porcentaje obtenido de cada grupo nutricional, pero no su detalle. La primera versión del widget se se utilizará en la vista de menú semanal, tanto en móviles como en tablets en posición vertical, mientras mientras que la segunda versión únicamente en tablets en posición horizontal. No se modificará la vista de menú semanal en móviles en posición horizontal para no dejar la pantalla sin apenas espacio para mostrar el menú semanal. En las siguientes figuras se muestra el diseño widget con el resumen nutricional para dispositivos en posición vertical y el diseño de la vista de menú para tablets en posición horizontal:
Figura 35 - Diseño del widget con con el resumen nutricional del menú semanal
Figura 36 - Diseño del widget con con el resumen nutricional del menú semanal para tablets en posición horizontal
48
V.7.3 Revisión
Una vez completada la implementación de los requisitos de la iteración se procede a revisar el trabajo realizado, actualizando la Lista del Sprint y el diagrama de quemado. quemado. Se comprueba que se cumplieron los objetivos fijados y que se realizó todo el trabajo siguiendo casi al detalle la planificación realizada. 10 9 8 s e t n e i
d n e p s a e r a T
7 6 5 4 3 2 1 0 0
1
2
3 4 Planificación
5 Ejecución
6
7
8
Figura 37 - Burn down chart del del Sprint 7
En este punto del desarrollo del proyecto se considera que la aplicación es lo suficientemente funcional como para su puesta en producción, pero sin embargo antes habría que revisarla para detectar y corregir errores y añadir pequeñas mejoras, como revisar algunos aspectos de la interfaz y agregar información información de recetas reales. Se revisa la Lista de Producto y se añaden los requisitos que se implementarán en el siguiente Sprint antes de la puesta en producción de la aplicación. Requisito Corrección Corrección de errores antes de la puesta en producción Mejoras antes de la puesta en producción Datos de recetas reales Publicación de la aplicación aplicaci ón en Play store Lista de la compra Ficha de creación de recetas Ficha de creación de ingredientes
Valor para el Estimación Planificado producto (en jornadas para el (MoSCoW) de trabajo) Sprint M
2
8
M M M S C C
5 2 1 3 3 3
8 8 8 9 9 9
Tabla 16 - Lista de Producto al finalizar el Sprint 7
49
V.8 Sprint 8 El objetivo del Sprint será revisar la aplicación, corrigiendo los errores detectados y la implementación de algunas mejoras, como la revisión de la interfaz de usuario y la creación de datos de recetas reales para la puesta en producción de la aplicación mediante su publicación en una tienda de aplicaciones. V.8.1 Planificación
Durante la planificación se revisa la aplicación para detectar errores y se crea una lista de mejoras a añadir. Finalmente se realiza una estimación del tiempo que requerirá corregir los errores e implementar implementar las mejoras y se prepara la Lista del Sprint. Requisito
Estimación (en horas de trabajo)
Corrección de errores antes de la puesta en producción (80)
(81)
(82)
(83)
(84)
Revisión de todo el trabajo realizado y corrección de los errores que se detecten Mejoras antes de la puesta en producción Creación de un tema visual para la aplicación y modificación de las interfaces de usuario para conseguir una mayor integración con los colores y aspecto visual de toda la aplicación Diseño e implementación de una pantalla con la información sobre la aplicación y con los medios de contacto Revisión del aspecto de las interfaces en pantall as de distintos tamaños y modificación de las que sean necesarias para una correcta visualización en cualquier tamaño de pantalla Diseño de iconos para las opciones de la barra de navegación
14
8
4
4
6
(85)
Diseño e implementación del proceso de actualización de datos desde un repositorio remoto y modificación del proceso de carga y actualización de datos de la aplicación para implementar la actualización de datos remota
12
(86)
Añadir los ajustes la opción de usar siempre las recetas ya seleccionadas en la generación de menús equili brados
1
(87)
Añadir a los ajustes la opción de sólo descargar actualizaciones de datos cuando el dispositivo esté conectado a una red WiFi
1
(88)
(89)
Datos de recetas reales Añadir información de recetas e ingredientes i ngredientes para disponer de una base de datos inicial Publicación de la aplicación en Play Store Generación del instalable de la aplicación y publicación en la tienda de aplicaciones de Google
Tabla 17 - Lista del Sprint 8
50
16
2
Tiempo real requerido
V.8.2 Desarrollo
V.8.2.1 Corrección de errores A continuación se detallan los errores detectados y que fueron corregidos en el Sprint:
Al generar un menú en una semana ya empezada con la opción de generar el menú de cero se borraban los menús de los días ya pasados. Se corrige para que los menús de días anteriores al actual permanezcan guardados. Al navegar a un año anterior o posterior desde el calendario semanal se producía un error en el calendario, retrocediendo o avanzando más de una semana cada vez. Se corrige la función del calendario que producía este desfase de fechas. Al iniciar la aplicación se mostraba un instante una pantalla en blanco, se corrige eliminando la barra de título de la pantalla de inicio y cambiando el fondo al mismo color de la pantalla de carga. En dispositivos móviles con pantallas de 3.5’ o menores el calendar io de la vista de menú semanal no se mostraba entero. Se crean diferentes variaciones de la interfaz del calendario dependientes del tamaño y orientación de la pantalla para adaptar correctamente los elementos de la vista de menú semanal a todos los tamaños de pantalla.
V.8.2.2 Mejoras Se implementan las mejoras indicadas en la Lista del Sprint y que se detallan en la siguiente lista:
Se diseña y se crea un tema visual para la aplicación, para ello se sustituye la barra de título por defecto por la siguiente: si guiente:
Figura 38 - Nuevo diseño de la barra de título
Además se modifican los indicadores de las barras de pestañas para que se muestren en el color verde de la barra de título en lugar del color azul por defecto.
Se diseña e implementa una pantalla de información en la que se incluye el número de la versión y el correo electrónico de contacto. En la siguientes figura se muestra la pantalla de información:
51
Figura 39 - Pantalla de información de la aplicación
Además de añadir la información de contacto, cuando se pulsa sobre la caja con esta información se abre automáticamente la aplicación de correo electrónico y prepara un correo con la dirección de destino y el asunto del correo ya establecidos.
Se revisan todos los elementos gráficos creados en los primeros Sprint y se optimizan para pantallas con diferentes densidades. Se implementa un servicio web que devuelve las URLs a los ficheros necesarios para actualizar la base de datos cliente y se modifica el proceso de carga de la la aplicación para acceder a este servicio y comprobar si hay nuevos datos para actualizar. Además se añade a los ajustes la opción de sólo descargar actualizaciones de datos cuando el dispositivo esté conectado a una red WiFi, evitando así el consumo de datos. Se añade también a los ajustes la opción de usar por defecto las recetas ya asignadas al menú semanal. Se diseñan y añaden a la barra lateral de navegación un icono para cada una de las opciones. -
Para la opción “Menú Semanal” el icono tiene el aspecto de una hoja del
calendario, se crea un icono para cada día del mes y se muestra la que corresponda al día del mes actual.
52
Ilustración 6 - Icono para la opción 'Menú semanal' de la barra de navegación
-
Para el explorador de recetas el icono consiste en un tenedor y una lupa. Como en otros iconos se crea un icono con menor nivel de detalle para pantallas con densidad de píxeles media y baja.
Ilustración 7 - Iconos para la opción ‘Recetas’ de la barra de navegación
-
Para la opción “Ajustes” se crea un icono con la apariencia de una
báscula de cocina.
Ilustración 8 - Icono para la opción 'Ajustes' de la barra de navegación
-
Se añade la opción “Información” a la barra lateral de navegación y se diseñan tres versiones del icono para adaptarlo correctamente a todo tipo de pantallas.
Ilustración 9 - Iconos para la opción ‘Información’ de la barra de navegación
53
V.8.2.3 Publicación Publicación en Play Store Finalmente se genera un archivo de instalación firmado y se publica en la tienda de aplicaciones Play Store.
Figura 40 - Página de la aplicación una vez publicada en Play Store
V.8.3 Revisión
Tras finalizar el Sprint se revisa el trabajo realizado y se comprueba el cumplimiento de todos los requisitos que fueron asignados a la iteración, actualizando la Lista del Sprint y obteniendo su gráfico de quemado correspondiente. El desarrollo del Sprint se mantuvo siempre dentro de la estimación realizada y fue por delante de la planificación en dos ocasiones. 11 10 9 s e8 t n 7 e i
d n6 e p5 s a4 e r a3 T
2 1 0 0
1
2
3 4 Planificación
5 6 Ejecución
Figura 41 - Burn down chart del del Sprint 8
54
7
8
Una vez completado el desarrollo del ámbito del trabajo fin de grado, se pone en contexto el avance realizado en todos los Sprints implementados en un único gráfico de quemado. 70 65 60 55 s e t n e i
d n e p s a e r a T
50 45 40 35 30 25 20 15 10 5 0 0
4
8
12
16
20
24
28
Planificación
32
36
40
44
48
52
56
60
64
Ejecución
Figura 42 - Burn down chart del del proyecto
El número de tareas pendientes ha seguido una tendencia descendente excepto en las tres situaciones en que se añadieron nuevos requisitos a la Lista de Producto, y que pueden verse en la gráfica en los picos que presenta. El primero corresponde con el inicio del tercer Sprint, en el que se añadió la implementación del explorador de recetas. El segundo fue causado por la adición de la barra lateral de navegación a los requisitos. Y el tercero y último corresponde al octavo Sprint al completo, en el que se implementaron únicamente nuevos requisitos, por lo que el número de tareas pendientes entre el final del séptimo y octavo Sprint es el mismo. Finalmente, el error que se produjo en el explorador de recetas al integrarlo con la barra de navegación incrementó el día 27 una tarea a la Lista del cuarto Sprint. En el gráfico puede apreciarse un pequeño incremento en ese día, aunque debido a que abarca una cantidad muy grande de tiempo pasa casi desapercibo, lo que significa que aunque hubo que modificar la Lista del Sprint y se propagó una tarea a la siguiente iteración el error no causó apenas impacto sobre el desarrollo global del proyecto.
55
Capítulo VI
Conclusiones El desarrollo de este trabajo fin de grado me ha permitido poder aplicar muchos de los conocimientos y capacidades adquiridas en el resto de asignaturas de la titulación, y además aprender y poner en práctica nuevos conocimientos. conocimientos. Si bien durante las asignaturas de ingeniería del software se ha estudiado la gestión de proyectos desde un punto de vista clásico, en este trabajo hemos empleado la metodología ágil Scrum. Pese a que dicha metodología no forma parte del programa formativo de la titulación, fue elegida para el desarrollo del proyecto porque está pensada para adaptarse con facilidad a cambios de requisitos y en concreto para proyectos que evolucionan con el tiempo. Por otro lado, aunque el desarrollo de aplicaciones Android utiliza Java como lenguaje de programación, lenguaje que sí ha sido parte de mi itinerario formativo, emplea el patrón de arquitectura software Modelo-Vista-Controlador (MVC). Dicho modelo separa por completo los datos, la lógica del programa y la interfaz de usuario y, al no formar parte del programa de la titulación, he tenido que aprenderlo para poder completar este trabajo. Finalmente, utilicé un sistema de gestión de versiones que me resultó muy útil para manejar los cambios y la evolución del código fuente de la aplicación. Con todo ello, considero que he desempeñado un trabajo similar al que deberé ejercer en mi vida laboral como graduado en ingeniería informática. Los conocimientos y habilidades que he adquirido con el desarrollo del proyecto me han permitido crecer personal, académica y profesionalmente, y creo que el trabajo realizado me permitirá acceder con más facilidad al mercado laboral ya que me permite demostrar mis conocimientos en ingeniería informática y en la gestión y desarrollo de aplicaciones informáticas.
VI.1 Consecución de los objetivos El principal objetivo que se fijó fue desarrollar una aplicación para dispositivos Android que permitiera planificar y generar automáticamente menús semanales que se adapten a una dieta sana y equilibrada. La aplicación desarrollada cumple plenamente con los objetivos establecidos. Además, en el análisis y diseño de la aplicación se tuvo en cuenta una idea de producto global, no sólo los requisitos que se implementarían, lo que permitirá implementar nuevas funcionalidades funcionalidades sin tener que modificar el trabajo ya terminado. Igualmente, Igualmente, se marcó como objetivo realizar una interfaz de d e usuario clara, limpia e intuitiva. En el desarrollo del proyecto se puso especial cuidado en este aspecto, con lo que se ha obtenido una interfaz de usuario que sigue las indicaciones de diseño de Android [14] y que resulta plenamente funcional y fácil de utilizar.
57
VI.2 Trabajos futuros En la elicitación de requisitos ya se indicaron algunos de los trabajos futuros con los que se podrá mejorar m ejorar la aplicación desarrollada. Desde la perspectiva del usuario, la lista de la compra sería el que más valor añadiría a la aplicación, seguido de una mayor personalización en las opciones para generar menús equilibrados. Por otro lado, desde la óptica del producto, el de mayor valor sería la posibilidad de que los usuarios creen y compartan nuevas recetas, pues permitirá obtener una base de datos de recetas mucho mayor de la actual, y lo que es más importante, con recetas que los usuarios finales de la aplicación consideran de valor. Además de las funcionalidades que se detectaron en el análisis inicial de la aplicación, se han ido detectando otras posibles mejoras, algunas, incluso, propuestas por los primeros usuarios de la aplicación:
Posibilidad de imprimir las recetas y los menús planificados. Añadir información estacional a los ingredientes y a las recetas para variar los menús según la época del año. Añadir recetas pensadas para comer en el trabajo. Sección de favoritos y recetas destacadas en el explorador de recetas. Permitir definir cuántos de los miembros de la familia son niños para calcular mejor las cantidades de ingredientes en las recetas. Añadir imágenes a las recetas. Permitir vincular y reproducir vídeos explicativos sobre la elaboración de las recetas.
Finalmente, se plantean las siguientes mejoras que podrían ayudar a financiar el futuro desarrollo desarrollo y evolución de la aplicación:
58
Adaptar las características de la aplicación para su uso en colegios, universidades, comedores en centros de trabajo, etc. Permitiendo a los usuarios acceder a dichos menús para que puedan planificar el resto de comidas de la semana en base a éstos. Añadir recetas patrocinadas con productos de marcas. Permitir hacer la compra por internet desde la lista de la compra.
Bibliografía [1] Aplicación Calorías [acceso 11 de mayo de 2013]. Disponible en: https://play.google https://play.google.com/store/apps/deta .com/store/apps/details?id=co ils?id=com.cafeta m.cafetaso.foodinfo so.foodinfo [2] Aplicación MyFitnessPal [acceso 11 de mayo de 2013]. Disponible en: https://play.google https://play.google.com/store/apps/deta .com/store/apps/details?id=co ils?id=com.myfitnesspal m.myfitnesspal.android .android [3] Aplicación MiMenuSaludable [acceso 11 de mayo de 2013]. Disponible en: https://play.google https://play.google.com/store/apps/deta .com/store/apps/details?id=co ils?id=com.mmb.mimenu m.mmb.mimenu [4] Apple Developer Program Enrollment [web]. Apple [acceso 12 de mayo de 2014]. Disponible en: https://developer.appl https://developer.apple.com/progra e.com/programs/start/ios/ ms/start/ios/ [5] Play Store [web]. Google [acceso 12 de mayo de 2014]. Disponible en: https://play.google https://play.google.com/apps/publish/sig .com/apps/publish/signup/ nup/ [6] DreamSpark [web]. Microsoft [acceso 12 de mayo de 2014]. Disponible en: https://www.dreamspark.com [7] Windows Phone Dev Center [web]. Microsoft [acceso 12 de mayo de 2014]. Disponible en: https://dev.windowspho https://dev.windowsphone.com ne.com [8] NetMarketShare NetMarketShare [base de datos e internet]. Mobile/Tablet Mobile/Tablet Operating System Market Share [acceso 12 de mayo de 2014]. Disponible en: http://www.netmarketsha http://www.netmarketshare.com/ re.com/ [9] Datos obtenidos por Gartner.com y publicados en Wikipedia [web] [acceso 12 de mayo de 2014]. Disponible en: http://en.wikipedia.org/wiki/Mobil http://en.wikipedia.org/wiki/Mobile_operating_sy e_operating_system#Mar stem#Market_share ket_share [10] Scrum.org [web] [acceso 12 de mayo de 2014]. Disponible en: https://www.scrum.org/ [11] Schwaber K, Sutherland J. La guía de Scrum. Julio 2013 [acceso 12 de mayo de 2014]. Disponible en: https://www.scrum.org/scrum-g https://www.scrum.org/scrum-guide uide [12] Sociedad Española de Dietética y Ciencias de la Alimentación [sede web]. SEDCA [acceso 12 de mayo de 2014]. Disponible en: http://nutricion.org/ [13] International Institute of Business Analysis. A Guide to Business Analysis Body of Knowledge. 2ª Edición. 2009 [14] Guía de diseño de Android [web]. Android [acceso 14 de mayo de 2014]. Disponible en: https://developer.andro https://developer.android.com/design/index id.com/design/index.html .html [15] Using ViewPager for Screen Slides [web]. Android [acceso 15 de mayo de 2014]. Disponible en: http://developer.a http://developer.android.com/training/an ndroid.com/training/animation/scree imation/screen-slide.html n-slide.html [16] Draw with canvas [web]. Android [acceso 15 de mayo de 2014]. Disponible en: http://developer.a http://developer.android.com/guide/to ndroid.com/guide/topics/graphi pics/graphics/2d-graphics.html cs/2d-graphics.html#draw-with#draw-withcanvas 59
Glosario Scrum: marco de trabajo para el desarrollo ágil de proyectos
software. No se trata de una
metodología en sí, sino que se basa en el ciclo de vida iterativo e incremental y propone una serie de principios o recomendaciones recomendaciones a seguir.
Sprint : cada una de la iteraciones de un proyecto Scrum, con una duración máxima recomendable recomendable de un mes. Trigger (base de datos): procedimiento procedimiento que se ejecuta cuando se cumple cumple una condición
establecida. Generalmente los triggers suelen estar asociados a operaciones de inserción, modificación y borrado de datos. XML: siglas en inglés de eXtensible Markup Language. Es un lenguaje de marcas diseñado
para el almacenamiento de datos en forma legible, permitiendo definir gramáticas específicas para estructurar documentos de gran tamaño. Widget : Componente reutilizable de la interfaz gráfica de usuario que ofrece una
funcionalidad clara y concisa. Puede combinarse con otros widgets para diseñar interfaces de usuario complejas.
61
Anexo A
Tablas de datos Tabla de cuota de mercado a nivel internacional de móviles y tablets para iOS, Android y Windows Phone para el periodo de enero de 2011 a diciembre de 2013 [8]. Año 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013
Mes Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre
iOS 54.07% 46.57% 47.85% 50.57% 49.83% 52.41% 54.57% 53.04% 54.65% 61.50% 54.04% 52.10% 53.65% 60.59% 59.87% 63.19% 62.65% 65.27% 65.74% 65.94% 63.48% 59.87% 61.10% 60.13% 60.56% 54.91% 61.41% 59.04% 59.49% 57.56% 58.26% 54.91% 53.63% 55.39% 55.17% 54.27%
Android 12.75% 13.44% 14.17% 14.82% 15.86% 14.31% 14.56% 15.98% 16.26% 18.86% 16.70% 16.17% 18.12% 19.02% 18.66% 19.27% 19.69% 19.73% 20.16% 20.93% 22.10% 27.35% 28.08% 24.60% 24.51% 25.65% 24.85% 26.02% 24.40% 24.66% 25.28% 28.12% 29.42% 30.58% 33.89% 35.41%
Windows Wind ows Phone 0.11% 0.14% 0.17% 0.20% 0.20% 0.21% 0.23% 0.22% 0.25% 0.23% 0.29% 0.27% 0.29% 0.41% 0.42% 0.49% 0.66% 0.61% 0.77% 0.62% 0.70% 0.81% 0.90% 1.05% 1.15% 1.24% 1.50% 1.14% 1.12% 1.33% 1.15% 0.97% 0.92% 0.50% 0.67% 0.55%
Tabla 18 - Datos de la cuota de marcado agregada de móviles y tablets
63
Tabla de millones de dispositivos vendidos trimestralmente con el sistema operativo iOS, Android y Windows Phone a nivel internacional para el periodo de enero de 2011 a diciembre de 2013 [9]. Año 2011 2011 2011 2011 2012 2012 2012 2012 2013 2013 2013 2013
Trimestre Primero Segundo Tercero Cuarto Primero Segundo Tercero Cuarto Primero Segundo Tercero Cuarto
iOS 16.88 19.63 17.30 35.46 33.12 28.94 23.55 43.46 38.33 31.90 30.33 50.22
Android 36.35 46.78 60.49 75.91 81.07 98.53 122.48 144.72 156.19 177.90 205.02 219.61
Windows Phone
Tabla 19 - Datos de ventas, en millones de unidades, a nivel internacional
64
1.60 1.72 1.70 2.76 2.71 4.09 4.06 6.19 5.99 7.41 8.91 8.53
Anexo B
Scrum Scrum es un marco de trabajo por el cual las personas pueden acometer problemas complejos adaptativos, a la vez que entregar productos del máximo valor posible productiva y creativamente. Para optimizar la predictibilidad y minimizar los riesgos emplea un enfoque iterativo e incremental para la gestión de proyectos. Las entregas incrementales aseguran que siempre estará disponible una versión funcional y potencialmente útil del producto. A continuación se detalla de forma resumida las principales características y particularidades particularidades de Scrum.
B.1 Teoría de Scrum Scrum se basa en la teoría de control de procesos empírica, y dispone de tres pilares fundamentales para soportar la implementación de dicho control de procesos. Estos pilares son: transparencia, inspección y adaptación. En primer lugar, transparencia hace referencia a que todos los aspectos significativos del proceso de desarrollo deben ser visibles y comprensibles por todos aquellos que son responsables de la consecución del objetivo final. Por tanto, cualquier persona implicada en el desarrollo de un proyecto Scrum, desde el cliente hasta cada uno de los miembros del equipo de desarrollo deben poder conocer en todo momento la situación actual del proyecto, así como su evolución hasta el estado actual y las planificaciones de trabajo futuro. De esta manera todos los implicados podrán tener un entendimiento común de lo que se está viendo. En segundo lugar, la inspección consiste en que todos los implicados en el proceso inspeccionen regularmente, regularmente, pero sin que llegue a interferir en el desarrollo, los artefactos de Scrum y el progreso hacia el objetivo. Finalmente, la adaptación se refiere a ajustar el proceso o el material que está siendo procesado cuando al realizar una inspección se detecte que éste se desvía de los límites aceptables y que como consecuencia podría afectar negativamente en el producto resultante. Este ajuste debe realizarse tan pronto como se detecte la desviación con el fin de minimizar desviaciones desviaciones mayores. Para la realización de las pertinentes inspecciones, y adaptaciones en los casos en los que sea necesario, Scrum establece formalmente cuatro eventos que tienen lugar en diferentes momentos de cada Sprint o iteración:
Reunión de planificación del Sprint. Scrum diario. Revisión del Sprint. Retrospectiva del Sprint.
En el apartado 3 del presente anexo se detallan cada uno de estos eventos. 65
B.2 Roles del equipo Scrum El equipo Scrum, o actores que forman parte del proceso, está compuesto por el dueño de producto (denominado más comúnmente por su término en inglés Product Owner ), ), el equipo de desarrollo y un Scrum Master. La principal particularidad de los equipos de desarrollo en Scrum es que éstos son auto-organizados auto-organizados y multifuncionales. Al tratarse de grupos auto-organizados éstos no son dirigidos por personas ajenas al equipo, lo que convierte la comunicación interna en un aspecto fundamental. Además, al tratarse de equipos multifuncionales no necesitan depender de otras personas externas al equipo, pues éstos deben tener todas las competencias que sean necesarias necesarias para llevar a cabo todo el trabajo. B.2.1 Dueño de producto o Product Owner
Representa los intereses del cliente, y es por tanto el responsable de maximizar el valor del producto y del trabajo del equipo de desarrollo. Es el único responsable de gestionar la Lista del Producto (explicada en el apartado 4 del presente anexo) y por tanto deberá:
Expresar claramente claramente los elementos de la Lista del Producto. Ordenar los elementos de la Lista del Producto en función del valor que ofrece cada uno de ellos al producto. Optimizar el valor del trabajo desempeñado por el equipo e quipo de desarrollo. Asegurar que la Lista del Producto sea visible, transparente y comprensible para todos. Asegurar que el equipo de desarrollo entiende los los elementos de la Lista de dell Producto al nivel necesario.
El dueño del producto debe ser una única persona, aunque podría representar los intereses y deseos de un comité a la hora de cambiar la prioridad de los elementos de la Lista del Producto, pero en ningún caso una persona distinta dist inta al dueño del producto podría cambiar la lista. Para que la aplicación de Scrum sea correcta y eficiente toda la organización debe respetar las decisiones del dueño de producto. Además, no está permitido que nadie pida al equipo de desarrollo que trabaje en base de un conjunto distinto de requisitos, y el equipo de desarrollo no deberá actuar en base a las opiniones o indicaciones de cualquier cualquier otra persona distinta al dueño de producto. B.2.2 Equipo de desarrollo
Formado por los profesionales que desempeñan el trabajo de entregar un incremento de producto que potencialmente se pueda poner en producción al final de cada Sprint. Únicamente los miembros del equipo de desarrollo participan en la creación del incremento. El equipo tendrá la potestad de organizarse y gestionar su propio trabajo con el fin de optimizar la eficiencia, efectividad y compenetración compenetración de todo el equipo. 66
Un equipo de desarrollo Scrum tiene las siguientes características: características:
Es auto-organizado. Nadie puede indicar al equipo como convertir los elementos de la Lista del Producto en incrementos funcionales potencialmente potencialmente desplegables. desplegables. Es multifuncional. Deben contar con todas las habilidades necesarias para crear un incremento del producto. No se reconocen títulos para los miembros del equipo, todos son desarrolladores, desarrolladores, independientemente del trabajo que realice cada persona. No se admiten excepciones a esta regla. No podrán existir sub-equipos dentro de un equipo de desarrollo. desarrollo. Los miembros del equipo de desarrollo pueden tener diferentes habilidades y estar especializados en distintas áreas, pero la responsabilidad recae en el equipo de desarrollo como un todo.
El tamaño de un equipo de desarrollo debe ser lo suficientemente grande como para completar una cantidad de trabajo significativa, y lo suficientemente pequeño como para permanecer ágil. Por regla general, tener menos de tres miembros reduce la interacción interna y la productividad, y tener más de nueve miembros podría requerir demasiada coordinación como para ser auto-organizados, por lo que el tamaño de un equipo de desarrollo óptimo estaría entre estos límites. B.2.3 Scrum Master
Es el responsable de asegurar que Scrum sea entendido y aplicado. Para ello debe asegurarse de que el equipo Scrum al completo trabaja ajustándose a la teoría, prácticas y reglas de Scrum. El Scrum Master es un líder que está al servicio del equipo Scrum, así, entre los servicios que ofrecerá al dueño de producto podemos destacar:
Encontrar técnicas para gestionar la Lista de Producto Producto de manera eficiente. Ayudar a entender la necesidad de que los elementos de la Lista de Producto sean claros y concisos. Asegurar que el dueño de produzco sepa como ordenar la Lista de Producto para maximizar su valor.
Los principales servicios que el Scrum Master proporcionará al equipo de desarrollo desarrollo son:
Ayudar al equipo de desarrollo a ser auto-organizado a uto-organizado y multifuncional. multifuncional. Guiar al equipo de desarrollo hacia la creación de productos de alto valor. Eliminar los impedimentos que puedan surgir para el progreso del desarrollo.
Finalmente, las principales aportaciones del Scrum Master a la organización serán:
Liderar y guiar a la organización en la adopción de Scrum. Planificar la implementación de Scrum en la organización. Ayudar a los empleados a entender y llevar a cabo Scrum. 67
Motivar cambios que incrementen la productividad.
Además, el Scrum Master deberá facilitar los eventos de Scrum (explicados en el apartado 3 de este anexo) según se requiera o necesite, y guiar a los empleados cuando Scrum no haya sido adoptado y entendido por completo.
B.3 Eventos de Scrum Con el fin de crear regularidad regularidad y minimizar la necesidad de reuniones no definidas, Scrum define una serie de eventos con una duración máxima predefinida. El único evento de Scrum con una duración máxima y mínima fija es el Sprint, el resto de eventos pueden terminar siempre que se haya alcanzado el objetivo del evento, asegurando así que se emplee una cantidad adecuada de tiempo sin permitir desperdicio en el proceso. Además de tener un tiempo fijo establecido, el Sprint es contenedor del resto de eventos. Como se mencionó en el apartado 1 del anexo, cada uno de los eventos de Scrum constituye una oportunidad formal para la inspección y adaptación de los aspectos del proceso. Estos eventos están diseñados específicamente para facilitar la transparencia y la inspección, por lo que la falta de alguno de estos eventos da como resultado una considerable reducción de transparencia, lo que puede ocasionar un deterioro en la inspección y por tanto en la capacidad de adaptación. B.3.1 Sprint
Constituye el núcleo de Scrum. Se trata de un bloque de tiempo, preferiblemente de un mes como máximo, durante el cual se crea un incremento del producto, que sea funcional y potencialmente desplegable. Es recomendable que la duración de los Sprints sea consistente a lo largo de todo el proceso de desarrollo. Durante el Sprint:
No se podrán realizar cambios que afecten al objetivo del Sprint. Los objetivos de calidad nunca podrán disminuir. El alcance puede ser clarificado y renegociado entre el dueño del producto y el equipo de desarrollo. desarrollo.
Los Sprints no deben abarcar más de un mes para evitar que la complejidad, y por tanto el riesgo, aumente. De esta manera se puede aumentar la predictibilidad al asegurar la inspección y adaptación del progreso al menos una vez al mes. Un Sprint puede ser cancelado antes de que el bloque de tiempo llegue a su fin. Únicamente el dueño de producto puede cancelar un Sprint, y por regla general no se debe cancelar un Sprint a menos que los objetivos de la organización cambien y no tenga ningún sentido proseguir con el Sprint, por lo que son muy poco comunes.
68
Cada nuevo Sprint comienza inmediatamente después dela finalización del Sprint anterior. B.3.2 Reunión de planificación del Sprint
En la reunión de planificación de Sprint se determina el trabajo a realizar durante el Sprint, y en ella participan todos los miembros del equipo Scrum. La reunión de planificación del Sprint tiene una duración máxima de ocho horas para Sprints de un mes, y para Sprints más cortos el evento se podría definir de menor duración. Durante la reunión se deben concretar las respuestas a las dos siguientes preguntas:
¿Qué puede entregarse en el incremento resultante de Sprint? ¿Cómo se conseguirá hacer el trabajo necesario para entregar el incremento?
Para la primera cuestión, el dueño del producto presentará el objetivo que se debería alcanzar en el Sprint y los elementos de la Lista de Producto que deben completarse para alcanzar el objetivo del Sprint. El equipo de Scrum al completo colabora para llegar a un acuerdo entre los requerimientos del dueño de producto y el trabajo que el equipo de desarrollo cree que puede ser realizado en el Sprint. Para ello se tendrá en cuenta la Lista de Producto, el último incremento obtenido, la capacidad proyectada del equipo de desarrollo y el rendimiento de Sprints anteriores. Una vez que se ha establecido el objetivo del Sprint y se han seleccionado los elementos de la Lista de Producto que se llevarán a cabo en el Sprint, el equipo de desarrollo desarrollo discute y decide cómo se construirán los elementos seleccionados seleccionados para obtener un incremento de producto entregable. entregable. Para ello se define la Lista del Sprint (también denominada Sprint Backlog por su término en inglés, y explicada en más detalle en el apartado 4 de este anexo) a partir de los elementos seleccionados seleccionados de la Lista de Producto para el Sprint y el plan para terminarlos. El trabajo planificado por el equipo de desarrollo es descompuesto en unidades lo más pequeñas posibles, recomendablemente de un día o menos, y el equipo de desarrollo se auto-organiza para asumir el trabajo de la Lista del Sprint, si bien no para todo el Sprint, al menos para los primeros días del mismo. Al final de la reunión de planificación del Sprint, el equipo de desarrollo debería ser capaz de explicar tanto al dueño de producto como al Scrum Master como pretende trabajar como un equipo auto-organizado para lograr el objetivo establecido y por tanto crear el incremento esperado. B.3.3 Scrum diario
También denominado Daily Scrum, es una reunión diaria con un bloque de tiempo de quince minutos para que el equipo de desarrollo sincronice sus actividades y cree un plan para la siguiente jornada de trabajo. 69
El Scrum diario debe realizarse cada día en el mismo lugar y a la misma hora para evitar aumentar la complejidad, y en él cada miembro del equipo de trabajo deberá explicar:
Qué hizo el día anterior para ayudar al equipo de desarrollo a alcanzar el objetivo del Sprint. Qué hará hoy para ayudar al equipo de desarrollo a alcanzar el objetivo del Sprint. Que impedimentos prevé que pueden aparecer que impidan al equipo de desarrollo lograr el objetivo del Sprint.
El Scrum diario proporciona al equipo de desarrollo la oportunidad de evaluar el progreso hacia la finalización del trabajo contenido en la Lista del Sprint, y la tendencia del dicho progreso, de manera que optimiza las posibilidades de que el equipo de desarrollo cumpla el objetivo establecido. Esta reunión ayuda a los miembros del equipo a entender cómo trabaja el resto de compañeros y aumenta la interacción, lo que facilita el trabajo en equipo y la compenetración. compenetración. El Scrum diario constituye por tanto una reunión clave para la inspección y la adaptación. El Scrum Master debe asegurarse de que se realice la reunión, que ésta tenga una duración máxima de quince minutos y de que se cumpla la regla de que únicamente participen los miembros del equipo de desarrollo. de sarrollo. C.3.4 Revisión del Sprint
Se lleva a cabo al final de cada Sprint con el fin de inspeccionar el incremento y adaptar la Lista de Producto si fuese necesario. Durante la revisión se presenta el trabajo realizado en el Sprint y basándose en el esto y en cualquier cambio de la Lista de Producto, Producto, los asistentes colaboran para determinar las siguientes tareas que podrían llevarse llevarse a cabo c abo para optimizar el valor. Se trata de una reunión informal, no una reunión de seguimiento, y tiene como objetivo facilitar la retroalimentación de información y fomentar la colaboración. El bloque de tiempo asignado para la revisión del Sprint tiene un tiempo máximo de cuatro horas para Sprints de un mes, siendo algo más corta en Sprints de menos duración. En la reunión se realizarán al menos las siguientes tareas:
70
El dueño de producto explicará qué elementos de la Lista de Producto se han terminado y cuáles no. El equipo de desarrollo presenta los problemas que hayan surgido durante el Sprint y cómo fueron fueron resueltos. El equipo de desarrollo presenta el trabajo realizado y responde a las preguntas que se realicen sobe el incremento.
El dueño de producto valora el estado actual de la Lista de Producto y proyecta estimaciones sobre la fecha de finalización basándose en el progreso obtenido hasta la fecha. El equipo al completo debate sobre el trabajo a realizar a continuación, de modo que la revisión del Sprint proporcione información valiosa de entrada para reuniones de planificación de Sprints posteriores. Revisión de cómo los cambios en el mercado o en el uso potencial del producto podría haber cambiado el valor de los elementos de la Lista de Producto.
Como resultado de la revisión del Sprint se obtiene una Lista de Producto revisada, que define los posibles elementos de la lista de Producto para el siguiente Sprint. Además podría suceder que la Lista de Producto sea ajustada para enfocarse en nuevas oportunidades. C.3.5 Retrospectiva del Sprint
La retrospectiva del Sprint ofrece al equipo Scrum la oportunidad de inspeccionarse a sí mismo y crear un plan de mejoras a abordar durante el siguiente Sprint. Tiene lugar después de la revisión del Sprint y tiene una duración máxima de tres horas para Sprints de un mes. Los propósitos de la retrospectiva son:
Inspeccionar cómo fue el último Sprint en todos sus aspectos: personas, relaciones, relaciones, procesos y herramientas. Identificar y ordenar los elementos más importantes que tuvieron éxito y las posibles mejoras. Crear un plan para implementar dichas mejoras.
B.4 Artefactos de Scrum Los artefactos de Scrum representan valor al proceso en la forma en que son útiles para proporcionar transparencia y oportunidad para la inspección y adaptación. Están diseñados precisamente para maximizar la transparencia de la información clave necesaria para que todos los interesados tengan el mismo entendimiento del artefacto en sí y del estado del proyecto. B.4.1 Lista de Producto
La Lista de Producto es una lista ordenada de todo lo que podría ser necesario en el producto final, y es la única fuente de requisitos para cualquier cambio a realizarse en el producto. El responsable de la lista es el dueño de producto, incluyendo su contenido, disponibilidad y ordenación. Una Lista de Producto no se puede considerar nunca que esté completa, sino que en cada momento refleja los requisitos conocidos hasta el momento. Así, la Lista de Producto inicialmente es una lista de los requisitos detectados y mejor entendidos al iniciar el proyecto, y según avance el proyecto la lista cambiará cada vez que se detecte 71
una necesidad del producto. Al ser dinámica facilita que el producto final sea adecuado, competitivo y útil. La Lista de Producto enumera todas las características, funcionalidades, requisitos, mejoras y correcciones que constituyen cambios a ser hechos sobre el producto para futuras entregas. Cada uno de estos elementos tienen como atributos la descripción, ordenación estimación y valor para el producto. B.4.2 Lista del Sprint
La Lista del Sprint es el conjunto de elementos de la Lista de Producto seleccionados para ser implementados en el Sprint actual más un plan para entregar el incremento y por tanto conseguir alcanzar el objetivo del Sprint. Es por tanto una predicción hecha por el equipo de desarrollo acerca de las funcionalidades que formarán parte del próximo incremento y del trabajo necesario para entregar dicha funcionalidad funcionalidad en un incremento terminado. La Lista del Sprint hace visible todo el trabajo que el equipo de desarrollo identifica como necesario para alcanzar el objetivo del Sprint. Debe tener el nivel de detalle suficiente como para que los cambios en el progreso se puedan entender en el Scrum diario, de forma que el equipo de desarrollo se encarga de modificar la Lista de Sprint según se van implementando cada uno de los detalles que incluye, o se añaden nuevos elementos a la lista cuando se detecte que se requiere r equiere más trabajo. De esta manera, la l a Lista del Sprint resulta una imagen visible en tiempo real del trabajo que el equipo de desarrollo ya ha llevado a cabo y del que planea realizar dentro del Sprint. Es responsabilidad del equipo de desarrollo, y únicamente el equipo de desarrollo puede cambiar la Lista de Sprint durante un Sprint. B.4.3 Diagrama de quemado
Aunque el diagrama de quemado, denominado más comúnmente por el término en inglés Burn down chart , no se encuentra definido en La guía de Scrum [11] como un artefacto más de Scrum, resulta una herramienta visual de gran utilidad para conocer de un vistazo el progreso del Sprint actual y de todo el proyecto en conjunto. Consiste en un gráfico en el que se representan en el eje de ordenadas el número total de requisitos o tareas pendientes y en el eje de abscisas el tiempo, generalmente en días, de forma que permite mostrar una serie de datos con la planificación realizada y otra serie con el progreso del proyecto, resultando sencillo evaluar el estado actual del proyecto y el cumplimiento de las estimaciones realizadas. Por lo general ambas series de datos consistirán en una línea más o menos recta, con pendiente descendente, tornándose ésta en una pendiente ascendente cuando se añadan nuevos requisitos a la Lista List a de Producto.
B.5 Otras metodologías complementarias aplicadas A continuación se explican otras metodologías que se han utilizado para complementar complementar Scrum. 72
B.5.1 Método MoSCoW
Es una técnica que permite asignar valor o importancia a cada uno de un conjunto de requisitos. También se conoce como priorización MoSCoW o análisis MoSCoW [13]. Consiste en catalogar cada uno de los requisitos dentro de una de las siguientes categorías:
M (Must ), ), define que un requisito debe ser implementado en el producto final para que éste sea considerado un éxito. S (Should ), ), determina que un requisito es de alta prioridad y que debe ser implementado siempre que sea posible. C (Could ), ), describe un requisito que sería deseable cumplir pero que no resulta necesario. W (Would), representa aquellos requisitos que se sabe que no van a ser implementados pero que se desea que vuelvan a ser considerados en el futuro.
Al aplicar este método conjuntamente con Scrum, las categorías asignadas a cada requisito son reevaluadas, y actualizadas si fuera necesario, en la reunión de revisión de cada Sprint.
73
Anexo C
Diagramas de apoyo al diseño C.1 Diagrama Entidad-Relación de la base de datos servidor
Figura 43 - Diagrama Entidad-Relación de la base de datos servidor
75
C.2 Diagrama Entidad-Relación de la base de datos cliente
Figura 44 - Diagrama Entidad-Relación de la base de datos cliente
76
C.3 Diagramas de clases para el modelo de datos
Figura 45 - Diagrama de clases del modelo de datos de la aplicación
77
CategoriaPlato -idCategoriaPlato -idCategoriaPlato : int -nombre : String +static retrieveCategoriaPlato retrieveCategoriaPlato (int) : CategoriaPlato CategoriaPlato #static retrieveCategoriaPlato retrieveCategoriaPlato (Cursor) : CategoriaP Cate goriaPlato lato Figura 46 - Especificación de la clase CategoriaPlato del modelo de datos
TipoPlato -idTipoPlato : int -nombre : String +static retrieveTipoPlato (int) : TipoPlato #static retrieveTipoPlato (Cursor) : TipoPlato Figura 47 - Especificación Especificación de la clase TipoPlato del modelo de datos
GrupoNutricional -idGrupoNutricional : int -nombre -nombre : String -detalle : String -porcentajeRecomendado : Double +static retrieveGru retrie veGrupoNutricional poNutricional (int) : GrupoNutricional #static retrieveGru retrie veGrupoNutricional poNutricional (Cursor) : GrupoNutricional GrupoNutricional Figura 48 - Especificación de la clase GrupoNutricional del modelo de datos
TipoProducto -idTipoProducto -idTipoProducto : int -nombre -nombre : String +static retrieveTipoProducto (int) : TipoProducto #static retrieveTipoProducto (Cursor) : TipoProdu T ipoProducto cto Figura 49 - Especificación de la clase TipoProducto del modelo de datos
78
Receta
-idReceta : int -nombre : String -descripcon : String -tiempoPreparacion : Integer I nteger -servirCalient : Boolean -puntuacionTotal : Double -numeroVotos : int -puntuacionUsuario : Double -habitualUsuario : Boolean -revisado : Boolean -vegetariano : Boolean -fechaAlta : Date -sinGluten : Boolean -cantidadesGruposNutricionales : Double[6] -calculosRealizados : Boolean -idUsuarioAutor : int -necesarioRecalcularCantidades : boolean -necesarioRecalcularSinGluten : boolean -necesarioRecalcularVegetariano : boolean +agregarPasoReceta (PasoReceta) : PasoRece Paso Receta ta +agregarPasosReceta (Collection
) : void +eliminarPasoReceta +eliminarPasoReceta (Integer) (I nteger) : void +eliminarPasosReceta () :void +getPasosReceta () : Iterator +agregarIngrediente (CantidadIngrediente) : boolean +agregarIngredientes (Collection) (Collection) : boolean bo olean +eliminarIngrediente (CantidadIngrediente) (CantidadIngrediente) : boolean +eliminarIngredientes () : void +agregarAderezo (Receta) : boolean +agregarAderezos (Collection) : boolean +eliminarAderezo (Receta) : boolean +eliminarAderezos () : void +calcularCantidadesGruposNutricionales +calcularCantidadesGruposNutricionales () ( ) : Double[6] +calcularRecetaAptaDietaVegetariana +calcularRecetaAptaDietaVeg etariana () : boolean bo olean +calcularRecetaAptaDietaSinGluten +calcularRecetaAptaDietaS inGluten () ( ) : boolean +static retrieveReceta (int) : Receta #static retrieveReceta (Cursor) : Receta -static retrieveAderezos (Cursor) : ArrayList -static retrievePasosReceta (Cursor) : TreeMap -static retrieveIngredientesRec retrie veIngredientesReceta eta (Cursor) : ArrayList +procesarIngredientes () : void -actualizarValoresGruposNutricionales (SQLiteDatabase) : void -actualizarValoSinGluten (SQLiteDatabase) : void -actualizarValorVegetariano (SQLiteDatabase) : void -actualizarValorCalculosRealizados (SQLiteDatabase) : void Figura 50 - Especificación de la clase Receta del modelo de datos
79
Ingrediente -idIngrediente -idIngrediente : int -nombre -nombre : String Strin g -nombrePlural -nombrePlural : String Strin g -contieneGluten : Boolean -vegetariano : Boolean -revisado : Boolean -fechaAlta : Date -idUsuarioAutor : int +static retrieveIngrediente retrieveIngrediente (int) : Ingrediente #static retrieveIngrediente retrieveIngrediente (Cursor) : Ingrediente Figura 51 - Especificación de la clase Ingrediente del modelo de datos
UnidadMedida -idUnidadMedida -idUnidadMedida : int -nombre : String -nombrePlural -nombrePlural : String Strin g -simbolo : String -factorConversion : Double +setUnidadReferencia +setUnidadReferencia (Unidad (U nidadMedida, Medida, Double) : void +static retrieveUnidadMedida (int) : Unidad U nidadMedida Medida #static retrieveUnidadMedida (Cursor) : UnidadMedida UnidadMedida -static retrieveUnidad retrie veUnidadMedidaReferencia MedidaReferencia (Cursor) : UnidadMedida UnidadMedida Figura 52 - Especificación de la clase UnidadMedida del modelo de datos
UnidadTiempo -idUnidadTiempo : int -nombre -nombre : String -nombrePlural -nombrePlural : String Strin g -simbolo -simbolo : String +static retrieveUnidadTiempo (int) : Unidad U nidadTiempo Tiempo #static retrieveUnidadTiempo (Cursor) (Cursor) : UnidadTiempo UnidadTiempo Figura 53 - Especificación de la clase UnidadTiempo del modelo de datos
80
PasoReceta -idPasoReceta : int -idReceta : int -orden : int -descripcon : String -tiempo : Integer +setTiempo (UnidadTiempo, (UnidadTiempo, Integer) : void #static retrievePasoReceta retrievePasoReceta (Cursor) : PasoReceta Figura 54 - Especificación de la clase PasoReceta del modelo de datos
CantidadIngrediente -cantidadPersona : Double +setCantidadPersona +setCantidadPersona (Unidad (U nidadMedida, Medida, Double) : void #static retrieveCantidadIngrediente (Cursor) : CantidadIngre Cant idadIngrediente diente +static calcularCantidadesGruposNutricionales calcularCantidadesGruposNutricionales (Collection) : Double [6] +static sonAptosDietaVegetariana (Collection : boolean +static sonAptosDietaSinGluten (Collection : boolean
Figura 55 - Especificación de la clase CantidadIngrediente del modelo de datos
81
Anexo D
Listas de Sprint Estimación Tiempo real (en horas de requerido trabajo)
Requisito Base de datos (1) (2) (3) (4) (5) (6)
(7)
(8) (9)
(10) (11)
2 Análisis de los requisitos 6 Diseño de la base de datos de la aplicación 8 Implementación Implementación de la base de datos Diseño y codificación de las consultas de recuperación 8 de datos 8 Pruebas Diseño del proceso de carga y actualización de datos en 2 la aplicación Carga y actualización de datos en la aplicación Implementación del programa que genera el archivo de 4 datos para la aplicación desde la base de datos de recetas Diagrama de clases para el modelo de datos de la 6 aplicación 10 Implementación Implementación de las clases del modelo de datos Interfaz de usuario 4 Diseño del icono de la aplicación 2 Diseño de los colores y aspecto global de la aplicación
2 6 7 10 7 2
3 6 12 3 2
Tabla 20 - Lista del Sprint 1 finalizado
Requisito
(12) (13) (14) (15) (16) (17) (18) (19)
Estimación Tiempo real (en horas requerido de trabajo)
Carga y actualización de datos en la aplicación 8 Implementación del manejador de la base de datos Implementación de los métodos de recuperación de 8 información desde la base de datos 2 Diseño de la interfaz de la vista de carga de datos Implementación del funcionamiento de la vista de carga 6 de datos Implementación del proceso de carga y actualización de 8 datos Implementación del proceso de cálculo de valores 8 precalculados 8 Pruebas 8 Revisión y corrección de errores
10 10 2 7 9 6 10 6
Tabla 21 - Lista del Sprint 2 finalizado
83
Requisito
(20) (21) (22) (23) (24)
(25) (26) (27) (28) (29)
(30) (31) (32) (33) (34)
Listado de recetas Diseño de la interfaz del listado de recetas Diseño de los iconos y elementos gráficos necesarios para el listado de recetas Implementación de la interfaz de los elementos que compondrán la lista Implementación Implementación de la interfaz listado de recetas Implementación del método de recuperación de recetas desde la base de datos e inserción en el listado Ficha de receta Diseño de la interfaz de la ficha de receta Diseño de los iconos y elementos gráficos necesarios para la ficha de receta Implementación Implementación de la interfaz de la ficha de receta Implementación del funcionamiento de recuperación de la información de una receta y mostrado en la ficha Revisión y corrección de errores Explorador de recetas Diseño de la interfaz del explorador de recetas Modificación del listado de recetas para permitir ordenar las recetas por categoría de plato Implementación Implementación de la interfaz del explorador de recetas Integración del listado y ficha de recetas en el explorador de recetas Revisión y corrección de errores Tabla 22 - Lista del Sprint 3 finalizado
84
Estimación Tiempo real (en horas de requerido trabajo) 4
3
4
6
5
3
5
4
6
6
3
3
3
4
6
7
2
2
2
1
2
3
4
3
4
4
8
7
6
6
Requisito
(35) (36) (37) (38)
(38')
(39) (40) (41)
Barra lateral de navegación Diseño de la barra lateral de navegación Implementación Implementación de la barra lateral de navegación Integración de la barra lateral en la aplicación Revisión y corrección de errores Explorador de recetas Reimplementación de la barra de pestañas para su correcta integración integración con la barra lateral de navegación Ajustes Definición de los ajustes de la aplicación Implementación o adaptación de los cuadros de dialogo necesarios para los ajustes de la aplicación Implementación de la vista de ajustes y su funcionamiento Ficha de receta
Estimación Tiempo real (en horas de requerido trabajo) 2 6 4 4
2 8 3 2
8
8
2
2
6
6
6
5
(42)
Corrección Corrección del problema de la l a interfaz que hace que en algunos casos la lista de ingredientes y pasos de la receta aparezca cortada
2
3
(43)
Implementación de la función de guardado y recuperación recuperación de la puntuación del usuario de las recetas
2
2
2
2
4 4
4 3
6
8
8
10
(44)
(45) (46) (47) (48)
Modificación Modificación del listado de ingredientes in gredientes para que muestre las cantidades para el número de personas establecido en los ajustes Vista de menú semanal Diseño de la interfaz de la vista de menú semanal Diseño de los componentes de la interfaz Implementación de los componentes del widget con con los días de la semana Implementación del widget con con los días de la semana Tabla 23 - Lista del Sprint 4 finalizado
85
Requisito
(49) (50) (51) (52)
(53) (54) (55)
(56) (57)
(58) (59)
(60)
(61)
Vista de menú semanal 6 Implementación Implementación de la interfaz del menú de un día Implementación del widget que que permite navegar entre 8 los menús diarios 8 Integración de los componentes de la interfaz Revisión y corrección de errores del funcionamiento de 8 la interfaz de menú semanal Confección de menús creados por el usuario Diseño de las tablas y consultas de la base de datos 4 necesarias para almacenar y recuperar los menús diarios planificados 4 Modificar la base de datos con el diseño realizado Implementación de los métodos de recuperación e inserción en el manejador de la base de datos para los menús diarios Listado de recetas Modificar el diseño de la iinterfaz nterfaz del listado de recetas para permitir agregar recetas a los menús Modificar la implementación del listado de recetas para que permita añadir recetas a los menús Vista de menú semanal Permitir agregar, cambiar y quitar las recetas a los menús diarios Recuperar los platos asignados al menú al cargarlo desde la interfaz de usuario
5 7 6 4
4 3
4
4
2
2
6
8
4
4
4
5
Modificar las vistas que muestran los platos de menú 2 para que al hacer clic se abra la ficha de la receta asignada al plato. Confección de menús creados por el usuario 8 Revisión y corrección de errores Tabla 24 - Lista del Sprint 5 finalizado
86
Estimación Tiempo real (en horas de requerido trabajo)
3
6
Requisito
(62) (63) (64) (65) (66)
(67)
(68)
(69)
(70)
Estimación (en horas de trabajo)
Generación automática de menús equilibrados Análisis del problema y diseño del algoritmo de 8 generación de menús equilibrados Implementación del algoritmo de generación de menús 12 equilibrados equilibrados en la aplicación Creación de datos de prueba y verificación del 6 funcionamiento del algoritmo 8 Corrección de errores Diseño del icono de la opción de generación de menús 4 equilibrados Diseño e implementación de un cuadro de dialogo que permita seleccionar seleccionar la semana para la que generar el menú semanal Vista de menú semanal
6
Integrar el icono de generación automática de menús en 4 la vista de menú semanal y mostrar el cuadro de dialogo de selección de semana al hacer clic sobre el icono Añadir la generación de menús semanales equilibrados 4 desde la vista de menú semanal Generación automática de menús equilibrados 8 Revisión y pruebas
Tiempo real requerido 8 11 8 4 3 7
3 5
8
Tabla 25 - Lista del Sprint 6 finalizado
Requisito
(71) (72) (73) (74) (75)
(76) (77) (78) (79)
Estimación (en horas de trabajo)
Información nutricional del menú semanal planificado Diseño de la vista de información nutricional y de sus 8 componentes 14 Implementación Implementación del gráfico de información nutricional Carga y presentación de los datos nutricionales de un 4 menú semanal en el gráfico 6 Implementación Implementación de la interfaz de información nutricional Implementación Implementación de la carga y presentación de los datos nutricionales de un menú semanal en la vista de información nutricional Diseño del widget de de resumen nutricional para la vista de menú semanal Implementación del widget de de resumen nutricional Integración del widget de de resumen nutricional en la vista de menú semanal Revisión y corrección de errores
Tiempo real requerido 8 16 6 5
6
4
4
3
6
6
6
8
8
6
Tabla 26 - Lista del Sprint 7 finalizado
87
Requisito
Estimación (en horas de trabajo)
Tiempo real requerido
Corrección de errores antes de la puesta en producción (80)
Revisión de todo el trabajo realizado y corrección de los errores que se detecten
14
12
8
8
4
4
4
3
6
5
12
14
1
1
1
1
16
16
2
2
Mejoras antes de la puesta en producción
(81)
(82)
(83)
(84)
(85)
(86)
(87)
Creación de un tema visual para la aplicación y modificación de las interfaces de usuario para conseguir una mayor integración con los colores y aspecto visual de toda la aplicación Diseño e implementación de una pantalla con la información sobre la aplicación y con los medios de contacto Revisión del aspecto de las interfaces en pantall as de distintos tamaños y modificación de las que sean necesarias para una correcta visualización en cualquier tamaño de pantalla Diseño de iconos para las opciones de la barra de navegación
Diseño e implementación del proceso de actualización de datos desde un repositorio remoto y modificación del proceso de carga y actualización de datos de la aplicación para implementar la actualización de datos remota Añadir los ajustes la opción de usar siempre las recetas ya seleccionadas en la generación de menús equili brados Añadir a los ajustes la opción de sólo descargar actualizaciones de datos cuando el dispositivo di spositivo esté conectado a una red WiFi Datos de recetas reales
(88)
Añadir información de recetas e ingredientes i ngredientes para disponer de una base de datos inicial Publicación de la aplicación en Play Store
(89)
Generación del instalable de la aplicación y publicación en la tienda de aplicaciones de Google
Tabla 27 - Lista del Sprint 8 finalizado
88
Anexo E
Especificaciones del diseño de la vista de menú semanal En la parte superior de la interfaz de usuario encontramos un calendario que cargará por defecto los siete días de la semana en curso. Para indicar qué día corresponde con el menú que se está mostrando, en este caso el lunes 13 de enero, la barra inferior se muestra visiblemente visiblemente más gruesa que en el resto de días. Debajo del calendario semanal se muestra el nombre del día de la semana seleccionado, seleccionado, y debajo de éste el menú para la comida y la cena de ese día. Para los platos que tengan una receta asignada, en este caso los de la comida, se mostrará el texto en color negro y el botón asociado tendrá icono de Android para representar menús contextuales, y los platos para los que no se haya seleccionado aún una receta mostrarán el nombre del plato en cursiva y en color de texto secundario. En este caso botón del plato llevará el icono de Android para representar representar la acción de adición y al pulsar sobre él se permitirá al usuario agregar una receta. Cuando el usuario presione el botón de acciones para un plato con receta seleccionada se le mostrará el siguiente menú contextual que le permitirá quitar la receta seleccionada o cambiarla por otra receta.
Figura 56 - Menú contextual para los platos con una receta seleccionada
89
Para cambiar de semana, el usuario tan solo deberá tocar la barra del calendario, y manteniendo presionado el calendario deslizarlo hacia la izquierda para navegar a la semana siguiente, o hacia la derecha para cambiar a la semana anterior. En las figuras 57 y 58 se muestra este funcionamiento:
Figura 57 - Avanzar una semana en la vista del menú semanal
Figura 58 - Retroceder una semana en la vista del menú semanal
La imagen de la izquierda de ambas figuras representa el estado inicial de la vista de menú semanal. Al deslizar la barra del calendario semanal hacia la izquierda (figura 57.1) o hacia la derecha (figura 58.1) todo el calendario sigue el movimiento del dedo y se desplaza hacia derecha o izquierda respectivamente. La imagen central de las dos figuras muestra el estado intermedio en el que el calendario sigue el desplazamiento realizado por el usuario. Finalmente, la imagen de la derecha representa el estado final de la vista de menú semanal tras haber avanzado o retrocedido una semana. Esta acción no cambia el día seleccionado, y por tanto el menú mostrado será el mismo que hubiera previamente. Una vez que el usuario haya cambiado de semana tan sólo deberá pulsar sobre el día que desee para mostrar el menú semanal de ese día. En la figura 59 se muestra la situación, en la que partiendo del estado inicial, seleccionado en día 13 de enero, se ha cambiado a la semana siguiente y se ha pulsado sobre el día 24 de enero. 90
Figura 59 - Ejemplo de funcionamiento de la selección de un día de la semana en la vista de menú semanal
Al seleccionar un día posterior al del menú que se está mostrando se desplazará automáticamente el menú hacia la izquierda para representar que se está cambiando al menú de alguno de los días siguientes. Si por el contrario se seleccionara un día anterior al actual este desplazamiento automático se produciría hacia la derecha. La imagen central de la figura 59 muestra este desplazamiento automático. automático. Además de poder cambiar de día desde la barra con el calendario semanal, el usuario podrá avanzar o retroceder día a día deslizando el contenido del menú diario a izquierda, para avanzar un día, o a derecha, para retroceder un día. El funcionamiento, análogo al del calendario semanal, se muestra en figuras 60 y 61:
Figura 60 - Avanzar un día en la vista de menú semanal
91
Figura 61 - Retroceder un día en la vista de menú semanal
Además, cuando al avanzar o retroceder un día se cambie de semana, como en el caso representado en la figura 61, el calendario semanal retrocederá igualmente a la semana anterior de forma automática a utomática.. En la imagen derecha de la figura 61 se muestra el menú semanal de un día anterior al actual, como puede verse los botones de cada plato desaparecen, por lo que no se podrá cambiar el menú de días que ya han pasado pero sí se podrá consultarlos. consultarlos. Se podrá avanzar y retroceder tantos días y semanas cómo se deseen siguiendo el funcionamiento explicado. En muchas de las imágenes de las figuras anteriores se puede ver que el botón “Atrás” de la barra inferior del sistema está marcado con un círculo azul como el que se
muestra en la figura 62:
Figura 62 - Casos de funcionamiento especial del botón "Atrás"
En todas las situaciones en las que la vista de menú semanal no esté mostrando el día o la semana actual el botón “Atrás” tendrá un funcionamiento especial, en lugar de
volver a la pantalla anterior o salir de la aplicación se seleccionará el día actual, de forma que resulte sencillo al usuario volver al día y semana actual. Cuando se esté mostrando el día y la semana actual el botón “Atrás” segu irá su comportamiento estándar. estándar.
92
Anexo F
Manual de usuario A continuación se detallará la guía de uso de las funcionalidades que ofrece la aplicación, se utilizará un lenguaje claro y sencillo de forma que cualquier persona pueda entender este manual y utilizar todas las utilidades de la aplicación.
F.1 Primera ejecución La primera vez que se entre en la aplicación se prepararán los datos de recetas para su uso. Este proceso podría llevar varios minutos dependiendo de las especificaciones del dispositivo en el que se esté ejecutando Cheftastic. Durante el proceso de carga de datos se mostrarán dos barras de progreso. Primero una barra de color amarillo, que indicará que se están leyendo los datos de recetas y guardando debidamente para su uso. Y a continuación una barra verde, que indicará que se están optimizando los datos para que la aplicación funcione más rápido. Este proceso sólo debería demorarse durante la primera ejecución. En el uso habitual de la aplicación, cada vez que se acceda se comprobará si hay nuevos datos disponibles. Cuando haya actualizaciones de datos se repetirá el proceso de carga, pero éste debería durar sólo unos segundos, pues se estarán actualizando unos pocos datos, en lugar de la información de todas las recetas de la aplicación.
Figura 63 - Pantalla de carga
Para evitar el consumo de datos de la tarifa del móvil, se puede seleccionar usar únicamente redes WiFi para la descarga de actualizaciones de recetas.
F.2 Menú semanal Una vez completado el proceso de carga se abrirá la pantalla con la información del menú semanal. Desde aquí se puede planificar el menú seleccionando manualmente las recetas, o podremos dejar que la aplicación nos genere un menú sano y equilibrado automáticamente.
93
Para añadir una receta al menú tan solo hay que hacer pulsar sobre el botón representado por el signo +, y seleccionar la receta que se quiera añadir. En la parte inferior de la pantalla se muestra un resumen con el valor nutricional de la semana en curso. Al añadir recetas al menú este valor se actualizará automáticamente. Si se está usando Cheftastic en una tablet en posición horizontal, el resumen nutricional de menú semanal se mostrará en una barra a la derecha de la pantalla.
Figura 64 - Menú semanal
Las recetas seleccionadas se pueden quitar del menú o cambiar por otras recetas pulsando sobre el botón de la receta en cuestión y seleccionando la opción que se desee efectuar.
Figura 65 - Menú de opciones
Se puede avanzar o retroceder el calendario de semanas deslizando a izquierda o derecha respectivamente el calendario semanal. Análogamente se podrá cambiar el menú mostrado al de días posteriores o anteriores. Si se quiere mostrar el menú de un día en concreto bastará con pulsar sobre el día deseado en el calendario semanal de la parte superior de la pantalla. Para volver al menú de hoy desde el menú de cualquier otro día tan solo habrá que pulsar sobre el botón “Atrás” de la barra de An droid.
Finalmente, la varita mágica de la barra de acciones de la aplicación hará que Cheftastic genere un menú equilibrado automáticamente. Figura 66
Los menús generados por la aplicación tendrán en cuenta las puntuaciones otorgadas a las recetas, de forma que se seleccionarán más frecuentemente las recetas mejor valoradas.
94
Al pulsar sobre alguna de las recetas asignadas al menú se abrirá una pantalla con toda la información de la receta.
F.3 Información nutricional Se puede acceder a la pantalla de información nutricional pulsando sobre el resumen nutricional de la vista del menú semanal. En esta pantalla se detallará la información para cada grupo nutricional del menú semanal planificado, y se podrá visualizar si se deberían consumir más o menos ingredientes de alguno de los grupos. Esta información se mostrará tanto gráficamente como en una tabla con los valores obtenidos. El gráfico de información nutricional está compuesto por seis porciones de un tamaño fijo. El tamaño de cada porción se corresponde con el porcentaje ideal de productos de cada grupo nutricional que deben ingerirse a lo largo de una semana. El porcentaje obtenido en el menú semanal se mostrará sobre cada una de estas porciones, de manera qué:
Figura 67 - Información nutricional
Si para un grupo nutricional se ha obtenido el porcentaje ideal exacto, la porción de este grupo aparecerá completamente rellena. Este es el caso de las porciones verde oscuro y azul de la figura. Cuando el porcentaje obtenido es inferior al recomendado para el grupo no se rellenará todo el espacio reservado, quedando el porcentaje restante en un color mucho más claro. Los grupos que se corresponden con los segmentos rojo y morado de la figura han obtenido un porcentaje inferior al recomendado. Por último, los grupos que obtengan un valor superior al recomendado mostrarán el porcentaje excedente con un color más oscuro, como sucede con los grupos correspondientes a las porciones verde claro y naranja del ejemplo de la figura.
95
F.4 Navegando entre las pantallas de la aplicación La barra de navegación permite acceder acceder a las distintas secciones de la aplicación, y será accesible desde las pantallas que muestren el siguiente icono en la barra de acciones:
Figura 68 - Icono de la barra de navegación
Para mostrar la barra de navegación bastará con pulsar sobre el icono anterior o deslizar el dedo desde el borde izquierdo de la pantalla hacia el centro.
F.5 Explorador de recetas El explorador de recetas permite obtener un listado de las recetas de la aplicación ordenadas por categorías de plato, pudiendo además obtener una ficha con toda la información sobre cada una de las recetas. Desde la ficha con la información de la receta se puede establecer la puntuación personal de la misma seleccionando el número de estrellas estrellas que se deseen.
F.6 Ajustes Desde la pantalla de ajustes de la aplicación se pueden establecer las siguientes preferencias de usuario:
Número de personas para las que cocinar. Se mostraran las cantidades de ingredientes de cada receta para el número de personas establecido. Usar siempre recetas ya seleccionadas. Para generar los menús automáticos en base a las recetas ya seleccionadas en el menú semanal. Actualizar datos sólo por WiFi. Para evitar consumo de la tarifa de datos al descargar actualizaciones actualizaciones de recetas.
F.7 Información sobre la aplicación En la pantalla de información de la aplicación se muestra el número de versión y la información de contacto. Al pulsar sobre la información de contacto se creará un nuevo correo electrónico listo para redactar y enviar.
96