Está en la página 1de 100

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

9.1. Identificación de los costes

Para poder realizar una correcta estimación de los costes que va a suponer este proyecto,
tenemos que tener en cuenta distintos factores que afectan a estos: costes de personal y
generales. Por último, también habrá que tener en cuenta los costes de contingencia e
imprevistos.

9.1.1. Costes de Personal

El coste de personal hace referencia a los costes que supondrán los diferentes roles de personal
que tendremos en el equipo para desarrollar las diferentes tareas descritas previamente en el
diagrama de Gantt. Para poder realizar una correcta estimación del salario de cada rol, hemos
consultado LinkedIn Salary [31].

Rol Sueldo/hora (bruto) Sueldo/hora (bruto) + Seguridad


Social

Jefe de Proyecto 23,21€ 30,17€

Arquitecto Software 25,91€ 33,68€

Desarrollador Front-end 15,66€ 20,36€

Desarrollador Back-end 19,15€ 24,89€

Diseñador 12,39€ 16,11€

Desarrollador junior 13,12€ 17,06€

Tester 12,42€ 16,15€

Tabla 5. Salario neto y bruto según en función del rol

Como podemos ver en la tabla 5, hemos calculado el coste bruto y el coste bruto más el gasto
de la seguridad social de cada rol. Para conseguir esto hemos multiplicado por 1.3 el
sueldo/hora bruta de cada rol. Este valor es el que utilizaremos para estimar el valor de la parte
de desarrollo del proyecto.

35
Una vez definido el coste por rol, podemos definir una estimación de cada una de las tareas que
debemos realizar, definidas previamente en la Tabla 4. En la tabla 6 podemos ver por cada tarea
el reparto de horas dividido por roles y el coste total de dicha tarea.

Tabla 6. Resumen del coste del proyecto dividido en roles.

9.1.2. Costes generales

Dentro de los costes generales tenemos diferentes tipos: Software, Hardware y mobiliario. Para
calcularlo tendremos en cuenta los diferentes programas a utilizar, aparatos necesarios y el
lugar de trabajo para poder realizar correctamente las tareas. Dichos costes tienen una fórmula
para poder calcular la amortización que tiene y por tanto saber lo que realmente nos costaría.

𝐶𝑜𝑠𝑡𝑒 (€)
× 𝐷𝑢𝑟𝑎𝑐𝑖ó𝑛 𝑑𝑒𝑙 𝑝𝑟𝑜𝑦𝑒𝑐𝑡𝑜 (ℎ𝑜𝑟𝑎𝑠)
𝑉𝑖𝑑𝑎 ú𝑡𝑖𝑙 (𝑎ñ𝑜𝑠) × 𝐷í𝑎𝑠 𝑙𝑎𝑏𝑜𝑟𝑎𝑏𝑙𝑒𝑠 𝑎𝑙 𝑎ñ𝑜 × 𝐷𝑒𝑑𝑖𝑐𝑎𝑐𝑖ó𝑛 𝑑𝑖𝑎𝑟𝑖𝑎 (ℎ𝑜𝑟𝑎𝑠)

36
Tendremos en cuenta 220 días laborables al año, una dedicación diaria de 5h y una duración
del proyecto de 552 horas.

9.1.2.1. Software

El coste del software vendrá determinado por las licencias anuales necesarias para utilizar los
programas necesarios. A continuación, mostraremos una tabla con los diferentes programas
utilizados y el coste de sus licencias. Es cierto que hay muchos programas que son totalmente
gratuitos, por ese motivo no los contemplaremos en la siguiente tabla.

Software Coste (€) Amortización (€)

Firebase [32] 0.18€ / GB 18€

Microsoft 360 [33] 99 € / año 49,68€

GitHub [34] 4€ / (usuario*año) 2€

Total 69,68 €

Tabla 7. Resumen de costes de Software.

9.1.2.2. Hardware

Para poder realizar el desarrollo de la aplicación necesitaremos material con el cual podamos
trabajar. Por ese motivo a continuación se muestra una tabla que contiene los diferentes
materiales necesarios para llevar a cabo el proyecto. Tendremos en cuenta que la vida útil de
los diferentes materiales utilizados será de 4 años

Hardware Coste (€) Amortización (€)

MSI PS42 Modern 8RC-001ES 1299€ 162,97€


(Portátil) [35]

BenQ GW2480T (Monitor) [36] 196,85€ 24,69€

Logitech Wireless Mouse M185 10,90€ 1,37€


(Raton) [37]

Ewent EW3109 (Teclado) [38] 7,25€ 0,91€

Total 189,94 €

Tabla 8. Resumen de los costes de Hardware

37
9.1.2.3. Mobiliario

Para finalizar los costes generales debemos tener en cuenta el lugar de trabajo en el que
desarrollaremos nuestra aplicación. Debemos tener en cuenta el alquiler, el mobiliario, la luz y
el internet que necesitaremos. Todos estos datos se muestran en la tabla 9. Tendremos en cuenta
que la vida útil de los recursos es variada. Nosotros contemplaremos que en el precio de la
oficina viene todo el mobiliario incorporado junto con internet, por ese motivo no tendremos
que tener en cuenta su coste.

Recurso Coste (€) Amortización (€)

Alquiler oficina [39] 1080€ / anuales 541,96€

Electricidad 0.10352 €/kWh 8,86€

Total 550,82€

Tabla 9. Resumen del coste del mobiliario.

9.2. Estimación de costes

Para finalizar realizaremos una estimación general de los costes totales de nuestro proyecto.
Para realizar esta estimación tendremos en cuenta todos los costes calculados previamente y
añadiremos el coste que tienen los imprevistos y la contingencia. La contingencia suele estar
en torno al 5-10% del total del coste del proyecto.

9.2.1. Coste de imprevistos

A continuación, en la tabla 10, podemos encontrar un resumen de los diferentes imprevistos


que podemos encontrar en el proyecto y el coste asociado a cada uno.

Imprevisto Probabilidad Horas Coste Estimado Coste (€)


(€)

Inexperiencia con 60% 15h 255,9€ 153,54€


tecnologías

Bugs 50% 25h 426,5€ 213,25€

Fechas entregas 10% 10h 170,6€ 17,06€


fijas

Total 383,85€

Tabla 10. Resumen del coste de los imprevistos.

38
Para finalizar con la estimación de los costes a continuación en la tabla 11, se muestra un
resumen total de los costes estimados para nuestro proyecto. Esta tabla está dividida en los
diferentes apartados que podemos encontrar dentro de la estimación.

Tabla 11. Tabla resumen de los costes totales detallados del proyecto .

9.3. Control de Gestión

Para ser capaz de llevar un control del gasto real que lleva el proyecto es necesario llevar un
control exhaustivo. Para poder llevar un control correcto es necesario anotar el coste real de
cada tarea. Para ello tendremos varias fórmulas que nos permitirán calcular correctamente el
coste de cada tarea. De esta manera podemos saber si estamos desarrollando el proyecto dentro
del presupuesto estimado, es decir, podremos saber el desvío que tenemos. A continuación,
mostraremos las fórmulas necesarias:

● Desvío de mano de obra en precio (desvío en coste por tarifa)

(coste estimado – coste real) * consumo horas real

(158,42 – 124,74) * 35h = 1164.1€

39
● Desvío de mano de obra en consumo (desvío en eficiencia)

(consumo horas estimado – consumo horas real) * coste estimado

(552h – 573h) * 158,42 = -3326.82€

40
10. Análisis y diseño

10.1. Modelo conceptual

El modelo conceptual de un sistema es una representación gráfica del mismo. Sirve para ayudar
a comprender o conocer el tema que representa dicho sistema.
Los modelos conceptuales son a menudo abstracciones de cosas en el mundo real, ya sean
físicas o sociales.
El objetivo principal de un modelo conceptual es transmitir los principios fundamentales y la
funcionalidad básica del sistema que representa. Además, un modelo conceptual debe
desarrollarse de tal manera que proporcione una interpretación del sistema fácilmente
comprensible para los usuarios del modelo.

10.1.1. Diagrama de clases

Un diagrama de clases es un diagrama que describe la estructura de un sistema. Nos muestra


las clases, los atributos de estas y las relaciones entre ellas.
A continuación, en la figura 4 tenemos el diagrama de clases correspondiente a nuestro sistema.

Figura 4. Diagrama de clases del sistema

