Desarrollo de una aplicación móvil para aparear animales - Juan José Navarro Albarracín
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
Desarrollo de una aplicación móvil para aparear animales Entrega Final Ingeniería del Software Juan José Navarro Albarracín Director: Alberto Abelló - Departamento de Servicios e Ingeniería de Sistemas de Información 29 de junio de 2021
Agradecimientos Me gustaría agradecer este proyecto y su significado a diferentes personas. En primer lugar, a las personas que me apoyaron con la idea de hacer una aplicación para juntar mascotas y se la tomaron en serio. En segundo lugar, a mi familia que han sido las personas encargadas de detectar errores que podía tener la aplicación y sugerirme mejoras que ellos echaban en falta. En tercer lugar, me gustaría agradecer a mis compañeros de carrera que han estado siempre conmigo apoyándome y motivándome, en especial a Iván, Pau y Lucas que son los que me han tenido que aguantar el mayor tiempo. Por último, me gustaría agradecer a todos los profesores de la carrera que me han enseñado muchas cosas y han hecho posible que este proyecto se lleve a cabo, en especial a mi director de proyecto, Alberto Abello que me ha guiado y me ha ayudado a alcanzar los objetivos de este proyecto. ¡Gracias a todos y todas! 1
RESUMEN Cada vez hay más gente interesada en tener mascotas recién nacidas para poder criarlas desde que son pequeñas. Con la crisis cada vez se compran menos animales en las tiendas y aumentan las ventas particulares que son más económicas. Dichos particulares buscan perfiles de mascotas concretos. A parte, por circunstancias personales me toco sufrir una enfermedad que pasan los animales los cuales nunca han tenido relaciones sexuales. Por estos motivos me plantee la siguiente pregunta: ¿Existe alguna manera de poder ayudar a toda esa gente y a esas personas que han sufrido el mismo problema que yo? Como trabajo de final de grado se presenta Animal Pairs, una aplicación multiplataforma para poner en contacto 2 personas que tengan mascotas y estén interesados en que dichos animales se conozcan. A lo largo del documento podremos encontrar un análisis exhaustivo previo al desarrollo, explicaciones de las decisiones tomadas y toda la información necesaria acerca de la aplicación y cómo utilizarla. 2
RESUM Cada cop n’hi ha més gent interessada en tenir mascotes nadons per poder criar-les des que són petites. Amb la crisi, cada cop es compren menys animals a les tendes i augmenten les ventes de particulars que són més econòmiques. Aquests particulars busquen perfils de mascotes molt concrets. A part d’això, per circumstancies personals, vaig haver de sofrir una malaltia que passen els animals que no han tingut cap relació sexual. Per aquets motius hem vaig plantejar la següent pregunta: Existeix una manera de poder ajudar a tota aquesta gent i a aquelles persones que han patit el mateix problema que jo? Com a treball de final de grau es presenta Animal Pairs, una aplicació multi plataforma per poder posar en contacte 2 persones que tinguin mascotes i estiguin interessats en que aquestes es coneguin. Al llarg d’aquest document podem trobar un anàlisi exhaustiu previ al desenvolupament, explicacions de les decisions presses i tota la informació necessària sobre l’aplicació i com utilitzar-la 3
ABSTRACT More and more people are interested in having newborn pets to be able to raise them since they are small. With the crisis, less and less animals are bought in stores and private sales are increasing. These persons are looking for specific pet profiles. Besides, due to personal circumstances I had to suffer from a disease that the animals, which have never had relations, go through. For these reasons I asked myself the following question: Is there any way to help all those people and those people who have suffered the same problem as me? As a final degree project, we present Animal Pairs, a multiplatform application to put in contact 2 people who have pets and are interested in getting to know each other. Throughout the document we can find an exhaustive analysis previous to the development, explanations of the decisions taken and all the necessary information about the application and how to use it. 4
Índice 1. Contexto 10 1.1. Introducción ........................................................................................... 10 1.2. Términos y definiciones ........................................................................... 11 1.3. Identificación del problema ...................................................................... 12 1.4. Stakeholders ........................................................................................... 13 2. Justificación 14 2.1. Análisis de mercado ................................................................................ 14 2.2. Conclusiones .......................................................................................... 15 3. Alcance del proyecto 16 3.1. Objetivos................................................................................................ 16 3.2. Requisitos no funcionales......................................................................... 17 3.3. Obstáculos y riesgos ................................................................................ 17 4. Metodología y rigor 19 4.1. Sistema de control de versiones ................................................................ 20 4.2. Sistema de Gestión de Proyecto ................................................................ 21 5. Tecnologías 22 5.2. Entorno de desarrollo integrado ................................................................ 23 5.3. Plataforma de nube .................................................................................. 23 5.4. Diseño ................................................................................................... 24 6. Descripción de tareas 26 6.1. Tareas de gestión de proyecto ................................................................... 26 6.2. Tareas de desarrollo de prototipos ............................................................. 27 6.2.1. Tareas de Diseño .............................................................................. 27 6.2.2. Prototipo de Login ............................................................................ 28 6.2.3. Prototipo de Chat .............................................................................. 29 6.2.4. Prototipo de Perfil............................................................................. 29 6.2.5. Prototipo de Búsqueda ...................................................................... 30 7. Estimaciones y Gantt 32 8. Gestión de los riesgos 34 8.1. Inexperiencia tecnologías utilizadas .......................................................... 34 5
8.2. Fechas de entregas fijadas ........................................................................ 34 8.3. Bugs ...................................................................................................... 34 9. Presupuestos 35 9.1. Identificación de los costes ....................................................................... 35 9.1.1. Costes de Personal ............................................................................ 35 9.1.2. Costes generales ............................................................................... 36 9.2. Estimación de costes ............................................................................... 38 9.2.1. Coste de imprevistos ......................................................................... 38 9.3. Control de Gestión .................................................................................. 39 10. Análisis y diseño 41 10.1. Modelo conceptual .................................................................................. 41 10.1.1. Diagrama de clases ........................................................................... 41 10.1.2. Restricciones de integridad................................................................ 42 10.2. Modelo de casos de uso ........................................................................... 43 10.2.1. Casos de uso .................................................................................... 44 10.2.2. Actores ........................................................................................... 44 10.2.3. Paquete ........................................................................................... 45 10.3. Modelo de comportamiento ...................................................................... 46 10.3.1. Diagrama de secuencia ..................................................................... 46 10.3.2. Contratos de operación del sistema .................................................... 57 10.4. Modelo de estados ................................................................................... 61 10.4.1. Diagrama de estados ......................................................................... 61 11. Mockups 63 11.1. Registro ................................................................................................. 63 11.1.1. Pantalla inicio sesión ........................................................................ 63 11.1.2. Pantalla Creación perfil .................................................................... 64 11.1.3. Pantalla Recuperar Contraseña .......................................................... 66 11.2. Búsqueda ............................................................................................... 67 11.3. Chat ....................................................................................................... 69 11.4. Perfil...................................................................................................... 71 12. Implementación 73 12.1. Librerías................................................................................................. 74 12.1.1. Syncfusion ...................................................................................... 74 6
12.1.2. Xamarin Firebase ............................................................................. 74 13. Manual de usuario 76 13.1. Requerimientos ....................................................................................... 76 13.2. Uso de la aplicación ................................................................................ 76 13.2.1. Registro Usuario .............................................................................. 76 13.2.2. Inicio Sesión .................................................................................... 78 13.2.3. Navegación ..................................................................................... 79 13.2.4. Ver perfil animal .............................................................................. 81 13.2.5. Dar Like .......................................................................................... 82 13.2.6. Mantener conversación ..................................................................... 83 13.2.7. Ver Perfil ........................................................................................ 85 13.2.8. Ajustes ............................................................................................ 85 13.2.9. Cerrar sesión ................................................................................... 85 14. Sostenibilidad 86 14.1. Autoevaluación ....................................................................................... 86 14.2. Dimensión Ambiental .............................................................................. 86 14.3. Dimensión Económica ............................................................................. 88 14.4. Dimensión Social .................................................................................... 90 15. Conclusiones 93 15.1. Planificación final ................................................................................... 93 15.2. Objetivos del proyecto ............................................................................. 93 15.3. Trabajo futuro ......................................................................................... 94 15.4. Conclusiones personales .......................................................................... 94 Referencias 96 7
Índice de Tablas Tabla 1. Número de animales de raza en España .............................................................. 11 Tabla 2. Comparación funcionalidades entre las diferentes Apps del mercado ............... 15 Tabla 3. Comparativa Frameworks (Fuente: OpenWebinars[18]).................................... 22 Tabla 4. Resumen de las tareas del proyecto. ................................................................... 32 Tabla 5. Salario neto y bruto según en función del rol ..................................................... 35 Tabla 6. Resumen del coste del proyecto dividido en roles. ............................................. 36 Tabla 7. Resumen de costes de Software. ......................................................................... 37 Tabla 8. Resumen de los costes de Hardware ................................................................... 37 Tabla 9. Resumen del coste del mobiliario. ...................................................................... 38 Tabla 10. Resumen del coste de los imprevistos. ............................................................. 38 Tabla 11. Tabla resumen de los costes totales detallados del proyecto. ........................... 39 Índice de figuras Figura 1. Censo de animales domésticos en España el 2019 según ANFAAC. ............... 10 Figura 2. Flujo de la metodología prototipada. ................................................................. 19 Figura 3. Diagrama de Gantt de las tareas del proyecto. .................................................. 33 Figura 4. Diagrama de clases del sistema ......................................................................... 41 Figura 5. Diagrama de casos de uso ................................................................................. 45 Figura 6. Patrón MVVM (Fuente: Microsoft) .................................................................. 73 Índice de diagramas Diagrama 1. Diagrama secuencia Inicio sesión. ............................................................... 46 Diagrama 2. Diagrama de secuencia Registrar perfil ....................................................... 47 Diagrama 3. Diagrama de secuencia Recuperar contraseña ............................................. 48 Diagrama 4. Diagrama de secuencia Búsqueda animales. ............................................... 49 Diagrama 5. Diagrama de secuencia Dar un Like. ........................................................... 50 Diagrama 6. Diagrama de secuencia Comprobar si es match. ......................................... 51 Diagrama 7. Diagrama de secuencia Obtener Chats. ....................................................... 52 Diagrama 8. Diagrama de secuencia Obtener un Chat ..................................................... 52 Diagrama 9. Diagrama de secuencia Enviar mensaje....................................................... 53 8
Diagrama 10. Diagrama de secuencia Obtener perfil. ...................................................... 54 Diagrama 11. Diagrama de secuencia Modificar Perfil. .................................................. 55 Diagrama 12. Diagrama de secuencia función validar email ........................................... 56 Diagrama 13. Diagrama de secuencia validación de la contraseña. ................................. 57 Diagrama 14. Diagrama de estados. ................................................................................. 62 Índice de MockUps MockUp 1. Pantalla inicio Sesión ..................................................................................... 46 MockUp 2. Pantalla inicio sesión con alert Error ............................................................. 47 MockUp 3. Pantalla Creación Cuenta ............................................................................... 48 MockUp 4. Pantalla creación de perfiles .......................................................................... 49 MockUp 5. Pantalla creación de perfiles con Error .......................................................... 50 MockUp 6. Pantalla recuperar contraseña......................................................................... 51 MockUp 7. Pantalla recuperar contraseña con Error ........................................................ 52 MockUp 8. Pantalla de búsqueda ..................................................................................... 52 MockUp 9. Desplegable Pantalla de búsqueda ................................................................ 53 MockUp 10. Perfil de mascota ......................................................................................... 54 MockUp 11. Pantalla de chats ........................................................................................... 55 MockUp 12. Pantalla de chat ........................................................................................... 56 MockUp 13. Pantalla perfil .............................................................................................. 57 9
1. Contexto 1.1. Introducción El proyecto de fin de grado “Desarrollo de una aplicación móvil para aparear animales” es un trabajo que pertenece a los estudios de Grado de Ingeniería Informática para la Facultad de Informática de Barcelona (FIB), Universidad Politécnica de Barcelona, para la especialidad de Ingeniería del Software. Este trabajo se ha realizado de manera independiente, es decir, dentro de la modalidad A de la universidad, sin tener ninguna vinculación con ninguna empresa. Hoy en día casi todo el mundo tiene una mascota en casa. El año 2019 según la Asociación Nacional de Fabricantes de Alimentos para Animales de Compañía (ANFAAC) [1] en España casi un 40% de los hogares tienen una mascota, que son aproximadamente unos 28 millones de animales. Es complicado saber con exactitud el número de animales censados en España ya que no todas las mascotas se registran. También encontramos el inconveniente que, al fallecer, no se comunica y por tanto siguen constando en el censo. Dicho esto, según los datos del censo de mascotas en el 2019, podemos decir que la mascota predominante en España es el pez, seguido de cerca por los pájaros y los perros. Después tenemos a los gatos, reptiles y mamíferos pequeños con un número bastante más reducido. Figura 1. Censo de animales domésticos en España el 2019 según ANFAAC. De todos los animales domésticos que hay en España, los perros son los animales que más se crían. A la hora de emparejar dos perros se tienen en cuenta muchos factores que hacen más 10
complicada esta tarea. Una de las cosas que más se valora en un perro es el pedigrí, lo que los hace más valiosos y necesarios para las competiciones. Según la Real Sociedad Canina de España el número de perros de raza es de 2,5 millones, es decir un 37% de los perros censados son de raza [2]. Tabla 1. Número de animales de raza en España En los últimos años en España ha aumentado el negocio de la cría de perros ya sea de particulares o de empresas que se dedican a ello. Este negocio está aumentado debido a que la mayoría de personas prefieren tener a los perros cuando son cachorros y criarlos desde pequeños a adoptar o acoger un perro cuando ya es adulto. 1.2. Términos y definiciones ● Pedigrí: Cuando hablamos de pedigrí hacemos referencia a un certificado de familia de un perro. Este documento indica que el perro tiene varias generaciones de raza pura [3]. ● Perros de raza: Se entiende por perros de raza o perros de raza pura a aquellos perros que descienden de dos perros de la misma raza. ● Cría: Al hacer referencia a la cría de perros estamos hablando de personas o empresas que se encargan de poner dos animales para que tengan descendencia y hacer negocio de estas. 11
● Apareamiento: Este término es muy utilizado cuando hablamos de animales. Consiste en juntar a dos animales de géneros distintos, un macho y una hembra para que el macho eyacule en el interior de la hembra con el fin de procrear o reproducirse. 1.3. Identificación del problema Cada vez hay más personas se dedican a la cría de animales de compañía ya sea con el fin de hacer negocio o simplemente para beneficio personal. Esto hace que a la hora de aparear dos animales las personas quieran que sean de la misma raza, ya que al mezclar razas no sabes la descendencia que tendrán. Para aparear a un animal de compañía con otro, se deben tener en cuenta diversos factores. Es importante encontrar a un animal del género contrario, de la misma raza y, por último, que sea de la zona a la que pertenece la persona implicada. Poder combinar estas tres características es complicado, pero es más complicado si tenemos que hacerlo con los animales que uno mismo conoce, es decir, de su círculo más cercano. Por este motivo muchas veces podemos ver en internet anuncios en los que se ofrece el apareamiento de un animal con las condiciones deseadas para la otra parte. También podemos ver que encontrar a un animal de una raza concreta no siempre es posible y más cuando hablamos de razas que pueden ser raras. El mismo problema surge cuando se busca un animal con pedigrí. Por otro lado, para poder aparear a un animal con otro de su misma raza se debe conocer a alguien que tenga dicho animal, ponerse en contacto con dicha persona y comunicarle si estaría dispuesto a aparearlo. Esto no siempre es posible ya que no todas las personas están dispuestas o bien, puede que no se conozca a nadie que tenga un animal con las características necesarias para iniciar el proceso de apareamiento. Otro problema añadido por el que es necesario el apareamiento entre animales es un proceso mental por el que pasan las hembras conocido como “embarazo psicológico”. Este proceso solo ocurre en perros ya que necesitan ovular para que les pase y las gatas solo ovulan cuando el macho las monta [4]. Le llamamos proceso porque no se puede llamar enfermedad como tal y consiste en que la hembra se comporta como si hubiese parido o estuviese a punto. Esto hace que tengan un fuerte cambio tanto mental como físico incluso llegando a sacar leche por las mamas. Este proceso puede afectar gravemente a la hembra haciéndola sufrir. Este es un proceso que pasan todas las hembras, solo que a unas se les manifiesta y a otras no. Las hembras que se han apareado alguna vez en su ciclo vital, tienen menos probabilidad de padecer este 12
proceso mental. Este es un motivo adicional por el que se recomienda aparear a las hembras al menos una vez. 1.4. Stakeholders Los stakeholders, también denominados como actores implicados, son los beneficiarios del proyecto, las personas afectadas por este o las personas que están directamente implicadas. Los stakeholders son muy importantes en todo proyecto porque te ayudan a definir correctamente este. Debido a que va dirigido a estos actores, deberemos tener en cuenta su opinión, sus preocupaciones y sus requerimientos. A continuación, mostraré una lista con los diferentes stakeholders de este proyecto: ● Desarrollador: Como único desarrollador del proyecto, yo seré uno de los principales stakeholders ya que me encargaré de realizar las pruebas de test, desarrollar el código de la aplicación y realizar toda la documentación del mismo. ● Tutor TFG: El tutor de este trabajo de final de grado, Alberto Abelló es un stakeholder importante, ya que se encargará de dirigir el TFG y que siga la dirección correcta. ● Personas con mascota: Toda persona que tenga una mascota en casa es un stakeholder muy importante, más concretamente aquellos que quieran aparear a su mascota. ● Criaderos de animales: Los criadores que no tengan una hembra y un macho de la misma raza serán un stakeholder cuando decidan tener crías para esa raza de animal concreta. 13
2. Justificación 2.1. Análisis de mercado El mundo animal está creciendo cada vez más y el número de mascotas domésticas también. Por este motivo en los últimos tiempos han surgido varias apps en el mercado con las que es posible encontrar mascotas de otras personas. A continuación, mostraré una lista de estas aplicaciones, las analizaremos y haremos una comparativa entre ellas. Una vez acabada esta comparativa definiremos en qué se diferencia nuestra solución y que adapta de las soluciones existentes. ● MatchDog [5]: Es una aplicación multiplataforma desarrollada por unos estudiantes de México. Esta aplicación tiene una interfaz muy sencilla e intuitiva. Permite buscar perros según la raza y la distancia a la que se encuentran. En esta aplicación debes registrarte, poner fotos de la mascota e indicar su raza, edad y género. También da la posibilidad de poner una foto del dueño. Una vez introducidos los filtros deseados muestra todos los perros que coinciden con la búsqueda. Si las dos partes se dan un me gusta, pueden iniciar un chat. También da la posibilidad de guardar el animal en favoritos, lo que hará que cuando se modifique el perfil salga una notificación. A parte de esto, también ofrece diferentes servicios como pueden ser entrenamientos, veterinarios, etc. Simplemente pone una breve descripción y un número de contacto. ● Twindog [6]: Twindog es una aplicación muy similar a la conocida “Tinder” que sirve para encontrar pareja o amigos para personas. En esta aplicación se pueden introducir fotos y datos del perro, pero también se debe poner información sobre la persona o dueño. Esto permite utilizar la app para buscar un animal para tu mascota y también buscar una persona para el dueño. En los filtros de la aplicación permite escoger el género de los dueños que se quieren mostrar. Twindogs muestra perros aleatoriamente, según tus filtros. Si las dos partes dan un me gusta, pueden iniciar un chat. Este funcionamiento es una copia del funcionamiento que tiene la aplicación Tinder. ● GetPet [7]: Esta app no permite encontrar una mascota con el fin de aparear, si no que permite encontrar una mascota para adoptar. Pese a eso, el funcionamiento de la aplicación es similar al que deseamos. Según un filtro de búsqueda va mostrando diferentes animales. Cada animal mostrado tiene la posibilidad de darle un like. En caso de que sea recíproco, se puede iniciar un chat. 14
● SocialAnimals [8]: SocialAnimals es una aplicación que permite conectar a diferentes mascotas mediante un chat. No es solo eso, sino que también tiene la función de red social para mascotas. Además, tiene diferentes funcionalidades como pueden ser un calendario de eventos, publicaciones, creación de grupos, etc. Es una aplicación muy completa que da la posibilidad de ponerte en contacto con protectoras y adoptar animales. También permite publicar anuncios, ofertas y descuentos. 2.2. Conclusiones A continuación, se muestra una tabla con las diferentes opciones que hay actualmente en el mercado y lo que ofrece cada una. Tabla 2. Comparación funcionalidades entre las diferentes Apps del mercado Como podemos ver en la comparativa, las diferentes apps del mercado dan soporte a todas las funcionalidades que podría necesitar el usuario, pero ninguna cumple todos los requisitos. La aplicación más completa que hay ahora en el mercado es Social Animals, pero tiene un problema y es que no se centra solo en buscar al animal adecuado, sino que es una red social para animales y tiene demasiadas funcionalidades. Esto hace que los usuarios no la usen o no la vean con buenos ojos si solo buscan encontrar un animal adecuado. También tenemos la aplicación MatchDogs que es la más parecida a lo que queremos obtener, pero tiene un problema que es que solo está disponible para perros, cuando nosotros permitiremos diferentes animales. 15
3. Alcance del proyecto Este proyecto consiste en desarrollar una aplicación para móvil con la que poder buscar mediante unos filtros, animales concretos. Mostrará una lista con los resultados y por cada animal mostrado, habrá la posibilidad de que los usuarios indiquen que dicho animal les gusta. Si el usuario al que pertenece ese animal devuelve el me gusta, se activará la opción de chatear para poder concertar el encuentro. Al registrar un animal habrá la opción de poner diferentes fotos, una descripción, la edad, el género y la raza. También será posible poner una imagen del usuario al que pertenece el animal para que los demás usuarios sepan quién es el dueño. 3.1. Objetivos El objetivo principal de este proyecto es poder poner en contacto dos animales que están buscando hacer amigos o aparearse. Para conseguirlo tendremos que cumplir unos subobjetivos obligatorios: ● Facilitar la búsqueda de un animal: Utilizando un sistema de filtros con suficientes opciones para encontrar a los animales deseados. ● Proporcionar contacto entre ambas partes: Utilizando un sistema de chat en el momento de la coincidencia. ● Permitir comparación entre distintos animales: Mediante una lista con todos los posibles resultados, los usuarios podrán comparar unos animales con otros y decidir los que más les interesan. ● Permitir privacidad de ciertos usuarios: Los usuarios podrán decidir si incluir información personal, una fotografía suya y una breve descripción sobre ellos o por el contrario prefieren preservar su intimidad y no mostrar más información que la del animal. 16
3.2. Requisitos no funcionales Una vez definidos los objetivos y subobjetivos del proyecto, es necesario determinar los requisitos no funcionales del mismo que permitirán garantizar un buen funcionamiento de la aplicación: ● Apariencia: La aplicación debe ser visualmente bonita y atraer a los diferentes usuarios que puedan usarla. ● Seguridad y privacidad: La aplicación tiene que asegurar que los datos serán solo accesibles por los usuarios autorizados. ● Usabilidad: Se espera que la aplicación sea sencilla de utilizar y muy intuitiva. Cualquier usuario que acceda a ella debe ser capaz de acceder a todas las funcionalidades disponibles. ● Extensibilidad: El sistema debe ser construido de tal manera que la incorporación de nuevas funcionalidades afecte de la menor manera posible. ● Escalabilidad: La aplicación debe estar preparada para un incremento en el número de usuarios. ● Fiabilidad y disponibilidad: La aplicación debe ser fiable para los usuarios y evitar caídas, por lo que debe estar disponible el servicio que ofrece en todo momento. ● Legislación: La aplicación debe cumplir con la legislación vigente y con las leyes de protección de datos RGPD [9] y LOPD [10]. 3.3. Obstáculos y riesgos Durante el desarrollo pueden surgir diferentes obstáculos, por eso necesitamos conocerlos antes de comenzar para poder afrontarlos: ● Inexperiencia en las tecnologías utilizadas: El utilizar tecnologías de las cuales el desarrollador no tiene conocimientos hace que se complique ya que va a necesitar aprenderlas y por tanto perder un tiempo necesario para desarrollar. 17
● Fechas de entrega fijadas: Tener unas fechas de entrega fijas hace que, si surge cualquier contratiempo o problema, no se pueda modificar y por tanto entregar un producto inacabado o con defectos. ● Bugs: El desarrollo de una aplicación va ligado con la aparición de bugs. La cuestión es el tiempo que se tarda en resolver estos bugs. El problema puede aparecer cuando se tarda demasiado tiempo en resolver un bug y por tanto estancarse en el desarrollo de la aplicación. 18
4. Metodología y rigor La metodología de un proyecto es una parte muy importante ya que determinará la forma en que nos organizaremos a lo largo del proyecto. Hay diferentes tipos de metodología. La más utilizada es la de tipo Agile [11], ya que permite al equipo de proyecto estructurarse de una manera determinada y dividir el proyecto en pequeños sprints de corta duración con la finalidad de marcar unos objetivos a corto plazo. Esta metodología es adecuada para proyectos que esperan adaptarse a los cambios que puedan surgir a lo largo del desarrollo o a las diferentes necesidades que pueda tener el cliente. Puesto que en este proyecto no tenemos ningún cliente que nos marque unos objetivos a cumplir, ni tampoco hay un equipo de trabajo para poder repartir los diferentes roles que esta metodología requiere, considero que no es adecuada. La metodología más adecuada para este tipo de proyecto es la prototipada [12]. La metodología de prototipos permite a los desarrolladores crear solo el prototipo de la solución para demostrar su funcionalidad a los clientes. Esta metodología consiste en construir el proyecto en poco tiempo, usando los programas adecuados y no se deben utilizar muchos recursos. Este modelo se basa en prueba y error ya que si al usuario no le gusta una parte del prototipo significa que la prueba falló por lo cual se debe corregir el error que se tenga hasta que el usuario quede satisfecho. En este caso, el usuario que identificará si está conforme seré yo como desarrollador y mi tutor del TFG. Figura 2. Flujo de la metodología prototipada. 19
Esta metodología tiene sus ventajas y desventajas: a) Ventajas ● Permite reducir significativamente el riesgo de fallos e identificar los riesgos potenciales en una etapa temprana y se pueden tomar medidas rápidamente. ● Identifica el alcance del refinamiento y, en consecuencia, acomoda los nuevos cambios en los requisitos dados. ● No modifica el flujo del ciclo de vida. b) Desventajas ● El desarrollador puede caer en la tentación de ampliar el prototipo para construir el sistema final sin tener en cuenta los compromisos de calidad. ● No se aprecian demasiadas modificaciones en el proyecto... Para llevar un buen control y seguimiento del proyecto y controlar las diferentes versiones del mismo, utilizaremos un conjunto de herramientas que nos facilitarán este control. 4.1. Sistema de control de versiones ● Git [13]: Git es un sistema de control de versiones de código abierto. Es el más utilizado para la gestión de proyectos. ● GitHub [14]: GitHub es un servicio que permite gestionar y administrar repositorios, además de llevar un control y registro de cualquier cambio en el código. ● GitFlow [15]: GitFlow es un flujo de trabajo que se basa en un conjunto de ramas que se utilizaran según la tarea que llevemos a cabo. La idea es tener una rama master que siempre será estable y tener una rama develop donde tendremos nuestro proyecto cambiante. Por último, la idea es crear una rama por cada funcionalidad o historia de usuario. Una vez acabada esta funcionalidad la incluiremos en la rama develop. 20
4.2. Sistema de Gestión de Proyecto ● Taiga [16]: Taiga es una herramienta de software libre y código abierto, que permite gestionar proyectos ágiles, además permite gestionar issues. Permite crear historias de usuarios y puntuarlas, ver una gráfica de cómo avanza el proyecto y gestionar el backlog, entre otras muchas funcionalidades. 21
5. Tecnologías En el desarrollo de una aplicación es necesario utilizar diversas herramientas con finalidades totalmente diferentes. Por este motivo es importante evaluar las diferentes opciones y valorar cual es la mejor opción en cada caso. 5.1. Framework El framework es un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular [17]. Un framework permite agilizar los procesos de desarrollo ya que evita tener que escribir código de forma repetitiva, asegura unas buenas prácticas y la consistencia del código. Para poder escoger un framework adecuado hay que tomar una decisión importante que es saber si nuestra aplicación será multiplataforma o nativa. En caso de ser nativa tiene muchas ventajas de eficiencia, pero limitamos el mercado a un tipo de móvil, ya que no hay tiempo para desarrollar dos aplicaciones nativas, una en cada plataforma (Android y iOS). Por este motivo, se tomó la decisión de realizar una aplicación multiplataforma. Una vez tomada esta decisión era necesario comparar los distintos frameworks posibles y ver cuál era el más adecuado. React Native Flutter Xamarin Cordova/Ionic Lenguaje Javascript Dart C# HTML, CSS, (+Java y Objective-C) JS Rendimiento Casi nativo Casi nativo Casi nativo Moderado Interfaz Componentes Componentes Componentes HTML, CSS nativos propios nativos Comunidad Muy activa y Poco popular Relativamente Bastante grande popular popular Reusabilidad 90% código 50%-90% código 96% código 98% código Tabla 3. Comparativa Frameworks (Fuente: OpenWebinars [18]) Después de comparar varios de los frameworks más utilizados en el mercado, como podemos ver en la tabla 3, Xamarin es el único que utiliza C#, un lenguaje que siempre me ha atraído 22
bastante. También podemos ver que tiene características muy similares a React y Flutter, pero con una diferencia, que es más reusable su código. Esto hace que facilite la programación al desarrollador. Como podemos ver también es bastante popular por lo tanto hay información suficiente en caso de bloqueo. 5.2. Entorno de desarrollo integrado Un entorno de desarrollo integrado (IDE) es una aplicación informática que proporciona servicios para facilitarle el desarrollo de software al desarrollador o programador. Normalmente un entorno de desarrollo consiste en: • Un editor de código fuente • Un compilador y/o un intérprete • construir herramientas de automatización • Un depurador Dado que el framework ya lo hemos decidido, el entorno de desarrollo integrado debe ser apropiado para dicho framework. Xamarin pertenece a Microsoft y por tanto el IDE más adecuado para este framework seria Visual Studio, que pertenece también a Microsoft. Visual Studio cuenta con una extensión de Xamarin que permite instalar el framework en el IDE. 5.3. Plataforma de nube La computación en la nube es un término general para la prestación de servicios alojados a través de Internet, y permite consumir recursos informáticos como una utilidad en lugar de tener que construir y mantener infraestructuras de computación propias. Por este motivo es necesario escoger una plataforma de nube que permita gestionar estos datos que deseamos almacenar en la nube. Las plataformas de nube más utilizadas actualmente son: AWS [19], Microsoft Azure [20] y Firebase [21]. Estos 3 servicios tienen características muy similares. Inicialmente pensé en escoger Microsoft Azure, ya que pertenece a Microsoft y por tanto sería bastante adecuado puesto que se han seleccionado dos opciones de Microsoft para el desarrollo de esta aplicación. El inconveniente que tiene esta plataforma es que es totalmente nueva para mí y eso hace que sea necesario 23
investigar e invertir tiempo en descubrir cómo funciona y como almacenar datos en ella. Por este motivo decidí comparar esta plataforma con Firebase. La ventaja de esta plataforma es que ya he trabajado con ella y por tanto no es necesario invertir tiempo en descubrir cómo funciona o como utilizarla dentro de mi aplicación. Comparando ambas posibilidades he conseguido descubrir que Google Cloud está más orientado al usuario y ofrece una serie de servicios que facilitan la vida al programador como son el acceso con Google y la autenticación de usuarios. Microsoft Azure está orientado más al mundo empresarial. Por otro lado, tenemos Amazon Web Services, que como podemos ver en la comparativa que realizan en profundidad en la web “embersoftware” [22], podemos corroborar que Firebase es la mejor opción. Por estos motivos finalmente decidí escoger Firebase. Una vez decidida la plataforma, era importante escoger correctamente el tipo de base de datos a utilizar, ya que Firebase tiene 2 bases de datos distintas: • Real-Time Database: Es la base de datos original de Firebase. Es una solución eficiente destinada a las apps para dispositivos móviles que necesitan estados sincronizados entre los clientes en tiempo real. • Cloud Firestore: Es la base de datos más reciente de Firebase para el desarrollo de apps para dispositivos móviles. Aprovecha lo mejor de Realtime Database. Se pueden realizar consultas rápidas y complejas. Database utiliza un sistema de JSON para almacenar sus datos, mientras que Firestore utiliza un sistema de colecciones, más conocido como diccionario. Firestore almacena los datos por parejas clave, valor. Debido a que Firestore es más moderno, utiliza lo mejor que tiene Database además de tener funcionalidades extra como las consultas complejas, he decidido utilizar Firestore como base de datos. 5.4. Diseño Por último, en cuanto a tecnologías se refiere es necesario determinar que programa se utilizará para realizar el diseño de la aplicación. Hay una gran variedad de programas que permiten realizar las plantillas de nuestra aplicación y con cierta facilidad. El más conocido y con mayor potencial es Adobe XD [23]. Adobe XD 24
permite diseñar todo tipo de componentes totalmente personalizados. Es una herramienta muy potente y muy utilizada para el diseño. También permite realizar el flow que seguirá nuestra aplicación cada vez que se realiza una acción en la pantalla. Como podemos ver es una herramienta muy potente y, pero realmente no necesitamos una herramienta tan potente puesto que el peso de este proyecto está en el desarrollo. En caso de ser diseñador seria la herramienta escogida. En este caso es más sencillo utilizar una aplicación que nos facilite un poco el trabajo y nos de los componentes diseñados. Esto hará que el tiempo de creación de las pantallas se reduzca puesto que simplemente habrá que posicionarlos en la pantalla, no crearlos desde 0 como en Adobe XD. Por estos motivos la aplicación que se ha escogido es Balsamiq [24], que como hemos comentado anteriormente, tiene unos componentes nativos de cada plataforma que nos permitirán crear unos MockUps muy conseguidos para hacernos una idea de cómo quedará la aplicación. 25
6. Descripción de tareas En todo proyecto es importante desgranarlo en partes y saber definir que función va a tener cada parte y en qué va a consistir. Esto nos permite llevar un control exhaustivo del proyecto. Por ese motivo a continuación se definirán las tareas a realizar en este proyecto. Como hemos escogido una metodología basada en prototipos, las tareas de este proyecto se dividirán en dos grupos, tareas de gestión del proyecto y tareas de desarrollo de prototipos. Para cada tarea se especificará un identificador, las horas estimadas, un título, una descripción, las dependencias que tiene la tarea y los recursos utilizados. 6.1. Tareas de gestión de proyecto ● GP1 → Alcance y contextualización del proyecto (20h): Realización de la primera entrega de la documentación del proyecto. Consta del contexto, la justificación, el alcance del proyecto, la metodología escogida y las referencias. Dependencias: - Recursos Humanos: Desarrollador. Recursos Materiales: PC, Google drive, Word, Excel, Generador APA [25] ● GP2 → Planificación temporal (10h): Realización de la segunda entrega de la documentación del proyecto. Consta de la descripción de tareas, estimaciones, Gantt y gestión de riesgos. Dependencias: GP1 Recursos Humanos: Desarrollador. Recursos Materiales: PC, Google Drive, Word, GanttProject [26] ● GP3 → Presupuestos y sostenibilidad (15h): Realización de la tercera entrega de la documentación del proyecto. Consta de los presupuestos para la identificación, estimación y control de los costes y un informe de sostenibilidad. Dependencias: GP2 Recursos Humanos: Desarrollador Recursos Materiales: PC, Google Drive, Word, Excel ● GP4 → Documento final (70h): Realización de la documentación final del proyecto. Consta de toda la documentación relacionada con el proyecto. Dependencias: GP1, GP2, GP3 Recursos Humanos: Desarrollador y tutor TFG Recursos Materiales: PC, Google Drive, Word 26
● GP5 → Refinamiento prototipo (0,5h): Al finalizar un prototipo se realiza una reunión para aceptar el prototipo finalizado o para escoger los cambios que hay que realizar. Dependencias: - Recursos Humanos: Desarrollador y tutor TFG. Recursos Materiales: PC, Google Meet [27] 6.2. Tareas de desarrollo de prototipos Dentro del desarrollo de prototipos tenemos diferentes partes, la parte de diseño y la parte de desarrollo. 6.2.1. Tareas de Diseño ● DMU → MockUps (10h): Diseño de las plantillas de las diferentes pantallas que tendrá la aplicación. Dependencias: - Recursos Humanos: Desarrollador Recursos Materiales: Balsamiq, PC ● DBD → Diseño de Base de Datos (15h): Diseño de la base de datos en la que se almacenarán los datos de la aplicación Dependencias: - Recursos Humanos: Desarrollador Recursos Materiales: PC, DrawIO [28], Firebase ● DBE → Diseño del BackEnd (15h): Diseño del BackEnd de la aplicación. Dependencias: DBD Recursos Humanos: Desarrollador Recursos Materiales: PC, VisualStudio Por lo que respecta a la parte del desarrollo, debido a la metodología escogida, dividiremos esta parte en prototipos. Cada prototipo corresponderá a las diferentes funcionalidades o apartados que tendrá la aplicación: 27
6.2.2. Prototipo de Login ● PL1 → Creación de la pantalla de login (30h): Implementación de la parte visual de la pantalla de logIn. Dependencias: DMU Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio [29], Xamarin [30] ● PL2 → Implementación lógica LogIn (30h): Implementación de la lógica necesaria para poder iniciar sesión en la aplicación. Dependencias: PL1 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin ● PL3 → Cifrado de contraseña (15h): Implementación del cifrado de contraseñas para dar más seguridad a los usuarios que utilicen la aplicación. Dependencias: PL2 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin ● PL4 → Conexión con la Base de Datos (10h): Integración de la base de datos para poder almacenar los usuarios y poder gestionarlos. Dependencias: PL2, DBD Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin, Firebase ● PL5 → Creación de perfil (20h): Implementación de la pantalla que permite crear un nuevo usuario. Dependencias: DBD, PL2, PL4 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin, Firebase 28
6.2.3. Prototipo de Chat ● PC1 → Creación pantalla de Chat (25h): Implementación del diseño necesario para el prototipo de Chat. Dependencias: DMU Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin ● PC2 → Implementación lógica básica (25h): Implementación de la lógica más básica del prototipo de chat. Esta consistirá en mostrar por pantalla los mensajes que voy escribiendo Dependencias: PC1 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin ● PC3 → Conectividad entre dos usuarios (30h): Implementación de la lógica necesaria para conectar dos usuarios y poder mostrar los mensajes que se envían. Dependencias: DBD, PC1 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin, Firebase ● PC4 → Cifrado de los mensajes (20h): Implementación del cifrado de mensajes que se envían a través de la aplicación. Dependencias: PC2 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin 6.2.4. Prototipo de Perfil ● PP1 → Creación pantalla de Perfil (30h): Implementación del diseño de la pantalla de perfil. Dependencias: DMU Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin 29
● PP2 → Modificación perfil (20h): Implementación de la lógica de la pantalla de perfil. Permitirá al usuario modificar información básica del perfil del usuario incluidas las fotografías. Dependencias: PP1, DBD Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin, Firebase ● PP3 → Eliminación de perfil (15h): Implementación de la lógica que permite eliminar un usuario. Dependencias: PP1, DBD Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin, Firebase 6.2.5. Prototipo de Búsqueda ● PB1 → Creación pantalla Búsqueda (30h): Implementación de la pantalla de búsqueda. Dependencias: DMU Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin ● PB2 → Implementación de la lógica (25h): Implementación de la lógica necesaria para mostrar una lista de mascotas. Dependencias: PB1 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin ● PB3 → Filtro de búsqueda (25h): Implementación del filtro que permita al usuario mostrar una lista de mascotas concretas. Dependencias: PB2, DBD Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin, Firebase 30
● PB4 → Formato Match (25h): Implementación de la funcionalidad que permite dar Me Gusta a una mascota de la lista y que en caso que sea recíproco activa el chat entre ambos. Dependencias: PB1 Recursos Humanos: Desarrollador Recursos Materiales: PC, Visual Studio, Xamarin 31
7. Estimaciones y Gantt En la tabla 4, podemos ver un resumen de las diferentes tareas y la estimación en horas de cada una. Además, veremos las dependencias y recursos que necesitaremos para realizar cada una. Tabla 4. Resumen de las tareas del proyecto. A continuación, en la figura 3, veremos un diagrama de Gantt en el que se desglosan las diferentes tareas a lo largo del tiempo. En este diagrama podemos ver el inicio y el final del proyecto. Como podemos apreciar el proyecto tiene una estimación de finalizar el 17 de junio, 2 semanas antes de la presentación de dicho proyecto. Esto está pensado a propósito ya que se dejan 2 semanas por si se alarga alguna tarea o alguna estimación se queda corta. Además, hay que realizar una presentación del proyecto que eso también requiere cierto tiempo de preparación y ese periodo es ideal. 32
Figura 3. Diagrama de Gantt de las tareas del proyecto. 33
8. Gestión de los riesgos Como ya hemos visto previamente hay una serie de riesgos y obstáculos que pueden aparecer a lo largo del proyecto. En caso que estos aparezcan debemos evitar que paralicen el desarrollo o retrasen demasiado los plazos estimados. Para conseguir que esto no pase, vamos a dar unas posibles soluciones a estos problemas. 8.1. Inexperiencia tecnologías utilizadas Uno de los problemas que más impacto puede tener en el proyecto es el utilizar tecnologías de las cuales no se tienen conocimiento para desarrollar la aplicación, como es el caso de Xamarin y Microsoft Azure. Para minimizar estos riesgos se estudiarán previamente las dos tecnologías a utilizar y se realizarán tutoriales para iniciarse en dichas tecnologías. Además, se sobreestimarán las horas de las tareas que requieren la utilización de estas tecnologías. Como recurso adicional se utilizará un curso especializado en las tecnologías utilizadas y documentos relacionados con estas. 8.2. Fechas de entregas fijadas Este es un problema con una incidencia muy baja en el proyecto ya que no afecta a la duración de este debido a que desde el principio del mismo se conocen todas las fechas y ya se estiman todos los procesos y tareas teniéndolas en cuenta. Para resolver este problema se añaden a la estimación 10h por si en algún caso no se ha planificado correctamente tener un pequeño margen. No se necesitarán recursos adicionales. 8.3. Bugs Uno de los mayores problemas en el mundo de la programación son los bugs, es decir errores de compilación o de comportamiento de la aplicación. Para minimizar el impacto que tienen estos errores en la aplicación es necesario realizar un proceso de testing y debug exhaustivo cada vez que se finaliza una tarea. Para realizar estas pruebas se utilizarán potenciales usuarios externos para que hagan pruebas en la aplicación además de las pruebas que realice el desarrollador. No se utilizarán recursos materiales adicionales, pero sí que se utilizarán recursos humanos adicionales, que serán usuarios potenciales externos. 34
También puede leer