Full text
DESARROLLO DE UNA APLICACIÓN PARA LA GESTIÓN DE BÚSQUEDAS DE CIENTÍFICOS Y ORGANISMOS TRABAJO FIN DE GRADO CURSO 2022-2023 ALBERTO HERRERA GARCÍA GERALD LIMA MENDIA DIRECTORES: ANTONIO SARASA CABEZUELO COVADONGA DÍEZ SANMARTÍN GRADO EN INGENIERÍA INFORMÁTICA FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID Septiembre 2023
DEVELOPMENT OF AN APPLICATION FOR THE SEARCH MANAGEMENT OF SCIENTISTS AND ORGANIZATIONS FINAL DEGREE PROJECT REPORT COMPUTER ENGINEERING DEGREE AUTHORS: ALBERTO HERRERA GARCÍA GERALD LIMA MENDIA DIRECTED BY ANTONIO SARASA CABEZUELO COVADONGA DÍEZ SANMARTÍN COMPUTER ENGINEERING DEGREE FACULTY OF COMPUTER SCIENCE COMPLUTENSE UNIVERSITY OF MADRID SEPTEMBER 2023
A todos nuestros seres queridos, que nos animan a seguir luchando por nuestros sueños. 2
AGRADECIMIENTOS En primer lugar, nos gustaría dar las gracias a nuestros directores de proyecto, Antonio Sarasa y Covadonga Díez, quienes nos dieron la oportunidad de realizar este trabajo. Así mismo, queremos agradecer a nuestras madres Antonia y Angélica, y a nuestros padres Antonio y Germán todo el apoyo incondicional que nos lleváis dando toda la vida. A nuestros hermanos Sergio y Jhoel y a nuestras hermanas Carolina y Jessica, que se han interesado y preocupado por nosotros en todo momento. A nuestras abuelas Rufina y Marta que son nuestros tesoros y siempre quieren lo mejor para nosotros. Y por último a los abuelos Ginés, Antonio y Gabina quienes, a pesar de no poder estar en este momento de nuestra vida personal y estudiantil, nos dedicaron todo su tiempo, esfuerzo y cariño a convertirnos en las personas que somos y seremos en el futuro. 3
RESUMEN Este proyecto surge de la necesidad de crear un espacio donde los científicos de todo el mundo puedan encontrar proyectos apasionantes en los que poder participar y, al mismo tiempo, donde los organismos puedan publicar sus proyectos y encontrar científicos cualificados para poder hacerlos realidad. Actualmente, existen una gran cantidad de plataformas donde poder encontrar empleo de cualquier tipo y para cualquier profesión. Sin embargo, en este trabajo de fin de grado se ha desarrollado un sistema con el objetivo de centralizar a todos los científicos y organismos científicos en un entorno donde poder encontrarse y colaborar de forma más accesible. Para ello, cada científico puede realizar una publicación y cada organismo puede publicar sus proyectos. De esta manera, el científico puede recibir recomendaciones de proyectos en los que poder participar y el organismo puede recibir recomendaciones de científicos que pueden incorporarse a sus proyectos. Palabras clave Ciencia, científico, organismo, proyecto científico, investigación y aplicación web. 4
ABSTRACT This project arises from the need to create a space where scientists from all over the world can find exciting projects in which they can participate and, at the same time, where organizations can publish their projects and find qualified scientists to make them a reality. Currently, there are a large number of platforms where you can find employment of any kind and for any profession. However, in this final degree project, a system has been developed with the aim of centralizing all scientists and scientific organizations in an environment where they can meet and collaborate in a more accessible way. To do this, each scientist can make a publication and each organism can publish its projects. In this way, the scientist can receive recommendations of projects in which he can participate and the organism can receive recommendations from scientists who can join his projects. Keywords Science, scientist, organism, scientific project, research and web application. 5
ÍNDICE DE CONTENIDOS Capítulo 1 - Introducción......................................................................................................... 1 1.1 Motivación........................................................................................................................1 1.2 Objetivos...........................................................................................................................2 1.3 Estructura de la memoria............................................................................................... 2 1.4 Metodología.....................................................................................................................4 1.4.1 Planificación del proyecto.................................................................................... 4 1.4.2 Organización del trabajo...................................................................................... 5 Chapter 1 - Introduction............................................................................................................ 6 1.1 Motivation.........................................................................................................................6 1.2 Goals................................................................................................................................. 7 1.3 Structure of the report.....................................................................................................7 1.4 Methodology....................................................................................................................9 1.4.1 Project planning......................................................................................................9 1.4.2 Work plan...............................................................................................................10 Capítulo 2 - Estado del arte....................................................................................................12 2.1 ResearchGate................................................................................................................12 2.2 Academia.edu.............................................................................................................. 12 2.3 Mendeley........................................................................................................................13 2.4 SciProfiles.........................................................................................................................13 Capítulo 3 - Tecnología empleada.......................................................................................14 3.1 Angular............................................................................................................................14 3.2 Bootstrap.........................................................................................................................15 3.3 CSS...................................................................................................................................15 3.4 DBeaver.......................................................................................................................... 15 3.5 Firebase...........................................................................................................................16 3.6 Git.................................................................................................................................... 16 3.7 GitHub............................................................................................................................. 16 3.8 HTML................................................................................................................................ 17 3.9 Java Spring Boot............................................................................................................17 3.10 Node.js.......................................................................................................................... 17 6
3.11 NPM............................................................................................................................... 18 3.12 PostgreSQL....................................................................................................................18 3.13 Postman........................................................................................................................ 18 3.14 Visual Studio Code...................................................................................................... 19 Capítulo 4 - Especificación de requisitos.............................................................................. 20 4.1 Actores............................................................................................................................20 4.2 Módulos funcionales..................................................................................................... 20 4.2.1 Módulo Científico................................................................................................. 21 4.2.2 Módulo Organismo...............................................................................................31 4.2.3 Módulo Administrador..........................................................................................40 4.2.4 Módulo Cuenta.....................................................................................................53 Capítulo 5 - Arquitectura y modelo de datos.......................................................................60 5.1 Arquitectura y modelo de la aplicación....................................................................60 5.2 Patrones de diseño........................................................................................................61 5.2.1 Capa de presentación........................................................................................ 61 5.2.2 Capa de negocio.................................................................................................62 5.3 Modelo de datos...........................................................................................................64 5.3.1 Modelo Entidad-Relación....................................................................................64 5.3.2 Implementación de la base de datos...............................................................65 5.3.2.1 Usuario...........................................................................................................65 5.3.2.2 Científico.......................................................................................................66 5.3.2.3 Organismo.................................................................................................... 67 5.3.2.4 Publicación...................................................................................................68 5.3.2.5 Proyecto........................................................................................................69 5.3.2.6 Asignación....................................................................................................71 Capítulo 6 - Diseño y funcionalidades...................................................................................72 6.1 Estilos...............................................................................................................................72 6.2 Funcionalidades de la aplicación...............................................................................74 6.2.1 Registro de usuario............................................................................................... 76 6.2.2 Inicio de sesión......................................................................................................79 6.2.3 Módulo Científico................................................................................................. 82 6.2.3.1 Crear publicación........................................................................................82 6.2.3.2 Mis publicaciones........................................................................................ 83 7
6.2.3.3 Editar publicación........................................................................................84 6.2.3.4 Eliminar publicación.................................................................................... 86 6.2.3.5 Buscar organismo.........................................................................................87 6.2.3.6 Recomendaciones de proyectos..............................................................90 6.2.4 Organismo............................................................................................................. 91 6.2.4.1 Publicar proyecto........................................................................................ 91 6.2.4.2 Mis proyectos................................................................................................92 6.2.4.3 Editar proyecto............................................................................................ 93 6.2.4.4 Eliminar proyecto......................................................................................... 96 6.2.4.5 Buscar científico...........................................................................................97 6.2.4.6 Recomendaciones de científicos..............................................................98 6.2.9 Administrador........................................................................................................ 99 6.2.9.1 Listar publicaciones..................................................................................... 99 6.2.9.2 Editar publicación......................................................................................100 6.2.9.3 Eliminar publicación.................................................................................. 102 6.2.9.4 Reactivar publicación...............................................................................104 6.2.9.5 Listar usuarios.............................................................................................. 105 6.2.9.6 Editar usuario.............................................................................................. 106 6.2.9.7 Eliminar usuario...........................................................................................110 6.2.9.8 Reactivar usuario....................................................................................... 112 6.2.9.9 Listar proyectos.......................................................................................... 114 6.2.9.10 Editar proyecto........................................................................................ 115 6.2.9.11 Eliminar proyecto..................................................................................... 117 6.2.9.12 Reactivar proyecto..................................................................................118 6.3 API REST........................................................................................................................ 119 6.3.1 Registro.................................................................................................................122 6.3.2 Científico..............................................................................................................122 6.3.3 Organismo........................................................................................................... 124 6.3.4 Publicación..........................................................................................................125 6.3.5 Proyectos............................................................................................................. 127 Capítulo 7 - Conclusiones y Trabajo futuro......................................................................... 129 7.1 Conclusiones................................................................................................................ 129 7.2 Trabajo futuro............................................................................................................... 130 8
Figura 36: Reactivar organismo............................................................................................. 165 Figura 37: Listar todos proyectos............................................................................................166 Figura 38: Editar proyecto.......................................................................................................167 Figura 39: Eliminar proyecto................................................................................................... 167 Figura 40: Reactivar proyecto................................................................................................168 15
ÍNDICE DE TABLAS Tabla 4.1: Caso de uso - Científico - Crear publicación.......................................................22 Tabla 4.2: Caso de uso - Científico - Listar publicaciones.................................................... 23 Tabla 4.3: Caso de uso - Científico - Editar publicación.......................................................24 Tabla 4.4: Caso de uso - Científico - Eliminar publicación................................................... 25 Tabla 4.5: Caso de uso - Científico - Buscar publicación.....................................................26 Tabla 4.6: Caso de uso - Científico - Buscar organismo........................................................27 Tabla 4.7: Caso de uso - Científico - Mi proyecto................................................................. 28 Tabla 4.8: Caso de uso - Científico - Mostrar proyecto........................................................ 29 Tabla 4.9: Caso de uso - Científico - Recomendaciones de proyectos.............................30 Tabla 4.10: Caso de uso - Organismo - Publicar proyecto...................................................32 Tabla 4.11: Caso de uso - Organismo - Listar proyectos.......................................................33 Tabla 4.12: Caso de uso - Organismo - Editar proyecto.......................................................34 Tabla 4.13: Caso de uso - Organismo - Eliminar proyecto....................................................35 Tabla 4.14: Caso de uso - Organismo - Buscar proyecto..................................................... 36 Tabla 4.15: Caso de uso - Organismo - Buscar científico..................................................... 37 Tabla 4.16: Caso de uso - Organismo - Mostrar científico....................................................38 Tabla 4.17: Caso de uso - Organismo - Recomendaciones de científicos........................ 39 Tabla 4.18: Caso de uso - Administrador - Listar todas publicaciones................................41 Tabla 4.19: Caso de uso - Administrador - Editar publicación............................................. 42 Tabla 4.20: Caso de uso - Administrador - Eliminar publicación..........................................43 Tabla 4.21: Caso de uso - Administrador - Reactivar publicación...................................... 44 Tabla 4.22: Caso de uso - Administrador - Listar todos usuarios...........................................45 Tabla 4.23: Caso de uso - Administrador - Editar usuario......................................................46 Tabla 4.24: Caso de uso - Administrador - Eliminar usuario.................................................. 47 Tabla 4.25: Caso de uso - Administrador - Reactivar usuario...............................................48 Tabla 4.26: Caso de uso - Administrador - Listar todos proyectos....................................... 49 Tabla 4.27: Caso de uso - Administrador - Editar proyecto..................................................50 Tabla 4.28: Caso de uso - Administrador - Eliminar proyecto...............................................51 Tabla 4.29: Caso de uso - Administrador - Reactivar proyecto...........................................52 Tabla 4.30: Caso de uso - Cuenta - Registrar usuario........................................................... 54 16
Tabla 4.31: Caso de uso - Cuenta - Iniciar sesión.................................................................. 55 Tabla 4.32: Caso de uso - Cuenta - Ver perfil........................................................................ 56 Tabla 4.33: Caso de uso - Cuenta - Editar perfil.................................................................... 57 Tabla 4.34: Caso de uso - Cuenta - Mostrar FAQ.................................................................. 58 Tabla 4.35: Caso de uso - Cuenta - Mostrar contacto......................................................... 59 Tabla 6.1: Endpoint API Registro.............................................................................................122 Tabla 6.2: Endpoints API Científicos.......................................................................................124 Tabla 6.3: Endpoints API Organismos.................................................................................... 125 Tabla 6.4: Endpoints API Publicaciones.................................................................................127 Tabla 6.5: Endpoint API Proyectos......................................................................................... 128 17
Capítulo 1 - Introducción En este capítulo uno de la memoria, se procede a ofrecer, en primera instancia, una explicación acerca de la motivación de desarrollar la aplicación y cuáles han sido sus objetivos. Posteriormente, se proporciona una descripción tanto de la estructura por capítulos de la memoria como de la metodología realizada para elaborar la aplicación y su consecuente organización del trabajo. 1.1 Motivación En el entorno científico actual, la identificación y selección de proyectos que se ajusten a las necesidades y metas de los científicos de manera precisa y la búsqueda eficiente de profesionales científicos por parte de los organismos públicos y privados representan un problema para ambas entidades. Este problema se acentúa aún más en la actualidad debido a que las áreas de investigación cada vez son más complejas y los perfiles profesionales en el ámbito científico son cada vez más diversos. Estas dos situaciones realmente dificultan la asociación entre los científicos y los proyectos que ofrecen los organismos. Una manera efectiva de abordar este problema podría ser mediante la consecución de una plataforma que sirva como punto de encuentro entre los científicos y los organismos. Para tratar de resolver el problema, se plantea el desarrollo de una plataforma web que actúe como un espacio colaborativo entre científicos y organismos. La plataforma debe integrar una base de datos suficientemente amplia como para poder almacenar publicaciones de científicos y proyectos de los organismos. En ella, los científicos serán capaces de buscar proyectos que se alineen con sus intereses y habilidades y, al mismo tiempo, los organismos podrán publicar sus proyectos detalladamente, especificando sus objetivos y requisitos. La creación de esta plataforma web fomentaría la colaboración interdisciplinaria y contribuiría al avance de la ciencia y las investigaciones científicas. 1
1.2 Objetivos El objetivo principal de este proyecto era desarrollar una plataforma que permitiera la gestión de búsquedas de científicos y proyectos. A continuación se enumeran, de manera más precisa, los objetivos específicos planteados en el proyecto: 1.- Desarrollar una aplicación web que permita a los científicos realizar publicaciones para poder encontrar el proyecto que cubra sus necesidades y que, al mismo tiempo, permita a los organismos localizar efectivos para llevar a cabo sus proyectos. 2.- Desarrollar una API REST que reciba peticiones desde la aplicación web y que incluya toda la lógica de negocio. 3.- Facilitar al administrador de la aplicación el control total sobre los usuarios, publicaciones de los científicos y proyectos de los organismos. 1.3 Estructura de la memoria Esta memoria se encuentra estructurada por capítulos según cada una de los apartados que conforman la aplicación: Capítulo 1: Introducción En este capítulo se realiza una introducción del trabajo efectuado, así como su motivación y sus objetivos. También se realiza una descripción de la estructura de la memoria y se trata la metodología empleada para el desarrollo del proyecto, la planificación del proyecto y la organización del trabajo. Capítulo 2: Estado del arte En este capítulo se realiza una revisión y una breve explicación de algunos programas y aplicaciones ya existentes que tengan una funcionalidad similar a la aplicación desarrollada en 2
este trabajo. Capítulo 3: Tecnología empleada En este capítulo se aborda una a una todas las tecnologías que han sido necesarias y que se han empleado para la implementación de la aplicación. Capítulo 4: Especificación de requisitos En este capítulo se trata la especificación de requisitos de la aplicación. Este capítulo se centra en los tres actores principales de la aplicación: científico, organismo y administrador, así como en sus casos de uso divididos en módulos funcionales. Capítulo 5: Arquitectura y modelo de datos Este capítulo trata sobre la arquitectura empleada para formar la aplicación y los patrones de diseño utilizados para ello. Además, se detalla el proceso mediante el cual se obtiene la persistencia de la información que maneja la aplicación. Se expone el diagrama entidad-relación y se explica su implementación en la base de datos relacional. Capítulo 6: Diseño y funcionalidades Este capítulo describe el diseño y las funcionalidades de la aplicación separando la aplicación web del servicio API REST. Capítulo 7: Conclusiones y trabajo futuro En este capítulo se exponen las conclusiones de la realización del trabajo y se plantea la dirección para el desarrollo del trabajo futuro. Capítulo 8: Contribuciones al proyecto En este capítulo se desarrollan, individualmente, las contribuciones al proyecto por parte de cada uno de los miembros del trabajo. 3
Capítulo 9: Bibliografía Este capítulo incluye todos los recursos, enlaces y referencias que han sido necesarias utilizar para la consecución del proyecto. Capítulo 10: Apéndices En este último capítulo se proporciona la guía de uso de la aplicación web. 1.4 Metodología El desarrollo del trabajo se ha realizado según la planificación del proyecto y organización de trabajo que se expone en el siguiente apartado. 1.4.1 Planificación del proyecto La planificación del proyecto viene dada por un total de cuatro fases. 1. Investigación y captura de requisitos En esta fase inicial, se ha llevado a cabo una investigación acerca del problema a resolver. Esto implicaba la identificación de características, funcionalidades y restricciones que tenían impacto en el diseño y desarrollo del proyecto. Toda esta información fue recogida en la especificación de requisitos. 2. Desarrollo de la aplicación En esta fase, el equipo de trabajo desarrolló el código fuente que conforma la aplicación siguiendo las especificaciones y restricciones investigadas en la fase anterior. El desarrollo del proyecto fue dividido en varios hitos: ● Hito Inicial: Creación del proyecto (front-end y backend), generación de la base de datos y sus entidades, y desarrollo las funcionalidades de: Registro de usuario e Inicio de sesión. ● Primer Hito: Desarrollo de las siguientes funcionalidades de científico: Crear, editar, eliminar, buscar y listar publicaciones. ● Segundo Hito: Desarrollo de las siguientes funcionalidades de organismo: Publicar, editar y eliminar proyecto, buscar científico y recomendaciones de científicos. 4
● Tercer Hito: Desarrollo de las funcionalidades de científico: Buscar organismo y recomendaciones de proyectos. ● Cuarto Hito: Desarrollo de las funcionalidades de administrador: Listar, editar, eliminar y reactivar publicaciones, usuarios y proyectos. 3. Pruebas Esta fase se ha realizado de manera conjunta con el desarrollo del proyecto. En ella, los miembros del equipo de desarrollo han adoptado un enfoque proactivo garantizando que cada funcionalidad nueva o corregida funcionara según lo establecido antes de avanzar a la desarrollar la siguiente. Esta estrategia contribuyó a la estabilidad general del software que se estaba desarrollando. 4. Desarrollo de la memoria Esta última fase se ha llevado a cabo una vez finalizado el desarrollo de la aplicación y ha implicado la documentación completa de todo el desarrollo del proyecto. 1.4.2 Organización del trabajo Para la realización del trabajo se ha aplicado una metodología de trabajo iterativa incremental. Cada iteración ha tenido una duración aproximada de dos semanas. Cada dos semanas, se ha realizado una reunión virtual a través de videollamada en la que se han validado y probado las funcionalidades que han conseguido desarrollarse y se han fijado nuevos objetivos para la semana siguiente. Como el tamaño del equipo de trabajo ha sido únicamente de dos personas, ambos miembros del equipo han estado en contacto directo diariamente a lo largo de las semanas vía mensajería instantánea. De esta manera, la comunicación entre los dos ha sido muy fluida y ha permitido obtener y proporcionar feedback de manera continua. Gracias a esto, ha sido posible tratar en cuestión de horas cualquier tipo de inconveniente o duda que ha surgido durante el desarrollo. 5
Chapter 1 - Introduction In this chapter one of the report, we proceed to offer, in the first instance, an explanation about the motivation to develop the application and what its objectives have been. Subsequently, a description is provided both for the structure by chapters of the report and for the methodology used to develop the application and its consequent organization of work. 1.1 Motivation In the current scientific environment, the identification and selection of projects that fit the needs and goals of scientists in a precise manner and the efficient search for scientific professionals by public and private organizations represent a problem for both entities. This problem is accentuated even more today because the areas of research are increasingly complex and professional profiles in the scientific field are increasingly diverse. These two situations really make it difficult for scientists to partner with the projects offered by organisms. An effective way to address this problem could be by achieving a platform that serves as a meeting point between scientists and organisms. To try to solve the problem, the development of a web platform that acts as a collaborative space between scientists and organisms is proposed. The platform should integrate a database large enough to be able to store publications of scientists and projects of the agencies. In it, scientists will be able to search for projects that align with their interests and skills and, at the same time, agencies will be able to publish their projects in detail, specifying their objectives and requirements. The creation of this web platform would foster interdisciplinary collaboration and contribute to the advancement of science and scientific research. 6
1.2 Goals The main objective of this project was to develop a platform that would allow the management of searches of scientists and projects. The specific objectives set out in the project are listed more precisely below: 1.- Develop a web application that allows scientists to make publications in order to find the project that meets their needs and, at the same time, allows agencies to locate personnel to carry out their projects. 2.- Develop a REST API that receives requests from the web application and includes all the business logic. 3.- Provide the administrator of the application with total control over users, publications of scientists and projects of organizations. 1.3 Structure of the report This report is structured by chapters according to each of the sections that make up the application: Chapter 1: Introduction This chapter introduces the work done, as well as its motivation and objectives. It also describes the structure of the report and discusses the methodology used for the development of the project, the planning of the project and the organization of work. 7
Capítulo 3 - Tecnología empleada En este capítulo, se proporciona una descripción acerca de todas las tecnologías que han sido utilizadas durante el desarrollo del trabajo, ordenadas por orden alfabético. 3.1 Angular Es un framework de desarrollo de aplicaciones web creado por Google [5]. Se basa en el lenguaje de programación TypeScript y ofrece un enfoque modular estructurado para desarrollar aplicaciones web dinámicas de una sóla página (Single-page application). Angular ofrece un desarrollo basado en componentes, implementa el patrón Modelo-Vista-Modelo de vista (Model-View-ViewModel) y proporciona herramientas para gestionar el estado de la aplicación, enrutamiento, comunicación con servidores y manipulación del DOM (Document Object Model). Angular proporciona también su propio sistema de gestión de peticiones HTTP a través del módulo HttpClient que forma parte de @angular/common/http. Este módulo permite realizar peticiones HTTP de una forma eficiente a servidores remotos [6]. Además, permite manejar respuestas, gestionar errores y realizar transformaciones de datos. Otra herramienta que utiliza Angular es Angular CLI. Es una interfaz de línea de comandos (Command Line Interface) basada en Node.js que simplifica y agiliza el desarrollo de aplicaciones Angular [7]. Facilita la creación de componentes, módulos y servicios así como la compilación y la ejecución de pruebas. Para el desarrollo del trabajo se ha utilizado la versión 16.1.8 tanto de Angular como de Angular CLI. 14
3.2 Bootstrap Es un framework utilizado en diseño Front-End. Bootstrap proporciona un conjunto de clases y componentes con estilos prediseñados y utilidades que facilitan la creación de interfaces de usuario responsive y atractivas [8]. Su principal utilidad es la de estandarizar y agilizar la creación de interfaces web. La versión de Bootstrap utilizada para hacer las interfaces de la aplicación web del trabajo ha sido la versión 5.3.1. 3.3 CSS CSS (Cascading Style Sheets) es un lenguaje de diseño utilizado para gestionar la presentación y aspecto visual de los documentos HTML y XML de una página web [9] . CSS permite separar la estructura del contenido de la página de su diseño y apariencia. Para ello, utiliza una serie de selectores y reglas que definen cómo se deben visualizar los elementos HTML en cuanto a posicionamiento, márgenes, colores, fuente, etc. La versión de CSS utilizada en el trabajo ha sido CSS3. 3.4 DBeaver Es una herramienta de gestión de bases de datos. Permite trabajar con una gran variedad de sistemas de gestión de bases de datos (SGBD oDBMS,Database Management System) ofreciendo una interfaz gráfica e incluyendo soporte multiplataforma [10]. En él, los desarrolladores pueden gestionar bases de datos, realizar consultas SQL, tratar datos, diseñar esquemas, etc. El sistema de gestión de bases de datos utilizado en el trabajo ha sido PostgreSQL. 15
3.5 Firebase Es una plataforma de desarrollo de aplicaciones web y móviles en la nube. Es ofrecida por Google, está integrada y respaldada por Google Cloud Platform (GCP) y proporciona una gran variedad de servicios que pueden ser de utilidad durante el desarrollo de una aplicación móvil o de una aplicación web [11]. Algunos ejemplos de estos servicios son: Authentication (autenticación de usuarios) [12], Google Analytics (análisis de datos) [13] y Firebase Realtime Database (bases de datos en tiempo real) [14]. En el caso de la aplicación web, se ha utilizado el servicio Authentication en el registro de usuarios e inicio de sesión para gestionar la autenticación y autorización de los usuarios. 3.6 Git Es un sistema software de control de versiones distribuido (DVCS, Distributed Control Version System) que facilita el trabajo en paralelo entre miembros del equipo de desarrollo [15]. Ofrece a cada miembro la posibilidad de trabajar en el código de forma local e independiente a través de una copia del repositorio y, posteriormente, fusionar los cambios realizados en una versión principal ubicada en el repositorio online compartido. Esta estructura descentralizada compuesta por ramas de desarrollo facilita la gestión de versiones de la aplicación y promueve la colaboración entre los miembros del equipo. La versión de Git que se ha utilizado durante el trabajo ha sido la versión 2.39.1.windows.1. 3.7 GitHub Es una plataforma en línea que ofrece un lugar donde poder almacenar, gestionar y colaborar en proyectos software [16]. Estos proyectos se sitúan en repositorios que son accesibles por los desarrolladores tanto de manera pública como privada. Está basada en Git y ofrece funcionalidades como integración contínua, seguimiento de problemas, despliegue automático y control de versiones. 16
3.8 HTML HTML (HyperText Markup Language) es un lenguaje de marcado utilizado para describir el contenido de una página web [17]. A través de sus elementos y etiquetas, permite la inclusión, entre otros, de texto, imágenes, vídeos, enlaces, etc. El código HTML es interpretado por los navegadores web para formar la base de las páginas web. Aunque puede incluir código acerca de los estilos de los elementos, generalmente se combina con una hoja de estilos CSS para definir la apariencia de una página web. La última versión lanzada y convertida en estándar es HTML5 [18], que es la misma versión que se ha utilizado en la implementación del Front-End de la aplicación web. 3.9 Java Spring Boot Es un framework de desarrollo utilizado principalmente en el lado Backend de la aplicación. Su función es la de simplificar la creación de servicios web, microservicios, API REST que gestionan la lógica de negocio y permiten la interacción tanto con la base de datos como con el lado Front-End [19]. En la aplicación, se ha utilizado la versión 11 de Java [20] y la versión 2.3.2.RELEASE de Spring Boot. 3.10 Node.js Es el entorno de ejecución de JavaScript [21] en el lado del servidor. En el contexto de Angular, Node.js [22] se utiliza para desplegar y configurar aplicaciones Angular en servidores, para ejecutar scripts de creación y desarrollo y para gestionar dependencias mediante NPM (Node Package Manager). Todas estas funciones hacen que Node.js sea esencial en el conjunto de tecnologías que conforman el desarrollo de aplicaciones Angular. En el trabajo, se ha utilizado la versión 18.17.0 de Node.js. 17
3.11 NPM NPM o Node Package Manager [23] es el gestor oficial de paquetes de Node.js. Se encarga de distribuir y gestionar paquetes JavaScript de software. Estos paquetes son una especie de bibliotecas predefinidas de código que se utilizan para ahorrar esfuerzo y tiempo durante el desarrollo. Gracias a NPM, se pueden instalar, administrar y actualizar estas bibliotecas de forma sencilla. Se ha utilizado en el trabajo la versión 9.8.1 de NPM. 3.12 PostgreSQL Es un sistema de gestión de bases de datos relacional de código abierto [24]. Su comunidad realiza contribuciones activamente para desarrollar y mejorar la plataforma. Se trata de un sistema capaz de gestionar grandes volúmenes de datos y de realizar consultas SQL complejas. Además, ofrece soporte nativo para datos en formato JSON [25] y para las transacciones ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) [26]. Por estos motivos, PostgreSQL es una gran elección en proyectos que requieran un manejo sólido de la información. Se ha utilizado la versión 15.2 de PostgreSQL durante el desarrollo de la aplicación. 3.13 Postman Es una herramienta utilizada por los desarrolladores de aplicaciones para documentar y realizar pruebas en APIs (Application Programming Interface) [27]. Dispone de una interfaz gráfica que permite probar, depurar servicios y validar sus respuestas mediante la creación, el envío y la recepción de peticiones HTTP a través de APIs. También ofrece características adicionales como la posibilidad de organizar las peticiones en colecciones y de automatizar flujos de trabajo con scripts. La versión de Postman [28] utilizada ha sido la versión 10.17.3. 18
3.14 Visual Studio Code Es un editor de código fuente desarrollado por Microsoft. Dispone de una amplia gama de extensiones que permiten adaptar el editor a las necesidades del proyecto y del lenguaje de programación. Además, permite la integración con sistemas de control de versiones como Git e incluye la posibilidad de depurar el código directamente desde el editor. La versión de Visual Studio Code [29] utilizada para realizar el código del trabajo fue la versión 1.81.1. 19
Capítulo 4 - Especificación de requisitos En este capítulo se realiza una especificación, en primer lugar, de los actores que intervienen en la aplicación de este trabajo de fin de grado y, en segundo lugar, de cada uno de los módulos funcionales que la componen. 4.1 Actores Los tres actores que intervienen en la aplicación son: 1. Científico: Este actor representa al usuario que utiliza la aplicación con el objetivo de realizar publicaciones para poder incorporarse y participar en proyectos científicos. 2. Organismo: Este actor se refiere a las organizaciones e instituciones que utilizan la aplicación para publicar proyectos que quieran realizar con el objetivo de encontrar científicos que quieran participar en ellos. 3. Administrador: Este actor es el encargado de gestionar y supervisar la aplicación en su conjunto. Tiene acceso a todo el listado de usuarios de la aplicación, al listado de publicaciones de científicos y al listado de proyectos de organismos. Puede editar, eliminar y reactivar cada elemento de los tres listados. 4.2 Módulos funcionales Los casos de uso se han agrupado en cuatro módulos según las funcionalidades exclusivas que pueden realizar cada uno de los usuarios, más un módulo adicional llamado Cuenta para recoger todas las operaciones comunes para el científico y el organismo. ● Módulo Científico ● Módulo Organismo ● Módulo Administrador ● Módulo Cuenta 20
4.2.1 Módulo Científico El módulo científico envuelve todas las funcionalidades que puede realizar el científico. Como se observa en la Figura 4.1, estas incluyen: Crear publicación, Listar publicaciones, Editar publicación, Eliminar publicación, Buscar publicación, Buscar organismo, Mi proyecto, Mostrar proyecto y Recomendaciones de proyectos. Figura 4.1: Diagrama de casos de uso del módulo Científico A continuación, se listan los casos de uso asociados a este módulo. (Desde la Tabla 4.1 hasta la Tabla 4.9) 21
Requisito Crear publicación Identificador 1.1 Prioridad Alta Precondición No debe existir otra publicación con el mismo identificador. Descripción Se da de alta una publicación en la aplicación para que el científico pueda buscar proyectos y recibir recomendaciones. Entrada Título, descripción, especialidad y experiencia (años y meses) Salida Mensaje emergente de que la publicación se ha dado de creado correctamente Secuencia normal Paso Acción 1 Se le muestra al usuario un formulario donde debe introducir todos los datos de entrada para crear la publicación. 2 El usuario rellena el formulario y hace click en “Crear”. Aparecerá un mensaje emergente preguntando si está seguro de querer crear la publicación. Debe hacer click de nuevo en otro botón llamado también “Crear”. 3 Se valida la información introducida y, si tiene un formato correcto, se realiza el alta de la publicación en la base de datos. Postcondición Se habrá creado una publicación en la aplicación. Excepciones Paso Acción 2 En el mensaje emergente, aparece también otra opción llamada “Cancelar”. Si se hace click en ella, el mensaje emergente desaparece y se vuelve a la pantalla del formulario. 3 Si alguno de los datos introducidos no tiene un formato correcto, se muestra un mensaje informativo y se vuelve a mostrar el formulario con los datos introducidos para que cambie los que son incorrectos. Actores Científico Tabla 4.1: Caso de uso - Científico - Crear publicación 22
Requisito Listar publicaciones Identificador 1.2 Prioridad Media Precondición El científico debe haber iniciado sesión. Descripción Se muestra en forma de tabla un listado de todas las publicaciones creadas por el científico. Entrada - Salida Listado de publicaciones del científico Secuencia normal Paso Acción 1 El científico inicia sesión en la aplicación. 2 El científico hace click en la sección “Mis publicaciones”. Postcondición - Excepciones Paso Acción 2 En caso de que el científico no haya creado ninguna publicación, en lugar de la tabla se mostrará el siguiente mensaje en pantalla: “No existen publicaciones. Añade una nueva publicación en "Crear publicación".” Actores Científico Tabla 4.2: Caso de uso - Científico - Listar publicaciones 23
Requisito Recomendaciones de proyectos Identificador 1.9 Prioridad Alta Precondición El científico debe haber iniciado sesión y debe haber creado al menos una publicación. Descripción Basado en la profesión del científico y en el ámbito y subámbito de los proyectos, se ofrecen recomendaciones de proyectos que pueden ser de su interés. Entrada - Salida Recomendaciones de proyectos activos en los que poder participar. Secuencia normal Paso Acción 1 El científico debe hacer click en la sección “Recomendaciones de proyectos”. Al cargar la página, se muestran automáticamente recomendaciones de proyectos. El científico, puede hacer click en el botón “+ Información” que contiene cada recomendación para ver más información sobre ella. Postcondición Se mostrarán recomendaciones de proyectos. Excepciones Paso Acción 1 Si el científico no ha creado ninguna publicación o no hay proyectos activos relacionados con la profesión del científico, no se mostrará ninguna recomendación por pantalla. Actores Científico Tabla 4.9: Caso de uso - Científico - Recomendaciones de proyectos 30
4.2.2 Módulo Organismo El módulo organismo envuelve todas las funcionalidades que puede realizar el organismo. Estas incluyen: Publicar proyecto, Listar proyectos, Editar proyecto, Eliminar proyecto, Buscar proyecto, Buscar científico, Mostrar científico y Recomendaciones de científicos. (Ver Figura 4.2). Figura 4.2: Diagrama de casos de uso del módulo Organismo A continuación, se listan los casos de uso asociados a este módulo. (Desde la Tabla 4.10 hasta la Tabla 4.17) 31
Requisito Publicar proyecto Identificador 2.1 Prioridad Alta Precondición No debe existir otro proyecto con el mismo identificador. Descripción Se da de alta un proyecto en la aplicación Entrada Título, descripción, capacidad de integrantes, ámbito, subámbito y duración del proyecto. Salida Mensaje emergente de que el proyecto se ha creado correctamente. Secuencia normal Paso Acción 1 Se muestra un formulario con toda la información requerida para poder publicar el proyecto. 2 El organismo rellena el formulario y hace click en “Publicar”. Aparecerá un mensaje emergente preguntando si está seguro de querer publicar el proyecto. Debe hacer click de nuevo en otro botón llamado también “Publicar”. 3 Se valida la información introducida y, si tiene un formato correcto, se realiza el alta del proyecto en la base de datos Postcondición Se habrá publicado un proyecto en la aplicación. Excepciones Paso Acción 2 En el mensaje emergente, aparece también otra opción llamada “Cancelar”. Si se hace click en ella, el mensaje emergente desaparece y se vuelve a la pantalla del formulario. 3 Si alguno de los datos introducidos no tiene un formato correcto, se muestra un mensaje informativo y se vuelve a mostrar el formulario con los datos introducidos para que cambie los que son incorrectos. Actores Organismo Tabla 4.10: Caso de uso - Organismo - Publicar proyecto Requisito Listar proyectos 32
Identificador 2.2 Prioridad Media Precondición El organismo debe haber iniciado sesión. Descripción Se muestra en forma de tabla un listado de todos los proyectos creados por el organismo. Entrada - Salida Listado de proyectos del organismo Secuencia normal Paso Acción 1 El organismo inicia sesión en la aplicación 2 El organismo hace click en la sección “Mis proyectos”. Postcondición - Excepciones Paso Acción 2 En caso de que el organismo no haya publicado ningún proyecto, en lugar de la tabla se mostrará el siguiente mensaje en pantalla: “No existen proyectos. Añade un nuevo proyecto en "Publicar proyecto". Actores Organismo Tabla 4.11: Caso de uso - Organismo - Listar proyectos Requisito Editar proyecto 33
Identificador 2.3 Prioridad Media Precondición El proyecto que se quiere editar debe existir en la base de datos y debe estar activo. Descripción Se modifican los datos de un proyecto de manera parcial o total. Entrada Identificador del proyecto. Salida Mensaje emergente confirmando que los datos del proyecto han sido editados correctamente. Secuencia normal Paso Acción 1 Se muestra un formulario al organismo con todos los datos modificables del proyecto que se desea editar. 2 El organismo modifica aquellos datos que necesite y hace click en el botón “Editar”. Aparecerá un mensaje emergente preguntando si está seguro de querer editar el proyecto. Debe hacer click de nuevo en otro botón llamado también “Editar”. 3 Los datos modificados se validan y, posteriormente, se actualizan en la base de datos. Postcondición Se habrán editado los datos del proyecto en cuestión. Excepciones Paso Acción 2 En el mensaje emergente, aparece también otra opción llamada “Cancelar”. Si se hace click en ella, el mensaje emergente desaparece y se vuelve a la pantalla del formulario. 3 Si alguno de los datos introducidos no tiene un formato correcto, se muestra un mensaje informativo y se vuelve a mostrar el formulario con los datos introducidos para que cambie los que son incorrectos. Actores Organismo Tabla 4.12: Caso de uso - Organismo - Editar proyecto Requisito Eliminar proyecto 34
Identificador 2.4 Prioridad Alta Precondición El proyecto debe existir en la base de datos y estar activo. Descripción Se realiza una baja lógica del proyecto, cambiando a falso su estado de activo. Entrada Identificador del proyecto. Salida Mensaje emergente confirmando que el proyecto se ha dado de baja correctamente. Secuencia normal Paso Acción 1 El organismo accede a su listado de proyectos y selecciona aquel proyecto que desea eliminar. Aparece un mensaje emergente preguntando si está seguro de querer eliminar ese proyecto. 2 El organismo hace click en el botón “Eliminar”. 3 Se comprueba que exista el proyecto y se da de baja de la base de datos. Postcondición Se habrá dado de baja un proyecto en la aplicación. Excepciones Paso Acción 1 En el mensaje emergente, aparece también otra opción llamada “Cancelar”. Si se hace click en ella, el mensaje emergente desaparece y se vuelve a mostrar el listado de proyectos. Actores Organismo Tabla 4.13: Caso de uso - Organismo - Eliminar proyecto 35
Requisito Buscar proyecto Identificador 2.5 Prioridad Media Precondición El proyecto debe existir en la base de datos y estar activo. Descripción Se busca el proyecto y se muestran todos sus datos. Entrada Identificador del proyecto Salida Identificador, fecha y hora de la última modificación, título, descripción, capacidad, duración, ámbito y subámbito del proyecto. Secuencia normal Paso Acción 1 El organismo introduce el identificador del proyecto. 2 Se comprueba si existe un proyecto con ese identificador. En caso afirmativo, se muestran sus datos. Postcondición Se mostrarán los datos de un proyecto Excepciones Paso Acción 2 Si no existe ningún proyecto con ese identificador se muestra un mensaje informativo al organismo y se vuelve a pedir que introduzca un identificador válido. Actores Organismo Tabla 4.14: Caso de uso - Organismo - Buscar proyecto 36
Requisito Buscar científico Identificador 2.6 Prioridad Media Precondición El científico debe existir en la base de datos y estar activo. Descripción Se busca el científico y se muestran todos sus datos. Entrada ORCID del científico que se desea buscar. Salida ORCID, nombre, profesión, email y disponibilidad del científico. Secuencia normal Paso Acción 1 El organismo introduce el ORCID del científico que desea buscar. 2 Se comprueba si existe un científico con ese ORCID. En caso afirmativo, se muestran sus datos. Postcondición Se mostrarán los datos de un científico. Excepciones Paso Acción 2 Si no existe ningún científico con el ORCID introducido se muestra un mensaje emergente informativo al organismo y se le pide que introduzca un ORCID válido. Actores Organismo, Científico Tabla 4.15: Caso de uso - Organismo - Buscar científico 37
Requisito Mostrar científico Identificador 2.7 Prioridad Media Precondición El científico debe existir en la base de datos y estar activo. Descripción Se muestra toda la información referente a un científico. Entrada Identificador del científico Salida ORCID, nombre, profesión, email y disponibilidad del científico. Secuencia normal Paso Acción 1 El organismo hace click en el botón “+ Información” 2 Se muestran todos los datos del científico Postcondición Se mostrarán los datos de un científico. Excepciones Paso Acción - - Actores Organismo, Científico Tabla 4.16: Caso de uso - Organismo - Mostrar científico Requisito Recomendaciones de científicos 38
Identificador 2.8 Prioridad Alta Precondición El organismo debe haber iniciado sesión y debe haber publicado al menos un proyecto. Descripción Basado en el ámbito y subámbito del organismo y en la especialidad de las publicaciones de los científicos y sus profesiones, se ofrecen recomendaciones de los científicos disponibles que podrían participar en un proyecto concreto del organismo. Entrada Identificador del proyecto del que se desea recibir recomendaciones de científicos. Salida Recomendaciones de científicos activos que podrían participar en un proyecto. Secuencia normal Paso Acción 1 El organismo debe hacer click en la sección “Recomendaciones de científicos”. Después, debe introducir el identificador del proyecto del que desea recibir recomendaciones de científicos y pulsar en “Recomendar”. Se mostrarán las recomendaciones y el organismo, si lo desea, podrá ver más información acerca de un científico en concreto haciendo click en el botón “+ Información” que contiene cada recomendación. Postcondición Se mostrarán recomendaciones de científicos. Excepciones Paso Acción 1 Si el organismo no ha creado ningún proyecto o no hay científicos activos relacionados con el proyecto, se mostrará el siguiente mensaje por pantalla: “No se encuentran científicos que trabajen en el ámbito del proyecto”. Actores Organismo, Cientifico Tabla 4.17: Caso de uso - Organismo - Recomendaciones de científicos 39
Requisito Editar usuario Identificador 3.6 Prioridad Media Precondición El usuario debe existir en la base de datos y estar activo. Descripción Se modifican los datos de un usuario (científico u organismo) de la aplicación. Entrada Si es científico: Nombre y profesión Si es organismo: Nombre y localidad Salida Mensaje de confirmación informando que el usuario (científico u organismo) se ha editado correctamente. Secuencia normal Paso Acción 1 El administrador hace click en el botón de Editar disponible en el listado de científicos u organismos para el científico u organismo que desea editar. 2 Rellena el formulario editando total o parcialmente los datos del científico u organismo. 3 El administrador hace click en el botón “Editar”. Aparecerá un mensaje emergente preguntando si está seguro de querer editar ese científico u organismo. Por último, selecciona el botón “Editar” del mensaje. Postcondición Se editará la información correspondiente a un científico u organismo. Excepciones Paso Acción 2 En caso de que alguno de los datos del científico u organismo que se han editado estén en un formato incorrecto, se mostrará un mensaje emergente. 3 Si alguno de los datos introducidos no tiene un formato correcto, se muestra un mensaje informativo y se vuelve a mostrar el formulario con los datos introducidos para que cambie los que son incorrectos. Actores Administrador, Científico, Organismo Tabla 4.23: Caso de uso - Administrador - Editar usuario 46
Requisito Eliminar usuario Identificador 3.7 Prioridad Media Precondición El usuario debe existir en la base de datos y estar activo. Descripción Se da de baja de forma lógica a un usuario (científico u organismo) activo en el sistema. Entrada Identificador del usuario (científico u organismo) Salida Mensaje de confirmación indicando que se ha realizado correctamente la baja del usuario. Secuencia normal Paso Acción 1 El administrador hace click en el botón de Eliminar disponible en el listado de científicos o de organismos para el científico u organismo que desea eliminar. 2 Se muestra un mensaje emergente preguntando si desea eliminar ese usuario (científico u organismo). Por último, hace click en la opción “Eliminar”. 3 Se comprueba que exista el usuario y, si es así, se da de baja de forma lógica cambiando su estado de activo. Postcondición Se dará de baja un usuario (científico u organismo). Excepciones Paso Acción 2 En el mensaje emergente de confirmación, el administrador puede pulsar también otra opción llamada “Cancelar”. En caso de hacerlo, el mensaje emergente desaparece y se vuelve al listado de usuarios. Actores Administrador Tabla 4.24: Caso de uso - Administrador - Eliminar usuario 47
Requisito Reactivar usuario Identificador 3.8 Prioridad Media Precondición El usuario (científico u organismo) debe existir en la base de datos y estar dado de baja. Descripción Se reactiva un usuario (científico u organismo) que ha sido previamente dado de baja. Entrada Identificador del usuario (científico u organismo). Salida Mensaje emergente indicando que el usuario (científico u organismo) ha sido reactivado correctamente. Secuencia normal Paso 1 El administrador hace click en el botón de “Reactivar” disponible en el listado de científicos u organismos para el usuario (científico u organismo) dado de baja que desea reactivar. 2 Se muestra un mensaje emergente preguntando si se desea reactivar el usuario. Para hacerlo, debe hacer click en “Reactivar”. 3 Se comprueba que exista el usuario y que esté dado de baja. Si se cumplen estas condiciones, se reactiva el usuario y se muestra un mensaje emergente de confirmación. Postcondición Se reactivará un usuario (científico u organismo) dado de baja previamente. Excepciones Paso 2 En el mensaje emergente, el administrador puede hacer click en la opción “Cancelar”. Si lo hace, el mensaje desaparece y se vuelve al listado de científicos u organismos. Actores Administrador Tabla 4.25: Caso de uso - Administrador - Reactivar usuario 48
Requisito Listar todos proyectos Identificador 3.9 Prioridad Alta Precondición El administrador debe haber iniciado sesión. Descripción Se listan en forma de tabla todos los proyectos de todos los organismos de la aplicación, ya estén activos o no. Entrada - Salida Listado de todos los proyectos de todos los organismos de la aplicación. Secuencia normal Paso Acción 1 El administrador hace click en la sección “Listar proyectos”. Automáticamente, carga los proyectos y se muestran listados en pantalla. Postcondición Se mostrará un listado de todos los proyectos de todos los organismos de la aplicación. Excepciones Paso Acción 1 En caso de no existir ningún proyecto en la aplicación se sustituye la tabla por el siguiente texto: “No existen proyectos”. Actores Administrador Tabla 4.26: Caso de uso - Administrador - Listar todos proyectos 49
Requisito Editar proyecto Identificador 3.10 Prioridad Media Precondición El proyecto debe existir en la base de datos y estar activo. Descripción Se modifican los datos de un proyecto de organismo. Entrada Título, descripción, capacidad de integrantes, duración, ámbito y subámbito del proyecto. Salida Mensaje emergente informando que el proyecto se ha editado correctamente. Secuencia normal Paso Acción 1 El administrador hace click en el botón de Editar disponible en el listado de proyectos para el proyecto que desea editar. 2 Rellena el formulario editando total o parcialmente los datos del proyecto. 3 El administrador hace click en el botón Editar. Aparecerá un mensaje emergente preguntando si está seguro de querer editar ese proyecto. Por último, selecciona el botón “Editar” del mensaje. Postcondición Se editará la información correspondiente a un proyecto de organismo. Excepciones Paso Acción 2 En caso de que alguno de los datos del proyecto que se han editado estén en un formato incorrecto, se mostrará un mensaje emergente. 3 En el mensaje emergente de confirmación, el administrador puede pulsar también otra opción llamada “Cancelar”. En caso de hacerlo, el mensaje emergente desaparece y se vuelve al formulario de edición. Actores Administrador Tabla 4.27: Caso de uso - Administrador - Editar proyecto 50
Requisito Eliminar proyecto Identificador 3.11 Prioridad Media Precondición El proyecto debe existir en la base de datos y estar activo. Descripción Se da de baja de forma lógica a un proyecto activo en el sistema. Entrada Identificador del proyecto. Salida Mensaje de confirmación indicando que se ha realizado correctamente la baja del proyecto. Secuencia normal Paso Acción 1 El administrador hace click en el botón de Eliminar disponible en el listado de proyectos para el proyecto que desea eliminar. 2 Se muestra un mensaje emergente preguntando si desea eliminar ese proyecto. Por último, hace click en la opción “Eliminar”. 3 Se comprueba que exista el proyecto y, si es así, se da de baja de forma lógica cambiando su estado de activo. Postcondición Se dará de baja un proyecto de organismo. Excepciones Paso Acción 2 En el mensaje emergente de confirmación, el administrador puede pulsar también otra opción llamada “Cancelar”. En caso de hacerlo, el mensaje emergente desaparece y se vuelve al listado de proyectos. Actores Administrador Tabla 4.28: Caso de uso - Administrador - Eliminar proyecto 51
Requisito Reactivar proyecto Identificador 3.12 Prioridad Media Precondición El proyecto debe existir en la base de datos y estar dado de baja. Descripción Se reactiva un proyecto que ha sido previamente dado de baja. Entrada Identificador del proyecto Salida Mensaje emergente indicando que el proyecto ha sido reactivado correctamente. Secuencia normal Paso 1 El administrador hace click en el botón de “Reactivar” disponible en el listado de proyectos para el proyecto dado de baja que desea reactivar. 2 Se muestra un mensaje emergente preguntando si se desea reactivar el proyecto. Para hacerlo, debe hacer click en “Reactivar”. 3 Se comprueba que exista el proyecto y que esté dado de baja. Si se cumplen estas condiciones, se reactiva el proyecto y se muestra un mensaje emergente de confirmación. Postcondición Se reactivará un proyecto dado de baja previamente. Excepciones Paso 2 En el mensaje emergente, el administrador puede hacer click en la opción “Cancelar”. Si lo hace, el mensaje desaparece y se vuelve al listado de proyectos. Actores Administrador Tabla 4.29: Caso de uso - Administrador - Reactivar proyecto 52
4.2.4 Módulo Cuenta El módulo cuenta envuelve todas las funcionalidades comunes entre los científicos y los organismos relacionadas con la cuenta de usuario. (Ver Figura 4.4). Estas incluyen: Registrar usuario, Iniciar sesión, Ver perfil, Editar perfil, Mostrar FAQ y Mostrar contacto. Figura 4.4: Diagrama de casos de uso del módulo Cuenta A continuación, se listan los casos de uso asociados a este módulo (Desde la Tabla 4.30 hasta la Tabla 4.35) 53
Requisito Registrar usuario Identificador 4.1 Prioridad Alta Precondición El usuario (científico u organismo) no debe existir en la base de datos. Descripción Se registra un usuario (científico u organismo) en la aplicación. Entrada Si se quiere registrar un científico: Nombre completo, email, ORCID, profesión y contraseña. Si se quiere registrar un organismo público: Código DIR3, nombre, email, localidad y contraseña. Si se quiere registrar un organismo privado: NIF, nombre, email, localidad y contraseña. Salida Mensaje emergente de confirmación indicando que el usuario (científico u organismo) ha sido registrado correctamente. Secuencia normal Paso Acción 1 Rellenar el formulario de registro con los datos requeridos (ya sea de científico u organismo). Y hacer click en Registrar. 2 Se comprueba que los datos introducidos estén en un formato permitido. Si lo están, se da de alta al usuario en la base de datos. Postcondición Se registrará un usuario (científico u organismo) en la aplicación. Excepciones Paso Acción 2 En caso de que los datos introducidos estén en un formato erróneo, se mostrará un mensaje emergente informando del formato permitido para que se pueda corregir. Actores Científico, Organismo Tabla 4.30: Caso de uso - Cuenta - Registrar usuario 54
Requisito Iniciar sesión Identificador 4.2 Prioridad Alta Precondición El usuario (científico u organismo) ha sido registrado previamente en la aplicación. Descripción El usuario (científico u organismo) inicia sesión en la aplicación. Entrada Email y contraseña Salida Redirección a la página “Home” del usuario que haya iniciado sesión Secuencia normal Paso Acción 1 El usuario (científico u organismo) rellena el formulario de inicio de sesión escribiendo su email y contraseña. 2 Si los datos son correctos, se redirigirá a la página “Home” correspondiente al usuario que ha iniciado sesión. Postcondición Un usuario habrá iniciado sesión en la aplicación. Excepciones Paso Acción 2 Si los datos introducidos son erróneos o no corresponden con un usuario registrado, se muestra un mensaje de error. Actores Científico, Organismo Tabla 4.31: Caso de uso - Cuenta - Iniciar sesión 55
Por ello, se dice que Angular sigue un patrón denominado patrón modelo-vista-modelo de vista (Model-View-ViewModel) [32]. Este patrón facilita la mantenibilidad de la aplicación web, la modularización y la reutilización de sus componentes. (Ver Figura 5.2). ● Modelo: Representa a la capa de datos y la lógica de negocio de la aplicación. Contiene la información y las reglas para procesar los datos. ● Vista: Capa que se encarga de la presentación y la interfaz de usuario. Es responsable de mostrar los datos al usuario y recoger sus interacciones. ● Modelo de vista: Es el intermediario entre el Modelo y la Vista. Su utilidad es la de separar la lógica de negocio (situada en el Modelo) de la lógica de presentación (situada en la Vista). Se encarga de solicitar los datos al Modelo y formatearlos para adecuar su presentación en la Vista. Figura 5.2: Diagrama del Modelo-Vista-Modelo de Vista 5.2.2 Capa de negocio En el caso de la capa de negocio, para el diseño de software se ha optado por utilizar una arquitectura basada en la Arquitectura en Capas. De esta forma se obtuvo un modelo que permite una mejor organización, una buena modularidad del sistema que facilita el desarrollo y su mantenimiento, y también es escalable según las necesidades del sistema. Éstas capas o niveles son principalmente: 62
- La capa Controller: En éste nivel se exponen los endpoints para las API Rest. - La capa Service: En éste componente es donde se encapsula toda la lógica de negocio. - La capa Repository: Ésta capa se encarga del sistema de gestión de acceso a la base de datos. - La capa Model(Entity): Donde están las entidades del negocio. De ésta forma la división de niveles queda reflejada en la Figura 5.3 Figura 5.3: Capas o niveles del diseño de Software Con respecto a los patrones de diseño utilizados en ésta capa de negocio se puede resaltar el siguiente patrón: El patrón de Inyección de dependencias Éste patrón es un patrón de diseño orientado a objetos, en el que se suministra objetos a una clase en lugar de ser la propia clase quien vaya a crear dichos objetos, está basada en el principio de Inversión de Control (IoC) para mantener en su "contexto" todas las instancias de la aplicación, y así poder inyectar éstas instancias a quién lo necesite (beans). En ésta aplicación se utilizó un tipo de inyección de dependencia por Atributo, tal y como se muestra en la Figura 5.4. 63
Figura 5.4: IoC por atributo 5.3 Modelo de datos 5.3.1 Modelo Entidad-Relación En la Figura 5.5 se muestra el diagrama Entidad-Relación que se ha utilizado en el modelado de datos de la aplicación. En este diagrama se presentan las entidades y los atributos definidos para el sistema. 64
Figura 5.5: Diagrama Entidad-Relación 5.3.2 Implementación de la base de datos Para poder implementar el modelo de datos descrito anteriormente se ha utilizado un sistema de gestión de base de datos relacional orientado a objetos llamado PostgreSQL que se integra de forma fluida con Spring Boot JPA. Así las consultas de operaciones CRUD [33] resultan más sencillas. A continuación, se muestran las tablas utilizadas en este modelo de datos ordenados por módulos funcionales. 5.3.2.1 Usuario En este apartado se describe la tabla de Usuario. Se puede resaltar los siguientes atributos; UUID_usuario y UUID_correo. Esto es que una vez se haya registrado el usuario en la aplicación se guardarán en ésta tabla los identificadores UUID de usuario y UUID de correo electrónico generados por Firebase. id: Valor autoincremental de un usuario uuid_usuario: Identificador primario de un usuario 65
uuid_correo: Identificador del correo electrónico de un usuario fec_creacion: Fecha de creación de un usuario fec_baja: Fecha de baja de un usuario activo: Flag de activo/desactivo de un usuario La relación de la tabla de Usuario con otras tablas se puede apreciar en la siguiente figura 5.6: Figura 5.6: Tabla Usuario 5.3.2.2 Científico En este apartado se describe la tabla de Científico, que representa el rol de usuario de científico quien es capaz de crear publicaciones. Se puede resaltar los atributos uid_usuario que relaciona con la tabla de usuario. 66
orcid: Identificador primario de un científico uid_usuario: Identificador foráneo de la relación con la tabla de usuario nombre: Nombre de un científico email: Email de un científico profesion: Profesión de un científico disponible: Flag de disponible/no disponible de un científico activo: Flag de activo/desactivo de un científico Como queda relacionada la tabla de Científico con otra tablas se puede visualizar en la siguiente figura 5.7: Figura 5.7: Tabla Científico 5.3.2.3 Organismo En este apartado se describe la tabla de Organismo, que representa el rol de usuario de organismo quien se encarga de crear los proyectos. Al igual que en el anterior apartado ésta tabla está relacionada con la tabla de usuario, mediante el uid_usuario. id: Valor autoincremental de un organismo 67
id_organismo: Identificador primario de un organismo uid_usuario: Identificador foráneo de la relación con la tabla de usuario nombre: Nombre de un organismo email: Email de un organismo localidad: Localidad de un organismo ambito: Flag de ámbito público/privado de un organismo activo: Flag de activo/desactivo de un organismo El diagrama de relación de la tabla de Organismo quedaría de la siguiente forma: (Ver Figura 5.8) Figura 5.8: Tabla Organismo 5.3.2.4 Publicación En este apartado se describe la tabla de Publicación, y como dijimos en anteriores apartados son creadas por un usuario científico. id_publicacion: Identificador primario de una publicación id_cientifico: Identificación foráneo de la relación con la tabla de científico titulo: Título de una publicación 68
descripcion: Descripción de una publicación especialidad: Especialidad del científico sobre una publicación experiencia: Experiencia del científico sobre una publicación fec_creacion: Fecha de creación de una publicación fec_actualizacion: Fecha de actualización de una publicación activo: Flag de activo/desactivo de una publicación La relación de ésta tabla de Publicación con la tabla de científico queda como se muestra en la siguiente figura 5.9: Figura 5.9: Tabla Publicación 5.3.2.5 Proyecto En este apartado se detallan los atributos que componen la tabla de Proyecto. Éstos proyectos los crean los propios usuarios organismo. id_creacion_proy: Identificador primario de un proyecto id_organismo: Identificación foráneo de la relación con la tabla de organismo titulo: Título de un proyecto descripcion: Descripción de un proyecto tamanio: Tamaño acumulado de un proyecto 69
duracion: Duración de un proyecto capacidad: Tamaño máximo de un proyecto ambito: Ámbito de especialidad de un proyecto subambito: Subámbito de especialidad de un proyecto fec_creacion: Fecha y hora de creación del proyecto fec_actualizacion: Fecha y hora de última actualización del proyecto. activo: Flag activo/no activo de un proyecto completo: Flag de completo/no completo de un proyecto A continuación las relaciones de ésta tabla de Proyecto con las tablas de organismo y asignación se muestran en la figura 5.10: Figura 5.10: Tabla Proyecto 70
5.3.2.6 Asignación En este apartado se detalla los atributos de la tabla de Asignación que es la que hace de nexo entre las tablas de científicos y proyectos. id_asignacion: Identificador primario de una asignación científico-proyecto id_cientifico: Identificación foráneo de la relación con la tabla de científico id_proyecto: Identificación foráneo de la relación con la tabla de proyecto descripcion: Descripción opcional de una asignación activo: Flag de activo/ no activo de una asignación En la siguiente figura 5.11 se muestra como queda relacionada la tabla de Asignación: Figura 5.11: Tabla Asignación 71
Figura 6.3: Registro de usuario en la base de datos tabla Científico. Figura 6.4: Registro de usuario en la base de datos tabla Organismo 78
6.2.2 Inicio de sesión El inicio de sesión es la funcionalidad que permite al usuario acceder a la aplicación utilizando las credenciales (email y contraseña) elegidas durante el registro. Para lograr iniciar sesión, en primer lugar se llama al método signInWithEmailAndPassword presente en la Figura 6.5 y perteneciente a Firebase, proporcionando las credenciales del usuario que quiere iniciar sesión. Este método permite comprobar si las credenciales introducidas están registradas en Firebase o no. En caso de estarlo, se obtiene el UID de usuario para su posterior almacenaje en la base de datos y se realiza una petición HTTP GET a la parte backend que devuelve el identificador del usuario y el tipo de usuario que es (científico u organismo). En caso contrario, se detecta que las credenciales introducidas no son válidas y lanza un error que impide iniciar sesión. Figura 6.5: Inicio de sesión en Firebase Acto seguido, como se muestra en la Figura 6.6 para el caso del científico y en la Figura 6.7 para el caso del organismo, según el tipo de usuario que quiere iniciar sesión, se realiza una petición HTTP GET para obtener toda la información del usuario, almacenarla en un servicio compartido en toda la aplicación llamado userService y redirigir al usuario a la pantalla 79
“Home” del módulo que le corresponda. Este servicio utiliza la propiedad sessionStorage que almacena la información de forma temporal en el navegador web mientras la pestaña donde se utilice esté abierta. Gracias al uso de este servicio compartido, será posible realizar funciones en los módulos como mostrar el nombre del usuario que ha iniciado sesión en el panel de usuario o cargar directamente el proyecto en el que participa un científico, entre otras. Figura 6.6: Inicio de sesión de un científico 80
Figura 6.7: Inicio de sesión de un organismo Por último, en la aplicación, se considera al administrador como un usuario que no requiere de registro y que existe de por sí tanto en la base de datos como en Firebase. Por ello, para poder iniciar sesión como administrador, se debe comprobar la existencia del usuario en la base de datos y en Firebase y escribir las siguientes credenciales en el inicio de sesión: Email: [email protected] Contraseña: administrador 81
6.2.3 Módulo Científico 6.2.3.1 Crear publicación Esta funcionalidad permite al científico crear una publicación en la aplicación rellenando un formulario. En el formulario, se debe especificar el título y descripción de la publicación así como la especialidad y la experiencia del científico. Para implementarla, se recogen los datos introducidos en el formulario, se validan y se forma un objeto con ellos. Acto seguido, se añade el código para poder mostrar una alerta emergente utilizando la biblioteca de JavaScript de código abierto llamada: SweetAlert2 [37]. (Ver Figura 6.8). Figura 6.8: Crear publicación 82
En caso de que en la alerta emergente se seleccione la opción “Crear”, se realiza una llamada al método del servicio realizarPublicacion pasándole por parámetro el objeto que contiene la información del formulario. Como se puede observar en la Figura 6.9, en esta función se realiza la petición HTTP POST a la API para registrar la nueva publicación en la base de datos. Figura 6.9: Función realizarPublicación 6.2.3.2 Mis publicaciones Esta funcionalidad se encarga de mostrar un listado en forma de tabla de todas las publicaciones realizadas por el usuario. En caso de que no exista ninguna publicación se sustituye la tabla por un texto que indica que no existen publicaciones creadas. El listado de publicaciones se carga automáticamente al entrar en la sección “Mis publicaciones” de la aplicación. Para ello, se realiza una llamada a la función cargarPublicaciones mostrada en la Figura 6.10. En esta función llama al servicio que hace la petición a la API para obtener el listado de publicaciones que hay que mostrar, pasándole el ORCID del científico que está utilizando el módulo. 83
Figura 6.10: Función cargarPublicaciones A continuación, se muestra en la Figura 6.11 la función obtenerPublicaciones que se encarga de realizar la petición HTTP GET para obtener las publicaciones a listar. Figura 6.11: Función obtenerPublicaciones 6.2.3.3 Editar publicación Esta funcionalidad permite al científico realizar modificaciones en los campos que conforman una publicación. Para poder utilizar esta funcionalidad, debe haberse creado la publicación que se desea editar. El acceso a esta funcionalidad se realiza desde la sección “Mis publicaciones” pasando por la URL el identificador de la publicación que se desea editar. Para cargar la información de la publicación que se desea editar, se obtiene el identificador pasado como parámetro y se llama a la función obtenerPublicacion presente en el servicio (ver Figura 6.12). Ésta se encarga de realizar una petición HTTP GET para obtener la información de la publicación a editar, como se muestra en la Figura 6.13. 84
Figura 6.12: Función obtenerPublicacion Figura 6.13: Petición GET obtenerPublicacion Una vez obtenida la información de la publicación, se muestra por pantalla. Cuando el científico haya editado los campos que sean necesarios, se obtienen sus valores y se validan para formar un objeto. Posteriormente, se muestra la alerta emergente de SweetAlert2 para preguntar por última vez si se desea editar la publicación. (ver Figura 6.14). Figura 6.14: Editar publicación 85
Si la respuesta es afirmativa, se realiza una llamada a la función editarPublicacion presente en el servicio que se encarga de realizar la petición HTTP PUT que edita la publicación en la base de datos. (ver Figura 6.15) Figura 6.15: Petición PUT editarPublicacion Una vez editada la publicación se redirige al usuario a la página “Mis Publicaciones”. 6.2.3.4 Eliminar publicación Esta funcionalidad permite al científico dar de baja una publicación creada anteriormente. El acceso a esta funcionalidad se realiza desde la sección “Mis publicaciones” en el que se pasa el identificador de la publicación que se desea eliminar. (ver Figura 6.16). Se vuelve a utilizar SweetAlert2 para generar una alerta emergente que pregunte al usuario. Figura 6.16: Eliminar publicación 86
Si la respuesta es afirmativa, se realiza una llamada a la función eliminarPublicacion presente en el servicio que se encarga de realizar la petición HTTP DELETE que elimina la publicación en la base de datos. (ver Figura 6.17) Figura 6.17: Petición DELETE eliminarPublicacion Una vez que la publicación es eliminada se redirige al científico a la página “Mis Publicaciones”. 6.2.3.5 Buscar organismo Esta funcionalidad permite al científico buscar un organismo escribiendo su nombre total o parcialmente. Una vez encontrado, permite listar sus proyectos. En primer lugar, se obtiene el nombre introducido por el científico y se valida. A continuación se llama a la función buscarOrganismo presente en el servicio pasándole como parámetro el nombre escrito en la búsqueda. (ver Figura 6.18) 87
Figura 6.28: Función obtenerProyecto Como se muestra en la Figura 6.29, la función obtenerProyecto se encarga de realizar una petición HTTP GET para obtener la información del proyecto a editar. Figura 6.29: Petición GET obtenerProyecto Una vez obtenida la información del proyecto, se muestra por pantalla. Cuando el organismo haya editado los campos que sean necesarios, se obtienen sus valores y se validan para formar un objeto. Posteriormente, se muestra la alerta emergente de SweetAlert2 para preguntar por última vez si se desea editar el proyecto. (ver Figura 6.30). 94
Figura 6.30: Editar proyecto Si la respuesta es afirmativa, se realiza una llamada a la función editarProyecto presente en el servicio que se encarga de realizar la petición HTTP PUT que edita el proyecto en la base de datos. (ver Figura 6.31). Figura 6.31: Petición PUT editarProyecto Una vez editado el proyecto se redirige al organismo a la página “Mis Proyectos”. 95
6.2.4.4 Eliminar proyecto Esta funcionalidad permite al organismo dar de baja un proyecto creado anteriormente. El acceso a esta funcionalidad se realiza desde la sección “Mis proyectos” en el que se pasa el identificador del proyecto que se desea eliminar. Se vuelve a utilizar SweetAlert2 para generar una alerta emergente que pregunte al usuario. (ver Figura 6.32). Figura 6.32: Eliminar proyecto Si la respuesta es afirmativa, se realiza una llamada a la función eliminarProyecto presente en el servicio que se encarga de realizar la petición HTTP DELETE que elimina el proyecto en la base de datos. (ver Figura 6.33). 96
Figura 6.33: Petición DELETE eliminarProyecto Una vez que el proyecto es eliminado se redirige al organismo a la página “Mis Proyectos”. 6.2.4.5 Buscar científico Esta funcionalidad permite al organismo buscar un científico para poder ver toda su información. Para implementarla, se recoge el ORCID escrito por el organismo en el campo habilitado para ello. Se valida si está o no en el formato correcto y se pasa como parámetro a la función obtenerCientífico del servicio. (ver Figura 6.34). Figura 6.34: Buscar científico 97
Como se muestra en la Figura 6.35, la función obtenerCientífico se encarga de realizar la petición HTTP GET para obtener el científico. Figura 6.35: Petición GET obtenerCientifico Una vez obtenido el científico, se muestra su información por pantalla. 6.2.4.6 Recomendaciones de científicos Esta funcionalidad permite al organismo recibir recomendaciones de científicos que pueden participar en un proyecto en concreto basándose en el ámbito y subámbito del proyecto seleccionado y en la especialidad de las publicaciones de los científicos y sus profesiones. Esta funcionalidad requiere que el organismo introduzca el identificador del proyecto para el cual desea recibir recomendaciones. El identificador es validado y pasado como parámetro a la función recomendarProyectos del servicio. (ver Figura 6.36). Figura 6.36: Recomendaciones de científicos 98
Como se muestra en la Figura 6.37, la función recomendarCientificos se encarga de realizar la petición HTTP GET para obtener los científicos recomendados. Figura 6.37: Petición GET recomendarCientificos Si se obtienen recomendaciones de científicos, se mostrarán en forma de tarjetas al organismo. En caso contrario, se muestra un mensaje indicando que no se han podido obtener recomendaciones. 6.2.9 Administrador 6.2.9.1 Listar publicaciones Esta funcionalidad se encarga de mostrar un listado en forma de tabla de todas las publicaciones realizadas por los científicos. En caso de que no exista ninguna publicación se sustituye la tabla por un texto que indica que no existen publicaciones. El listado de publicaciones se carga automáticamente al entrar en la sección. Para ello, se realiza una llamada a la función cargarPublicaciones mostrada en la Figura 6.38. En esta función simplemente llama a la función obtenerTodasPublicaciones del servicio administrador. Figura 6.38: Listar publicaciones 99
Como se muestra en la Figura 6.39, la función obtenerTodasPublicaciones se encarga de realizar la solicitud HTTP GET al backend para obtener todas las publicaciones de los científicos. Figura 6.39: Petición GET obtenerTodasPublicaciones 6.2.9.2 Editar publicación Esta funcionalidad permite al administrador realizar modificaciones en los campos de una publicación de un científico. Para poder utilizar esta funcionalidad, deben existir publicaciones que editar. En caso de no existir, se muestra un mensaje por pantalla indicándolo. El acceso a esta funcionalidad se realiza desde la sección “Listar publicaciones” pasando por la URL el identificador de la publicación que se desea editar. Para cargar la información de la publicación que se desea editar, se obtiene el identificador pasado como parámetro y se llama a la función obtenerPublicacion presente en el servicio (ver Figura 6.40). Ésta se encarga de realizar una petición HTTP GET para obtener la información de la publicación a editar, como se muestra en la Figura 6.41. Figura 6.40: Función obtenerPublicacion 100
Figura 6.41: Petición GET obtenerPublicación Una vez obtenida la información de la publicación, se muestra por pantalla. Cuando el administrador haya editado los campos que sean necesarios, se obtienen sus valores y se validan para formar un objeto. Posteriormente, se muestra la alerta emergente de SweetAlert2 para preguntar por última vez si se desea editar la publicación. (ver Figura 6.42). Figura 6.42: Editar publicación 101
Si la respuesta es afirmativa, se realiza una llamada a la función editarPublicacion presente en el servicio que se encarga de realizar la petición HTTP PUT que edita la publicación en la base de datos. (ver Figura 6.43). Figura 6.43: Petición PUT editarPublicacion Una vez editada la publicación se redirige al usuario a la página “Listar publicaciones”. 6.2.9.3 Eliminar publicación Esta funcionalidad permite al administrador dar de baja una publicación. El acceso a esta funcionalidad se realiza desde la sección “Listar publicaciones” en el que se pasa el identificador de la publicación que se desea eliminar. (ver Figura 6.44). Se vuelve a utilizar SweetAlert2 para generar una alerta emergente que pregunte al usuario. 102
Figura 6.44: Eliminar publicación Si la respuesta es afirmativa, se realiza una llamada a la función eliminarPublicacion presente en el servicio que se encarga de realizar la petición HTTP DELETE que elimina la publicación en la base de datos. (ver Figura 6.45). Figura 6.45: Petición DELETE eliminarPublicacion Una vez que la publicación es eliminada se redirige al científico a la página “Listar publicaciones”. 103
6.2.9.7 Eliminar usuario Esta funcionalidad permite al administrador dar de baja un usuario (científico u organismo) de forma lógica en la aplicación. El acceso a esta funcionalidad se realiza desde la sección “Listar usuario” en el que pasa el identificador del usuario que se desea eliminar. (ver Figura 6.58 para el científico y Figura 6.59 para el organismo). Se vuelve a utilizar SweetAlert2 para generar una alerta emergente que pregunte al usuario. Figura 6.58: Eliminar científico 110
Figura 6.59: Eliminar organismo Si la respuesta es afirmativa, se realiza una llamada a la función eliminarCientifico o a la función eliminarOrganismo presentes en el servicio que se encargan de realizar la petición HTTP DELETE que elimina al científico u organismo de forma lógica en la base de datos. (ver Figuras 6.60 y 6.61). Figura 6.60: Petición DELETE eliminarCientifico Figura 6.61: Petición DELETE eliminarOrganismo Una vez que el usuario es eliminado se redirige al administrador a la página “Listar usuarios”. 111
6.2.9.8 Reactivar usuario Esta funcionalidad permite al administrador reactivar un usuario (científico u organismo) que estaba dado de baja. El acceso a esta funcionalidad se realiza desde la sección “Listar usuarios” en el que pasa el identificador del usuario que se desea reactivar. (ver Figuras 6.62 para el científico y Figura 6.63 para el organismo). Se vuelve a utilizar SweetAlert2 para generar una alerta emergente que pregunte al usuario. Figura 6.62: Reactivar científico 112
Figura 6.63: Reactivar organismo Si la respuesta es afirmativa, se realiza una llamada a la función reactivarCientifico o a la función reactivarOrganismo presentes en el servicio que se encargan de realizar la petición HTTP GET que reactiva al científico u organismo en la base de datos. (ver Figuras 6.64 y 6.65). Figura 6.64: Petición GET reactivarCientifico 113
Figura 6.65: Petición GET reactivarOrganismo Una vez que el usuario es reactivado se redirige al administrador a la página “Listar usuarios”. 6.2.9.9 Listar proyectos Esta funcionalidad se encarga de mostrar un listado en forma de tabla de todos los proyectos realizados por los organismos. En caso de que no exista ningún proyecto se sustituye la tabla por un texto que indica que no existen proyectos. El listado de proyectos se carga automáticamente al entrar en la sección. Para ello, se realiza una llamada a la función cargarProyectos mostrada en la Figura 6.66. En esta función simplemente llama a la función obtenerTodosProyectos del servicio administrador. Figura 6.66: Listar proyectos Como se muestra en la Figura 6.67, la función obtenerTodosProyectos se encarga de realizar la solicitud HTTP GET para obtener todos los proyectos de los organismos. Figura 6.67: Petición GET obtenerTodosProyectos 114
6.2.9.10 Editar proyecto Esta funcionalidad permite al administrador realizar modificaciones en los campos de un proyecto de un organismo. Para poder utilizar esta funcionalidad, deben existir proyectos que editar. En caso de no existir, se muestra un mensaje por pantalla indicándolo. El acceso a esta funcionalidad se realiza desde la sección “Listar proyectos” pasando por la URL el identificador del proyecto que se desea editar. Para cargar la información del proyecto que se desea editar, se obtiene el identificador pasado como parámetro y se llama a la función obtenerProyecto presente en el servicio (ver Figura 6.68). Ésta se encarga de realizar una petición HTTP GET para obtener la información del proyecto a editar, como se muestra en la Figura 6.69. Figura 6.68: Función obtenerProyecto Figura 6.69: Petición GET obtenerProyecto Una vez obtenida la información del proyecto, se muestra por pantalla. 115
Cuando el administrador haya editado los campos que sean necesarios, se obtienen sus valores y se validan para formar un objeto. Posteriormente, se muestra la alerta emergente de SweetAlert2 para preguntar por última vez si se desea editar el proyecto. (ver Figura 6.70). Figura 6.70: Editar proyecto Si la respuesta es afirmativa, se realiza una llamada a la función editarProyecto presente en el servicio que se encarga de realizar la petición HTTP PUT que edita el proyecto en la base de datos. (ver Figura 6.71). Figura 6.71: Petición PUT editarProyecto Una vez editado el proyecto se redirige al usuario a la página “Listar proyectos”. 116
6.2.9.11 Eliminar proyecto Esta funcionalidad permite al administrador dar de baja un proyecto de forma lógica en la aplicación. El acceso a esta funcionalidad se realiza desde la sección “Listar proyectos” en el que se pasa el identificador del proyecto que se desea eliminar. (ver Figura 6.72). Se vuelve a utilizar SweetAlert2 para generar una alerta emergente que pregunte al usuario. Figura 6.72: Eliminar proyecto Si la respuesta es afirmativa, se realiza una llamada a la función eliminarProyecto presente en el servicio que se encarga de realizar la petición HTTP DELETE que elimina el proyecto de forma lógica en la base de datos. (ver Figura 6.73). 117
Figura 6.73: Petición DELETE eliminarProyecto Una vez que el proyecto es eliminado se redirige al administrador a la página “Listar proyectos”. 6.2.9.12 Reactivar proyecto Esta funcionalidad permite al administrador reactivar un proyecto que estaba dado de baja. El acceso a esta funcionalidad se realiza desde la sección “Listar proyectos” en el que se pasa el identificador del proyecto que se desea reactivar. (ver Figura 6.74). Se vuelve a utilizar SweetAlert2 para generar una alerta emergente que pregunte al usuario. Figura 6.74: Reactivar proyecto Si la respuesta es afirmativa, se realiza una llamada a la función reactivarProyecto presente en el servicio que se encarga de realizar la petición HTTP GET que reactiva el proyecto en la base de datos. (ver Figura 6.75). Figura 6.75: Petición GET reactivarProyecto 118
Una vez que el proyecto es reactivado se redirige al administrador a la página “Listar proyectos”. 6.3 API REST En este apartado se especificará el diseño de la API Rest implementada. Éstas funcionalidades se pueden dividir por módulos. Además de seguir unas buenas prácticas para diseñar una API RESTful, se ha documentado el desarrollo de la API con el framework de Swagger (OpenAPI 3). Éste framework es de código abierto y respaldado por un gran ecosistema de herramientas que nos ayudan a diseñar, construir, documentar y consumir un servicio RESTful. De esta manera, en conjunto, la interfaz que presenta Swagger al usuario con las API Rest expuestas se muestra en la siguiente Figura 6.76. 119
Método de consulta (GET) en el que se busca una publicación por su clave primaria Object api/searchProject/publication/{id} Método de inserción (POST) en el que se crea una publicación Object api/searchProject/publication Método de actualización (PUT) en el que se actualizan los datos de una publicación dado su clave primaria api/searchProject/publication/{id} Método de consulta (GET) en el que se busca todas las publicaciones que tiene un científico dado la clave primaria de éste List api/searchProject/publication/all/{idCi entifico} Método de consulta (GET) en el que se busca todas las publicaciones List api/searchProject/publication/all Método de borrado (DELETE) en el que se da de baja a una publicación dado su clave primaria Boolean api/searchProject/publication/{id} Método de modificación en el que se busca una publicación para reactivar su estado dado su clave primaria Boolean api/searchProject/publication/reactiva te/{idPublication} 126
Tabla 6.4: Endpoints API Publicaciones 6.3.5 Proyectos En éste apartado se muestran en la Tabla 6.5 los endpoints relativos al módulo de proyecto. Descripción Result Endpoint Método de consulta (GET) en el que se busca un proyecto por su clave primaria Object api/searchProject/project/{id} Método de inserción (POST) en el que se crea un proyecto Object api/searchProject/project Método de actualización (PUT) en el que se actualizan los datos de un proyecto dado su clave primaria Object api/searchProject/project/{id} Método de consulta (GET) en el que se busca todos los proyectos que tiene un organismo dado la clave primaria de éste List api/searchProject/project/all/{idOrgani smo} Método de borrado (DELETE) en el que se da de baja a un proyecto dado su clave primaria Boolean api/searchProject/project/{id} Método de consulta (GET) en el que se busca todos los proyectos List api/searchProject/project/all 127
Método de modificación en el que se busca un proyecto para reactivar su estado dado su clave primaria Boolean api/searchProject/project/reactivate/{i dProject} Método de consulta (GET) en el que se busca una lista de científicos recomendados para el proyecto de un organismo dado su clave primaria List api/searchProject/project/recommend ation/{idProject} Tabla 6.5: Endpoint API Proyectos 128
Capítulo 7 - Conclusiones y Trabajo futuro 7.1 Conclusiones En este trabajo se ha logrado desarrollar una aplicación web para la gestión de búsquedas de científicos y proyectos. A través de esta aplicación, los científicos son capaces de poder explorar una amplia gama de proyectos que se alineen con sus intereses y conocimientos. Del mismo modo, los organismos pueden difundir sus proyectos y encontrar científicos cualificados para llevarlos a cabo. Esta aplicación ha conseguido establecer, no sólo una plataforma tecnológica, sino un puente entre la comunidad científica y los proyectos de investigación. Ha sido una demostración de que la tecnología y la ciencia pueden trabajar mano a mano para desarrollar soluciones efectivas a los complejos problemas de nuestros tiempos. El desarrollo de esta aplicación ha supuesto una contribución para fomentar la colaboración interdisciplinar y promover e impulsar la innovación y el avance en las investigaciones científicas. Por ello se han aplicado conocimientos en ingeniería del software, bases de datos, programación y otros conceptos para diseñar y desarrollar una aplicación que satisfaga las necesidades de la comunidad científica. Se puede destacar que en la parte de ingeniería del software se pasaron por las cuatro etapas (ciclo de vida del software): La etapa de la concepción para determinar el alcance del proyecto y tener una versión inicial del modelo de negocio. Esto queda reflejado en las propuestas iniciales de proyecto de TFG presentadas a nuestros directores. La etapa de elaboración con la planificación del proyecto y el desarrollo de las especificaciones funcionales del proyecto. Así se refleja en la versión inicial de los hitos del proyecto y el documento SRS presentados a los directores. La etapa de construcción en el que elaboramos todas las características técnicas del producto, reflejado en el desarrollo backend y frontend. Y finalmente la etapa de transición para la entrega del producto terminado. Así culmina con la subida del proyecto en un repositorio git con su documentación y versión final. 129
Por otro lado, en el desarrollo de la base de datos se han tenido en cuenta los conceptos aprendidos a la hora de elegir un modelo de datos relacional que sea capaz de mostrarnos, a través de un conjunto de tablas, la relación que hay entre los principales módulos. Así también los conceptos de programación orientada a objetos se han aplicado en la elección del diseño de software (modelo basado en la arquitectura en capas), también se ven reflejados en las buenas prácticas a la hora de implementar código; el formato y tamaño del código de desarrollo (número de líneas de código), el empaquetado y división de las clases e interfaces para tener una mejor organización y para que el código sea mantenible. Por último, en pro de la transparencia y el acceso abierto a la información, se proporcionan los enlaces a los repositorios Github donde se encuentra el código fuente de la aplicación para que, aquel que esté interesado, pueda consultarlos. ● Front-end: https://github.com/aherre08/Science-Hub-FrontEnd.git ● Backend: https://github.com/GeraldLima/ms-busqueda-proyecto.git 7.2 Trabajo futuro A pesar de que se han conseguido implementar la gran mayoría de las funcionalidades propuestas inicialmente, se pueden plantear varias líneas de trabajo futuro: ● Mejorar el algoritmo de recomendaciones: En la aplicación el sistema de recomendaciones es funcional pero poco avanzado. Esta línea de trabajo futuro se podría centrar en seguir desarrollando el algoritmo de recomendación. Por ejemplo, se podrían incorporar sistemas de recomendación basados en el comportamiento del usuario utilizando algoritmos de aprendizaje automático, con la finalidad de ofrecer recomendaciones más precisas. ● Integración de herramientas de colaboración: Esta línea consistiría en agregar funcionalidades que faciliten la colaboración en línea, como la compartición de documentos o sistemas de videoconferencia. Estos dos sistemas mencionados podrían ser utilizados, por ejemplo, para poder firmar y enviar contratos de los proyectos o para realizar reuniones del proyecto en el que se esté participando. 130
● Funcionalidad de generar un equipo de trabajo: Esta línea se centraría en desarrollar una funcionalidad que permitiese generar equipos de trabajo para un proyecto. Se indicaría el número de integrantes necesario, sus perfiles y la aplicación formaría automáticamente un equipo de trabajo. ● Mejoras y correcciones en las funcionalidades actuales: Esta línea se centraría en mejorar las funcionalidades ya implementadas en la aplicación, como por ejemplo, añadir la posibilidad de filtrado de información en los listados. Además se centraría en la corrección de errores, optimización de la aplicación y eliminación de aquellas funcionalidades obsoletas. ● Análisis de impacto: En esta línea se podrían desarrollar métricas para evaluar el impacto de las publicaciones y de los proyectos. Con estas métricas, se podrían obtener gráficas y realizar estudios y comparaciones. ● Colaboración con instituciones científicas: Esta línea consistiría en establecer asociaciones con instituciones científicas, laboratorios de investigación y universidades para publicar sus proyectos y promover la colaboración científica. ● Integración de financiamiento: Esta línea se centraría en integrar funcionalidades para que los organismos puedan buscar financiación y subvenciones para sus proyectos. ● Remuneración: Esta línea trataría la idea de remunerar a los organismos por publicar proyectos en la aplicación para que actúe como foco de interés para los científicos. 131
Chapter 7 - Conclusions and future work 7.1 Conclusions In this work it has been possible to develop a web application for the management of searches of scientists and projects. Through this app, scientists are able to explore a wide range of projects that align with their interests and knowledge. In the same way, agencies can disseminate their projects and find qualified scientists to carry them out. This application has managed to establish, not only a technological platform, but a bridge between the scientific community and research projects. It has been a demonstration that technology and science can work hand in hand to develop effective solutions to the complex problems of our times. The development of this application has been a contribution to foster interdisciplinary collaboration and promote and boost innovation and progress in scientific research. Knowledge in software engineering, databases, programming and other concepts have been applied to design and develop an application that meets the needs of the scientific community. It can be noted that in the software engineering part the project went through the four stages (software life cycle): The conception stage to determine the scope of the project and have an initial version of the business model. This is reflected in the initial TFG project proposals presented to our directors. The elaboration stage with the planning of the project and the development of the functional specifications of the project. This is reflected in the initial version of the project milestones and the SRS document presented to managers. The construction stage in which we elaborate all the technical characteristics of the product, reflected in the backend and frontend development. And finally the transition stage for the delivery of the finished product. This culminates with the upload of the project in a git repository with its documentation and final version. 132
On the other hand, in the development of the database we have taken into account the concepts learned when choosing a relational data model that is capable of showing us, through a set of tables, the relationship between the main modules. Likewise, the concepts of object-oriented programming we have been applied in the choice of software design (model based on layered architecture), they are also reflected in good practices when we have implemented code; the format and size of the development code (number of line of code), the packaging and division of the classes and interfaces in order to have a better organization and to make the code maintainable. Finally, for the sake of transparency and open access to information, links are provided to the Github repositories where the source code of the application is located so that anyone who is interested can consult them. ● Front-end: https://github.com/aherre08/Science-Hub-FrontEnd.git ● Backend: https://github.com/GeraldLima/ms-busqueda-proyecto.git 7.2 Future work Although the vast majority of the functionalities initially proposed have been implemented, several lines of future work can be proposed: ● Improve the recommendation algorithm: In the application the recommendation system is functional but not very advanced. This future line of work could focus on further developing the recommendation algorithm. For example, recommendation systems based on user behavior could be incorporated using machine learning algorithms, in order to offer more accurate recommendations. ● Integration of collaboration tools: This line would consist of adding functionalities that facilitate online collaboration, such as document sharing or videoconferencing systems. These two systems mentioned could be used, for example, to be able to sign and send project contracts or to hold meetings of the project in which you are participating. 133
● Functionality of generating a work team: This line would focus on developing a functionality that would allow generating work teams for a project. The number of members needed, their profiles would be indicated and the application would automatically form a work team. ● Improvements and corrections in the current functionalities: This line would focus on improving the functionalities already implemented in the application, such as adding the possibility of filtering information in the lists. It would also focus on the correction of errors, optimization of the application and elimination of those obsolete functionalities. ● Impact analysis: In this line, metrics could be developed to evaluate the impact of publications and projects. With these metrics, graphs could be obtained and studies and comparisons could be made. ● Collaboration with scientific institutions: This line would consist of establishing partnerships with scientific institutions, research laboratories and universities to publish their projects and promote scientific collaboration. ● Integration of financing: This line would focus on integrating functionalities so that organizations can seek funding and grants for their projects. ● Remuneration: This line would deal with the idea of remunerating organizations for publishing projects in the application so that it acts as a focus of interest for scientists. 134
Capítulo 8 - Contribuciones personales 8.1 Alberto Herrera García La contribución de Alberto al trabajo puede clasificarse en las distintas fases del desarrollo: 1. Fase de Ingeniería de requisitos: La fase inicial del trabajo consistió en la recopilación y análisis de requisitos aplicando Ingeniería de Requisitos. Su participación fue activa no sólo en la identificación y captura de requisitos sino también en la labor de recopilación de información y elaborar la documentación. Además, participó en la redacción de la especificación de requisitos, elaborando las tablas de casos de uso para los actores que intervienen en la aplicación. 2. Fase de Modelado de datos: El modelado de datos se realizó, inicialmente, en una reunión junto con Gerald, en la que se logró establecer un modelo de datos de bastante alto nivel. El modelado de datos ha sido una tarea que se ha realizado de forma conjunta a lo largo del desarrollo de la aplicación ya que ha afectado tanto en la implementación front-end de la aplicación web como en el diseño back-end. La labor de Alberto en esta fase ha consistido en detectar y tratar junto con Gerald cualquier tipo de ajuste que ha sido necesario realizar para que el modelo de datos tomara un enfoque cada vez más de bajo nivel. 135