41
Como podemos observar, nuestro sistema consta de un animal, el cual no puede existir por sí
solo, ya que compone un usuario. Esta relación es 1 a 1, lo que quiere decir que un usuario está
asociado a un animal y un animal solo puede asociarse a un usuario. Inicialmente he decidido
plantearlo así para facilitar un poco la implementación, pero con un poco más de tiempo una
ampliación sería cambiar esta relación a 1..*, es decir, que un usuario tenga asociados 1 o más
animales.
Además, tenemos una relación * a * entre animal y animal llamada Match. Esta relación se
activará cuando un usuario desde el perfil de un animal le de like a un animal. Como podemos
ver un animal solo puede asignar un like a un animal concreto, pero a ese animal muchos
animales le pueden dar like, eso es lo que indica la relación 0..1-* que asocia animal y Like.
Esta relación es meramente conceptual para poder representar en este diagrama cómo funciona
el tema likes.

Para que se cumpla la relación Match es necesario que ese animal también haya dado like al
animal logueado en ese momento. Esta relación nos permite crear una clase llamada chat que
nos servirá para almacenar los mensajes entre los dos usuarios compuestos por los animales.
Por último, tenemos que la clase chat está compuesta por 0...N mensajes.

10.1.2. Restricciones de integridad

Toda base de datos contiene unos datos que deben reflejar la realidad. Esto significa que deben
tener valores que reflejen la realidad correctamente. Puede ser bastante frecuente que ciertas
combinaciones de valores para las tuplas de las relaciones no tengan sentido.

Por estos motivos es necesario que dichos datos tengan cierta consistencia. Para conseguir esa
consistencia debemos definir ciertas reglas de integridad. Hay diferentes tipos de reglas de
integridad que utilizaremos y definiremos a continuación.

10.1.2.1. Restricción de valor no nulo

Esta restricción consiste en evitar que un atributo de nuestra base de datos tenga un valor nulo.
Concretamente la utilizaremos para todos aquellos atributos que son obligatorios y necesarios
para el correcto funcionamiento de nuestra aplicación.

42
10.1.2.2. Restricción de unicidad

La restricción de unicidad permite que no haya dos tuplas que tengan el mismo valor en un
conjunto de atributos. Esta restricción nos permitirá que no se repitan los valores identificativos
de cada clase y por tanto que podamos realizar búsquedas a partir de ese atributo.

10.1.2.3. Integridad referencial

La integridad referencial garantiza que la relación entre dos tablas permanezca sincronizada
durante las operaciones de actualización y eliminación.
Para que se realice con éxito, toda clave externa de una tabla debe contener un valor válido en
la tabla a la que se referencia. Por este motivo se utilizan las Primary key y Foreign key.

• Primary Key: Conjunto de valores que permiten identificar inequívocamente una tupla
de la tabla.

• Foreign Key: Hace referencia a la clave primaria de la tabla a la que se quiere hacer
referencia permitiendo realizar una asociación entre dichas tablas.

10.2. Modelo de casos de uso

Un modelo de caso de uso es un modelo de las funciones previstas del sistema y su entorno y
sirve como un contrato entre el cliente y los desarrolladores. Los casos de uso sirven como
hebra de unión a lo largo del desarrollo del sistema. El mismo modelo de caso de uso es el
resultado de la disciplina de Requisitos y se utiliza como entrada para disciplinas de Prueba,
Diseño y Análisis.
El modelo de Casos de Uso es un conjunto de escenarios de éxito y errores que nos permite
determinar las entidades del sistema mediante la realización de objetivos.
Estos escenarios podemos visualizarlos en un diagrama de casos de uso.

El diagrama de casos de uso es una representación gráfica de las interacciones entre un usuario
y el sistema. Permiten visualizar los diferentes tipos de roles en un sistema y cómo esos roles
interactúan con el sistema.
Todo diagrama de casos de uso está constituido por diferentes objetos que se explican a
continuación:

43
10.2.1. Casos de uso

Un caso de uso representa una función o una acción dentro del sistema. Se representa como un
óvalo y la etiqueta interior indica la función del sistema. En la imagen siguiente podemos ver
un ejemplo:

En la figura 5 podemos observar cómo tenemos un caso de uso por cada acción que podemos
realizar en nuestro sistema. Además, podemos ver una relación entre dos casos de uso que son
“Enviar mensaje” y “Enviar notificación” con la etiqueta de <<include>>. Esta relación quiere
decir que el caso de uso Enviar mensaje incluye el caso de uso Enviar notificación, por tanto,
cuando enviemos un mensaje estaremos enviando una notificación también.

10.2.2. Actores

Un actor es un clasificador que modela un tipo de rol que juega una entidad que interacciona
con el sujeto pero que es externa a él. Estos se representan mediante un icono de persona con
el nombre que identifica al actor debajo, como podemos ver en la imagen siguiente:

Como podemos ver en la figura 5 en nuestro sistema tendremos simplemente dos actores:

• Usuario: El usuario será el actor encargado de realizar todas las acciones posibles
dentro de nuestra aplicación. Este actor hace referencia al propio usuario que utiliza la
aplicación.

44
• Sistema: El sistema será un actor interno de nuestra aplicación que se encargará de
enviar notificaciones cuando se realicen ciertas acciones.

10.2.3. Paquete

Los paquetes sirven para agrupar los casos de uso. Esto nos permite identificar los casos de uso
que tienen relación o que se encuentran en una parte determinada de nuestro sistema. Se
representan mediante un rectángulo con una etiqueta como se muestra a continuación:

En nuestro diagrama de la figura 5 podemos observar cómo hay 4 paquetes diferenciados por
colores. Hemos decidido agrupar los casos de uso según el apartado al que pertenece su
funcionalidad.

Figura 5. Diagrama de casos de uso

45
10.3. Modelo de comportamiento

Los modelos de comportamiento nos permiten describir el comportamiento del sistema en su


totalidad. A continuación, definiremos los diagramas de secuencia del sistema y los contratos
de operaciones.

10.3.1. Diagrama de secuencia

Un Diagramas de Secuencia muestra la forma en que un grupo de objetos se comunican


(interactúan) entre sí a lo largo del tiempo mediante el intercambio de mensajes para cumplir
un objetivo concreto.
A continuación, mostraremos los diferentes diagramas de secuencia de nuestro sistema:

• Registro

A continuación, se muestran los diagramas de secuencia del apartado de registro de


nuestro sistema. Estos son los de inicio de sesión, registro y recuperar la contraseña.

En el diagrama 1 podemos ver el diagrama de secuencia correspondiente al inicio de


sesión.
El usuario realiza la acción de inicio de sesión pasando el email y la contraseña. Acto
seguido, se comprueba que el email sea válido mediante la clase Utils y en caso de ser
cierto, se hace una petición a la base de datos para iniciar sesión con los datos pasados.
La base de datos nos devuelve un booleano que será true en caso que se haya iniciado
sesión y false en caso contrario.

Diagrama 1. Diagrama secuencia Inicio sesión.

46
En el diagrama 2 podemos ver el diagrama de secuencia correspondiente al registro de
un nuevo perfil.

Para registrar un nuevo perfil el usuario proporciona dos valores que son el email y la
contraseña. Lo primero que hace el sistema es comprobar que el email es válido. En
caso de no ser correcto devuelve un false conforme no se ha podido realizar la
operación.
Para validar el email, utiliza la clase Utils como ya vimos en el diagrama 1. En caso de
ser válido, se valida la contraseña, mediante la clase Utils también, que cumpla con los
requisitos establecidos. Si esta validación es correcta envía una petición a la base de
datos para crear un nuevo usuario que nos devuelve un booleano conforme si se ha
podido crear o no, que es lo que devuelve nuestra función.
En caso que la contraseña sea incorrecta retorna un false.

Diagrama 2. Diagrama de secuencia Registrar perfil

En el diagrama 3 podemos ver el diagrama de secuencia correspondiente a la acción de


recuperar la contraseña.

47
Para recuperar la contraseña el usuario debe pasar un email. El sistema comprueba que
el formato del email es válido mediante la clase Utils.
En caso que no tenga el formato correcto la función devuelve false.
Si es correcto, envía una petición a la base de datos para comprobar si existe un usuario
con el email introducido en nuestro sistema. Esta petición nos devuelve un idUsuario.
El sistema comprueba que este ID es diferente de null y en caso afirmativo, realiza una
nueva petición a la base de datos para recuperar la contraseña del usuario
correspondiente.
Una vez realizada la petición, la base de datos envía un email para poder cambiar la
contraseña al usuario indicado.
En caso que no exista ningún usuario con un email como el indicado en nuestro sistema,
devuelve null y por tanto nuestro sistema al comprobarlo retorna un false indicando que
no se ha podido realizar correctamente la recuperación de la contraseña.

Diagrama 3. Diagrama de secuencia Recuperar contraseña

• Búsqueda

En este apartado tenemos los diagramas de secuencia correspondientes con la búsqueda


de animales de nuestra aplicación.

