Aplicación/red social para intercambiar ayuda en asignaturas de la carrera
Abstract
En este trabajo se comprenden aspectos tales como la especificación, el diseño y el desarrollo de Uni4All la aplicación multiplataforma de la cual trata este trabajo de fin de grado. La aplicación tiene como objetivo ser una red social para estudiantes que ayude a los estudiantes en su vida universitaria y en el ámbito del estudio principalmente. Sus principales funciones son la gestión y organización de grupos de trabajo para las diferentes asignaturas, crear e interactuar en foros con temáticas universitarias y el intercambio de conocimiento mediante reuniones online o presenciales.
Full text
APLICACIÓN/RED SOCIAL PARA INTERCAMBIAR AYUDA EN ASIGNATURAS DE LA CARRERA APPLICATION/SOCIAL NETWORK TO EXCHANGE HELP IN UNIVERSITY SUBJECTS Carlos Luengo Heras Javier Vaquero Fernández Joaquín Asensio Manzano GRADO EN INGENIERÍA DE SOFTWARE FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID TRABAJO DE FIN DE GRADO CURSO 2021-2022 DIRECTOR Antonio Sarasa Cabezuelo
2 RESUMEN En este trabajo se comprenden aspectos tales como la especificación, el diseño y el desarrollo de Uni4All la aplicación multiplataforma de la cual trata este trabajo de fin de grado. La aplicación tiene como objetivo ser una red social para estudiantes que ayude a los estudiantes en su vida universitaria y en el ámbito del estudio principalmente. Sus principales funciones son la gestión y organización de grupos de trabajo para las diferentes asignaturas, crear e interactuar en foros con temáticas universitarias y el intercambio de conocimiento mediante reuniones online o presenciales. PALABRAS CLAVE Flutter, Dart, Firebase, XCode, Android Studio, GitHub, Visual Studio Code
3 ABSTRACT This work includes aspects such as the specification, design and development of Uni4All, the multiplatform application that this final degree project deals with. The application aims to be a social network for students that helps students in their university life and mainly in the field of study. Its main functions are the management and organization of work groups for the different subjects, creating and interacting in forums with university themes and the exchange of knowledge through online or face-to-face meetings. KEY WORDS Flutter, Dart, Firebase, XCode, Android Studio, GitHub, Visual Studio Code
4 ÍNDICE ÍNDICE ................................................................................................................................................. 4 ÍNDICE DE FIGURAS ............................................................................................................................. 6 ÍNDICE DE TABLAS ............................................................................................................................... 9 CAPÍTULO 1. INTRODUCCIÓN .............................................................................................................. 11 1.1. MOTIVACIÓN ............................................................................................................................... 11 1.2. OBJETIVOS ................................................................................................................................... 12 1.3. ESTRUCTURA DE LA MEMORIA .......................................................................................................... 12 1.4. PLANIFICACIÓN DEL TRABAJO DE FIN DE GRADO ................................................................................... 13 CHAPTER 1. INTRODUCTION ............................................................................................................... 15 1.1. MOTIVATION ................................................................................................................................ 15 1.2. OBJECTIVES .................................................................................................................................. 15 1.3. MEMORY STRUCTURE ..................................................................................................................... 16 1.4. PLANNING OF THE PROJECT ............................................................................................................. 17 CAPÍTULO 2. ESTADO DEL ARTE .......................................................................................................... 19 2.1. ¿TIENES SAL?: .............................................................................................................................. 19 2.2. WUOLAH: .................................................................................................................................... 21 2.3. MEETUP: ..................................................................................................................................... 22 2.4. TEAYUDO: ................................................................................................................................... 25 CAPÍTULO 3. TECNOLOGÍA EMPLEADA ................................................................................................ 27 3.1. HERRAMIENTAS PARTE CLIENTE ........................................................................................................ 27 3.1.1. Android Studio ................................................................................................................. 27 3.1.2. XCode ............................................................................................................................... 28 3.1.3. Visual Studio Code ........................................................................................................... 29 3.2. HERRAMIENTAS DEL LADO DEL SERVIDOR ........................................................................................... 30 3.2.1. Firebase Database ........................................................................................................... 30 3.2.2. Flutter .............................................................................................................................. 30 3.3. OTRAS HERRAMIENTAS ................................................................................................................... 31 3.3.1. GitHub .............................................................................................................................. 31 3.3.2. Dart .................................................................................................................................. 32 3.3.3. Google Drive .................................................................................................................... 33 3.3.4. Diagrams.net ................................................................................................................... 33 CAPÍTULO 4. CASOS DE USO ............................................................................................................... 35 4.1. ACTORES DEL SISTEMA .................................................................................................................... 35 4.2. DESCRIPCIÓN DE LOS CASOS DE USO. ................................................................................................. 35 4.2.1. Módulo estudiante .......................................................................................................... 36 4.2.2. Módulo administrador ..................................................................................................... 88 CAPÍTULO 5: ARQUITECTURA ............................................................................................................ 109 5.1. INTRODUCCIÓN ARQUITECTURA EN FLUTTER ..................................................................................... 109
5 5.2. ARQUITECTURA PRINCIPAL DE LA APLICACIÓN .................................................................................... 110 5.2.1. Introducción ................................................................................................................... 110 5.2.2. Patrones arquitectura .................................................................................................... 110 5.3. PATRONES DE DISEÑO .................................................................................................................. 112 5.3.1. Inyección de dependencias ............................................................................................ 112 5.3.2. Singleton ........................................................................................................................ 113 5.3.3. Observer ........................................................................................................................ 113 5.3.4. Data Transfer Object ..................................................................................................... 114 CAPÍTULO 6. MODELO DE DATOS ...................................................................................................... 115 6.1. MODELO E-R ............................................................................................................................. 115 6.2. IMPLEMENTACIÓN DE LA BASE DE DATOS .......................................................................................... 116 6.3. COLECCIONES DE DOCUMENTOS ..................................................................................................... 116 CAPÍTULO 7: DISEÑO ........................................................................................................................ 119 7.1. COLORES Y DISEÑO ...................................................................................................................... 119 7.2. FUNCIONALIDAD PRINCIPAL ........................................................................................................... 120 7.2.1. User y login .................................................................................................................... 120 7.2.2. Perfil ............................................................................................................................... 123 7.2.3. Foros .............................................................................................................................. 126 7.2.4. Grupos ........................................................................................................................... 128 7.2.5. Servicios ......................................................................................................................... 130 CAPÍTULO 8: EVALUACIÓN ................................................................................................................ 133 8.1. HERRAMIENTAS Y PLANTEAMIENTO ................................................................................................. 133 8.2. RESULTADO DE LA EVALUACIÓN: ..................................................................................................... 134 8.2.1. General .......................................................................................................................... 134 8.2.2. Registro/Inicio de sesión ................................................................................................ 137 8.2.3. Grupos ........................................................................................................................... 138 8.2.4. Perfil ............................................................................................................................... 139 8.2.5. Foros .............................................................................................................................. 140 8.2.6. Conclusiones finales y sugerencias: ............................................................................... 141 CAPÍTULO 9. CONCLUSIONES Y TRABAJO FUTURO. ........................................................................... 143 9.1. CONCLUSIONES ........................................................................................................................... 143 9.2. TRABAJO FUTURO ........................................................................................................................ 144 CHAPTER 9: CONCLUSIONS AND FUTURE WORK ............................................................................... 151 9.1. CONCLUSIONS ............................................................................................................................ 151 9.2. FUTURE WORK ............................................................................................................................ 152 CAPÍTULO 10: APORTACIONES INDIVIDUALES ................................................................................... 157 CARLOS LUENGO HERAS: ........................................................................................................................... 157 JAVIER VAQUERO FERNÁNDEZ: .................................................................................................................... 158 JOAQUÍN ASENSIO MANZANO: .................................................................................................................... 159 BIBLIOGRAFÍA ................................................................................................................................... 160 ANEXO I. GUÍA DEL USUARIO ............................................................................................................ 161
6 ÍNDICE DE FIGURAS Figura 1 - Diagrama de Gantt de tareas en las que se desglosa el proyecto. ................... 14 Figura 2 - Gantt diagram of the taks’ roadmap made during the TFG development. ..... 18 Figura 3 - Introducción a ¿Tienes Sal? ............................................................................ 19 Figura 4 - Sección publicaciones de ¿Tienes Sal? .......................................................... 19 Figura 5 - Sección mercadillo de ¿Tienes Sal? ............................................................... 20 Figura 6 - Sección eventos de ¿Tienes Sal? .................................................................... 20 Figura 7 - Sección grupos de ¿Tienes Sal? ..................................................................... 20 Figura 8 - Sección mensajes de ¿Tienes Sal? .................................................................. 21 Figura 9 - Interfaz de Wuolah de un estudiante de la FDI de 3º ..................................... 21 Figura 10 - Interfaz de la sección de preguntas y respuestas. ......................................... 22 Figura 11 - Resumen de Meetup ..................................................................................... 22 Figura 12 - Selección de intereses en Meetup ................................................................. 23 Figura 13 - Bienvenida UI Meetup ................................................................................. 23 Figura 14 - Eventos en Meetup ....................................................................................... 24 Figura 15 - Grupos en Meetup ........................................................................................ 24 Figura 16 - Página inicio TeAyudo ................................................................................. 25 Figura 17 - Temáticas de ayuda entre vecinos ................................................................ 25 Figura 18 - Preguntas y respuestas de TeAyudo ............................................................. 26 Figura 19 - Pantalla desarrollo Android Studio con emulador ........................................ 27 Figura 20 - IDE Xcode Con emulador iPhone ................................................................ 28 Figura 21 - Imagen Interfaz de edición de código de Visual Studio Code ..................... 29 Figura 22 - pantalla Data de Firebase Realtime Database .............................................. 30 Figura 23 - Flutter mostrando la multiplataformidad ...................................................... 31 Figura 24 - vista general proyecto GitHub ...................................................................... 32 Figura 25 - Icono Dart ..................................................................................................... 32 Figura 26 - vista página principal Google Drive ............................................................. 33 Figura 27 - vista principal diagrams.net .......................................................................... 34 Figura 28 - Interfaz diferenciadora del usuario administrador ........................................ 35 Figura 29 - Diagrama caso de uso módulo usuario estudiante ........................................ 36 Figura 30 - Diagrama caso de uso módulo usuario estudiante funcionalidad perfil ....... 36 Figura 31 - Diagrama caso de uso módulo usuario estudiante funcionalidad servicios . 46 Figura 32 - Diagrama caso de uso módulo usuario estudiante funcionalidad grupo ...... 60 Figura 33 - Diagrama caso de uso módulo usuario estudiante funcionalidad foros ....... 77 Figura 34 - Diagrama de casos de uso de administrador ................................................. 88 Figura 35 - marco de capas en Flutter ........................................................................... 109 Figura 36 - Flutter, Arquitectura de Aplicaciones ......................................................... 109 Figura 37 - Esquema app desarrollada .......................................................................... 110 Figura 38 - Estructura patrón MVVM .......................................................................... 111 Figura 39 - Diagrama del patrón de service layer y repository intercambiando datos .. 112 Figura 40 - Dependencia provider ................................................................................. 112 Figura 41 - Singleton ejemplo getInstance() ................................................................. 113 Figura 42 - Patrón observer ........................................................................................... 113
7 Figura 43 - Patrón DTO ................................................................................................ 114 Figura 44 - Modelo E-R de la aplicación Uni4All ........................................................ 115 Figura 45 - Implementación de la bbdd ........................................................................ 116 Figura 46 - Diagrama colecciones documentos ............................................................ 117 Figura 47 - tfg_theme.dart del proyecto Uni4All .......................................................... 119 Figura 48 - Almacenamiento clave login ...................................................................... 120 Figura 49 - Código del registro ..................................................................................... 120 Figura 50 - Código del login ......................................................................................... 121 Figura 51 - Servicios, grupos y posts. ........................................................................... 121 Figura 52 - Dashboard usuario ...................................................................................... 122 Figura 53 - Barra inferior con navegado a los módulos ................................................ 122 Figura 54 - Modificado de datos Figura 55 - Servicio actualización usuario ........ 123 Figura 56 – Código del cambio de foto ......................................................................... 124 Figura 57 - Código de la llamada a la API para actualización de usuario .................... 124 Figura 58 - Formulario autenticación actualización credenciales ................................. 124 Figura 59 - Modulo administración ............................................................................... 125 Figura 60 - eliminar y salir de la cuenta ........................................................................ 125 Figura 61 - Vista principal foros Figura 62 – Vista posts de subforo ..................... 126 Figura 63 - Servicio de foro .......................................................................................... 126 Figura 64 - SearchDelegateForums de Uni4All ............................................................ 127 Figura 65 - Llamada al servicio de creación de una respuesta. ..................................... 127 Figura 66 - Visualización hilo y respuestas .................................................................. 128 Figura 67 - Servicio de unirse a un grupo ..................................................................... 129 Figura 68 - Figura dashboard grupos ............................................................................ 129 Figura 69 - Mostrado de grupo ...................................................................................... 129 Figura 70 – Selección de grupo ..................................................................................... 129 Figura 71 - Código MessageGroup de Uni4All ............................................................ 130 Figura 72Editado y borrado de grupo (owner) ........................................................... 130 Figura 73 - Búsqueda de servicios ................................................................................ 131 Figura 74 - Detalle de servicio propio ........................................................................... 131 Figura 75 - Creación de servicios .................................................................................. 131 Figura 76 - Servicio de unirse a un servicio .................................................................. 131 Figura 77 - Código de envío de mensajes en servicios ................................................. 132 Figura 78 - Editado y borrado de un grupo propio ........................................................ 132 Figura 79 - Gráfico pregunta: ¿Qué edad tienes? .......................................................... 134 Figura 80 - Gráfico pregunta: ¿Qué valoración general darías a la app? ...................... 134 Figura 81 - Gráfico pregunta: ¿Habrías utilizado esta herramienta en la universidad? 135 Figura 82 - Grafico pregunta: Si has respondido que sí, comenta los motivos ............. 135 Figura 83 - Gráfico pregunta: ¿Te parece atractiva la interfaz visual de la app? .......... 136 Figura 84 - Pregunta: Si has contestado no, comenta los motivos y la modificación ... 136 Figura 85 - Gráfico pregunta: ¿Encuentras la sección de servicios intuitiva? .............. 137 Figura 86 - Pregunta: ¿Cambiarías algo o has encontrado alguna dificultad? .............. 137 Figura 87 - Gráfico pregunta: ¿Encuentras la sección de grupos intuitiva? .................. 138
8 Figura 88 - Pregunta: ¿Cambiarías o añadirías algo en los grupos? ............................. 138 Figura 89 - Gráfico pregunta: ¿Encuentras la sección de perfil intuitiva? .................... 139 Figura 90 - Pregunta: ¿Cambiarías o añadirías algo en el perfil? ................................. 139 Figura 91 - Gráfico pregunta: ¿Encuentras la sección de foros intuitiva? .................... 140 Figura 92 - Pregunta: ¿Cambiarías o añadirías algo en foros? ...................................... 140 Figura 93 - Gráfico pregunta: ¿Cuál te parece la sección más útil? .............................. 141 Figura 94 - Gráfico pregunta: ¿Y la que menos útil? .................................................... 141 Figura 95 - Pregunta: ¿Tienes alguna sugerencia? ........................................................ 142 Figura 96 - Coste de los servicios ................................................................................. 145 Figura 97 - Situación actual de búsqueda ...................................................................... 146 Figura 98 - Post sin responder ....................................................................................... 147 Figura 99 - Post respondido .......................................................................................... 147 Figura 100 - Posible ubicación del botón de citado en respuestas ................................ 149 Figura 101 - Situación actual del editado y ubicación para editado de respuesta ......... 150 Figura 102 - Cost of services ........................................................................................ 153 Figura 103 - Current search situation ............................................................................ 154 Figura 104 - Answered post .......................................................................................... 155 Figura 105 - Unanswered post ...................................................................................... 155 Figura 106 - Possible location of the quote button in answers ..................................... 156 Figura 107 - Current status of post editing and location for response editing .............. 156 Figura 108 - Pantalla login ............................................................................................ 161 Figura 109 - Pantalla registro ........................................................................................ 161 Figura 110 - Pantalla inicio ........................................................................................... 162 Figura 111 - Dashboard usuario registrado ................................................................... 162 Figura 112 - Pantalla perfil usuario ............................................................................... 163 Figura 113 - Modificado de datos ................................................................................. 163 Figura 114 - Panel usuario ............................................................................................ 164 Figura 115 - Panel foros ................................................................................................ 164 Figura 116 - Panel grupos ............................................................................................. 165 Figura 117 - Panel servicios .......................................................................................... 165 Figura 118 - Eliminar cuenta y Log out ........................................................................ 166 Figura 119 - Vista principal foros ................................................................................. 166 Figura 120 - Posts de un subforo ................................................................................... 167 Figura 121 - Visualización hilo y respuestas ................................................................ 168 Figura 122 - Mostrado de grupo .................................................................................... 169 Figura 123 - Dashboard grupos ..................................................................................... 169 Figura 124 - Selección de grupos .................................................................................. 170 Figura 125 - Búsqueda de servicios .............................................................................. 171 Figura 126 - Creación de servicio ................................................................................. 171 Figura 127 - Detalle de servicio propio ......................................................................... 172
9 ÍNDICE DE TABLAS Tabla 1 - Registro ............................................................................................................ 37 Tabla 2 - Inicio de sesión con login manual .................................................................... 38 Tabla 3 - Autentificado automático ................................................................................. 39 Tabla 4 - Mostrar perfil de usuario desde barra de app ................................................... 40 Tabla 5 - Modificar perfil de usuario .............................................................................. 41 Tabla 6 - Modificar datos login ....................................................................................... 43 Tabla 7 - Cerrar sesión .................................................................................................... 44 Tabla 8 - Eliminar cuenta ................................................................................................ 45 Tabla 9 - Alta publicación servicio ................................................................................. 47 Tabla 10 - Baja publicación servicio ............................................................................... 48 Tabla 11 - Mostrar servicio ............................................................................................. 49 Tabla 12 - Modificar publicación servicio ...................................................................... 51 Tabla 13 - Listar todos los servicios propios .................................................................. 51 Tabla 14 - Listar todos los servicios publicados ............................................................. 52 Tabla 15 - Buscar servicios por código de asignatura del servicio ................................. 53 Tabla 16 - Unión a servicio ............................................................................................. 54 Tabla 17 - Envío de mensaje en servicio ......................................................................... 56 Tabla 18 - Acceso a videoconferencias ........................................................................... 58 Tabla 19 - Mostrar perfil de miembro de servicio .......................................................... 59 Tabla 20 - Alta grupo ...................................................................................................... 61 Tabla 21 - Baja grupo ...................................................................................................... 62 Tabla 22 - Mostrar grupo ................................................................................................ 63 Tabla 23 - Modificar grupo ............................................................................................. 65 Tabla 24 - Listar grupos propios ..................................................................................... 65 Tabla 25 - Listar todos los grupos ................................................................................... 66 Tabla 26 - Buscar grupos por código de asignatura ........................................................ 67 Tabla 27Unión a grupo ................................................................................................. 69 Tabla 28 - Salida de grupo .............................................................................................. 69 Tabla 29 - Envío de mensaje grupal ................................................................................ 71 Tabla 30 - Acceso a repositorio de Github ...................................................................... 72 Tabla 31 - Acceso a almacenamiento de Drive ............................................................... 74 Tabla 32 - Listar miembros de un grupo ......................................................................... 75 Tabla 33 - Mostrar perfil de miembro del grupo ............................................................. 76 Tabla 34 - Alta post ......................................................................................................... 78 Tabla 35 - Baja Post ........................................................................................................ 79 Tabla 36 - Mostrar post ................................................................................................... 80 Tabla 37 - Modificación Post .......................................................................................... 82 Tabla 38 - Listar todos los posts de un subforo .............................................................. 82 Tabla 39 - Buscar posts por título ................................................................................... 83 Tabla 40 - Alta respuesta ................................................................................................. 84
16 join work groups for subjects, internships, or final degree projects and finally arrange meetings to help each other and share knowledge. This objective is specified in the following more specific objectives: • Develop a forum section that allows students to both post and read articles within the forums on different topics (established by the administrator) and perform searches and filters. • Develop a help exchange section for students to teach classes on different subjects among themselves, both online and in person. • Develop a section for the formation of both work groups (for career subjects) and for the TFG that allows students to filter according to the subject and request joining a group and, in turn, also allows the creation of groups in which can detail the size, the subject and a description in which to define the objective and needs of the group. • Create a database for the compilation and organization of the data that allows the information to be up-to-date and available to the students. 1.3. Memory structure This section details the structure that the memory will follow: • Chapter 1: Introduction. This chapter describes the motivation of the work, the objectives, the structure of the memory and the planning of the final degree project. • Chapter 2: State of the Art. This chapter studies existing tools on the market that offer functionalities. • Chapter 3: Technology used. This chapter describes the technology used to implement the project. • Chapter 4: Use Cases. This chapter defines the actors and use cases that will be explained through tables along with their requirements. • Chapter 5: Architecture. This chapter will explain the architecture of the application with the patterns used.
17 • Chapter 6: Data Model. This chapter will explain the entity relationship diagram in which the project has been planned to be implemented in the database. • Chapter 7: Design. In this chapter, a study will be carried out on the design and implementation of the different use cases. • Chapter 8: Evaluation. This chapter will present the opinions provided by specialized users to whom the application has been supplied and who have tested for a few hours. • Chapter 9: Conclusions and future work. This chapter condenses a reflection on the usefulness of the application and a list of use cases that will be developed in the future with a brief explanation. • Chapter 10: Individual Contributions. This chapter presents the work done by each of the authors. 1.4. Planning of the project The development of the work has been structured in 8 phases: • SRS: In this phase, the application has been divided into the main modules that it deals with. • Use cases: In this phase, the use cases have been specified for each module and actor. • Entity – Relationship: In this phase, the different entities have been shaped and how they relate to each other to satisfy the specified use cases. • Modeling in Database: In this phase, the database used in the application has been created and organized. • Front development: In this phase, the views of the application have been coded. • Back development: In this phase the logic of the application has been developed. • Error correction: In this phase, an exhaustive error correction and validation of the application has been carried out. • Documentation – Memory: In this phase, the corresponding document with the memory of the TFG has been made.
18 Figure 1 shows the Gantt diagram where the temporal distribution of the phases is shown. Figura 2 - Gantt diagram of the taks’ roadmap made during the TFG development.
19 Capítulo 2. Estado del arte En este capítulo se describirán un conjunto de aplicaciones que disponen de funciones similares a las implementadas en este trabajo. 2.1. ¿Tienes sal?: Una aplicación muy utilizada que ofrece una plataforma, similar a una red social, pensada para que los vecinos de un mismo barrio puedan ponerse en contacto entre ellos de forma rápida y sencilla para intercambiar ayuda, intereses, ofertar actividades que hacer. En la figura 3 se explica en detalle toda la funcionalidad de ¿Tienes Sal? desde la sección descubre de su web[1]. Figura 3 - Introducción a ¿Tienes Sal? La aplicación cuenta con 5 módulos principales, publicaciones, mercadillo, eventos, grupos y finalmente mensajes. A continuación, se presenta un pequeño resumen de cada uno de ellos: o En la figura 4 se recoge el módulo publicaciones, donde se comparten posts libres sobre ideas, opiniones, necesidades, comentarios libres… Figura 4 - Sección publicaciones de ¿Tienes Sal?
20 o En la figura 5 se muestra mercadillo, donde se venden cosas que no se usan, se buscan servicios, se piden productos… Figura 5 - Sección mercadillo de ¿Tienes Sal? o En la figura 6 se recogen los eventos, donde se organizan planes, se dan a conocer sitios, se coordinan salidas… Figura 6 - Sección eventos de ¿Tienes Sal? o En la figura 7 se muestran los grupos, donde se permite al usuario crear grupos para suplir sus necesidades, unirse a grupos ya creados... Figura 7 - Sección grupos de ¿Tienes Sal?
21 o En la figura 8 se muestra mensajes, para conectar vecinos, ya sean privados o comunicaciones abiertas… Figura 8 - Sección mensajes de ¿Tienes Sal? 2.2. Wuolah: Es una aplicación que ha ganado mucho éxito en los últimos años. La aplicación ofrece una red social donde los estudiantes al darse de alta seleccionan su facultad entre todas las universidades de España, donde entran en contacto con el resto de los estudiantes de esa universidad e incluso de los mismos grados, pero de otras universidades. Allí pueden subir sus apuntes para ayudar a otros estudiantes, compartir dudas, opiniones y otros comentarios[2]. En la figura 9 se muestra la interfaz de usuario que ofrece Wuolah al entrar siendo un estudiante de 3º curso del grado Ingeniería del Software de la Universidad Complutense de Madrid[3]. Figura 9 - Interfaz de Wuolah de un estudiante de la FDI de 3º
22 A diferencia de Wuolah, la aplicación que se ha desarrollado en este TFG no tiene ninguna funcionalidad para facilitar la subida de apuntes, sin embargo, la ayuda de un estudiante a otro sí que existe, además de publicaciones y comentarios libres reflejados en la figura 10, a modo tablón, para la publicación de información. Figura 10 - Interfaz de la sección de preguntas y respuestas. En la aplicación que se ha desarrollado tampoco se ha incluido la opción de monetizar la ayuda, aunque se ha planteado en el capítulo 9 de trabajo futuro. 2.3. Meetup: Aplicación que permite a los usuarios compartir eventos, formas grupos, conocer a gente nueva, hacer amigos, buscar apoyo... e incluso desarrollar negocios. Se puede encontrar esta información desarrollada en la sección Acerca de[4]. La figura 11 resume brevemente el potencial de Meetup. Figura 11 - Resumen de Meetup
23 Al registrarte la aplicación pide introducir la ubicación y acto seguido ofrece una serie de temas de interés entre los que elegir, que se podrán editar y ampliar (o reducir) después, como se puede ver en la figura 12. Figura 12 - Selección de intereses en Meetup Una vez unido, la aplicación ofrece al usuario una pequeña introducción sobre la formación de grupos y la unión a eventos. En la figura 13 se muestra la interfaz de un usuario recién registrado, donde puede navegar entre los futuros eventos de su zona según los intereses seleccionados previamente. Figura 13 - Bienvenida UI Meetup Desde la web de Meetup se pueden gestionar y navegar los grupos y eventos disponibles y ya unidos. En las figuras 14 (eventos) y 15 (grupos) se puede
24 apreciar la interfaz que muestra al usuario un conjunto de estos para elegir, utilizando ubicación e intereses. Figura 14 - Eventos en Meetup Figura 15 - Grupos en Meetup
25 2.4. TeAyudo: Aplicación a modo red social que permite intercambiar ayuda entre vecinos de barrio[5]. Un usuario crea una petición de ayuda, o la ofrece, y otro usuario responde a la petición. Los mensajes se organizan a modo hilo. Además, cuando el usuario recibe la ayuda puede poner valoración a otros usuarios. La figura 16 muestra la página de inicio de la aplicación. Figura 16 - Página inicio TeAyudo A diferencia de la aplicación realizada en el trabajo de fin de grado, TeAyudo no está enfocada a los estudios ni a los estudiantes, es más general. En la figura 17 se pueden observar distintos ejemplos de uso y los temas de las ayudas que se ofrecen y se piden. Figura 17 - Temáticas de ayuda entre vecinos No se ha tenido en cuenta la posibilidad de utilizar la aplicación del TFG con mayores temáticas que las de estudios, pero podría ser una opción para trabajo futuro.
32 Figura 24 - vista general proyecto GitHub Esta herramienta ha permitido organizar y mantener actualizado el código de los participantes y tener un control de las versiones. 3.3.2. Dart Dart [13] es un lenguaje creado por Google. Este fue ideado con la finalidad de ciertos errores y ofrecer mejores resultados que JavaScript. Fundamentalmente se emplea en proyectos pequeños y ofrece una gran seguridad. Figura 25 - Icono Dart Este lenguaje es el utilizado para el desarrollo de aplicaciones en Flutter por lo tanto ha sido el empleado en Uni4All.
33 3.3.3. Google Drive Google Drive [14] es un servicio de almacenamiento en la nube perteneciente a la empresa Google. Es una herramienta disponible para la gran mayoría de plataformas, en la que cada usuario dispone de 15GB de espacio de almacenamiento. Permite almacenar archivos y organizarlos en carpetas. Estas carpetas a su vez pueden ser privadas o compartidas con la finalidad de que varias personas sean contribuyentes y se intercambien información entre ellos. Figura 26 - vista página principal Google Drive Este servicio ha permitido el intercambio de archivos entre los integrantes del grupo y la edición de estos de manera simultánea. Nos ha permitido, además de almacenar documentos que compartíamos que no eran código (habrían ido a GitHub), compartir documentos con el tutor del trabajo de fin de grado. 3.3.4. Diagrams.net Diagrams.net [15] es un software de dibujo de gráficos. Permite crear diferentes formas y diseños o por el contrario utilizar una de las muchas formas prediseñadas de las que dispone.
34 Estas últimas se encuentran organizadas por categorías en función de su objetivo principal y son ideales para crear gráficos o diagramas. Cuenta con integración con servicios Cloud tales como Dropbox OneDrive, GitHub o Google Drive el cual ha sido empleado en este proyecto. Figura 27 - vista principal diagrams.net Ha sido utilizado tanto para diseñar casos de uso y modelos entidad relación, como para realizar esquemas y borradores con explicaciones entre los miembros del equipo. En la figura 27 se muestra un ejemplo de diagrama hecho en la herramienta.
35 Capítulo 4. Casos de uso En este capítulo, se describen los actores y los casos de uso definidos para la aplicación desarrollada. 4.1. Actores del sistema Se han definido dos tipos de actores. • Usuario estudiante: Representan a los usuarios registrados, los cuales podrán acceder a todas las funciones disponibles para los estudiantes. Las principales son: del módulo usuario (la creación de cuenta, inicio de sesión y gestión de su perfil), del módulo servicios (crear publicaciones de servicio, listarlas y aceptarlas), del módulo grupos (crear grupos, unirse a grupos ya creados, listarlos, acceder a repositorios) y por último del módulo foros (crear posts, responder a posts, listar subforos y posts) • Usuario administrador: Representa al encargado de la aplicación y tendrá distintas funciones relacionadas con la gestión siendo las más importantes las de gestión de usuario (editar cualquier perfil), gestión de servicios (editado y eliminado de servicios), gestión de grupos (editado, listado y eliminado) y gestión de posts (editado y eliminado). En la figura 19 se muestra el botón especial que solo tiene un actor usuario administrador para acceder a estas funcionalidades. Figura 28 - Interfaz diferenciadora del usuario administrador 4.2. Descripción de los casos de uso. En esta sección se van a describir los casos de uso definidos. Para ello se han agrupado en módulos de acuerdo con el tipo de actor.
36 4.2.1. Módulo estudiante Al haber tanta funcionalidad en la figura 16, hemos subagrupado los casos de uso del estudiante en 4 funcionalidades principales, la gestión de perfil, la gestión de servicios, la gestión de grupos y la gestión de foros. Figura 29 - Diagrama caso de uso módulo usuario estudiante • Módulo funcionalidad perfil En este módulo se recoge todo lo referido a la gestión del perfil de usuario. Figura 30 - Diagrama caso de uso módulo usuario estudiante funcionalidad perfil
37 E-01 Registro Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Registra a un nuevo usuario en la aplicación. Actor Estudiante. Entrada Nombre completo, alias, correo universitario, contraseña (y verificación de contraseña), y biografía. Salida Redirección a pantalla inicio o mensaje de error. Precondición El usuario no existe en la base de datos. Secuencia normal 1. El usuario accede a la aplicación. 2. El sistema muestra una pantalla inicial con un botón “inicio de sesión” y un botón “registrarse”. 3. El usuario pulsa el botón “registrarse”. 4. El sistema redirige a la pantalla de registro. 5. El usuario introduce nombre completo, alias, correo universitario, contraseña (se pide dos veces para verificar), y biografía. 6. El usuario presiona el botón “registrarse”. Postcondición si éxito Se registra al usuario en la aplicación y se establece su rol como usuario no administrador. El sistema le redirige a la pantalla inicial. Postcondición si fallo El nuevo usuario no se registra y se le notifica el tipo de error. Excepciones 5.1. Las contraseñas no coinciden. 6.1. El usuario ya existe y se muestra un mensaje de error. 6.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios El usuario estudiante dado de alta no tiene rol de administrador. La contraseña y la verificación de la contraseña se ocultan con dots. Tabla 1 - Registro
38 E-02 Inicio de sesión con login manual Versión 1.0.0 Prioridad Alta. Estabilidad Media. Descripción Autentifica a un usuario ya registrado en la aplicación. Actor Estudiante. Entrada Correo universitario y contraseña. Salida Inicio de sesión correcto y redirección a perfil o mensaje de error. Precondición El usuario había sido registrado previamente en la base de datos. Secuencia normal 1. El usuario accede a la aplicación y pulsa el botón inicio de sesión. 2. El sistema redirige a la pantalla de login. 3. El usuario introduce correo y contraseña. 4. El usuario presiona el botón de “Iniciar sesión”. Postcondición si éxito Se loggea correctamente al usuario en la aplicación y se le dirige a la página principal de su perfil. Postcondición si fallo El usuario no se loggea y no accede a la aplicación. Excepciones 4.1. El usuario no existe y se muestra un mensaje de error. 4.2. El usuario no ha introducido bien la contraseña y se muestra un mensaje de error. 3.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Si el usuario accede por primera vez a Inicio de sesión sin haberse registrado tendrá un enlace “¿Aún sin cuenta? Regístrate” para acceder a registro. La contraseña se oculta con dots. Tabla 2 - Inicio de sesión con login manual
39 E-03 Autentificado automático Versión 1.0.0 Prioridad Alta. Estabilidad Media. Descripción Autentifica automáticamente a un usuario ya registrado en la aplicación. Actor Estudiante. Entrada - Salida Redirección a perfil o redirección a pantalla de inicio. Precondición El usuario había sido registrado previamente en la base de datos y había hecho login al menos una vez en la aplicación. Secuencia normal 1. El usuario accede a la aplicación. 2. El sistema redirige a la pantalla de perfil del usuario. Postcondición si éxito Se loggea correctamente al usuario en la aplicación y se le dirige a la página principal de su perfil. Postcondición si fallo El usuario no se loggea y no accede a la aplicación directamente. Excepciones 2.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Cuando el usuario inicia sesión por primera vez se guarda un token de sesión. Mientras no pulse “cerrar sesión” se mantiene activa y no tiene que volver a iniciarla. Tabla 3 - Autentificado automático
40 E-04 Mostrar perfil de usuario desde barra de app Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Muestra los datos del perfil de un usuario de la aplicación. Actor Estudiante. Entrada - Salida Mostrado de datos correcto y redirección del sistema al usuario a la pantalla de perfil o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación (iniciando sesión manual o automáticamente) o dentro de la aplicación pulsa el botón izquierdo superior de perfil. 2. El sistema redirige al usuario a la pantalla de perfil donde le muestra el número de servicios, grupos y posts además de nombre, biografía y correo. Postcondición si éxito El sistema muestra al usuario nombre, biografía y correo además de su participación en la app. Postcondición si fallo Los datos del usuario no se muestran y se le notifica del error. Excepciones 1.1. Ocurre un error en el servidor y se muestra un mensaje de error. 2.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 4 - Mostrar perfil de usuario desde barra de app
41 E-05 Modificar perfil de usuario Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Modificar los datos del perfil de un usuario de la aplicación. Actor Estudiante. Entrada Datos nuevos (foto de perfil, nombre completo, nick y/o biografía). Salida Datos modificados correctamente y redirección correcta al módulo de gestión de usuario o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa el botón home superior izquierdo. 2. El sistema redirige al módulo de gestión de usuario. 3. El usuario presiona el botón de “Modificar datos” y sobrescribe los campos que considera. 4. El usuario pulsa el botón “Guardar cambios” 5. El sistema redirige al usuario al módulo de gestión de usuarios. Postcondición si éxito Se modifican los datos del usuario en la aplicación y en la base de datos. Postcondición si fallo Los datos del usuario no se actualizan y se le notifica del error. Excepciones 4.1. El usuario borra y no rellena alguno de los campos y se muestra un mensaje de error. 4.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Los campos input text cargan los datos actuales y reales del usuario almacenados en la base de datos, por lo que si no quiere cambiarlos basta con no tocarlos. Si se borran y se dejan vacío dará error puesto que los está intentando actualizar con datos vacíos. Tabla 5 - Modificar perfil de usuario
48 S-02 Baja publicación servicio Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Da de baja una publicación de servicio en la aplicación. Actor Estudiante. Entrada - Salida Eliminado del servicio en la base de datos y redirección del sistema a la lista de servicios propios (creados y unidos), o mensaje de error. Precondición El usuario está autenticado y existe una publicación de servicio del usuario activa para dar de baja. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios propios. 3. El usuario accede al servicio creado por él mismo y pulsa el botón superior derecho de eliminado. 4. Se elimina el servicio y el sistema redirige al usuario a la página de todos sus servicios. Postcondición si éxito Se elimina de la base de datos el servicio y el usuario es redirigido a la página de sus servicios. Postcondición si fallo La publicación de servicio no se da de baja y se le notifica el error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Si el usuario da de baja un servicio activo (con otra persona prestando o recibiendo dicho servicio) también se da de baja para el otro estudiante. Tabla 10 - Baja publicación servicio
49 S-03 Mostrar servicio Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Muestra la publicación de servicio de un usuario de la aplicación. Actor Estudiante. Entrada - Salida Redirección del sistema al usuario a la pantalla de descripción detallada de un servicio, o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios. 3. El usuario pulsa un servicio. 4. El sistema redirige al usuario a una pantalla que muestra todos los datos de un servicio. Postcondición si éxito Se muestran los datos del servicio publicado en la aplicación almacenados en la base de datos, redirigiendo al usuario a una pantalla detallada del servicio. Postcondición si fallo Los datos del servicio no se muestran y se notifica al usuario del error. Excepciones 4.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Desde esta pantalla además de ver datos como la descripción del servicio, la asignatura - código del servicio, se pueden realizar acciones como editar, eliminar, chatear, acceder a la conferencia y ver el perfil del propietario y del cooperante del servicio. Tabla 11 - Mostrar servicio
50 S-04 Modificar publicación servicio Versión 1.0.0 Prioridad Alta. Estabilidad Media. Descripción Modificar los datos del servicio publicado en la aplicación. Actor Estudiante. Entrada Datos nuevos (código del servicio, descripción detallada, dirección de la conferencia del servicio). Salida Redirección correcta al módulo de servicios propios o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios propios. 3. El usuario accede al servicio creado por él mismo y pulsa el botón superior derecho de editado y sobrescribe los campos que considera. 6. El usuario pulsa el botón “Editar servicio” 7. El sistema redirige al usuario al módulo de servicios propios. Postcondición si éxito Se modifican los datos del servicio en la aplicación y en la base de datos. Postcondición si fallo Los datos del servicio no se actualizan y se le notifica del error. Excepciones 6.1. El usuario borra y no rellena alguno de los campos y se muestra un mensaje de error. 6.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Los campos input text cargan los datos actuales y reales del servicio almacenados en la base de datos, por lo que si no quiere cambiarlos basta con no tocarlos. Si se borran y se dejan vacío dará error puesto
51 que los está intentando actualizar con datos vacíos. Tabla 12 - Modificar publicación servicio S-05 Listar todos los servicios propios Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Lista todas las publicaciones de servicio propias, tanto publicaciones de servicio propias como ofertas y peticiones de servicio obtenidas, del propio usuario. Actor Estudiante. Entrada - Salida Lista de servicios propios pedidos y ofertados. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios. 3. El sistema muestra una lista de servicios propios pedidos y ofertados. Postcondición si éxito Se muestra una lista con servicios propios pedidos u ofertados. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. No existe ningún servicio que cumpla el criterio de búsqueda. 3.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 13 - Listar todos los servicios propios
52 S-06 Listar todos los servicios publicados Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Lista todas las publicaciones de servicio, tanto peticiones de servicio como ofertas de servicio, de cualquier usuario de la aplicación. Actor Estudiante. Entrada - Salida Lista de servicios pedidos u ofertados. Precondición El usuario está autenticado y hay al menos 1 servicio publicado en la base de datos. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios. 3. El usuario presiona el botón superior derecho de “Listado de todos los servicios”. 4. El sistema muestra una lista de servicios pedidos y ofertados. Postcondición si éxito Se muestra una lista con servicios pedidos u ofertados. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. No existe ningún servicio que cumpla el criterio de búsqueda. 3.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 14 - Listar todos los servicios publicados
53 S-07 Buscar servicios por código de asignatura del servicio Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Busca por código de asignatura tanto peticiones como ofertas de servicio. Actor Estudiante. Entrada Código del servicio que se busca. Salida Lista de servicios que cumplen con la condición de búsqueda (el código). Precondición El usuario está autenticado y hay al menos 1 servicio dado de alta en la base de datos de la aplicación. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios. 3. El usuario presiona el botón superior derecho de “Listado de todos los servicios”. 4. El sistema le redirige a la pantalla de todos los servicios ofertados. 5. El usuario presiona el botón de “Búsqueda de servicios” e introduce los datos de búsqueda. 6. El sistema muestra una lista de servicios filtrada por el código de asignatura introducido. Postcondición si éxito Se muestra una lista con servicios que cumplen los criterios de búsqueda. Postcondición si fallo No se carga la página de búsqueda y se le notifica el error. Excepciones 4.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. No existe ningún servicio que cumpla el criterio de búsqueda. 5.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 15 - Buscar servicios por código de asignatura del servicio
54 S-08 Unión a servicio Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Confirma un servicio ofrecido o pedido por otro estudiante. Actor Estudiante. Entrada - Salida Unión al servicio o mensaje de error. Precondición El usuario está autenticado y al menos otro usuario ha dado de alta una publicación de servicio en la base de datos. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios. 3. El usuario pulsa un servicio. 4. El sistema redirige al usuario a una pantalla que muestra todos los datos de un servicio 5. El usuario pulsa “Obtener”. 6. El sistema hace visible al usuario la conferencia del servicio y todos los datos de este servicio aceptado. Postcondición si éxito Se une el estudiante al servicio y se registra en la base de datos. Postcondición si fallo El usuario no se une al servicio y se le notifica con un mensaje de error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 16 - Unión a servicio
55 S-09 Envío de mensaje en servicio Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Contacta con el propietario de un servicio (o con el otro miembro en caso de ser propietario). Actor Estudiante. Entrada Mensaje de texto. Salida Mensaje registrado en la pantalla o mensaje de error. Precondición El usuario está autenticado y unido (o propietario) en un servicio donde registrar el mensaje. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios. 3. El usuario pulsa un servicio. 4. El sistema redirige al usuario a una pantalla que muestra todos los datos de un servicio 5. El usuario pulsa “Chat”. 6. El sistema despliega todo el historial de chats de la aplicación. 7. El usuario pulsa “Nuevo mensaje”. 8. El sistema redirige al usuario a una pantalla donde rellenar el mensaje. 9. El usuario escribe el mensaje y pulsa “Añadir” para enviarlo. 10. El sistema devuelve al usuario a la pantalla de mensajes para ver todos los enviados (incluido el nuevo). Postcondición si éxito Se registra el mensaje y se almacena en la base de datos. Postcondición si fallo El mensaje no se envía y se muestra un error.
56 Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. 7.1. Ocurre un error en servidor y se muestra un mensaje de error 9.1. El usuario no rellena el mensaje y sale un mensaje de error para que rellene el campo. 9.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Tabla 17 - Envío de mensaje en servicio
57 S-10 Acceso a videoconferencia Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Accede al enlace de videoconferencia de un servicio en la aplicación. Actor Estudiante. Entrada - Salida Redirección del sistema al usuario a la web de zoom donde tendrá lugar la conferencia, dentro del navegador integrado en la app. Precondición El usuario está autenticado y está unido, o es el publicador, a ese servicio. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón servicios de la barra de navegación. 2. El sistema le redirige a la pantalla de servicios. 3. El usuario pulsa un servicio. 4. El sistema redirige al usuario a una pantalla que muestra todos los datos de un servicio. 5. El usuario pulsa “Conference url”. 6. El sistema redirige al usuario a la web donde tiene lugar la conferencia. Postcondición si éxito Se redirige al usuario a la web donde tiene lugar la conferencia. Postcondición si fallo La web no carga y da error al usuario. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Desde la versión iOS el navegador integrado en la aplicación permite tener la reunión sin salir de esta, aunque da la opción para abrir en el navegador web y en caso de tener la aplicación zoom instalada se abre el enlace ahí. Al ser una aplicación multiplataforma, al usarla desde un navegador web en un ordenador
64 G-04 Modificar grupo Versión 1.0.0 Prioridad Alta. Estabilidad Media. Descripción Modificar los datos del grupo publicado en la aplicación. Actor Estudiante. Entrada Datos nuevos (código de la asignatura del grupo, tamaño del grupo, curso del grupo de la asignatura para la que se necesita un grupo, url del repositorio de GitHub donde se alojará el código, url del repositorio de Drive donde se alojarán otros documentos, descripción detallada de lo que se espera de ese grupo). Salida Redirección correcta al módulo de grupos propios o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos propios. 3. El usuario accede al grupo creado por él mismo y pulsa el botón superior derecho de editado y sobrescribe los campos que considera. 8. El usuario pulsa el botón “Editar grupo” 9. El sistema redirige al usuario al módulo de grupos propios. Postcondición si éxito Se modifican los datos del grupo en la aplicación y en la base de datos. Postcondición si fallo Los datos del grupo no se actualizan y se le notifica del error. Excepciones 6.1. El usuario borra y no rellena alguno de los campos y se muestra un mensaje de error. 6.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Los campos input text cargan los datos actuales y reales del grupo almacenados en la base de datos, por lo que si no quiere cambiarlos
65 basta con no tocarlos. Si se borran y se dejan vacío dará error puesto que los está intentando actualizar con datos vacíos. Tabla 23 - Modificar grupo G-05 Listar grupos propios Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Lista todos los grupos propios, tanto creados por el propio usuario como unidos. Actor Estudiante. Entrada - Salida Lista de grupos propios (grupos unidos y grupos creados). Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El sistema muestra una lista de grupos propios (grupos unidos y grupos creados). Postcondición si éxito Se muestra una lista con grupos propios pedidos u ofertados. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. No existe ningún grupo que cumpla el criterio de búsqueda. 3.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 24 - Listar grupos propios
66 G-06 Listar todos los grupos Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Lista todos los grupos, tanto los propios (creados y unidos), como los ajenos y sin unir. Actor Estudiante. Entrada - Salida Lista de todos los grupos. Precondición El usuario está autenticado y hay al menos 1 grupo publicado en la base de datos. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El usuario presiona el botón superior derecho de “Listado de todos los grupos”. 4. El sistema muestra una lista de todos los grupos. Postcondición si éxito Se muestra una lista con todos los grupos. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. No existe ningún grupo que cumpla el criterio de búsqueda. 3.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 25 - Listar todos los grupos
67 G-07 Buscar grupos por código de asignatura Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Busca por código de asignatura grupos creados. Actor Estudiante. Entrada Código del grupo que se busca. Salida Lista de grupos que cumplen con la condición de búsqueda (el código).. Precondición El usuario está autenticado y hay al menos 1 grupo dado de alta en la base de datos de la aplicación. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El usuario presiona el botón superior derecho de “Listado de todos los grupos”. 4. El sistema le redirige a la pantalla de todos los grupos ofertados. 5. El usuario presiona el botón de “Búsqueda de grupos” e introduce los datos de búsqueda. 6. El sistema muestra una lista de grupos filtrada por el código de asignatura introducido. Postcondición si éxito Se muestra una lista con grupos que cumplen los criterios de búsqueda. Postcondición si fallo No se carga la página de búsqueda y se le notifica el error. Excepciones 4.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. No existe ningún grupo que cumpla el criterio de búsqueda. 5.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 26 - Buscar grupos por código de asignatura
68 G-08 Unión a grupo Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción El usuario se une a un grupo (que no ha creado él). Actor Estudiante. Entrada - Salida Unión al grupo o mensaje de error. Precondición El usuario está autenticado y al menos otro usuario ha dado de alta un grupo en la base de datos. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El usuario presiona el botón superior derecho de “Listado de todos los grupos”. 4. El sistema le redirige a la pantalla de todos los grupos ofertados. 5. El usuario pulsa un grupo. 6. El sistema redirige al usuario a una pantalla que muestra todos los datos de un grupo. 7. El usuario pulsa “Únete”. 8. El sistema hace visible al usuario los enlaces de GitHub y Drive, el chat del grupo y un botón “Salir del grupo”. Postcondición si éxito Se une el estudiante al grupo y se registra en la base de datos. Postcondición si fallo El usuario no se une al grupo y se le notifica con un mensaje de error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. 7.1. Ocurre un error en el servidor y se muestra un mensaje de error.
69 Comentarios Tabla 27Unión a grupo G-09 Salida de grupo Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción El usuario sale de un grupo (al que previamente se había unido y del que no es el dueño). Actor Estudiante. Entrada - Salida Salida del grupo o mensaje de error. Precondición El usuario está autenticado y al menos otro usuario ha dado de alta un grupo en la base de datos al cual está unido. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El usuario pulsa un grupo y pulsa “Salir del grupo”. 4. El sistema redirige al usuario a la pantalla de grupos (con un grupo menos). Postcondición si éxito Se une el estudiante al grupo y se registra en la base de datos. Postcondición si fallo El usuario no se une al grupo y se le notifica con un mensaje de error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 28 - Salida de grupo
70 G-10 Envío de mensaje grupal Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Contacta con el propietario de un grupo (o con el otro miembro en caso de ser propietario). Actor Estudiante. Entrada Mensaje de texto. Salida Mensaje registrado en la pantalla o mensaje de error. Precondición El usuario está autenticado y unido (o propietario) en un grupo donde registrar el mensaje. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El usuario pulsa un grupo. 4. El sistema redirige al usuario a una pantalla que muestra todos los datos de un grupo. 5. El usuario pulsa “Chat de grupo”. 6. El sistema despliega todo el historial de chats de la aplicación. 7. El usuario pulsa “Nuevo mensaje”. 8. El sistema redirige al usuario a una pantalla donde rellenar el mensaje. 9. El usuario escribe el mensaje y pulsa “Añadir” para enviarlo. 10. El sistema devuelve al usuario a la pantalla de mensajes para ver todos los enviados en el grupo (incluido el nuevo). Postcondición si éxito Se registra el mensaje y se almacena en la base de datos. Postcondición si fallo El mensaje no se envía y se muestra un error.
71 Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. 7.1. Ocurre un error en servidor y se muestra un mensaje de error 9.1. El usuario no rellena el mensaje y sale un mensaje de error para que rellene el campo. 9.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Tabla 29 - Envío de mensaje grupal
72 G-11 Acceso a repositorio de Github Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Accede al enlace de GitHub de un grupo en la aplicación. Actor Estudiante. Entrada - Salida Redirección del sistema al usuario a la web de GitHub donde tendrá lugar el repositorio, dentro del navegador integrado en la app. Precondición El usuario está autenticado y está unido o es el creador de un grupo. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El usuario pulsa un grupo. 4. El sistema redirige al usuario a una pantalla que muestra todos los datos de un grupo. 5. El usuario pulsa “GitHub repo”. 6. El sistema redirige al usuario a la web donde tiene lugar el repositorio. Postcondición si éxito Se redirige al usuario a la web donde tiene lugar el repositorio. Postcondición si fallo La web no carga y da error al usuario. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Desde la versión iOS el navegador integrado en la aplicación permite tener acceso al repositorio sin salir de esta, aunque da la opción para abrir en el navegador web y en caso de tener la aplicación de GitHub instalada se abre el enlace ahí. Tabla 30 - Acceso a repositorio de Github
73 G-12 Acceso a almacenamiento de Drive Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Accede al enlace de Drive de un grupo en la aplicación. Actor Estudiante. Entrada - Salida Redirección del sistema al usuario a la web de Drive donde tendrá lugar el repositorio de archivos variados, dentro del navegador integrado en la app. Precondición El usuario está autenticado y está unido o es el creador de un grupo. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón grupos de la barra de navegación. 2. El sistema le redirige a la pantalla de grupos. 3. El usuario pulsa un grupo. 4. El sistema redirige al usuario a una pantalla que muestra todos los datos de un grupo. 5. El usuario pulsa “Drive storage”. 6. El sistema redirige al usuario a la web donde tiene lugar el almacenamiento de Drive. Postcondición si éxito Se redirige al usuario a la web donde tiene lugar el repositorio. Postcondición si fallo La web no carga y da error al usuario. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error.
80 Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Muestra la publicación de un usuario de la aplicación. Actor Estudiante. Entrada - Salida Redirección del sistema al usuario a la pantalla de descripción detallada de un hilo (o post), o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros. 3. El usuario selecciona el subforo que desea. 4. El sistema le redirige a la pantalla de todos los posts de este subforo. 5. El usuario accede al post. 6. El sistema redirige al usuario a una pantalla que muestra todos los datos de un post. Postcondición si éxito Se muestran los datos del post publicado en la aplicación almacenados en la base de datos, redirigiendo al usuario a una pantalla detallada del post. Postcondición si fallo Los datos del post no se muestran y se notifica al usuario del error. Excepciones 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Desde esta pantalla además de ver datos como si el post tiene respuestas, fecha de las respuestas, autores e incluso los perfiles de esos autores. Tabla 36 - Mostrar post
81 F-04 Modificación Post Versión 1.0.0 Prioridad Alta. Estabilidad Media. Descripción Modificar los datos del post publicado en la aplicación. Actor Estudiante. Entrada Datos nuevos (título nuevo, cuerpo del post nuevo). Salida Redirección correcta al listado de posts del subforo o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros. 3. El usuario selecciona el subforo que desea. 4. El sistema le redirige a la pantalla de todos los posts de este subforo. 5. El usuario accede al post y pulsa el botón superior derecho de editado y sobrescribe los campos que considera. 6. El usuario pulsa el botón “Editar post” 7. El sistema redirige al usuario a una pantalla que muestra todos los posts del mismo subforo, con este editado. Postcondición si éxito Se modifican los datos del post en la aplicación y en la base de datos. Postcondición si fallo Los datos del post no se actualizan y se le notifica del error. Excepciones 5.1. El usuario borra y no rellena alguno de los campos y se muestra un mensaje de error. 6.1. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Los campos input text cargan los datos actuales y reales del post almacenados en la base de datos, por lo que si no quiere cambiarlos basta con no tocarlos. Si se borran y se dejan vacío dará error puesto
82 que los está intentando actualizar con datos vacíos. Tabla 37 - Modificación Post F-05 Listar todos los posts de un subforo Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Lista todas las publicaciones de un subforo determinado. Actor Estudiante. Entrada - Salida Lista de posts de un subforo.. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros. 3. El usuario selecciona el subforo que desea. 4. El sistema le redirige a la pantalla de todos los posts de este subforo. Postcondición si éxito Se muestra una lista con posts. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. No existe ningún post en este subforo. 3.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 38 - Listar todos los posts de un subforo
83 F-06 Buscar posts por título Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Busca por título todos los posts (da igual el subforo). Actor Estudiante. Entrada Título del post que se busca. Salida Lista de posts que cumplen con la condición de búsqueda (el código).. Precondición El usuario está autenticado y hay al menos 1 post dado de alta en la base de datos de la aplicación. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros. 3. El usuario selecciona el subforo que desea. 4. El sistema le redirige a la pantalla de todos los posts de este subforo. 5. El usuario presiona el botón de “Búsqueda de posts” e introduce los datos de búsqueda. 6. El sistema muestra una lista de posts filtrada por el título del post. Postcondición si éxito Se muestra una lista con posts que cumplen los criterios de búsqueda. Postcondición si fallo No se carga la página de búsqueda y se le notifica el error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. No existe ningún post que cumpla el criterio de búsqueda. 5.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Se podría sacar fuera de los subforos el botón de búsqueda, puesto la búsqueda es común a todos los subforos. Tabla 39 - Buscar posts por título
84 F-07 Alta respuesta Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Da de alta una nueva respuesta a un post. Actor Estudiante. Entrada Texto de la respuesta. Salida Respuesta al post creada correctamente y redirección a la pantalla del post, o mensaje de error. Precondición El usuario está autenticado, y existe el post sobre el que se quiere crear una respuesta. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros. 3. El usuario selecciona el subforo que desea. 4. El sistema le redirige a la pantalla de todos los posts de este subforo. 5. El usuario pulsa el post al que desea contestar y pulsa “Responder” 6. El sistema le redirige a la pantalla de nueva respuesta. 7. El usuario rellena el texto de la nueva respuesta. 8. El usuario pulsa sobre el botón “Responder”. 9. El sistema da de alta la respuesta y redirige al usuario al post. Postcondición si éxito Se registra la respuesta del post en la aplicación y se almacena en la base de datos. Postcondición si fallo La nueva publicación de respuesta del post no se registra y se le notifica el error. Excepciones 7.1. El usuario no rellena todos los datos y da error. 7.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 40 - Alta respuesta
85 F-08 Mostrar perfil de autor de post Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Muestra los datos del perfil de un usuario de la aplicación que ha creado un post. Actor Estudiante. Entrada - Salida Mostrado de datos correcto y redirección del sistema al usuario a la pantalla de perfil o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros. 3. El usuario selecciona el subforo que desea. 4. El sistema le redirige a la pantalla de todos los posts de este subforo. 5. El usuario accede al post. 6. El sistema redirige al usuario a una pantalla que muestra todos los datos de un post. 7. El usuario pulsa el nombre del autor del post. 8. El sistema redirige al usuario a la pantalla de perfil donde le muestra el número de servicios, grupos y posts además de nombre, biografía y correo. Postcondición si éxito El sistema muestra al usuario nombre, biografía y correo además de su participación en la app. Postcondición si fallo Los datos del usuario no se muestran y se le notifica del error. Excepciones 7.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 41Mostrar perfil de autor de post
86 F-09 Mostrar perfil de autor de respuesta Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Muestra los datos del perfil de un usuario de la aplicación que ha respondido a un post. Actor Estudiante. Entrada - Salida Mostrado de datos correcto y redirección del sistema al usuario a la pantalla de perfil o mensaje de error. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros. 3. El usuario selecciona el subforo que desea. 4. El sistema le redirige a la pantalla de todos los posts de este subforo. 5. El usuario accede al post. 6. El sistema redirige al usuario a una pantalla que muestra todos los datos de un post. 7. El usuario pulsa el nombre del autor de una respuesta del post. 8. El sistema redirige al usuario a la pantalla de perfil donde le muestra el número de servicios, grupos y posts además de nombre, biografía y correo. Postcondición si éxito El sistema muestra al usuario nombre, biografía y correo además de su participación en la app. Postcondición si fallo Los datos del usuario no se muestran y se le notifica del error. Excepciones 7.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 42 - Mostrar perfil de autor de respuesta
87 F-10 Listar todos los subforos Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Lista todos los subforos del foro de la aplicación. Actor Estudiante. Entrada - Salida Lista de subforos. Precondición El usuario está autenticado. Secuencia normal 1. El usuario accede a la aplicación y pulsa sobre el botón foros de la barra de navegación. 2. El sistema le redirige a la pantalla de foros y le muestra una lista interactiva de todos los subforos. Postcondición si éxito Se muestra una lista con subforos. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 1.1. Ocurre un error en el servidor y se muestra un mensaje de error. 2.1. No existe ningún subforo. 2.2. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Tabla 43 - Listar todos los subforos
88 4.2.2. Módulo administrador En esta sección se muestran los casos de uso asociados al usuario administrador. En la figura 21 se puede observar el diagrama de casos de uso del usuario. Figura 34 - Diagrama de casos de uso de administrador
89 A-01 Listar todos los usuarios Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Lista todos los usuarios de la aplicación. El botón encargado de esto solo está disponible para los usuarios con rol de administrador. Actor Administrador. Entrada - Salida Todos los usuarios listados. Precondición El usuario administrador está autenticado. Secuencia normal 1. El administrador accede a la aplicación y pulsa sobre el home situado arriba a la izquierda. 2. El sistema le redirige a la pantalla de gestión de usuario (perfil). 3. El administrador pulsa “Modo administrador”. 4. El sistema redirige al usuario a una pantalla que muestra los cuatro módulos para administrar (usuarios, foros, grupos y servicios). 5. El usuario pulsa sobre el módulo usuarios. 6. El sistema redirige al usuario a la pantalla de lista de todos los usuarios de la aplicación. Postcondición si éxito Se muestra una lista con todos los usuarios activos en la aplicación. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Sería interesante notificar de cambios a los usuarios una vez hechos. Tabla 44 - Listar todos los usuarios
96 Excepciones 10.1. El administrador borra y no rellena alguno de los campos y se muestra un mensaje de error. 10.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Los campos input text cargan los datos actuales y reales del post almacenados en la base de datos, por lo que si no quiere cambiarlos basta con no tocarlos. Si se borran y se dejan vacío dará error puesto que los está intentando actualizar con datos vacíos. Tabla 48 - Editar post foro
97 A-06 Eliminar post foro Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Da de baja un post de la aplicación. El botón encargado de esto solo está disponible para los usuarios con rol de administrador. Actor Estudiante. Entrada - Salida Cuenta eliminada correctamente y redirección a la lista de todos los posts para administrar o mensaje de error. Precondición El usuario administrador está autenticado. Secuencia normal 1. El administrador accede a la aplicación y pulsa sobre el home situado arriba a la izquierda. 2. El sistema le redirige a la pantalla de gestión de usuario (perfil). 3. El administrador pulsa “Modo administrador”. 4. El sistema redirige al usuario a una pantalla que muestra los cuatro módulos para administrar (usuarios, foros, grupos y servicios). 5. El usuario pulsa sobre el módulo posts. 6. El sistema redirige al usuario a la pantalla de lista de todos los posts de la aplicación. 7. El usuario presiona el botón de “Eliminar post” en un post de la lista. 8. El sistema muestra un modal (un pop-up) al usuario preguntando si está seguro de que desea borrar todos los datos. 9. El usuario pulsa confirmar. 11. El sistema redirige al usuario a la pantalla de lista de todos los posts de la aplicación. Postcondición si éxito Se da de baja el post de la aplicación y se elimina de la base de datos. Postcondición si fallo No se da al post de baja y se le notifica el error.
98 Excepciones 5.1. El administrador borra y no rellena alguno de los campos y se muestra un mensaje de error. 9.1. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Tabla 49 - Eliminar post foro
99 A-07 Listar todos los grupos Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Lista todos los grupos creados de la aplicación. El botón encargado de esto solo está disponible para los usuarios con rol de administrador. Actor Administrador. Entrada - Salida Todos los grupos listados. Precondición El usuario administrador está autenticado. Secuencia normal 1. El administrador accede a la aplicación y pulsa sobre el home situado arriba a la izquierda. 2. El sistema le redirige a la pantalla de gestión de usuarios. 3. El administrador pulsa “Modo administrador”. 4. El sistema redirige al usuario a una pantalla que muestra los cuatro módulos para administrar (usuarios, foros, grupos y servicios). 5. El usuario pulsa sobre el módulo grupos. 6. El sistema redirige al usuario a la pantalla de lista de todos los grupos de la aplicación. Postcondición si éxito Se muestra una lista con todos los grupos activos en la aplicación. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Sería interesante notificar de cambios a los usuarios una vez hechos cambios en los grupos a los que pertenecen. Tabla 50 - Listar todos los grupos
100 A-08 Editar grupo Versión 1.0.0 Prioridad Alta. Estabilidad Media. Descripción Modificar los datos de un grupo de la aplicación. El botón encargado de esto solo está disponible para los usuarios con rol de administrador. Actor Estudiante. Entrada Datos nuevos (código de la asignatura del grupo, tamaño del grupo, curso del grupo de la asignatura para la que se necesita un grupo, url del repositorio de GitHub donde se alojará el código, url del repositorio de Drive donde se alojarán otros documentos, descripción detallada de lo que se espera de ese grupo). Salida Datos modificados correctamente y redirección a la lista de todos los grupos para administrar o mensaje de error. Precondición El usuario administrador está autenticado. Secuencia normal 1. El administrador accede a la aplicación y pulsa sobre el home situado arriba a la izquierda. 2. El sistema le redirige a la pantalla de gestión de usuario (perfil). 3. El administrador pulsa “Modo administrador”. 4. El sistema redirige al usuario a una pantalla que muestra los cuatro módulos para administrar (usuarios, foros, grupos y servicios). 5. El usuario pulsa sobre el módulo foros. 6. El sistema redirige al usuario a la pantalla de lista de todos los grupos de la aplicación. 7. El usuario presiona el botón de “Modificar datos”, sobrescribiendo los campos que considera. 8. El usuario pulsa el botón “Guardar cambios” 9. El sistema redirige al usuario a la pantalla de lista de todos los grupos de la aplicación. Postcondición si éxito Se modifican los datos del grupo en la aplicación y en la base de datos. Postcondición si fallo Los datos del grupo no se actualizan y se le notifica del error.
101 Excepciones 10.1. El administrador borra y no rellena alguno de los campos y se muestra un mensaje de error. 10.2. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Los campos input text cargan los datos actuales y reales del grupo almacenados en la base de datos, por lo que si no quiere cambiarlos basta con no tocarlos. Si se borran y se dejan vacío dará error puesto que los está intentando actualizar con datos vacíos. Tabla 51 - Editar grupo
102 A-09 Eliminar grupo Versión 1.0.0 Prioridad Alta. Estabilidad Baja. Descripción Da de baja un grupo de la aplicación. El botón encargado de esto solo está disponible para los usuarios con rol de administrador. Actor Estudiante. Entrada - Salida Cuenta eliminada correctamente y redirección a la lista de todos los grupos para administrar o mensaje de error. Precondición El usuario administrador está autenticado. Secuencia normal 1. El administrador accede a la aplicación y pulsa sobre el home situado arriba a la izquierda. 2. El sistema le redirige a la pantalla de gestión de usuario (perfil). 3. El administrador pulsa “Modo administrador”. 4. El sistema redirige al usuario a una pantalla que muestra los cuatro módulos para administrar (usuarios, foros, grupos y servicios). 5. El usuario pulsa sobre el módulo grupos. 6. El sistema redirige al usuario a la pantalla de lista de todos los grupos de la aplicación. 7. El usuario presiona el botón de “Eliminar grupo” en un grupo de la lista. 8. El sistema muestra un modal (un pop-up) al usuario preguntando si está seguro de que desea borrar todos los datos. 9. El usuario pulsa confirmar. 12. El sistema redirige al usuario a la pantalla de lista de todos los grupos de la aplicación. Postcondición si éxito Se da de baja el grupo de la aplicación y se elimina de la base de datos. Postcondición si fallo No se da al grupo de baja y se le notifica el error.
103 Excepciones 5.1. El administrador borra y no rellena alguno de los campos y se muestra un mensaje de error. 9.1. Ocurre un error en servidor y se muestra un mensaje de error Comentarios Tabla 52 - Eliminar grupo
104 A-10 Listar todos los servicios Versión 1.0.0 Prioridad Alta. Estabilidad Alta. Descripción Lista todos los servicios creados de la aplicación. El botón encargado de esto solo está disponible para los usuarios con rol de administrador. Actor Administrador. Entrada - Salida Todos los servicios listados. Precondición El usuario administrador está autenticado. Secuencia normal 1. El administrador accede a la aplicación y pulsa sobre el home situado arriba a la izquierda. 2. El sistema le redirige a la pantalla de gestión de usuarios. 3. El administrador pulsa “Modo administrador”. 4. El sistema redirige al usuario a una pantalla que muestra los cuatro módulos para administrar (usuarios, foros, grupos y servicios). 5. El usuario pulsa sobre el módulo servicios. 6. El sistema redirige al usuario a la pantalla de lista de todos los servicios de la aplicación. Postcondición si éxito Se muestra una lista con todos los servicios activos en la aplicación. Postcondición si fallo No se carga la página de listado y se le notifica el error. Excepciones 3.1. Ocurre un error en el servidor y se muestra un mensaje de error. 5.1. Ocurre un error en el servidor y se muestra un mensaje de error. Comentarios Sería interesante notificar de cambios a los usuarios una vez hechos cambios en los servicios a los que pertenecen. Tabla 53 - Listar todos los servicios
105 A-11 Editar servicio Versión 1.0.0 Prioridad Alta. Estabilidad Media. Descripción Modificar los datos de un post (de un foro) de la aplicación. El botón encargado de esto solo está disponible para los usuarios con rol de administrador. Actor Estudiante. Entrada Datos nuevos (código del servicio, descripción detallada, dirección de la conferencia del servicio). Salida Datos modificados correctamente y redirección a la lista de todos los servicios para administrar o mensaje de error. Precondición El usuario administrador está autenticado. Secuencia normal 1. El administrador accede a la aplicación y pulsa sobre el home situado arriba a la izquierda. 2. El sistema le redirige a la pantalla de gestión de usuario (perfil). 3. El administrador pulsa “Modo administrador”. 4. El sistema redirige al usuario a una pantalla que muestra los cuatro módulos para administrar (usuarios, foros, grupos y servicios). 5. El usuario pulsa sobre el módulo foros. 6. El sistema redirige al usuario a la pantalla de lista de todos los servicios de la aplicación. 7. El usuario presiona el botón de “Modificar datos”, sobrescribiendo los campos que considera. 8. El usuario pulsa el botón “Guardar cambios” 9. El sistema redirige al usuario a la pantalla de lista de todos los servicios de la aplicación. Postcondición si éxito Se modifican los datos del servicio en la aplicación y en la base de datos. Postcondición si fallo Los datos del servicio no se actualizan y se le notifica del error.
112 5.3. Patrones de diseño Aquí algunos patrones de diseño utilizados en la aplicación: 5.3.1. Inyección de dependencias Consiste en crear una instancia del objeto requerido por la clase actual a través del contenedor, sin la necesidad de que la propia clase cree una instancia del objeto. El propósito es desacoplar la clase. En proyectos pequeños, es posible que el valor de la inyección de dependencia no se refleje, pero en proyectos de colaboración de varias personas a gran escala, la inyección de dependencia[21] puede hacer que todo el proyecto sea más sólido y fácil de mantener. En este caso nos hemos decidido por la dependencia Provider ya que nos ofrece esta funcionalidad entre otras (figura 34). Figura 39 - Diagrama del patrón de service layer y repository intercambiando datos Figura 40 - Dependencia provider
113 5.3.2. Singleton De acuerdo con impedir la creación de varios objetos de una clase, el patrón Singleton se utiliza para controlar la creación y el uso de objetos de una clase de forma dinámica en tiempo de ejecución. En el caso de este proyecto para controlar que solo haya un único objeto de las clases repositorio de acceso a datos y de servicios para acceder a la lógica de aplicación, mediante el uso y la ayuda de la dependencias get_it y Provider. 5.3.3. Observer Es uno de los patrones de diseño de software más usados, ofreciendo la posibilidad de definir una dependencia entre dos o más objetos transmitiendo los cambios de un objeto al resto. Se registra en un objeto cualquier otro objeto, que funcionará como observador. Este patrón es muy importante en la aplicación para mantener los elementos/Widgets actualizados en las pantallas ante cualquier cambio, se utilizan Widgets con estado (StatefulWidgets) y/o también nos lo resuelve la dependencia Provider. Figura 41 - Singleton ejemplo getInstance() Figura 42 - Patrón observer
114 5.3.4. Data Transfer Object Es un objeto que transporta datos entre procesos. La motivación para su uso es que la comunicación entre procesos suele realizarse recurriendo a interfaces remotas (ya sea por ejemplo con Firebase o Cloudinary). La diferencia entre los objetos de transferencia de datos y los objetos de negocio o los objetos de acceso a datos es que un DTO[22] no tiene ningún comportamiento, excepto el almacenamiento, la recuperación, la serialización y la deserialización de sus propios datos. Para la realización de estos nos hemos Figura 43 - Patrón DTO
115 Capítulo 6. Modelo de datos En este capítulo se describe como se ha estructurado el modelo de datos de la aplicación definido para la aplicación. En primer lugar, se presentará el modelo E-R y a continuación la implementación de éste mediante una base de datos NoSQL de tipo Firebase. 6.1. Modelo E-R En la figura 26 se representa el modelo entidad-relación donde aparecen todas las entidades de la aplicación, con su cardinalidad, atributos y relaciones entre ellas. Figura 44 - Modelo E-R de la aplicación Uni4All Un usuario puede dar de alta una (o muchas) publicaciones de servicio, en las cuales se almacenan mensajes. También puede obtener (unirse a un servicio) 1 o N veces. Y, por último, crea los mensajes que se almacenan en un servicio. Por otro lado, un usuario puede crear uno (o muchos) posts y una o muchas respuestas, todas ellas contenidas en 1 post, los cuales están contenidos en 1 subforo. Para acabar, el usuario puede crear, o unirse, a uno o muchos grupos, los cuales almacenan mensajes creados por los usuarios.
116 Con este diagrama queda explicado de un vistazo como el sistema tiene 4 entidades principales: servicios, grupos, foros y usuarios. Obtenemos visualmente información de los atributos de cada tabla y como se relacionan entre ellas para identificar al dueño de un servicio, al usuario que envía un mensaje, etc. 6.2. Implementación de la base de datos El modelo E-R de la figura 26 se ha implementado mediante una base de datos NoSQL de tipo FireBase, y para ello se han definido las siguientes colecciones de documentos del apartado 5.3. Cada entidad cuenta un identificador único, generado aleatoriamente por FireBase. Este identificador se ha obviado del modelo E-R de la figura 26, pero aparece descrito en las tablas detalladas que aparecen en el siguiente punto de implementación de la base de datos. En la figura 27 se puede ver el identificador de cada subforo. Figura 45 - Implementación de la bbdd 6.3. Colecciones de documentos En esta sección se describen todas las colecciones de documentos definidas en el modelo de datos de la aplicación Uni4All que se ha desarrollado en este trabajo de fin de grado. En la figura 28 se presenta un diagrama con todas las colecciones definidas y como se relacionan entre sí, previo al desarrollo de los datos de cada colección.
117 Figura 46 - Diagrama colecciones documentos ● Colección de documentos de tipo User: contiene información sobre los usuarios y está constituida por los siguientes campos: 1. Email: correo electrónico del usuario. 2. Active: determina si se trata de un usuario activo o no. 3. Bio: biografía sobre el usuario. 4. isAdmin: determina si se trata de un usuario administrador o estándar. 5. Name: nombre del usuario. 6. Nick: alias del usuario. 7. Password: contraseña del usuario. 8. Id: id único del registro ● Colección de documentos de tipo Answer: en ella se encuentra la información de los diferentes Post del foro, sus campos son los siguientes: 1. DateTime: fecha en la que se publicó la respuesta. 2. Answer: contenido de la respuesta. 3. Id: id único del registro. ● Colección de documentos de tipo Post: guarda la información perteneciente a las respuestas de cada uno de los Post del foro, está formada por los siguientes campos: 1. Title: título de la publicación del foro. 2. Body: cuerpo de la publicación del foro. 3. Id: id único del registro.
118 ● Colección de documentos de tipo Forum Section: alberga la información de cada uno de los temas del foro, sus campos son los siguientes: 1. Title: título de la sección del foro. 2. Id: id único del registro. ● Colección de documentos de tipo Service: contiene la información referente al servicio. 1. Code: código de la asignatura. 2. Conference: enlace a vídeo conferencia. 3. Description: texto explicativo del servicio. 4. Id: id único del registro. ● Colección de documentos de tipo Group: contiene la información de los grupos de trabajo. 1. nMembersRequired: número de miembros que admite el grupo. 2. GithUrl: enlace al GitHub en el que se encuentran el código del grupo. 3. DriveUrl: enlace al Google Drive donde el equipo almacena sus documentos. 4. Description: descripción del grupo. 5. Asignatura: código único de la asignatura. 6. Year: curso al que pertenece la asignatura. 7. Id: id único del registro. ● Colección de documentos de tipo Message Service: en ella se encuentran los datos de los mensajes enviados entre los usuarios que comparten un servicio. 1. DateTime: fecha de publicación del mensaje. 2. Message: cuerpo del mensaje. 3. Id: id único del registro. ● Colección de documentos de tipo Message Group: en ella se encuentran los datos de los mensajes enviados entre usuarios del mismo grupo. 1. Message: cuerpo del mensaje. 2. DateTime: fecha de publicación del mensaje. 3. Id: id único del registro.
119 Capítulo 7: Diseño En este capítulo, se van a describir los principales aspectos acerca del diseño realizado para el desarrollo del proyecto y las principales funcionalidades. 7.1. Colores y Diseño En la elección de colores se buscó una paleta de colores muy sencilla para la aplicación, de forma que no sobrecargue visualmente al usuario y sean colores lo más suaves posibles. Está formada el blanco como color base principal, el negro y varios colores entre azul y morado para dar contraste. De cara al diseño, se optó por un ‘material-design’, debido a su sencillez y minimalismo, en el que el usuario ya está familiarizado, conjunto a la tipografía característica de ‘Roboto’. En la figura X se muestran cómo se compone el tema utilizado para la aplicación. Figura 47 - tfg_theme.dart del proyecto Uni4All
120 7.2. Funcionalidad principal 7.2.1. User y login Para acceder a la aplicación es necesario estar registrado como usuario, por lo que el usuario tendrá que registrarse y posteriormente hacer iniciar sesión para obtener el token e UUID[23 ] de usuario que guardaremos en el Keystore[24] de android o el Keychain[25] en IOS, contenedores especiales seguros donde guardar claves criptográficas[26]. Este es utilizado en la aplicación mediante la dependencia FlutterSecureStorage[27], instanciada como se ve en la figura 39. Figura 48 - Almacenamiento clave login Al registrarse el usuario se da de alta en el servicio de FirebaseAuthentication y al mismo tiempo el documento relativo a su información es guardado en la base de datos Firestore, como se puede ver en la figura 40, donde primero se llama al repositorio de autenticación y posteriormente al servicio de Usuario. Como se puede observar son instanciados mediante la dependencia GetIt[28] la cual implementa el patrón Singleton. Figura 49 - Código del registro
121 Si el usuario ya está registrado en la aplicación puede hacer login manualmente (figura 41), o si recientemente ha iniciado sesión y el dispositivo continúa almacenando el token de sesión del usuario utilizará este token entrando automáticamente a la aplicación. Figura 50 - Código del login Al acceder el usuario a la aplicación, aparece en la página principal de la misma, mostrándose en pantalla su perfil de usuario, con su información personal y unas estadísticas de: los servicios que ha solicitado y ofertado, los grupos a los que pertenece y los posts en los que ha participado. En la figura 42 se puede apreciar. Figura 51 - Servicios, grupos y posts. Todo esto a través de unas queries proporcionadas por FireBase, igual que la información de usuario obtenida. En la figura 43 se puede ver una captura de que ve al registrarse o iniciar sesión.
128 Figura 66 - Visualización hilo y respuestas También en esta misma pantalla (seguimos en la figura 37) se da la opción de poder editar y eliminar el post con los botones que aparecerán en la esquina superior derecha, únicamente si el usuario es el creador del mismo. 7.2.4. Grupos En el apartado de Grupos aparecen en la pantalla principal los grupos a los que tienes acceso, los que has creado y en los que participas (figura 59). También aparecen las opciones de crear un nuevo grupo y de acceder a una nueva pantalla con la lista de todos los grupos existentes. Si vamos a esta pantalla de todos los grupos existentes, aparecerán aquellos en los que participemos y no, con la posibilidad de unirnos a los que no. También en la barra superior tenemos la opción de buscar por código, implementada con el SearchDelegate de flutter. Al acceder a un grupo nos llevará a la pantalla de información del mismo: el número de usuarios que participan y máximo, con la posibilidad de acceder a ellos, el código de asignatura del grupo, el usuario que creó el grupo, la descripción del grupo, las urls si existiesen de github y drive (las cuales podríamos hacer click y que nos redirija a estas páginas con el navegador por defecto del terminal), y por
129 último un apartado de chat en el que se podrán intercambiar mensajes entre usuarios, tal y como aparece en la situación de la figura 61. Figura 67 - Servicio de unirse a un grupo Esta será reducida si el usuario no pertenece a este y tendrá la posibilidad de unirse al mismo si el grupo no ha llegado al número de usuarios máximos permitidos, como se muestra en la figura 60. Figura 70 – Selección de grupo De igual forma, si el usuario ya pertenece al grupo, tendrá la opción de acceder a los mensajes y urls de interés. También tendrá la opción de dejar el grupo (figura 61). Figura 68 - Figura dashboard grupos Figura 69 - Mostrado de grupo
130 Los mensajes intercambiados entre los miembros del grupo están ordenados por fecha, de más reciente a más antiguo. Estos son creados por la entidad ‘MessageGroup’ la cual vincula el Usuario y el Grupo con un mensaje. Figura 71 - Código MessageGroup de Uni4All Por último, si el usuario es el dueño del grupo, podrá editarlo y eliminarlo, con las acciones situadas en la esquina superior derecha. Figura 72Editado y borrado de grupo (owner) 7.2.5. Servicios En el apartado de Servicios aparecen en la pantalla principal los servicios a los que tienes acceso, los que has creado y los que has adquirido. También aparecen las opciones de crear un nuevo servicio (figura 65) y de acceder a una nueva pantalla con la lista de todos los servicios existentes. Si vamos a esta pantalla de todos los servicios existentes, aparecerán aquellos que hayamos ofertado, que hayamos adquirido y no, con la posibilidad de adquirir los que no.
131 También en la barra superior tenemos la opción de buscar por código, implementada con el SearchDelegate de flutter. Al acceder a un servicio, como en la figura 34, nos llevará a la pantalla de información del mismo: el usuario que ha adquirido el servicio, el código de del servicio, el usuario que ha creado el servicio, la descripción del servicio, una url con el link a una conferencia de Zoom (las cuales podríamos hacer click y que nos redirija a esta sesión en el navegador por defecto del terminal, si el servicio se realiza vía online), y por último un apartado de chat en el que se podrán intercambiar mensajes entre los usuarios participantes(que creador del servicio y el que lo consume). Figura 76 - Servicio de unirse a un servicio Figura 73 - Búsqueda de servicios Figura 75 - Creación de servicios Figura 74 - Detalle de servicio propio
132 Los mensajes intercambiados entre los miembros del servicio están ordenados por fecha, de más reciente a más antiguo. Estos son creados por la entidad ‘MessageService’ la cual vincula el Usuario y el Servicio con un mensaje. El código se recoge en la figura 68. Figura 77 - Código de envío de mensajes en servicios Por último, si el usuario es el dueño del servicio, podrá editarlo y eliminarlo, con las acciones situadas en la esquina superior derecha como siempre, como se refleja en la figura 69. Figura 78 - Editado y borrado de un grupo propio
133 Capítulo 8: Evaluación En este capítulo se realiza un análisis de los resultados que hemos obtenido en una encuesta realizada a 33 personas, en las que se valora principalmente la usabilidad de la aplicación que se ha desarrollado además de algunos aspectos más generales de la misma. 8.1. Herramientas y planteamiento Para la evaluación se ha utilizado Google Forms. Esta ha sido realizada por treinta y tres personas de entre 20 y 30 años con diferentes titulaciones universitarias, pertenecientes a distintos ámbitos del conocimiento y con diversos grados de familiarización con la tecnología. En la evaluación se distinguen diferentes secciones: ● General: en la que se tratan aspectos más generales como una valoración numérica de la propia aplicación, se pregunta a los usuarios si creen que harían uso de la aplicación en el caso de que su universidad se la proporcionará o si la interfaz de usuario resulta atractiva. ● Registro / inicio de sesión: se preguntan aspectos de la usabilidad de la sección de registro y del inicio de sesión. ● Servicios: se preguntan aspectos de la usabilidad de la sección de servicios. ● Grupos: se preguntan aspectos de la usabilidad de la sección de registro y del inicio de sesión. ● Perfil: se preguntan aspectos de la usabilidad de la sección del perfil del usuario. ● Foros: se preguntan aspectos de la usabilidad de la sección de foros. ● Conclusiones y sugerencias: en este apartado se pregunta al usuario sobre la utilidad de las diferentes secciones y si desean compartir con nosotros alguna sugerencia para mejorar la aplicación.
134 8.2. Resultado de la evaluación: En esta sección se muestran las preguntas que se han realizado y una conclusión de cada uno de los resultados obtenidos en las mismas. 8.2.1. General 8.2.1.1. Edad Figura 79 - Gráfico pregunta: ¿Qué edad tienes? En primer lugar, como se comenta anteriormente se ha preguntado a los usuarios sobre su edad. La totalidad de los usuarios encuestados se encontraba en la franja de edad de los 20 - 30 años. (Figura 79). 8.2.1.2. Valoración de la aplicación Figura 80 - Gráfico pregunta: ¿Qué valoración general darías a la app? En esta pregunta de la figura 80 se solicita al usuario una valoración general de la aplicación. La distribución de las respuestas ha sido 6 (3%), 7 (9,1%), 8 (27,3%), 9 (27,3%), 10 (33,3%). El resto de las opciones (1 – 5) no han recibido ningún voto (0%).
135 8.2.1.3. Uso de la aplicación Figura 81 - Gráfico pregunta: ¿Habrías utilizado esta herramienta en la universidad? Se plantea a los usuarios la posibilidad de utilizar / haber utilizado en su periodo universitario Uni4All. La gran mayoría, el 97% han contestado que la utilizarían, y un 3% ha contestado que no la utilizarían. (Figura 81). 8.2.1.4. Motivos por los cuales usarían la aplicación Figura 82 - Grafico pregunta: Si has respondido que sí, comenta los motivos En esta sección (figura 82) se recogen algunas respuestas proporcionadas por los encuestados en las cuales mencionan los motivos por los que han respondido que sí anteriormente.
136 8.2.1.5. Interfaz visual Figura 83 - Gráfico pregunta: ¿Te parece atractiva la interfaz visual de la app? Los resultados que refleja el gráfico de la figura 83 son 97% de los usuarios ha contestado que si les resulta intuitiva y 3% no consideran que Uni4All sea intuitiva. 8.2.1.6. No intuitividad y posibles modificaciones. Figura 84 - Pregunta: Si has contestado no, comenta los motivos y la modificación Como continuación de la pregunta anterior se encuentra esta (figura 84), en la que los usuarios comentan los motivos por los cuales no encuentran intuitiva la aplicación y alguna posible modificación. Entre las respuestas se encuentra la sugerencia de desarrollo de elementos de accesibilidad entre los que destaca el modo noche.
137 8.2.2. Registro/Inicio de sesión 8.2.2.1. ¿Es intuitivo el proceso Registro/Inicio de sesión? Como se puede observar en el gráfico de la figura 85 la totalidad de los usuarios encuestados consideran que tanto el registro como el inicio de sesión de la aplicación es intuitiva. Los resultados son 6 (3% de los usuarios), 7 (12,1% de los usuarios), 8 (12,1% de los usuarios), 9 (21,2% de los usuarios) y 10 (51,5% de los usuarios). Los valores por debajo del 6 no han recibido ningún voto por parte de los usuarios (0%). 8.2.2.2. Cambios y dificultades durante el proceso Figura 86 - Pregunta: ¿Cambiarías algo o has encontrado alguna dificultad? Figura 85 - Gráfico pregunta: ¿Encuentras la sección de servicios intuitiva?
144 La aplicación que se ha desarrollado en este trabajo de fin de grande cubre todos estos objetivos y ofrece grandes ventajas para su uso. El código de la aplicación puede obtenerse a través de este enlace: https://github.com/VaqueroGitHub/TFG 9.2. Trabajo futuro La funcionalidad de la aplicación podría mejorarse de la siguiente manera: • Integración de monedas: La aplicación inicialmente se pensó con un mayor contenido de ayuda mutua, en ambos sentidos, el usuario 1 ofrece ayuda en el tema 1 y el usuario 2 a cambio ofrece ayuda en el tema 2. Pero ¿y si el usuario 1 no necesita la ayuda en el tema 2? Al ofrecer un servicio se esperaba recibir otro a cambio, una ayuda mutua, pero se ha visto que hay casos en los que no se puede ofrecer lo que se pide a cambio. Sin embargo, sí puede haber un usuario 3 que ofrezca ese servicio pedido, pero no necesite lo que ofrece el usuario 1, entrando en juego el sistema de trueque de esa ayuda por un ítem no tangible (monedas). Por lo tanto, para un trabajo futuro se implementaría un sistema de precio por servicio (moneda que se le quita al que recibe el servicio, el beneficiado, y que se le suma al que lo oferta), con comprobaciones de monedas disponibles antes de pedir un servicio. En la figura 96 hemos incluido una idea de cómo se vería en la interfaz de la aplicación. En realidad, gran parte del desarrollo se haría en el back, no en el front. También creemos que se debería incluir en el perfil un indicador del número de monedas, pero habría un debate ético sobre si debiese ser público para el resto de usuario que visitar un perfil.
145 Figura 96 - Coste de los servicios • Sistema de recompensas por inicio de sesión continuado: Actualmente, al no haber monedas, no existe una recompensa que dar, pero, en caso de introducirlas se podría dar monedas cada varios días de conexión continuada para que así las personas que usan activamente la aplicación puedan pedir más servicios, lo cual es beneficioso tanto para ellos como para que los reciben las monedas, pues podrán pedir ayuda también en otras asignaturas. • Contraoferta de servicios: En caso de introducir un sistema de pagos por servicio sería interesante la posibilidad de negociar las monedas. Puede que el usuario 2 no tenga suficientes monedas para que el usuario1 le ayude a preparar un trabajo, o que el precio de la oferta de ayuda sea muy elevado para el usuario 2, y este ofrezca por recibirlo algo menos de monedas. • Módulo de soporte: A pesar de haber creado una app muy intuitiva, si un usuario tiene alguna duda sobre la funcionalidad de la aplicación no existe ningún apartado de ayuda o preguntas frecuentes. Es cierto que podría abrir un post en el foro preguntando sobre algún apartado de la aplicación, pero para futuras versiones se debería crear un apartado de ayuda y la posibilidad de contactar al desarrollador para proporcionar soporte real.
146 • Reporte de errores: Ahora mismo la aplicación no ofrece ningún sistema de reporte de errores a los desarrolladores, ni de ofrecer feedback (más allá de las encuestas que hemos hecho durante el último mes sobre la funcionalidad de la aplicación). Se podría desarrollar una funcionalidad que permita a cualquier usuario emitir incidencias en caso de que la funcionalidad de la aplicación o la consistencia de sus datos se vea comprometida. • Ampliación del sistema de administración: En este momento, cualquier cambio que haya que realizarse en la inclusión de administradores en la aplicación se debe de realizar directamente sobre la base de datos, en este sentido, se podría desarrollar en el módulo de administración de la app un sistema rápido y sencillo para aumentar los privilegios de usuarios estándar, por ejemplo, por un administrador ya existente. • Filtrado de posts por “No respondida”: Actualmente se pueden buscar posts por el título, pero no hay una forma de filtrar todos los posts por “No respondida”, así podría facilitarse la búsqueda de posts que aún no han recibido respuesta, con la intención de responderlos. Figura 97 - Situación actual de búsqueda
147 • Selección de la respuesta útil en foros: Actualmente cuando un usuario da de alta un post aparece como no respondido. Sin embargo, en cuanto recibe una respuesta (aunque no responda realmente a la pregunta o al tema) el post se considera automáticamente como respondido, y así lo refleja la interfaz. Figura 98 - Post sin responder Figura 99 - Post respondido
148 En una futura versión se podría seleccionar la respuesta “útil”, en caso de haberla, para que se muestre arriba del todo al navegar dentro del post, y así facilitar la solución de dudas a personas con el mismo problema. También podría no considerarse un post como contestado si lo contesta el mismo autor, que es lo que se ha hecho. La razón de esto es que muchas veces uno mismo encuentra solución a una duda que ha publicado, y puede que más gente la tenga en el futuro, pero también puede añadir un mensaje sin ser una respuesta y que ese Post pase desapercibido como que ya tiene una respuesta y no requiera atención. Es un tema para tratar en una versión futura muy interesante. • Citado de posts en foros: Actualmente no se puede citar una respuesta para responder, dentro de un post, a otra persona que no sea el OP (posteador original). Se podría incluir en una versión posterior la posibilidad de citar respuestas de alguna manera para facilitar el hilo de la conversación a usuarios que leen todos los comentarios. En la figura 100 se hace una referencia a donde podría incluirse el botón de citado de una respuesta.
149 Figura 100 - Posible ubicación del botón de citado en respuestas • Editado de respuestas en posts: Actualmente se puede editar un post creado en un foro, pero no las respuestas de este. En una versión futura se podría editar también la respuesta, aunque también podría incluirse un sistema de etiquetas de edición para facilitar la indicación de que se ha editado recientemente y no es la respuesta original. En la figura 101 se referencia donde se podría poner un lápiz (el mismo que el de editado del post al que se ha respondido).
150 Figura 101 - Situación actual del editado y ubicación para editado de respuesta
151 Chapter 9: Conclusions and future work 9.1. Conclusions In this project, an application has been developed that will allow students to develop their university life by centralizing in one place the group management of all their university projects and needs. Uni4All has been created with the intention of connecting students with other students, exchanging help in different subjects, forming groups and managing projects through messages and access to repositories to store files. Finally, using forums, answer any questions that may arise, comment on topics of academic interest and much more. When beginning to develop the end-of-degree project, a series of objectives were set on what the application would be like, which has finally been developed. Among the objectives was the exchange of help between students, the formation of groups (for practices or other academic needs) and the use of forums to resolve doubts and discuss other topics of interest. The advantages that can be achieved thanks to the use of this application are several: • Instead of using forums with a universal theme to deal with personal university issues, the possibility of using specialized forums on university issues is offered. • Formation of work groups in an easy and simple way, with the possibility of managing these group works from a single application, without the need to investigate for several days to join a group. • Use of a single application for communication, reducing the need to message on different platforms. • Management of links to code repositories, storage and videoconferences in a single place compared to the use of from different applications. • Possibility of requesting and offering help in subjects and other academic subjects using a common portal, thus avoiding posting offers, or requests, of classes and other subjects by boards (from the street) and other ways.
152 La aplicación que se ha desarrollado en este trabajo de fin de grande cubre todos estos objetivos y ofrece grandes ventajas para su uso. El código de la aplicación puede obtenerse a través de este enlace: https://github.com/VaqueroGitHub/TFG 9.2. Future work The functionality of the app could be improved as follows: • Integration of coins: The application was initially thought with a more sophisticated content of mutual help, in both directions, user 1 offers help on topic 1 and user 2 in return offers help on topic 2. But what happens when user 1 doesn't need help on topic 2? By offering a service, it is expected to receive another in return, mutual help, but it has been seen that there are situations where what is asked for in return cannot be offered. However, there may be a user 3 who offers that requested service, but does not need what user 1 offers, there’s where the need of a system of trading would really start coming into mind. Therefore, for future work, a service price system would be implemented (money, coins, that are taken from the buyer of the service, the beneficiary, and added to the one who offers it), with a money check given before requesting a service.
153 Figura 102 - Cost of services • System of rewards for continued login: Currently, as there are no coins, there is no reward to be given, but, if money is introduced, coins could be given every several days of continued connection so that people who actively use the application are rewarded. As a result, students could ask for more services, which is beneficial both for them and for those who receive the coins, since they can also ask for help in other subjects. • Counteroffer of services: In case of introducing a system of payment for services, the possibility of coin negotiating would be interesting. It may happen that user 2 does not have enough coins for user 1 to help him prepare a job, or that the price of the help offer is too high for user 2, and he offers to receive it a little less coin. • Support module: Despite having created a very intuitive app, if a user has any questions about the functionality of the application, there is no help section or frequently asked questions. It is true that the user could open a post in the forum asking about some topic or question about the application, but for a future version release a help section could be created with the possibility of contacting the developer to provide real support.