Documentos de Académico
Documentos de Profesional
Documentos de Cultura
aparear animales
Entrega Final
Ingeniería del Software
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?
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
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
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.
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].
● 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.
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.
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:
● 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.
13
2. Justificación
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.
● 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.
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:
● 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.
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:
● Seguridad y privacidad: La aplicación tiene que asegurar que los datos serán
solo accesibles por los usuarios autorizados.
Durante el desarrollo pueden surgir diferentes obstáculos, por eso necesitamos conocerlos antes
de comenzar para poder afrontarlos:
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.
18
4. Metodología y rigor
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.
19
Esta metodología tiene sus ventajas y desventajas:
a) Ventajas
b) Desventajas
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.
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
5.1. Framework
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.
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.
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.
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.
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:
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.
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]
Dentro del desarrollo de prototipos tenemos diferentes partes, la parte de diseño y la parte de
desarrollo.
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
28
6.2.3. Prototipo de Chat
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
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.
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.
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.
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
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.
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].
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.
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.
Total 69,68 €
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
Total 189,94 €
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.
Total 550,82€
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.
Total 383,85€
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 .
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:
39
● Desvío de mano de obra en consumo (desvío en eficiencia)
40
10. Análisis y diseño
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.
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.
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.
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.
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.
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.
45
10.3. Modelo de comportamiento
• Registro
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.
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.
• Búsqueda
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.
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.
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.
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.
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.
• 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.
53
Diagrama 10. Diagrama de secuencia Obtener perfil.
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.
55
Diagrama 12. Diagrama de secuencia función validar email
• 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.
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.
• Referencia: Casos de uso en los que puede tener lugar esta operación.
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.
Precondiciones -
Precondiciones -
Precondiciones -
58
Operación createUserWithPassword(email: String, password: String)
59
Operación like (animalID: String)
Postcondiciones Se añade un nuevo chat para ambos usuarios, tanto user como el que esta
logueado en ese momento
60
Operación modificarUsuario (user: Usuario)
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.
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.
63
MockUp 1. Pantalla inicio Sesión. MockUp 2. Pantalla inicio sesión con alert Error.
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.
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.
65
MockUp 4. Pantalla creación de perfiles. MockUp 5. Pantalla creación de perfiles con Error
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.
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.
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.
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.
• 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.
73
• View: La vista es representar la información a través de los elementos visuales que la
componen.
• 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.
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:
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
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
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
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 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?
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.
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.
Respecto a PPP. ¿Reflexión sobre el coste que has estimado para realizar tu proyecto?
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?
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.
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.
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”.
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
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.
• 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.
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.
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.
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
[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
[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
[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
[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
[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
[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
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