48
Para buscar animales concretos dentro de nuestra aplicación el usuario introduce una
serie de filtros en la aplicación y se los pasa a la pantalla de búsqueda como podemos
ver en el diagrama 4.
El sistema realiza una consulta a la base de datos con los filtros recibidos y esta
devuelve una lista con los IDs de los animales que cumplan con los requisitos.
Una vez recibida la lista de animales, se recorre la misma y en cada iteración se realiza
una nueva consulta a la base de datos, pero esta vez para obtener el animal
correspondiente con el identificador extraído de la lista.
Este animal que nos devuelve la BBDD se añade a una lista que será la que se devuelva
al finalizar el bucle.

Diagrama 4. Diagrama de secuencia Búsqueda animales.

La acción de dar un like es un poco más compleja como podemos ver en el diagrama 5.
El usuario indica el animal al cual desea darle un like y se lo manda al sistema. Este se
encarga de hacer una petición a la base de datos para guardar ese like del usuario y
animal logueado en ese momento hacia el animal indicado.
Se comprueba si ese like ha generado un match mediante la función isMatch.

49
Esta función envía una petición a la base de datos con el id del animal al que se le ha
dado like y esta devuelve el animal. Se comprueba si la lista de likes de este animal
contiene el id del animal del usuario.
En caso afirmativo devuelve true, por tanto, si ha generado match.
En caso negativo devuelve false, por tanto, este like no ha generado ningún match. Este
comportamiento lo podemos ver en el diagrama 6.

Se comprueba el valor retornado por la función isMatch. Si no se ha generado un match,


se acaba la acción.
En caso contrario, se vuelve a realizar una petición a la base de datos pidiendo el usuario
correspondiente al animal con el que se ha hecho match.
Se envía una notificación a este usuario y se añade un nuevo chat a la pantalla de chat
con el usuario devuelto.

Diagrama 5. Diagrama de secuencia Dar un Like.

50
Diagrama 6. Diagrama de secuencia Comprobar si es match.

• Chat

Por lo que al chat respecta se pueden realizar 3 acciones claras que son las de obtener
todos los chats de un usuario, obtener un chat concreto o enviar un mensaje.

Comenzaremos explicando la acción de obtener todos los chats. Podemos ver su


diagrama de secuencia en el diagrama 7.
El usuario realiza la acción de obtener todos los chats. Se hace una consulta a la base
de datos solicitando la lista de chats correspondientes a ese usuario. La lista que
devuelve esa consulta es lo que devuelve esta acción.

51
Diagrama 7. Diagrama de secuencia Obtener Chats.

Otra acción que puede realizar el usuario es la de acceder a un chat concreto. Podemos
encontrar el diagrama de secuencia asociado a esta acción en el diagrama 8. Se hace
una consulta a la base de datos solicitando todos los mensajes correspondientes a ese
chat. La lista que devuelve esa consulta es lo que devuelve esta acción.

Diagrama 8. Diagrama de secuencia Obtener un Chat

Por último, la acción más compleja que tenemos en este bloque por lo que a diagramas
de secuencia se refiere es la de enviar un mensaje. Podemos ver el diagrama de
secuencia en el diagrama 9.
Esta acción comienza con el envío de un mensaje a un usuario concreto. Se hace una
petición a la base de datos de envío de mensaje. Se comprueba la respuesta de esta

52
consulta, en caso que se haya podido enviar, se envía una notificación al usuario al cual
se le ha enviado el mensaje y finaliza la acción.
Si la respuesta de la base de datos es negativa se acaba la acción justo después.

Diagrama 9. Diagrama de secuencia Enviar mensaje

• Perfil

En este bloque tenemos las acciones relacionadas con el apartado de perfil de nuestra
aplicación, por ese motivo solo tenemos 2 posibles acciones.

Comenzaremos explicando la opción más sencilla que es la correspondiente a la


obtención del perfil de un usuario. Esta acción se ve reflejada en el diagrama 10.
Como podemos observar el usuario realiza la acción de solicitar un perfil. Se hace la
petición a la base de datos que devuelve un usuario. Una vez obtenido el usuario se
realiza otra petición para obtener el animal que compone este perfil. Se añaden al
resultado tanto el usuario como el animal obtenido de las consultas y se devuelven.

Como se ha podido comprobar cuando hablamos de obtener un perfil, también estamos


hablando de obtener el animal asociado. Esto es debido a que como en nuestro diagrama
de clases se ha definido la relación entre usuario-animal como 1-a-1, podemos asumir
que todo perfil de usuario tiene un animal asociado, por tanto, he decidido no dividir
estas dos acciones, si no que unirlas en una sola. Por ese motivo a la hora de mostrar el
perfil mostraremos el animal también. Con la acción de modificar podemos ver en el
diagrama 11 que también sucede lo mismo.

53
Diagrama 10. Diagrama de secuencia Obtener perfil.

Finalmente tenemos la acción de modificar el perfil. Como bien he comentado


anteriormente la acción de modificación del perfil es tanto de perfil como de animal a
la vez. Esto está pensado así para en nuestra aplicación tener una sola pantalla en la que
poder modificarlo todo.
Para realizar esta acción, se pasa como parámetro un usuario y un animal. Esta
comprueba primero si el usuario es el mismo que el actual o hay alguna variación.
En caso de que haya una variación, envía una consulta de modificación de usuario a la
base de datos para modificarlo. Esta consulta nos devuelve un booleano. A
continuación, se comprueba si el animal ha sufrido alguna modificación siempre y
cuando el booleano devuelto de la consulta sea afirmativo.
En caso que no haya ninguna modificación se comprueba si hay alguna modificación
en el animal asociado al perfil.
Si se ha modificado el animal se realiza una consulta para modificar el animal. Esta
consulta nos devuelve otro booleano que es el que se devuelve finalmente.

54
Diagrama 11. Diagrama de secuencia Modificar Perfil.

• Utils

Por último, tenemos el bloque de las utilidades. En este bloque tendremos simplemente
dos diagramas de secuencia que son el de validar el email y la contraseña.

Comenzaremos hablando de la validación del email que como podemos ver en el


diagrama 12 es muy sencilla. Esta consiste simplemente en comprobar si el email tiene
una estructura determinada. Dicha estructura está almacenada en la variable
EmailRegex que se utiliza para validar el formato.
Simplemente comprobamos si coincide o no con este formato.
En caso afirmativo guardamos true en el resultado.
En caso negativo guardamos false.
Este resultado es el que devolvemos.

55
Diagrama 12. Diagrama de secuencia función validar email

La otra funcionalidad que tenemos es la de validar la contraseña. Esta consiste en hacer


una serie de comprobaciones que son:

• Contiene 1 mayúscula
• Contiene 1 minúscula
• Contiene 1 número
• Mínimo 6 caracteres

Una vez comprobado que cumple con estos requisitos se valida que contenga un
carácter especial. Para hacer eso se recorre la contraseña carácter por carácter y se
comprueba si dicho carácter está dentro de un conjunto. Este conjunto está formado por
todos los caracteres especiales que hay.
El bucle que recorre todos los caracteres también valida que no se haya encontrado
ninguno que sea especial. En caso de encontrarlo, devuelve true. Si no se encuentra
ninguno devuelve false.

56
Diagrama 13. Diagrama de secuencia validación de la contraseña.

10.3.2. Contratos de operación del sistema

Un contrato describe qué es lo que se espera de una operación concreta. Sirven para definir el
efecto que tienen las operaciones respecto al sistema y cómo le afectan a este.

Los contratos constan de diferentes partes que se muestran a continuación:

• Operación: Nombre de la operación y parámetros.

• Referencia: Casos de uso en los que puede tener lugar esta operación.

• Precondiciones: Suposiciones sobre el estado del sistema o de los objetos antes de la


ejecución de la operación. No se comprueban, se asumen.

57
• Postcondiciones: El estado del sistema y los objetos de este después de ejecutarse la
operación.

A continuación, podremos ver todos los contratos de las operaciones que forman parte de este
sistema. Cada contrato estará contenido una tabla con todos sus datos.

Operación signUp(email: String, password: String)

Referencia Caso de uso Crear Perfil

Precondiciones -

Postcondiciones Se crea un nuevo usuario en la base de datos


CurrentUser pasa a ser el usuario registrado

Operación logIn(email: String, password: String)

Referencia Caso de uso Iniciar sesión

Precondiciones -

Postcondiciones CurrentUser pasa a ser el usuario logueado.

Operación recoveryPassword (email: String)

Referencia Caso de uso Recuperar contraseña

Precondiciones -

Postcondiciones Envía email para cambio de contraseña


Se elimina contraseña del usuario con email = email de la BBDD

58
Operación createUserWithPassword(email: String, password: String)

Referencia Caso de uso Registro

Precondiciones email es diferente de null y tiene el formato correcto


password es diferente de null

Postcondiciones Se crea un usuario nuevo en el sistema

Operación sendMessage(message: String, user: String)

Referencia Caso de uso Enviar Mensaje

Precondiciones mensaje es diferente de null


user existe en el sistema

Postcondiciones Se registra un nuevo mensaje en el sistema


Se envía una notificación al usuario = user

Operación sendNotification (user: String)

Referencia Caso de uso Enviar Mensaje


Caso de uso Dar Like

Precondiciones user existe en el sistema

Postcondiciones User recibe una notificación

Operación Buscar (filtros: List)

Referencia Caso de uso Buscar animales

Precondiciones filtros no es una lista vacía

Postcondiciones Se modifica la lista de animales a mostrar

59
Operación like (animalID: String)

Referencia Caso de uso Dar Like

Precondiciones animalID existe en el sistema

Postcondiciones Se añade un animal a la lista de likes


Si se produce match crea un nuevo chat
Si se produce match envía una notificación

Operación addNewChat (userId: User)

Referencia Caso de uso Dar Like

Precondiciones user existe en el sistema

Postcondiciones Se añade un nuevo chat para ambos usuarios, tanto user como el que esta
logueado en ese momento

Operación isMatch (animalID: String)

Referencia Caso de uso Dar Like

Precondiciones animalID existe en el sistema

Postcondiciones Se añade un nuevo animal a la lista de matchs

Operación modifyProfile (user: Usuario, animal: Animal)

Referencia Caso de uso Modificar Perfil

Precondiciones User existe en el sistema


animal existe en el sistema

Postcondiciones Se modifica el usuario = user


Se modifica el animal = animal

60
Operación modificarUsuario (user: Usuario)

Referencia Caso de uso Modificar Perfil

Precondiciones user existe en el sistema

Postcondiciones Se modifica el usuario user

Operación modifyAnimal (animal: Animal)

Referencia Caso de uso Modificar Perfil

Precondiciones animal existe en el sistema

Postcondiciones Se modifica el animal Animal

10.4. Modelo de estados

10.4.1. Diagrama de estados

El diagrama de estado muestra el conjunto de estados por los cuales puede pasar un objeto
durante su vida en una aplicación en respuesta a eventos. Este proporciona un estado inicial y
un estado final y al menos un estado intermedio por el que pasa nuestra máquina.
A continuación, en la figura # veremos 3 diagramas de estados correspondientes a 3 procesos
que se pueden realizar en nuestro sistema y que harán que varíe el estado de nuestra máquina.
Primero veremos el diagrama de estados del proceso de registro por el cual el usuario puede
acceder a nuestra aplicación.
Debajo de este tenemos la búsqueda de animales. Esta será la parte central de nuestra aplicación
y por tanto es un poco más compleja.
Por último, tenemos el apartado de chat que he decidido ponerlo como un diagrama a parte ya
que dentro del mismo hay diferentes estados por los que puede pasar la máquina independiente
del apartado de búsqueda.

61
Diagrama 14. Diagrama de estados.

62
11. Mockups

Los Mockups son fotomontajes que permiten mostrar cómo queremos o esperamos que quede
el producto final. Sirve para tener una visión de cómo el cliente desea que quede el producto
final.

En este apartado se muestran los mockups de las diferentes pantallas que tendrá la aplicación.
Estos los dividiremos en secciones como ya hemos hecho anteriormente. Estas secciones serán
Registro, Chat, Perfil y Búsqueda.

He decidido agrupar los diferentes mockups en secciones porque son pantallas que están muy
relacionadas y tienen una estructura y un diseño muy similar.

11.1. Registro

En esta sección se muestran los MockUps relacionados con el tema registro como son la
pantalla de inicio de sesión, creación de usuario y recuperación de contraseña.

11.1.1. Pantalla inicio sesión

Como podemos ver en el MockUp 1, la pantalla de inicio de sesión es bastante simple. Hay dos
campos para introducir el email y la contraseña. En caso de que se introduzcan mal los datos
nos saldría una alerta como podemos ver en el MockUp 2.

En esta pantalla también tenemos la posibilidad de acceder con Google.


De color azul en medio de la pantalla tenemos una pregunta con un link que nos redirecciona
a la pantalla de recuperación de contraseña.

Por último, en la parte inferior de la pantalla tenemos un link a la pantalla de registro.

63
MockUp 1. Pantalla inicio Sesión. MockUp 2. Pantalla inicio sesión con alert Error.

11.1.2. Pantalla Creación perfil

Para la pantalla de creación de perfil he optado por utilizar el mismo diseño que la pantalla de
inicio. Esta decisión ha sido tomada para facilitar al usuario el uso de la aplicación y para que
sea más sencilla de entender y manejar.

Como podemos observar en el MockUp 3, la pantalla de creación de perfil es igual que la de


inicio excepto por los botones que tiene en el medio de la pantalla.
Esta pantalla solo tiene un botón de crear cuenta que lo que hace es redireccionar a la pantalla
de creación del perfil de la persona y del animal como podemos ver en el MockUp 4.

En la pantalla de creación del perfil de mascota y persona podemos ver que es una pantalla que
permite hacer scroll, por ese motivo el mockup es tan largo.
En esta pantalla podemos ver muchos campos en los que tenemos que introducir información
a parte de dos campos en los que tenemos que añadir imágenes. Por último, tenemos en la parte
inferior de la pantalla el botón continuar que nos permite crear los perfiles y entrar en la
aplicación.

64
Si algún campo queda vacío y le damos a continuar nos sale un mensaje de error como podemos
ver en el MockUp 5.

Una vez todos los campos estén completos y se proceda a la creación de los perfiles, nos
redirecciona a la pantalla de búsqueda que veremos a más adelante con detalle.

MockUp 3. Pantalla Creación Cuenta

65
MockUp 4. Pantalla creación de perfiles. MockUp 5. Pantalla creación de perfiles con Error

11.1.3. Pantalla Recuperar Contraseña

Para finalizar con las pantallas del apartado de registro tenemos la pantalla de recuperación de
contraseña. Esta pantalla es la más simple de todas, se puede ver su diseño en el MockUp 6.

La idea de esta es introducir el email del usuario que quiere recuperar la contraseña y darle al
botón de enviar contraseña. Esto nos permite recibir una contraseña nueva y por tanto poder
entrar de nuevo en la aplicación.

66
En caso de no existir el email en el sistema, se muestra un error como podemos ver en el
MockUp 7.

MockUp 6. Pantalla recuperar contraseña. MockUp 7. Pantalla recuperar contraseña con error

11.2. Búsqueda

En este apartado se muestran los MockUps relacionados con el tema de búsqueda de mascotas.
Esta es la parte principal de la aplicación. Hay 2 pantallas que se explican a continuación.

Tenemos la pantalla de búsqueda general, la cual consta de una lista de mascotas, donde cada
una tiene su nombre, su edad, su raza y una descripción. Cada mascota tiene un botón de like.
Además, tenemos un botón en la parte superior derecha que nos permite aplicar filtros. Si
pulsamos al botón se nos abre un desplegable desde la parte derecha de la pantalla como
podemos ver en el MockUp 9.
En este desplegable tenemos varios campos que podemos rellenar. También disponemos de un
botón en la parte inferior para que se apliquen los filtros que hemos introducido.

67
MockUp 8. Pantalla de búsqueda. MockUp 9. Desplegable Pantalla Búsqueda

Otra pantalla que tenemos dentro de este bloque es la del perfil de cada mascota. Para acceder
a esta pantalla simplemente hay que pulsar sobre la imagen de la mascota.
Como podemos ver en el MockUp 10, tenemos el carrusel de imágenes en la parte superior de
la pantalla. Debajo de estas se puede ver la información de la mascota y el perfil del usuario
asociado.
Por último, podemos ver un gran botón rojo con un corazón en el centro. La idea de ponerlo
solo en el centro es potenciar su visibilidad ya que la aplicación gira en torno a estos likes.

68
MockUp 10. Perfil de mascota

11.3. Chat

Una vez se ha producido un match entre dos mascotas, se activa la posibilidad de hablar
mediante un chat. Es aquí donde aparecen las pantallas de este bloque.

Por lo que al chat respecta simplemente tendremos una pantalla con todos los chats posibles y
otra pantalla de un chat concreto en la que se puede enviar mensajes.

Para comenzar hablaremos de la pantalla donde se encuentran todos los chats. La idea para
realizar esta pantalla es intentar parecerse lo máximo posible a la pantalla de chats de
WhatsApp. La intención de ser lo más parecido posible es debido a que la gente está muy
familiarizada con WhatsApp, por tanto, no resulta difícil saber utilizar nuestra pantalla.

69
Como podemos ver en el MockUp 11, la pantalla consta de una lista de chats donde cada celda
contiene la foto de la mascota junto con la del perfil del usuario, el nombre y la edad de la
mascota y la raza.

MockUp 11. Pantalla de chats.

En caso de recibir un mensaje y no ser abierto, se añade una notificación a ese chat. Esta
notificación queda reflejada mediante un círculo de color rojo con el número de mensajes sin
leer en el interior de este círculo.

Una vez recibido el mensaje y abierto el chat, aparece una nueva pantalla, la pantalla de chat.
Esta pantalla sigue el mismo patrón que la pantalla de chats, que es tener una estructura similar
a la de WhatsApp. En esta pantalla podemos observar que en la parte inferior tenemos un

70
recuadro que nos permite escribir. A la derecha de este recuadro se ve un botón redondo con el
símbolo de envío, que permite enviar el mensaje al otro usuario.
En la parte central podemos ver los diferentes mensajes y en la parte superior se puede ver el
perfil con el que tenemos la conversación. A continuación, en el MockUp 12 podemos ver el
diseño de la pantalla.

MockUp 12. Pantalla de chat

11.4. Perfil

Por último, tenemos el bloque de perfil. En este tendremos una sola pantalla en la que somos
capaces de modificar todo aquello que tenga que ver con nuestro perfil o el de nuestra mascota.

71
En esta pantalla simplemente tendremos un campo por cada dato que tenga nuestro perfil. En
la parte inferior de la pantalla hay un botón de modificar, que permite enviar a la base de datos
los datos actuales.

MockUp 13. Pantalla perfil

72
12. Implementación

A la hora de desarrollar una aplicación es muy importante dividir las diferentes partes que tiene
esta. La división suele ser:

• Parte visual: Pantallas que corresponden a la aplicación y con las que interacciona el
usuario.

• Lógica: Parte donde se ejecuta toda la lógica de la aplicación y donde se comunica la


parte visual con la capa de datos.

• Capa de datos: Capa más interna de la aplicación donde se encuentran los datos
necesarios para utilizarla.

Es importante saber abstraer una parte de la otra. Por este motivo es importante que la parte
visual no sepa nada de la capa de datos de la aplicación. Para que esto suceda y que cada parte
se encargue de hacer lo necesario se utilizan patrones de diseño de interfaz.
Un patrón de diseño de interfaz es una solución de diseño para resolver problemas comunes en
temas de interacción e interfaces de aplicaciones.
Concretamente en este proyecto hemos utilizado el modelo Model-View-ViewModel
(MVVM).
Se ha decidido utilizar este patrón porque Xamarin trabaja con él.

Figura 6. Patrón MVVM (Fuente: Microsoft)

La finalidad principal del patrón MVVM es tratar de desacoplar al máximo la interfaz de


usuario de la lógica de la aplicación. Como podemos ver en la figura 6 tiene 3 partes
importantes:

73
• View: La vista es representar la información a través de los elementos visuales que la
componen.

• ViewModel: Contiene toda la lógica de presentación y se comporta como una


abstracción de la interfaz. La comunicación entre la vista y el viewmodel se realiza por
medio de enlaces de datos.

• Model: El modelo contiene la información, pero nunca las acciones o servicios que la
manipulan.

12.1. Librerías

Visual Studio tiene una gran variedad de librerías disponibles para instalar mediante el
complemento NuGet.
NuGet es un complemento para instalar y gestionar librerías de terceros de una manera
automatizada. La propia extensión se encarga de realizar la descarga del paquete, comprobar
que en el proyecto se cumplen todos los requisitos para su instalación e instalarlo.
En este complemento podemos encontrar una gran variedad de librerías específicas para
Xamarin, ya sea para la interfaz, como para la implementación de cualquier funcionalidad.

12.1.1. Syncfusion

Syncfusion [40] es una librería externa muy útil para el diseño de front-end de nuestra
aplicación. Nos proporciona varios controles visuales que nos van ayudar a mejorar la
apariencia gráfica de nuestras aplicaciones, agregando funcionalidades y controles que no
existen de manera predeterminada en Xamarin.Forms.
Esta librería es de pago, aunque tiene una versión gratuita. Además, permite la opción de 30
días de prueba para utilizarla al completo.

12.1.2. Xamarin Firebase

Xamarin Firebase es una librería propia de Microsoft. Esta librería nos permite integrar los
servicios que ofrece Firebase en nuestra aplicación. Este paquete contiene una librería por cada
funcionalidad que tiene Firebase. Por este motivo en nuestra aplicación solo hemos utilizado
un número concreto de estas librerías.
Para ser más concretos hemos utilizado 4 librerías de este paquete:

74
• Core: Nos permite enlazar mediante C# con la API Core de Firebase

• Auth: Nos permite enlazar mediante C# con la API Auth de Firebase. Esta librería se
usa para la autenticación de usuarios y la administración de estos.

• Firestore: Nos permite enlazar mediante C# con la API Firestore de Firebase. Esta
librería nos permite gestionar la base de datos de Firebase.

75
13. Manual de usuario

El siguiente manual se elabora con el fin de poder brindar al usuario final un manejo y
conocimiento adecuado de la aplicación, facilitando la navegación dentro de sus funciones con
pantallazos intuitivos para una mejor comprensión.

13.1. Requerimientos

Los requerimientos mínimos para que la aplicación ANIMAL PAIRS funcione correctamente,
son los siguientes:

• Sistema operativo Android (4.1 o mayor).


• Procesador de 400 MHz.
• Memoria RAM de 256 Mb.
• Conectividad (3G y/o WIFI).

13.2. Uso de la aplicación

13.2.1. Registro Usuario

Para realizar el registro de un nuevo usuario es necesario que al iniciarse la aplicación el usuario
pulse sobre la palabra registrarse. Nos llevará a la pantalla de registro del perfil donde hay que
rellenar todos los campos para que no nos salte el error. Además, es necesario añadir una
fotografía de perfil. La contraseña debe contener 1 letra mayúscula, 1 minúscula, 1 número y
tener 6 o más caracteres.

76
Una vez todos los campos rellenados, le damos al botón de Registrarse como muestra en la
imagen 2. Nos llevará a la pantalla de creación de animal que asociaremos a nuestro perfil. Para
poder crear el animal es necesario rellenar todos los campos y añadir al menos 1 fotografía.
Una vez realizado le damos al botón de X y creamos el animal.

77
13.2.2. Inicio Sesión

Para iniciar sesión simplemente hay que rellenar los campos de email y password con los datos
correctos y darle al botón de iniciar sesión ya que es la primera pantalla que veremos al iniciar
la aplicación. En caso de no introducir los datos correctos nos saltara un error en mitad de la
pantalla con el mensaje de “Error el email y la contraseña introducidos no son correctos”.

78
13.2.3. Navegación

Una vez iniciado sesión veremos la pantalla de búsqueda donde nos saldrán todos los animales.
En la parte inferior podemos ver un menú de navegación con 4 apartados. Tenemos el apartado
chat donde tendremos la lista de los chats disponibles, el de ajustes donde podremos modificar
el perfil y configurar la app y el apartado perfil donde veremos nuestro perfil.

79
80
13.2.4. Ver perfil animal

Si queremos obtener más información sobre un animal debemos dar un click sobre la tarjeta
del animal correspondiente y nos redireccionará a la pantalla detallada del perfil del animal.

1
2

1) Botón de atrás que permite volver a la pantalla de la cual veniamos.

2) Botón de like que permite dar me gusta al animal.

3) Indicador de posicion de fotografia. Nos indica que fotografia estamos visualizando de


todas las que el animal tiene asociadas.

4) Información adicional y detallada al animal seleccionado.

5) Perfil de la persona asociado al animal que hemos seleccionado.

81
13.2.5. Dar Like

Para dar un like a un animal, simplemente es necesario tocar el icono del corazón que tienen
los animales, ya sea en la pantalla de búsqueda o en la pantalla detallada del perfil.

Sabremos que se le ha asignado un like a aquellos animales que veamos con el icono de corazón
de color rojo.
En caso de asignar un like a un animal y que sea reciproco, aparecerá un mensaje en el centro
de la pantalla diciendo que hemos conseguido un nuevo Match. Esto nos permitirá comenzar
una conversación con ese animal en el apartado chat.

82
13.2.6. Mantener conversación

Una vez conseguido es posible entablar conversación con ese animal. Para hacerlo debemos ir
al apartado chats. Dentro de este veremos una lista con todos los chats disponibles.
Para comenzar una conversación debemos pulsar sobre el animal con el que deseamos hablar
y se nos abrirá la pantalla de chat donde podremos enviar y recibir mensajes.
En la parte inferior de esta veremos un apartado donde escribir y un botón de envío. En la parte
superior veremos el perfil del animal con el que estamos hablando. Si pulsamos en el podremos
ir a la pantalla detallada de dicho perfil.

83
84
13.2.7. Ver Perfil

Si deseamos ver nuestro perfil tal y como los demás usuarios lo ven, debemos acceder a la
pestaña perfil que tenemos en la parte inferior de la pantalla como hemos visto ilustrado en el
apartado 13.2.3 de navegación.

13.2.8. Ajustes

En el apartado ajustes tenemos la posibilidad de cambiar la contraseña, editar nuestro perfil,


activar o desactivar las notificaciones, ver ayuda, leer los términos de servicios y la política de
privacidad y las preguntas frecuentes. Para ver ilustrado como acceder a este apartado podemos
acceder al apartado 13.2.3 de navegación.

13.2.9. Cerrar sesión

Si deseamos cerrar sesión y volver a la pantalla de inicio de sesión primero tenemos que acceder
al apartado de ajustes. En la parte inferior, justo encima del menú de navegación tenemos el
botón Log Out que nos cerrará la sesión y nos redireccionará a la pantalla de inicio de sesión.

85
14. Sostenibilidad

14.1. Autoevaluación

El tema de la sostenibilidad es un tema bastante presente cuando hablamos de la universidad.


En varias asignaturas hemos tratado las diferentes dimensiones que tiene este tema.

Por lo que a la dimensión ambiental respecta, hemos aprendido el impacto que dejan los
residuos de hardware obsoletos y los conocidos cementerios tecnológicos en países
subdesarrollados. Como podemos ver, esto también tiene una dimensión social ya que afecta a
la población de aquellos países menos desarrollados, por tanto, hemos podido ver el impacto
que tienen ambas dimensiones.

Respecto a la dimensión económica, no hemos realizado tanto hincapié en dicha dimensión y


lo básico que hemos aprendido es cómo aprovechar las horas amortizando lo máximo posible
y teniendo el gasto más bajo posible.
Una vez realizada la encuesta realizada por los miembros de EDINSOST [10] he podido
reflexionar acerca de mis conocimientos relacionados con el tema de la sostenibilidad. He
descubierto que los conocimientos adquiridos sobre el tema son bastante básicos y que hay
ciertas dimensiones que debería explorar más a fondo cómo sería el caso de la económica. Si
que es cierto que de cara a futuros proyectos me gustaría tener un mayor conocimiento sobre
este tema para poder aplicar estos conocimientos y desarrollar un proyecto mucho más
sostenible.

14.2. Dimensión Ambiental

Respecto a PPP. ¿Has estimado el impacto ambiental que tendrá la realización del
proyecto? ¿Te has planteado minimizar el impacto, por ejemplo, reutilizando recursos?

La realización de este proyecto puede tener un impacto negativo por el hecho de utilizar un PC
para realizarlo lo que hace que disminuya su vida útil. Esto hace que pueda convertirse en
basura tecnológica antes. En cuanto a la reutilización de los recursos, puedo decir que he
decidido reutilizar el PC de uso personal y no comprar uno nuevo.

86
Respecto a PPP. ¿Has cuantificado el impacto ambiental de la realización del proyecto?
¿Qué medidas has tomado para reducir el impacto? ¿Has cuantificado esta reducción?

El impacto ambiental que podría tener este proyecto es:


La basura tecnológica que puede ocasionar debido al uso de la aplicación que consume la vida
útil del teléfono móvil.
La contaminación que puede provocar el echo de tener que desplazarse con el coche a un lugar
en el que poder encontrarse con el otro animal.
Con tal de reducir el impacto he intentado que la aplicación utilice los mínimos recursos y sea
lo más eficiente posible.
No he sido capaz de cuantificar esta reducción ya que depende del teléfono móvil y sus
características tendrá un impacto u otro en él.

Respecto a PPP. Si hicieras de nuevo este proyecto, ¿podrías realizarlo con menos
recursos?

Después de realizar el proyecto completo, es posible reducir los recursos utilizados. Los
problemas surgidos a lo largo del proyecto han hecho que debiese dedicar más recursos de los
necesarios para poder alcanzar el objetivo final del proyecto. Por este motivo, si volviese a
realizar el mismo proyecto seria capaz de reducir los recursos y el tiempo invertido.

Respecto a la Vida útil: ¿Cómo se resuelve actualmente el problema que quieres abordar
(estado del arte)? ¿En qué mejoraría ambientalmente tu solución respecto a las
existentes?

En cuanto a las soluciones actuales y mi proyecto, el impacto será el mismo debido a que las
personas van a ver los resultados de búsqueda ordenados por cercanía, lo que permite realizar
un desplazamiento menor y por tanto contaminar mucho menos.

Respecto a la Vida Útil. ¿Qué recursos estimas que se usaran durante la vida útil del
proyecto? ¿Cuál será el impacto ambiental de estos recursos?

Este proyecto al tratarse de una aplicación móvil tendrá una vida útil bastante larga. Por ese
motivo considero que los recursos utilizados serán móviles con conexión a internet. Dichos
móviles debido a el uso que se les dará debido al proyecto, acortarán su vida útil y por tanto se
convertirán antes en basura tecnológica.

87
¿El proyecto permitirá reducir el uso de otros recursos? ¿Globalmente, el uso del
proyecto mejorará o empeorará la huella ecológica?

Si permitirá reducir el uso de otros recursos como es el caso del coche. Permitirá reducir el uso
del coche y evitará realizar varios viajes a un mismo lugar ya que la aplicación te permite
conocer bien a la persona y al animal sin necesidad de desplazarte a comprobarlo en persona.
Permite hacerte una idea y saber si estas interesado o no en conocer a ese animal y a su dueño.
Por tanto, globalmente reducirá la contaminación evitando que se hagan varios viajes en coche
y reduciendo la utilización del vehículo, es decir, tendrá un impacto positivo ecológicamente
hablando.

Respecto al Riesgo. ¿Podrían producirse escenarios que hiciesen aumentar la huella


ecológica del proyecto?

Es posible que aumente la huella ecológica del proyecto en caso que haya conexión entre dos
animales que se encuentren a mucha distancia, por tanto, sería necesario realizar un
desplazamiento bastante largo y esto haría que aumentase la contaminación.

14.3. Dimensión Económica

Respecto a PPP. ¿Reflexión sobre el coste que has estimado para realizar tu proyecto?

Teniendo en cuenta el coste estimado de mi proyecto, para saber si es viable realizarlo o no


deberíamos contar con un cierto número de descargas que nos permitieran obtener beneficios.
Teniendo en cuenta que el proyecto es multiplataforma, hay varios mercados para obtener
beneficios, pero si realmente queremos obtener un beneficio deberíamos pensar en incorporar
publicidad en ciertos apartados de la aplicación.

Respecto a PPP. ¿Has cuantificado el coste (recursos humanos y materiales) de la


realización del proyecto? ¿Qué decisiones has tomado para reducir el coste? ¿Has
cuantificado este ahorro?

Si, como podemos ver en apartados anteriores se ha cuantificado el coste tanto humano como
material del proyecto. Para poder reducir este calculo inicial decidí realizar una preparación
del proyecto y un análisis muy exhaustivo para no cometer errores y tener que dedicar más
horas y recursos de lo necesario. El ahorro que he conseguido esta cuantificado en el apartado

88
9.3 Control de Gestión donde se calcula el desvío en horas y en recursos respecto a la
estimación inicial.

Respecto a PPP. ¿Se ha ajustado el coste previo al coste final? ¿Has justificado las
diferencias (lecciones aprendidas)?

Como bien he explicado en las conclusiones no se ajusta mucho debido a que el coste inicial
estaba calculado para todo un equipo de desarrollo, mientras que el coste final ha sido bastante
inferior porque solo un desarrollador ha realizado el proyecto completo.
Las justificaciones mas extensas se encuentran en las conclusiones del proyecto, pero como he
dicho antes la mayor diferencia es el equipo de desarrollo y como consecuencia el tiempo
invertido.

Respecto a la Vida útil: ¿Cómo se resuelven actualmente los aspectos de costes del
problema que quieres abordar (estado del arte)? ¿En qué mejorará económicamente tu
solución respecto a las existentes?

Como bien hemos dicho anteriormente, actualmente con las aplicaciones que hay en el mercado
es complicado encontrar el animal adecuado, por tanto, da opción a grandes desplazamientos
para encontrarse con dicho animal. Por otro lado, la solución que nosotros hemos propuesto
permite encontrar el animal deseado lo más cerca posible, lo que evitaría grandes
desplazamientos y por tanto mejoraría la contaminación.

Respecto a la Vida Útil. ¿Qué coste estimas que tendrá el proyecto durante su vida útil?
¿Se podría reducir este coste para hacerlo más viable?

A lo largo de su vida útil el coste que tendrá este proyecto será el de mantenimiento y
actualización en caso de encontrar una mejora significativa. Es un coste bastante bajo debido a
que simplemente es necesario tener a un desarrollador manteniendo y actualizando el proyecto,
por tanto, es bastante viable. La única forma de reducir el coste es contratar a un desarrollador
simplemente cuando se reporte un error a arreglar y no tenerlo pendiente siempre. Es una forma
de reducir costes, pero no es recomendable ya que perdería eficacia porque bloquearía el uso
de la aplicación a ciertos usuarios hasta que se solucione, mientras que, si hay un desarrollador
en constante mantenimiento, es posible que encuentre los bugs y los solucione antes de que
aparezcan.

89
Respecto a la Vida Útil. ¿Se ha tenido en cuenta el coste de los
ajustes/actualizaciones/reparaciones durante la vida útil del proyecto?

Si, al calcular el coste de la vida útil se contempla reparaciones de bugs y actualizaciones


cuando sea necesario. Entraría todo dentro del coste de mantenimiento de la app.

Respecto a los Riesgos. ¿Podrían producirse escenarios que perjudicasen la viabilidad del
proyecto?

Podría aparecer un crash en la aplicación lo que haría que se tuviese que invertir muchas más
horas y por tanto dispararía el coste de mantenimiento. Esto haría que la viabilidad del proyecto
peligrase debido a su sobre coste.

14.4. Dimensión Social

Respecto a PPP. ¿Qué crees que te aportará a nivel personal la realización de este
proyecto?

A nivel personal este proyecto me ayudará a mejorar mis niveles como desarrollador e
ingeniero de software. Podré experimentar el desarrollo desde 0 y la gestión total de un
proyecto, cosa que es muy útil en el mercado laboral. Además, me permitirá obtener la
satisfacción de saber que he podido ayudar a muchas personas para sus diferentes fines.

Respecto a PPP. ¿La realización de este proyecto a implicado reflexiones significativas a


nivel personal, profesional o ético de las personas que han intervenido?

Este proyecto surge de una reflexión personal. Por ese motivo, durante la realización del
proyecto he podido reflexionar sobre el tema y pensar cual seria la mejor forma de llevar a cabo
el proyecto para alcanzar los objetivos deseados.
La reflexión inicial surge de un problema personal en el que se ve implicada mi mascota y que
me hace pensar como poder solucionarlo. Este proyecto es la solución que se me ocurrió para
que no volviese a suceder.

Respecto a la Vida útil. ¿Cómo se resuelve actualmente el problema que quieres abordar
(estado del arte)? ¿En qué mejoraría socialmente (calidad de vida) tu solución a las
existentes?

90
Actualmente los usuarios interesados no tienen la posibilidad de buscar todo tipo de animales,
únicamente perros. Nuestra solución va a permitir a los usuarios poder encontrar fácilmente
estos animales, además va a ayudar a poder aparear diferentes animales, lo que hace que tengan
menos posibilidades de sufrir un “embarazo psicológico”.

Respecto a la Vida útil: ¿Existe una necesidad real del proyecto?

Este proyecto nace de una necesidad personal por la cual existe una necesidad de aparear a un
animal doméstico y no es posible encontrar el animal adecuado. Una vez pasado este episodio
y después de una investigación en profundidad, puedo decir que actualmente en la sociedad
esta necesidad es bastante común. Por estos motivos la necesidad del proyecto es real.

Respecto a la Vida Útil. ¿Quién se beneficiará del uso del proyecto? ¿Hay algún colectivo
que pueda verse perjudicado por el proyecto? ¿En qué medida?

De este proyecto se beneficiará toda persona que tenga una mascota. Realmente no hay ningún
colectivo que se vea afectado, al contrario, se verán beneficiados debido a que juntar dos
mascotas dará lugar al nacimiento de otras. Esto beneficiará tonto a veterinarios como tiendas
de animales, incluso a cuidadores de animales.

Respecto a la Vida Útil. ¿En que medida soluciona el proyecto el problema planteado
inicialmente?

Es una solución parcial, ya que el echo de utilizar esta aplicación no garantiza que tu mascota
no sufra un embarazo psicológico. El echo de encontrar un animal con el que poder juntar a tu
mascota, ayuda a que no sufra este tipo de enfermedades, por tanto, soluciona en parte el
problema planteado inicialmente.

Respecto a los Riesgos. ¿Podrían producirse escenarios que hiciesen que el proyecto fuese
perjudicial para algún segmento particular de la población?

Podría surgir un problema con este proyecto si se usa con fines lucrativos. Los defensores de
los animales y de sus derechos podrían tener un problema con este proyecto si se usa para
trafico de animales y cría de estos en malas condiciones.

91
Respecto a los Riesgos. ¿Podría crear el proyecto algún tipo de dependencia que dejase a
los usuarios en posición de debilidad?

No, ya que el proyecto simplemente pone en contacto a dos personas si las dos lo desean. No
es posible que cree dependencia de algún tipo ni que dejase en posición de debilidad a ningún
usuario.

92
15. Conclusiones

Después de haber detallado el diseño y el desarrollo de la aplicación, se analizará si se han


conseguido los objetivos marcados inicialmente. Comprobaremos si se ha cumplido la
planificación inicial. Se analizará un posible trabajo futuro y por ultimo se expondrán unas
conclusiones personales después de la realización del proyecto.

15.1. Planificación final

Por lo que a la planificación final respecta, podemos decir que ha variado bastante a la inicial.
La estimación de horas que se hizo inicialmente no se ha cumplido. Se estimaron 552 horas,
pero realmente la realización del proyecto ha llevado 273 horas. Esta variación de horas es
debido a bloqueos.
Durante el desarrollo del proyecto han surgido dos bloqueos importantes que han hecho que la
estimación de horas sea superior a la planteada inicialmente.
El primer bloqueo surgió con el lenguaje y la vinculación de datos entre la vista y la vista-
modelo.
El segundo bloqueo importante apareció con la conexión a la base de datos y la recuperación
de los datos de esta.

Otra variación que ha surgido ha sido el coste, que como podemos ver en el apartado 9.3 la
estimación inicial fue superior al coste real del proyecto. Esto es debido a que, de los roles
propuestos inicialmente, se han utilizado todos menos uno, lo que ha hecho que el coste real
del proyecto sea inferior al inicialmente indicado.

15.2. Objetivos del proyecto

Los objetivos definidos en el apartado Objetivos se han conseguido de manera satisfactoria.

El objetivo se ha alcanzado de manera amplia puesto que consistía en poner en contacto a


diferentes animales con el fin de conocerse. Si hablamos de los subobjetivos, podemos decir
que hemos cumplido casi todos los subobjetivos. A continuación, vemos la justificación del
cumplimiento de cada uno de estos:

• Facilitar la búsqueda de un animal completada, debido a que tenemos una lista de los
diferentes animales del sistema entre los cuales podemos navegar y encontrar al animal
deseado.

93
• Proporcionar contacto entre ambas partes completada, ya que se facilita un chat para
que se puedan poner en contacto los dueños de los diferentes animales y así conocerse
un poco más.

• Permitir comparación entre distintos animales completada debido a que podemos entrar
en el perfil de los distintos animales y ver en detalle sus características. Esto permite al
usuario identificar el animal que más le conviene.

• Permitir privacidad de ciertos usuarios se puede decir que está medio-completado


puesto que los usuarios tienen la obligación de poner su nombre y una foto, pero solo
aparece en pequeño en el perfil del animal. Un usuario puede decir que no quiere tener
que poner una foto y por ese motivo lo califico como está medio-completado, porque
puede que haya usuarios que no consideren que tengan esa privacidad, pero otros sí.

15.3. Trabajo futuro

Este proyecto tiene mucho potencial y por tanto tiene mucho futuro con un par de
funcionalidades que en caso de tener más tiempo se podrían haber implementado. A
continuación, se muestra una lista con las mejoras que se podrían desarrollar en caso de seguir
desarrollando esta aplicación.

• Filtro para la pantalla donde se muestran los distintos animales.

• Implementar el sistema de notificaciones con el que avisar al usuario en caso de Match


o mensaje.

• Implementar sistema de geolocalización para determinar la distancia a la que se


encuentra un animal.

• Poder enviar fotografías y realizar videollamadas a través del chat de la aplicación.

Una vez comentadas las mejoras que se podrían realizar a este proyecto, queda comentar que
posterior a la entrega del mismo, continuará el desarrollo de este hasta alcanzar el nivel
deseado. Una vez alcanzado, se publicará en las tiendas correspondientes.

15.4. Conclusiones personales

Este proyecto ha sido un trabajo duro y intenso, pero muy gratificante a nivel personal. Esta
idea me surgió hace tiempo y siempre quise desarrollar. Una vez finalizado poder ver el trabajo

94
realizado y el resultado obtenido, me hace sentir orgulloso y con ganas de seguir desarrollando
la aplicación. Además, al realizar este proyecto ha sido necesario realizar todo tipo de tareas,
tanto de front-end, como de back-end. Esto me ha servido para darme cuenta que realmente
estoy más interesado en la parte de front-end y por tanto me gustaría desarrollar mi carrera
informática orientada a este sector.

Por último, me ha servido para aprender un nuevo lenguaje el cual no tenia ningún tipo de
conocimiento previo a la realización de este proyecto. Los conocimientos adquiridos a lo largo
del proyecto respecto a este lenguaje han sido bastante amplios, por lo que estoy satisfecho de
lo conseguido.

95
Referencias

[1] “Datos sectoriales ANFAAC” (s.d). Recuperado dehttps://www.anfaac.org/datos-


sectoriales/ Última visita: 25/02/2021

[2] “Estadísticas: Real Sociedad Canina de España (ESPAÑA)” (s.f). Recuperado de


http://www.fci.be/es/statistics/ByNco.aspx?iso=ES Última visita: 25/02/2021

[3] “Definición de Pedigrí” (2014) Recuperado de https://definicion.de/pedigree/ Última


visita: 26/02/2021

[4] Veterinario, H. (2017, 14 septiembre). “Los embarazos psicológicos. Hospital Veterinario


Constitución”. Recuperado de http://www.valenciahospitalveterinario.com/embarazo-
psicologico-perros/ Última visita 26/02/2021

[5] “MatchDog - Connecting dogs worldwide”. (s. d.). MatchDog. Recuperado de


https://matchdog.app/en/ Ultima visita 27/02/2021

[6] Castillo, A. (2021, 22 enero). “Conoce Twindog el curioso Tinder para perros”.
Applicultura. Recuperado de https://applicultura.com/conoce-twindog-el-tinder-para-perros/
Ultima visita 27/02/2021

[7] Tupper, S. (2019, 7 febrero). “‘GetPet’: La nueva app para encontrar perros en
adopción”. Rock&Pop. Recuperado de https://www.rockandpop.cl/2019/02/getpet-la-nueva-
app-para-encontrar-perros-en-adopcion/ Última visita 27/02/2021

[8] “Social Animals”. (s. f.). Recuperado de https://www.socialanimals.es/ Última visita


27/02/2021

[9] RGPD. https://www.boe.es/doue/2016/119/L00001-00088.pdf. Última visita: 27/02/2020

[10] LOPD. https://www.boe.es/buscar/pdf/2018/BOE-A-2018-16673-consolidado.pdf


Última visita: 27/02/2020

[11] Abellán, E. (2020, 6 febrero). “¿Qué es la metodología Agile y qué beneficios tiene para
tu empresa?”. Recuperado de https://www.wearemarketing.com/es/blog/que-es-la-
metodologia-agile-y-que-beneficios-tiene-para-tu-empresa.html Última visita: 27/02/2021

[12] Sharma, K. (2020, 25 diciembre). “Top 12 Software Development Methodologies & its
Advantages & Disadvantages”. Custom Software Development & Enterprise Mobile Apps.
Recuperado de https://www.tatvasoft.com/blog/top-12-software-development-methodologies-
and-its-advantages-disadvantages/ Última visita: 27/02/2021

96
[13] “Git”. (s. f.). Recuperado de https://git-scm.com/ Última visita: 28/02/2021

[14] “GitHub: Where the world builds software”. (s. f.). Recuperado de https://github.com/
Última visita 28/02/2021

[15] Atlassian. (s. f.). “Flujo de trabajo de Gitflow | Atlassian Git Tutorial”. Recuperado de
https://www.atlassian.com/es/git/tutorials/comparing-workflows/gitflow-workflow Última
visita 28/02/2021

[16] “Taiga”. (s. f.). Taiga. Recuperado de https://tree.taiga.io/ Última visita 28/02/2021

[17] Colaboradores de Wikipedia. (2021, 6 mayo). Framework. Wikipedia, la enciclopedia


libre. Recuperado de https://es.wikipedia.org/wiki/Framework Última Última visita:
05/03/2021

[18] Martín, Á. J. (2020, 29 julio). Comparativa entre React Native y diferentes frameworks
de programación. OpenWebinars.net. Recuperado de
https://openwebinars.net/blog/comparativa-react-native-y-diferentes-frameworks/ Última
visita: 05/03/2021

[19] AWS | Cloud Computing - Servicios de informática en la nube. (s. f.). Amazon Web
Services, Inc. Recuperado de https://aws.amazon.com/es/ Última visita: 05/03/2021

[20] Servicios de informática en la nube. (s. f.). Microsoft Azure. Recuperado de


https://azure.microsoft.com/es-es/ Última visita: 05/03/2021

[21] Firebase - Google. (s. f.). Firebase. Recuperado de https://azure.microsoft.com/es-es/


Última visita: 05/03/2021

[22] Varma, G. (2020, 26 julio). Firebase vs AWS: Which is right for your app project in
2020? Ember Software. Recuperado de https://embersoftware.com.au/firebase-vs-aws/
Última visita: 05/03/2021

[23] Adobe XD | Herramienta rápida y potente de diseño y colaboración de experiencias e


interfaces de usuario. (s. f.). Adobe. https://www.adobe.com/es/products/xd.html Última
visita: 05/03/2021

[24] Balsamiq. Rapid, Effective and Fun Wireframing Software | Balsamiq. (s. f.). Balsamiq.
Recuperado de https://balsamiq.com/ Última visita: 05/03/2021

[25] Scribbr. (2021, 1 marzo). Formato APA con el Generador APA de.
https://www.scribbr.es/detector-de-plagio/generador-apa/ Última visita: 05/03/2021

97
[26] BarD Software s.r.o. (s. f.). GanttProject: free project management tool for Windows,
macOS and Linux. GanttProject. https://www.ganttproject.biz/ Última visita: 05/03/2021

[27] Google Meet (voorheen Hangouts Meet). (s. f.). https://apps.google.com/meet/ Última
visita: 05/03/2021

[28] diagrams.net - free flowchart maker and diagrams online. (s. f.). DrawIO.
https://app.diagrams.net/ Última visita: 05/03/2021

[29] Microsoft. (2021, 16 febrero). IDE de, editor de código, Azure DevOps y App Center.
Visual Studio. https://visualstudio.microsoft.com/es/ Última visita: 05/03/2021

[30] Microsoft. (s. f.). Xamarin | Open-source mobile app platform for .NET.
https://dotnet.microsoft.com/apps/xamarin Última visita: 05/03/2021

[31] LinkedIn Salary (s. f.). LinkedIn. https://www.linkedin.com/salary Última visita:


10/03/2021

[32] Firebase Pricing. (s. f.). Firebase. Recuperado de


https://firebase.google.com/pricing?hl=es-419 Última visita: 10/03/2021

[33] Microsoft. (s. f.). Comprar suscripciones a Microsoft 365 Familia y Personal
(anteriormente Office 365): Microsoft Store. https://www.microsoft.com/es-es/microsoft-
365/buy/microsoft-365 Última visita: 10/03/2021

[34] Pricing · Plans for every developer. (s. f.). GitHub. https://github.com/pricing Última
visita: 10/03/2021

[35] MSI PS42 Modern 8RC-001ES Intel Core i7-8550U/16GB/512GB SSD/GTX 1050/14" |
PcComponentes.com. (2018, 24 diciembre). PcComponentes.
https://www.pccomponentes.com/msi-ps42-modern-8rc-001es-intel-core-i7-8550u-16gb-
512gb-ssd-gtx-1050-14 Última visita: 11/03/2021

[36] BenQ GW2480T 23.8" LED IPS FullHD | PcComponentes.com. (2020, 27 mayo).
PcComponentes. https://www.pccomponentes.com/benq-gw2480t-238-led-ips-fullhd Última
visita: 11/03/2021

[37] Logitech Wireless Mouse M185 Gris | PcComponentes.com. (2013, 11 enero).


PcComponentes. https://www.pccomponentes.com/logitech-wireless-mouse-m185-gris
Última visita: 11/03/2021

[38] Ewent EW3109 Teclado Compacto Negro | PcComponentes.com. (2020, 18 diciembre).


PcComponentes. https://www.pccomponentes.com/ewent-ew3109-teclado-compacto-negro
Última visita: 11/03/2021

98
[39] idealista.com. (s. f.). Idealista. https://www.idealista.com/inmueble/93132700/ Última
visita: 12/03/2021

[40] Syncfusion. (s. f.). .NET, Xamarin, JavaScript, Angular UI components. Recuperado de
https://www.syncfusion.com/ Última visita: 01/04/2021

99

También podría gustarte