scieee AI-readable full text Open interactive document viewer

Mainvest: Aplicación para la gestión de inversiones con elementos sociales y predicción financiera

Jiménez Nieto, Jaime

Abstract

El presente Trabajo de Fin de Grado (TFG) tiene como objetivo principal proporcionar una herramienta para la gestión de inversiones en el mercado financiero. La aplicación, denominada "Mainvest", permite a los usuarios registrados interactuar entre sí para formar una comunidad que facilite el aprendizaje colectivo sobre las dinámicas del mercado. Los usuarios pueden acceder a datos financieros de distintos activos y comunicarse a través de una sección de interacción social, donde pueden compartir mensajes, comentarios y me gusta. La aplicación web está respaldada por una base de datos que se actualiza a medida que los usuarios la utilizan, lo que permite que el sistema evolucione con el tiempo y se adapte a las necesidades de la comunidad inversora.

Full text

MAINVEST: APLICACIÓN PARA LA GESTIÓN DE INVERSIONES CON ELEMENTOS SOCIALES Y PREDICCIÓN FINANCIERA TRABAJO FIN DE GRADO CURSO 2023-2024 JAIME JIMÉNEZ NIETO DIRECTOR ANTONIO SARASA CABEZUELO GRADO EN INGENIERÍA DEL SOFTWARE FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID Junio – 2024 2 DEDICATORIA A todos mis seres queridos, que hicieron hasta lo imposible para conseguirlo. 3 AGRADECIMIENTOS Me gustaría agradecer a mi tutor, por la oportunidad de realizar este trabajo a parte de poder desarrollar las ideas que tenía en la cabeza y plasmarlas en el proyecto. También me gustaría agradecer a mi familia y amigos, por todo el apoyo recibido a lo largo de mi carrera. Sin ellos no estaría escribiendo esto. 4 Índice General DEDICATORIA 2 AGRADECIMIENTOS 3 RESUMEN 16 Capítulo 1. Introducción 17 1.1 Motivación 17 1.2 Estructura de la memoria 18 Capítulo 1. Introducción 18 Capítulo 2: Estado del Arte 18 Capítulo 3: Tecnología empleada 18 Capitulo 4: Arquitectura de la Aplicación y Modelo de Datos 19 Capítulo 5: Implementación y diseño de la aplicación 19 Capítulo 6: Conclusiones y Trabajo Futuro 19 Anexo A: Especificación de requisitos 19 Anexo B: Guía de uso 19 1.3 Objetivos 19 1.4 Plan de trabajo 20 Hito 1. Especificación de Requisitos 21 Hito 2. Cuentas de Usuario 21 Hito 3. Gestión de carteras 22 Hito 4. Mercados 22 Hito 5. Alertas 23 Hito 6. Interacción con usuarios 23 Chapter 1. Introduction 24 1.1 Motivation 24 1.2 Structure of the Document 25 Chapter 1: Introduction 25 Chapter 2: State of the Art 25 Chapter 3: Technology Used 25 Chapter 4: Application Architecture and Data Model 25 Chapter 5: Implementation and Application Design 26 5 Chapter 6: Conclusions and Future Work 26 Appendix A: Requirements Specification 26 Appendix B: User Guide 26 1.3 Objectives 26 1.4 Work Plan 27 Milestone 1: Requirements Specification 27 Milestone 2: User Accounts 28 Milestone 3: Portfolio Management 28 Milestone 4: Markets 28 Milestone 5: Notifications 29 Milestone 6: User Interaction 29 Capítulo 2. Estado del arte 30 2.1 Binance 30 2.2 Twitter 30 Capítulo 3. Tecnología empleada 31 3.1 HTML5 31 3.2 SCSS 31 3.3 Bootstrap 5 31 3.4 Tailwind CSS 32 3.5 Angular 32 3.6 Typescript 32 3.7 PostgreSQL 32 3.8 DBeaver 33 3.9 Docker 33 3.10 Visual Studio Code 33 3.11 Postman 33 3.12 Lightweight - Charts 34 3.13 Yahoo Finance API 34 3.14 Canva 34 6 3.14 Github 34 Capítulo 4: Arquitectura de la Aplicación y Modelo de Datos 36 4.1 Arquitectura de la Aplicación 36 4.2 Estructura de la base de datos 38 4.2.1 Tabla users 39 4.2.2 Tabla alerts 40 4.2.3 Tabla assets 40 4.2.4 Tabla notifications 41 4.2.5 Tabla posts 41 4.2.6 Tabla replies 41 4.2.7 Tabla social 42 4.2.8 Tabla users_likes 42 4.2.9 Tabla wallets 43 4.2.10 Tabla wallets_assets 43 Capítulo 5. Implementación y diseño de la aplicación 44 5.1 Diseño de la aplicación 44 5.2 Implementación de la Aplicación Web 45 5.2.1 Sección de Usuario No Registrado 45 Registro de cuenta 45 6.2.2 Sección de Usuario Registrado 47 Inicio de sesión 48 Creación de cartera 49 Mostrar carteras 51 Modificar carteras 52 Buscar cartera 53 Eliminar cartera 54 Modificar datos de cuenta 55 Eliminar usuario 57 Mostrar publicaciones 58 Mostrar me gusta 59 Mostrar usuarios siguiendo 61 Ver activos disponibles 62 Mostrar información de un activo 62 Mostrar predicción 63 7 Mostrar publicaciones 64 Enviar publicación 66 Responder a una publicación 67 Añadir una alerta 68 Buscar usuarios / activos 69 Mostrar / eliminar notificaciones de me gusta 69 Mostrar / eliminar notificaciones de comentarios 71 Cerrar sesión de la cuenta 72 Capítulo 7. Conclusiones y Trabajo Futuro 74 7.1 Conclusiones 74 7.2 Trabajo Futuro 74 Chapter 7. Conclusions and Future Work 76 7.1 Conclusions 76 7.2 Future Work 76 Bibliografía 78 Anexo A. Especificación de Requisitos 79 A.1 Actores 79 A.2 Diagramas de casos de uso 79 A.2.1. Diagrama de usuario registrado 79 A.2.2. Diagrama de usuario no registrado 80 A.3 Módulo de cuentas de Usuario 81 A.4 Módulo de gestión de carteras 96 A.5 Módulo de mercado 108 A.5 Módulo de notificaciones 122 A.6 Módulo de Interacción con Usuario 133 Anexo B. Guía de Uso 154 B.1 Usuario registrado 154 B.1.1 Vista principal de usuario registrado 154 B.1.2 Sección de mercado 155 B.1.2.1 Pantalla principal de activo 155 B.1.2.2 Operar con el activo 158 8 B.1.2.2 Añadir alerta 162 B.1.2.3 Mostrar predicción 162 B.1.3 Sección social 162 B.1.3.1 Vista principal del Tablón 163 B.1.3.2 Añadir nueva publicación 165 B.1.3.3 Interactuar con la publicación 166 B.1.3.4 Responder publicación 167 B.1.3.5 Ver publicación 167 B.1.4 Sección de perfil 168 B.1.4.1 Pantalla social 169 B.1.4.1.1 Pantalla Siguiendo 170 B.1.4.1.2 Pantalla Seguidores 170 B.1.4.2 Pantalla de Publicaciones 171 B.1.4.3 Pantalla de Me gusta 172 B.1.4.4 Pantalla de Carteras 173 B.1.4.4.1 Buscar cartera 173 B.1.4.4.2 Eliminar cartera 174 B.1.4.5 Pantalla de nueva cartera 174 B.1.4.6 Pantalla de ajustes 175 B.1.5 Notificaciones 177 B.1.5.1 Notificaciones de precios 178 B.1.5.1 Notificaciones de me gusta 178 B.1.5.1 Notificaciones de comentarios 180 9 Índice Tablas Tabla 1.1 Cronograma y etapas clave 21 Table 1.1 Schedule and Key Stages 27 Tabla 4.1 Diagrama Entidad – Relación de las Tablas 39 Tabla 4.2. Tabla de usuarios 39 Tabla 4.3. Tabla de alertas 40 Tabla 4.4. Tabla de activos 40 Tabla 4.5. Tabla de notificaciones 41 Tabla 4.6. Tabla de publicaciones 41 Tabla 4.7. Tabla de respuestas 42 Tabla 4.8. Tabla de social 42 Tabla 4.9. Tabla intermedia de usuarios y me gusta 43 Tabla 4.10. Tabla de carteras 43 Tabla 4.11. Tabla intermedia de carteras y activos 43 A.1.1 Tabla de Registrar usuario 84 A.1.2 Tabla de cerrar sesión 86 A.1.3 Tabla de iniciar sesión 89 A.1.4 Tabla de Eliminar cuenta 91 A1.5 Tabla de modificar usuario 94 A.1.6 Tabla de mostrar perfil de usuario 96 A.2.1 Tabla de crear cartera 99 A.2.2 Tabla de eliminar cartera 100 16 RESUMEN El presente Trabajo de Fin de Grado (TFG) tiene como objetivo principal proporcionar una herramienta para la gestión de inversiones en el mercado financiero. La aplicación, denominada "Mainvest", permite a los usuarios registrados interactuar entre sí para formar una comunidad que facilite el aprendizaje colectivo sobre las dinámicas del mercado. Los usuarios pueden acceder a datos financieros de distintos activos y comunicarse a través de una sección de interacción social, donde pueden compartir mensajes, comentarios y me gusta. La aplicación web está respaldada por una base de datos que se actualiza a medida que los usuarios la utilizan, lo que permite que el sistema evolucione con el tiempo y se adapte a las necesidades de la comunidad inversora. 17 Capítulo 1. Introducción Este trabajo de fin de grado (TFG) consiste en la realización de una aplicación web donde los usuarios, anteriormente registrados, pueden hacer uso de los servicios que ofrece la aplicación, desde la gestión de inversiones realizadas en los diferentes activos financieros presentes hasta la interacción con otros usuarios. 1.1 Motivación En la actualidad, el mercado financiero representa un desafío complejo en el que los inversores han de tomar decisiones informadas y estratégicas para alcanzar los objetivos planteados. Muchos inversores carecen del conocimiento necesario para comprender las dinámicas del mercado, lo que en la mayoría de las ocasiones provocan decisiones mal informadas y resultados poco favorables. El problema que se quiere resolver con este proyecto es la falta de accesibilidad y comprensión en el ámbito financiero. La mayoría de las aplicaciones financieras parten de la idea del conocimiento básico, que no nulo, del inversor y dejan de lado a todo usuario cuyo propósito es adentrarse en el mundo financiero. Además, existe una escasez de herramientas que permitan al usuario experimentar con el mercado sin ningún tipo de consecuencia. La principal dificultad radica en crear una plataforma, tanto educativa como atractiva para el usaurio. La aplicación tiene que ser capaz de proporcionar a los usuarios información verdadera para que, aunque no tenga consecuencia, sus acciones se vean involucradas por hechos reales. Por ello, la aplicación requiere de herramientas de predicción y analíticas que ayuden a los usuarios a entender de una mejor manera el impacto de sus acciones de inversión. Otro desafío a tener en cuenta es facilitar la interacción social con los usuarios, ya que la colaboración y el intercambio de conocimientos son fundamentales para el aprendizaje financiero. Por ello, es necesario que la plataforma disponga de una sección donde los usuarios interactúen e intercambien las estrategias que están siguiendo para obtener resultados favorables. 18 Por tanto, el objetivo de este proyecto es proporcionar una plataforma segura, donde el usuario pueda realizar inversiones ficticias en el mercado financiero real e interactuar con los distintos usuarios para que compartan información, opiniones y estrategias a seguir con el fin de ampliar sus conocimientos en este ámbito. 1.2 Estructura de la memoria El documento se divide en varios capítulos claramente definidos, cada uno abarcando diferentes aspectos del proyecto, desde la motivación hasta el plan de trabajo y la implementación. A continuación, se describe brevemente el contenido de cada capítulo: Capítulo 1. Introducción Este capítulo se centra en la explicación del proyecto, dividiendo el mismo en varios apartados: motivación, estructura, objetivos y plan de trabajo. En el apartado de motivación se exponen los problemas a resolver en el ámbito de las inversiones financieras, destacando la falta de herramientas educativas adecuadas y la necesidad de un entorno seguro para la experimentación. La estructura del documento presenta de manera clara los objetivos de la plataforma y el plan de trabajo desarrollado durante el proyecto. Capítulo 2: Estado del Arte En este capítulo se describirán las plataformas que han servido de ejemplo a la hora de desarrollar la aplicación. Capítulo 3: Tecnología empleada En el tercer capítulo se detallan las diferentes tecnologías que se han utilizado a la hora de desarrollar el proyecto 19 Capitulo 4: Arquitectura de la Aplicación y Modelo de Datos Este capítulo describe la arquitectura utilizada para la implementación de la aplicación y proporciona detalles sobre el modelo de datos y las tablas de la base de datos. Capítulo 5: Implementación y diseño de la aplicación Se detalla el diseño que se ha querido desarrollar para la aplicación además de la implementación de las diferentes funcionalidades organizadas en módulos. Capítulo 6: Conclusiones y Trabajo Futuro El último capítulo describe las conclusiones del proyecto, así como el trabajo que se quiere realizar en un futuro. Anexo A: Especificación de requisitos El primer anexo de la memoria describe los diferentes actores que se han tenido en cuenta a la hora de desarrollar el proyecto. Además, se realiza una descripción de los casos de uso que se han implementado, organizados por módulos. Anexo B: Guía de uso Se proporciona un manual de usuario. 1.3 Objetivos El objetivo principal de este TFG es desarrollar una aplicación web que permita a los usuarios gestionar inversiones ficticias mientras interactúan con otros usuarios a través de una sección social integrada. Los objetivos específicos son los siguientes: • Análisis del Mercado Financiero: Ofrecer a los usuarios datos detallados sobre diferentes activos financieros y su evolución a lo largo del tiempo. 20 • Diseño de la Aplicación Web: Crear una interfaz intuitiva y atractiva que facilite la experiencia del usuario y brinde todas las funcionalidades esperadas. • Implementación de Características Clave: Incluir funcionalidades como la interacción social, la creación de carteras de inversión y la capacidad de comentar y reaccionar a publicaciones. • Seguridad y Protección de Datos: Garantizar la seguridad de la información personal y financiera de los usuarios registrados en la aplicación. 1.4 Plan de trabajo Esta sección detalla el plan de trabajo seguido para el desarrollo del proyecto, incluyendo los principales hitos y las fechas estimadas para su cumplimiento. La Tabla 1.1 muestra el cronograma del proyecto y las etapas clave que permitieron lograr los objetivos propuestos. 21 Hito Duración Especificación de Requisitos 11 septiembre – 27 septiembre Cuentas de Usuario 27 septiembre – 8 octubre Gestión de Carteras 8 octubre – 2 diciembre Mercados 4 diciembre - 7 febrero Notificaciones 7 febrero - 27 febrero Interacción con Usuarios 27 febrero – 16 abril Tabla 1.1 Cronograma y etapas clave Se detalla el contenido de cada uno de los hitos desarrollados en este proyecto: Hito 1. Especificación de Requisitos El primer hito consistió en realizar el documento donde se definían las diferentes funcionalidades que debía de tener la aplicación. Se llevo a cabo una reunión con el tutor para discutir acerca de esto y se intercambiaron varios correos para tener claro las características de la aplicación. Hito 2. Cuentas de Usuario En la segunda etapa se implementó las funcionalidades necesarias para que un usuario pudiera acceder a la aplicación, además de poder modificar algunos datos de su recién ingresada cuenta. En esta fase se desarrolló: • Registro de usuario. • Login • Logout 22 • Modificación de datos de usuario. • Mostrar usuario • Eliminación del usuario. Hito 3. Gestión de carteras En esta segunda fase se llevó a cabo la implementación de los movimientos que puede hacer el usuario con las carteras. Se desarrolló todo el código necesario para que la gestión del usuario con sus carteras fuera total. • Crear cartera • Mostrar cartera • Eliminar cartera • Buscar cartera • Modificar cartera Hito 4. Mercados Este hito se centró en presentar a los usuarios las diversas funcionalidades disponibles en la aplicación en relación con el mercado financiero. Los usuarios pueden ver un listado de todos los activos financieros incluidos en la aplicación y realizar búsquedas para encontrar activos específicos. Una vez localizado el activo de interés, el usuario puede obtener información relevante, como precios, tendencias y datos históricos. Además, la aplicación permite comprar y vender acciones de los activos financieros, brindando a los usuarios la posibilidad de gestionar sus inversiones de manera sencilla. También se incluye una funcionalidad para mostrar las predicciones relacionadas con el rendimiento futuro de cada activo, facilitando así la toma de decisiones informadas. 23 Hito 5. Alertas Esta fase se centró en la retroalimentación que tendrá el usuario realizando diferentes acciones. En concreto se desarrollaron las siguientes funcionalidades: • Ver notificación • Eliminar notificación • Listar notificaciones • Añadir alerta • Eliminar alerta Hito 6. Interacción con usuarios La fase final del desarrollo consistió en implementar el componente social de la aplicación. Se decidió incluir esta funcionalidad para que los usuarios pudieran compartir sus experiencias y opiniones sobre diversos temas financieros. Ahora, cada usuario puede seguir o dejar de seguir a otros usuarios, buscar personas dentro de la aplicación, y enviar publicaciones que reflejen sus pensamientos o experiencias. Además, los usuarios pueden interactuar con las publicaciones de otros, marcándolas con un "me gusta" o respondiendo con un comentario. Todo esto se realiza en la sección del tablón, donde se muestran las publicaciones tanto de los usuarios que se siguen como de otros usuarios registrados al azar. Esta funcionalidad social permite a los usuarios no solo gestionar sus inversiones, sino también conectarse con otros interesados en el mundo financiero, creando una comunidad más dinámica y colaborativa. 24 Chapter 1. Introduction This bachelor's thesis (TFG) consists of developing a web application where previously registered users can utilize the services offered by the application, ranging from managing investments made in different financial assets to interacting with other users. 1.1 Motivation Currently, the financial market poses a complex challenge where investors must make informed and strategic decisions to achieve their goals. Many investors lack the necessary knowledge to understand market dynamics, often leading to uninformed decisions and unfavorable outcomes. The problem this project aims to address is the lack of accessibility and understanding in the financial domain. Most financial applications assume a basic level of investor knowledge and overlook users who seek to delve into the financial world. Additionally, there is a scarcity of tools that allow users to experiment with the market without consequences. The main challenge lies in creating a platform that is both educational and engaging for users. The application must provide users with authentic information so that, even though there are no real consequences, their actions are influenced by real events. Therefore, the application requires prediction and analytics tools to help users better understand the impact of their investment actions. Another challenge is facilitating social interaction among users, as collaboration and knowledge sharing are fundamental to financial learning. Thus, the platform needs a section where users can interact and exchange strategies to achieve favorable results. Therefore, the objective of this project is to provide a secure platform where users can make fictitious investments in the real financial market and interact with other users to share information, opinions, and strategies to expand their knowledge in this field. 25 1.2 Structure of the Document The document is divided into several clearly defined chapters, each covering different aspects of the project, from motivation to the work plan and implementation. The following briefly describes the content of each chapter: Chapter 1: Introduction This chapter focuses on explaining the project, dividing it into several sections: motivation, structure, objectives, and work plan. The motivation section presents the problems to be addressed in the field of financial investments, highlighting the lack of adequate educational tools and the need for a safe environment for experimentation. The document's structure clearly presents the platform's objectives and the work plan developed during the project. Chapter 2: State of the Art This chapter describes the platforms that served as examples in developing the application. Chapter 3: Technology Used The third chapter details the different technologies used in developing the project. Chapter 4: Application Architecture and Data Model This chapter describes the architecture used for implementing the application and provides details on the data model and database tables. 32 3.4 Tailwind CSS Tailwind CSS es un framework de diseño utility-first [6] que permite la creación de interfaces altamente personalizables mediante el uso de clases de utilidad. Ofrece flexibilidad y control en el diseño de estilos, permitiendo a los desarrolladores crear diseños únicos sin la necesidad de estilos personalizados extensos. 3.5 Angular Angular es un framework de desarrollo web [7] desarrollado por Google para la creación de aplicaciones web de una sola página (SPA). Utiliza una arquitectura basada en componentes y facilita el desarrollo de aplicaciones robustas y escalables con funcionalidades como inyección de dependencias y enrutamiento. 3.6 Typescript TypeScript es un lenguaje de programación [8] que extiende JavaScript con características de tipado estático. Proporciona herramientas para detectar errores durante el desarrollo y facilita la creación de código más seguro y mantenible. TypeScript es especialmente útil para proyectos grandes y aplicaciones web complejas. 3.7 PostgreSQL PostgreSQL es un sistema de gestión de bases de datos relacional [9] de código abierto. Conocido por su robustez y flexibilidad, PostgreSQL admite características avanzadas como procedimientos almacenados, índices complejos y transacciones seguras. Es ideal para aplicaciones que requieren un manejo confiable de datos. 33 3.8 DBeaver DBeaver es una herramienta universal para la administración de bases de datos [10]. Proporciona una interfaz gráfica que permite a los desarrolladores interactuar con varias bases de datos, incluyendo PostgreSQL. Con DBeaver, se pueden realizar tareas como consultas SQL, gestión de esquemas y manipulación de datos de manera visual. 3.9 Docker Docker es una plataforma [11] que permite la creación y ejecución de aplicaciones en contenedores. Con Docker, los desarrolladores pueden empaquetar aplicaciones y sus dependencias en un entorno portátil y consistente. Esto facilita el despliegue, el escalado y la colaboración en el desarrollo de software. 3.10 Visual Studio Code Visual Studio Code es un editor de código fuente [12] desarrollado por Microsoft. Ofrece una amplia gama de herramientas y extensiones para el desarrollo de software, incluidas características como autocompletado, depuración y control de versiones. Visual Studio Code es altamente personalizable y soporta varios lenguajes y framework. 3.11 Postman Postman es una herramienta de desarrollo para pruebas y depuración de API [13]. Permite a los desarrolladores crear, probar y documentar solicitudes y respuestas HTTP de manera interactiva. Con Postman, es posible automatizar pruebas y colaborar en el desarrollo y mantenimiento de API de manera eficiente. 34 3.12 Lightweight - Charts Lightweight - Charts es una biblioteca de gráficos [14] diseñada específicamente para la visualización de datos financieros en aplicaciones web. Desarrollada por Trading View, ofrece una amplia variedad de tipos de gráficos, como velas japonesas, líneas de tendencia y gráficos de área, con un enfoque en la velocidad y la eficiencia. Esta biblioteca es ampliamente personalizable y fácil de usar. 3.13 Yahoo Finance API La API de Yahoo Finance es una interfaz de programación de aplicaciones [15] que proporciona acceso a datos financieros, noticias y análisis de mercado de Yahoo Finance. Permite a los desarrolladores obtener información en tiempo real y datos históricos sobre una amplia gama de instrumentos financieros, incluyendo acciones, índices, divisas y criptomonedas. 3.14 Canva Canva es una plataforma de diseño gráfico [16] en línea que permite a los usuarios crear una amplia variedad de contenido visual, incluidos gráficos, presentaciones, publicaciones en redes sociales y más. Con una interfaz intuitiva y una amplia biblioteca de elementos gráficos y plantillas, Canva es una herramienta popular para la creación de contenido visual atractivo y profesional. 3.14 Github GitHub es una plataforma en línea [17] que ofrece servicios de alojamiento para proyectos de desarrollo de software utilizando el sistema de control de versiones Git. Permite a los desarrolladores colaborar en proyectos, realizar un seguimiento de los cambios realizados en el código, gestionar problemas y solicitudes de 35 incorporación de cambios (pull requests), y compartir y revisar el código entre equipos de desarrollo. Es ampliamente utilizado en la comunidad de desarrollo de software debido a su facilidad de uso, su capacidad para facilitar la colaboración y su integración con una variedad de herramientas y servicios. 36 Capítulo 4: Arquitectura de la Aplicación y Modelo de Datos Este capítulo describe la arquitectura utilizada para la implementación de la aplicación y proporciona detalles sobre el modelo de datos y las tablas de la base de datos. 4.1 Arquitectura de la Aplicación La aplicación implementa una arquitectura basada en el modelo cliente - servidor. En este esquema, el cliente es responsable de enviar solicitudes, mientras que el servidor procesa las solicitudes y devuelve respuestas. El cliente suele ser una interfaz web, mientras que el servidor maneja la lógica de la aplicación y la gestión de datos. En el caso de la aplicación, el cliente realiza peticiones al servidor que recoge y procesa en solicitudes a la base de datos o a un servicio externo. Figura 4.1.1. Esquema arquitectura cliente – servidor 37 Además de la arquitectura cliente-servidor, la aplicación sigue el patrón de arquitectura hexagonal [18]. Este patrón posee los siguientes componentes: • Dominio: es el núcleo de la arquitectura hexagonal. Contiene tanto las entidades como las reglas de negocio. Su principal tarea es diseñar un modelo de negocio independiente de tecnologías o frameworks específicos. • Puertos: actúan como interfaces que definen las acciones posibles con los sistemas externos. Sirven como puentes entre la capa de dominio y la capa de infraestructura, detallando las operaciones que los adaptadores deben ser capaces de llevar a cabo. • Adaptadores: son las implementaciones concretas de los puertos y facilitan la conexión del dominio con tecnologías y frameworks específicos. Actúan como ‘traductores’ entre el dominio y las capas externas, adaptando las solicitudes para que se ajusten al formato de ambos lados. Figura 4.1.2. Esquema de arquitectura hexagonal 38 En esta implementación, Angular es la herramienta utilizada para el desarrollo del cliente, y se estructura siguiendo el patrón de arquitectura hexagonal. El núcleo de la aplicación contiene la lógica principal, mientras que los componentes de infraestructura y adaptadores manejan la interacción con elementos externos, como las peticiones a las APIS externas y a la base de datos. En cuanto al servidor, se emplea Express, un entorno que permita responder a las solicitudes del cliente y conectarse a la base de datos PostgreSQL. En esta aplicación, los clientes son los usuarios registrados y no registrados, que interactúan con la aplicación a través del navegador, utilizando diversas peticiones y formularios. La arquitectura hexagonal permite que estas interacciones se mantengan separadas del núcleo, facilitando la adición o modificación de funcionalidades sin afectar el funcionamiento interno de la aplicación. En conclusión, la arquitectura hexagonal, implementada con Angular, permite una estructura flexible y mantenible, mientras que el patrón cliente-servidor garantiza una comunicación eficiente entre el cliente y el servidor, con PostgreSQL como base de datos. 4.2 Estructura de la base de datos Para un correcto funcionamiento de la aplicación, el sistema debe almacenar en la base de datos la información correspondiente a los usuarios, las diferentes carteras creadas por estos y todo la información y datos relevantes del aspecto social que tiene la plataforma, desde las publicaciones hasta las personas que siguen a los usuarios. Se ha creado una base de datos en PostgreSQL con las tablas users, wallets, wallets_assets, assets, social, notifications, posts, alerts, replies, users_likes. 39 A continuación, en la Tabla 4.1, se muestra el diagrama Entidad Relación de las Tablas creadas. Tabla 4.1 Diagrama Entidad – Relación de las Tablas 4.2.1 Tabla users Esta tabla almacena la información relevante al usuario. En ella se almacena el id correspondiente al usuario, así como los datos introducidos a la hora de registrarse en la aplicación, además del importe que recibe cuando se registra en la plataforma el cual se irá actualizando a medida que se realicen inversiones. La Tabla 5.2 muestra los atributos de esta tabla. Tabla 4.2. Tabla de usuarios 40 4.2.2 Tabla alerts En esta tabla dispone de la información relevante a las alertas marcadas por el usuario de los precios de los activos declaradas por el usuario registrado. Esta tabla contiene el id correspondiente a cada alerta además del precio y el activo que ha indicado el usuario para activar la alerta. La Tabla 4.3 muestra los atributos de esta tabla. Tabla 4.3. Tabla de alertas 4.2.3 Tabla assets Tabla que almacena la cantidad de activo financiero que ha comprado un usuario en una cartera. Para conseguir esto se almacena, a parte del id del registro de la tabla, el nombre del activo y la cantidad comprada por el usuario. La Tabla 4.4 muestra los atributos de esta tabla. Tabla 4.4. Tabla de activos 41 4.2.4 Tabla notifications Esta tabla dispone de las notificaciones que se han producido en relación con la interacción de los usuarios registrados en la aplicación. Esta tabla contiene la información necesaria para identificar si la notificación es debido a una respuesta de una publicación o si es un me gusta. La Figura 4.5 muestra los atributos de esta tabla. Tabla 4.5. Tabla de notificaciones 4.2.5 Tabla posts Para almacenar las publicaciones que realizan los usuarios en la plataforma, se ha creado esta tabla. La tabla proporciona los datos para poder crear la publicación, como el id de la publicación, el contenido de este, el número de me gusta que tenga, así como el número de respuestas. La tabla también almacena la fecha de creación además del id del usuario que la creó. La Tabla 4.6 muestra los atributos de esta tabla. Tabla 4.6. Tabla de publicaciones 4.2.6 Tabla replies Las respuestas que se realicen a una publicación quedan registradas en esta tabla. La tabla replies dispone de las mismas características que la tabla posts. La Tabla 4.7 muestra los atributos de esta tabla. 48 Por último, el usuario puede conocer las publicaciones que ha dado me gusta cada usuario y conocer las publicaciones de este desde el perfil de cada uno. Inicio de sesión En la Figura 5.3 se puede ver la pantalla de inicio de sesión en la que si el usuario introduce los datos solicitados por la aplicación puede acceder a la cuenta de este. Figura 5.3. Pantalla de inicio de sesión 49 El código implementado para poder iniciar sesión es el que se muestra en la Figura 5.4: Figura 5.4 Código de inicio de sesión Creación de cartera El usuario tiene dos opciones para crear una cartera, bien desde la página propia de un activo o bien desde el perfil de este. Si opta por crear una cartera desde la página de un activo (Figura 5.5) deberá dirigirse a la sección de Trade, ubicado en la parte inferior derecha de la pantalla. 50 Figura 5.5 Pantalla principal del activo Una vez allí, se introducen los campos necesarios para crear la cartera, el nombre y la cantidad que se quiere comprar. Si la cantidad a comprar supera el total que se tiene en la cartera no dejará crear una nueva. Si por el contrario se decide crear una nueva cartera desde el perfil (Figura 5.6), se elegirá de todos los activos el que se quiera comprar. El formulario por el resto es el mismo. Figura 5.6. Sección de creación de cartera 51 En la Figura 5.7 se puede conocer el código utilizado para la creación de la cartera: Figura 5.7. Código de creación de cartera El código para añadir un nuevo activo financiero es el que se puede ver en la Figura 5.8: Figura 5.8 Código de añadir activos Mostrar carteras El usuario puede conocer las carteras que ha creado, así como la cantidad de los activos financieros comprados. En la parte superior de la derecha de cada cartera se muestra el beneficio total. 52 Figura 5.9 Pantalla de Mis carteras El código para obtener las carteras es el siguiente (Figura 5.10): Figura 5.10. Código de obtener carteras Modificar carteras El usuario puede modificar las carteras creadas, ya sea comprando un nuevo activo para esta o vendiendo uno existente en la cartera. Para ello deberá dirigirse a la página del activo que quiera realizar la acción (ya vista en la Figura 6.5) y en la esquina inferior derecha, en la sección de Trade deberá, en función de lo que desea hacer, si comprar o vender dicho activo, seleccionar cartera existente. Una vez elegida esta opción deberá seleccionar la cartera, de entre todas las creadas, la que desee modificar, tal y como se muestra en la Figura 5.11. 53 Figura 5.11. Sección de modificar cartera Para poder modificar la cartera se desarrolló el código de la Figura 5.12: Figura 5.12 Código de modificar cartera Buscar cartera El usuario puede buscar una cartera creada introduciendo en la sección de buscar (Figura 5.13), dentro de la página donde se muestran todas sus carteras, el nombre de esta. Esta búsqueda realizará un filtrado de la cartera a medida que la persona introduzca el nombre 54 Figura 5.13 Resultado de buscar cartera El código para realizar la búsqueda de la cartera es el siguiente: Figura 5.14 Búsqueda de cartera Eliminar cartera Si el usuario desea eliminar una cartera, tendrá que dirigirse a la sección de mostrar las carteras en su propio perfil. Desde ahí seleccionará la cartera que desea eliminar y se mostrará un mensaje de confirmación (ver Figura 5.15). Si el usuario acepta se eliminará dicha cartera, vendiendo todos los activos a valor de mercado. 55 Figura 5.15 Ventana modal de confirmación de eliminar cartera El código para eliminar la cartera es el siguiente (Figura 5.16): Figura 5.16. Código de eliminación de cartera Modificar datos de cuenta En la Figura 5.17 se puede observar la página de ajustes del usuario. Una vez allí podrá modificar la contraseña o el nombre de usuario. 56 Figura 5.17 Pantalla de ajustes de usuario El código para modificar, tanto el nombre de usuario como la contraseña se encuentran en la Figura 5.18: Figura 5.18 Código de modificar usuario 57 Eliminar usuario El usuario si lo desea puede eliminar su cuenta, si lo decide, en la misma página donde modifica los ajustes seleccionará eliminar usuario, mostrando una ventana modal (Figura 5.19) que preguntará al usuario sobre su decisión, Si acepta, los datos del usuario quedarán eliminados. Figura 5.20. Ventana de confirmación de eliminar usuario El código para eliminar el usuario es el siguiente (Figura 5.21): Figura 5.21 Código de eliminación de cuenta 64 Mostrar publicaciones El usuario puede ver las publicaciones creadas, tanto de todos los usuarios registrados en la aplicación como de un filtrado de publicaciones según los usuarios a los que siga. En la siguiente Figura (Figura 5.30) se muestra las publicaciones de todos los usuarios. Figura 5.30. Pantalla de todas las publicaciones 65 El código para obtener las publicaciones es el mostrado en la Figura 5.31: Figura 5.31. Código para obtener las publicaciones Mientras que en esta imagen se muestran las publicaciones de los usuarios a los que sigue El código para conseguir las publicaciones de los usuarios a los que sigue es el mostrado en la Figura 5.32: Figura 5.32 Código para obtener las publicaciones de los usuarios a los que se sigue 66 Enviar publicación Para enviar una publicación a la aplicación, en la página de Tablón, el usuario seleccionará la opción de Nuevo post. Una vez seleccionado se abrirá una ventana modal, tal y como se muestra en la Figura 5.33, donde el usuario introducirá el contenido de la publicación. Figura 5.33. Ventana modal de crear publicación El código para enviar la publicación es el mostrado en la Figura 5.34: Figura 5.34. Código de creación de nueva publicación 67 Responder a una publicación Si el usuario desea responder a una publicación existente en el tablón seleccionará el icono de respuesta, situado en la parte inferior derecha de cada publicación. Una vez seleccionado, se abrirá una ventana modal similar a realizar una nueva publicación (Figura 5.35). Figura 5.35. Ventana modal para responder publicación El resultado es una actualización en el contador de respuestas de dicha publicación además como una notificación al usuario para indicar que ha habido una nueva respuesta. El código para almacenar la respuesta es el siguiente (Figura 5.36): Figura 5.36 Código de respuesta de publicación 68 Añadir una alerta Si lo desea, el usuario puede añadir una alerta para que se le notifique si el precio de la alerta del activo a ha sido alcanzado. Para ello seleccionará la opción de añadir una alerta en la esquina inferior derecha de la página del activo e indicará el precio que desea. Figura 5.37. Ventana modal para crear alerta En la Figura 5.38 se muestra el código para almacenar la alerta: Figura 5.38 Código para crear alerta 69 Buscar usuarios / activos Si el usuario desea buscar, tanto un usuario como un activo simplemente indicará, en la sección de búsqueda de la parte superior de cualquier pantalla la opción que quiera y escribirá el campo que quiera. Figura 5.39 Sección de búsqueda Mostrar / eliminar notificaciones de me gusta El usuario puede ver quien le ha marcado alguna publicación como me gusta desde la página de notificaciones, en la sección de me gusta. También puede borrar dichas modificaciones pulsando en la opción de eliminar de cada notificación. 70 Figura 5.40 Pantalla de mostrar las notificaciones de me gusta 71 El código para obtener estas notificaciones es el siguiente: Figura 5.41 Código para obtener las notificaciones de me gusta Mostrar / eliminar notificaciones de comentarios El usuario puede ver quien le ha respondido alguna publicación desde la página de notificaciones (Figura 5.42), en la sección de comentarios. También puede borrar dichas modificaciones pulsando en la opción de eliminar de cada notificación. 72 Figura 5.42 Pantalla de notificaciones de comentarios En la Figura 5.43 se detalla el código implementado para obtener las notificaciones de los comentarios. Figura 5.43. Código de obtención de notificaciones de comentarios Cerrar sesión de la cuenta El usuario puede cerrar sesión en su cuenta seleccionando la opción Signo out desde el dropdown de su cuenta, situado en la parte superior derecha de cualquier página. Una vez seleccionado se le aparecerá un mensaje de confirmación (Figura 5.44). El resultado de esto es una limpieza del almacenamiento local de la aplicación y redirigir al usuario a la página de Inicio de sesión. Figura 5.44 Ventana modal de confirmación de Sign out 73 El código para salir de la sesión es el siguiente. Figura 5.45 Código para cerrar sesión. 80 Figura 4.1 Diagrama de usuario registrado A.2.2. Diagrama de usuario no registrado Con lo que respecta al usuario no registrado, la única funcionalidad que puede hacer este tipo de actor es el registro en la plataforma. En la Figura 1.2 se representa el diagrama de caso de uso relacionado con los usuarios no registrados 81 Figura 4.2 Diagrama de usuario no registrado A continuación, se describen los distintos casos de uso que pueden realizar los actores identificados en la plataforma. Siendo estos los siguientes: • Módulo de cuentas de Usuario • Módulo de gestión de carteras • Módulo de mercado • Módulo de notificaciones • Módulo de Interacción con usuario A.3 Módulo de cuentas de Usuario Los casos pertenecientes a este módulo son: • Registrar usuario (Tabla A.1.1) • Salir de la cuenta (Tabla A.1.2) • Iniciar sesión (Tabla A.1.3) • Eliminar cuenta (Tabla A.1.4) • Modificar usuario (Tabla A.1.5) 82 • Mostrar perfil de usuario (Tabla A.1.6) Siendo cada caso de uso descrito a continuación: Requisito Registrar usuario Identificador 1.1 Prioridad Alta Precondición NA Descripción Los usuarios pueden crearse una cuenta en la aplicación. Entrada Nombre, apellidos, nombre de usuario, correo electrónico y contraseña. Salida NA Paso Acción 83 Secuencia normal 1 El usuario accede a la aplicación, se le muestra la pantalla principal y le da click a ‘Sign up’. 2 La aplicación carga la pantalla de registro. 3 El usuario rellena los campos obligatorios con sus datos personales y da click en ‘Sign up’. 4 La aplicación valida los datos introducidos 5 La aplicación redirige al usuario a la página principal Postcondición Se ha creado una nueva cuenta en la aplicación. Excepciones 3 Se muestra el mensaje correspondiente si la contraseña no cumple con los requisitos declarados. 3 Se muestra el mensaje correspondiente si el correo electrónico introducido ya existe 84 3 Se muestra el mensaje correspondiente si el nombre de usuario introducido ya existe. 3 Se muestra el mensaje correspondiente si algún campo obligatorio no se ha rellenado. Comentarios NA Actores Usuario no registrado A.1.1 Tabla de Registrar usuario Requisito Salir de la cuenta Identificador 1.2 Prioridad Alta Precondición El usuario ha de estar registrado y debe de haber entrado en la cuenta. 85 Descripción Los usuarios registrados pueden salir de su cuenta registrada en la aplicación. Entrada NA Salida NA Secuencia normal Paso Acción 1 El usuario registrado accede a la aplicación con su sesión iniciada, se le muestra la pantalla principal. 2 El usuario hace click en ‘Log out’ 3 La aplicación muestra un mensaje preguntando si está seguro de su decisión. 4 El usuario registrado hace click en ‘Sign out’ 86 5 La aplicación cierra su cuenta y vuelve a la pantalla principal Postcondición Se ha cerrado la cuenta del usuario Excepciones NA Comentarios NA Actores Usuario registrado A.1.2 Tabla de cerrar sesión Requisito Iniciar sesión Identificador 1.3 Prioridad Alta Precondición El usuario ha de estar registrado. 87 Descripción Los usuarios pueden iniciar sesión en la aplicación. Entrada Nombre de usuario y contraseña Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal y le da click en ‘Log in. 2 La aplicación carga la pantalla de inicio de sesión. 3 El usuario rellena los campos obligatorios con sus datos personales y da click en ‘Log in’. 4 La aplicación comprueba los datos introducidos 88 5 La aplicación redirige al usuario a la página principal con la sesión iniciada Postcondición La cuenta del usuario se ha iniciado en la aplicación. Excepciones 3 Se muestra el mensaje correspondiente si la contraseña asociada al nombre de usuario no es correcta. 3 Se muestra el mensaje correspondiente si no existe ningún nombre de usuario asociado al introducido. 3 Se muestra el mensaje correspondiente si algún campo obligatorio no se ha rellenado Comentarios NA Actores Usuario registrado. 89 A.1.3 Tabla de iniciar sesión Requisito Eliminar cuenta Identificador 1.4 Prioridad Alta Precondición El usuario ha de estar registrado y con la sesión iniciada Descripción El usuario puede eliminar su cuenta registrada en la aplicación. Entrada NA Salida NA Secuencia normal Paso Acción 96 Comentarios NA Actores Usuario registrado. A.1.6 Tabla de mostrar perfil de usuario A.4 Módulo de gestión de carteras Los casos pertenecientes a este módulo son: • Crear cartera (Tabla A.2.1) • Eliminar cartera (Tabla A.2.2) • Mostrar cartera (Tabla A.2.3) • Buscar cartera (Tabla A.2.4) • Modificar cartera (Tabla A.2.5) • Listar cartera (Tabla A.2.6) A continuación, se describe cada uno de ellos Requisito Crear cartera Identificador 2.1 Prioridad Media 97 Precondición El usuario debe de tener la sesión iniciada Descripción El usuario puede crear una nueva cartera. Entrada Nombre de la cartera Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en ‘Mis carteras’ 3 La aplicación muestra la página principal de las carteras del usuario 98 4 El usuario hace click en ‘Nueva’ 5 La aplicación abre una nueva ventana modal. 6 El usuario introduce el nombre de la cartera en el campo correspondiente y da click en ‘Crear’. Postcondición La cartera se ha creado Excepciones 4 Se mostrará el mensaje correspondiente si el usuario ha alcanzado el límite de carteras disponibles. 6 Se mostrará el mensaje correspondiente si el usuario introduce un nombre para la cartera no válido. Comentarios NA 99 Actores Usuario registrado. A.2.1 Tabla de crear cartera Requisito Eliminar cartera Identificador 2.2 Prioridad Media Precondición El usuario debe de tener la sesión iniciada Descripción El usuario puede eliminar una cartera existente. Entrada NA Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 100 2 El usuario hace click en ‘Mis carteras’ 3 La aplicación muestra la página principal de las carteras del usuario 4 El usuario hace click en ‘Eliminar cartera’ 5 La aplicación abre una nueva ventana modal. 6 El usuario hace click en ‘Eliminar’. Postcondición La cartera se ha eliminado Excepciones 4 Se mostrará el mensaje correspondiente si el usuario no tiene carteras disponibles. Comentarios NA Actores Usuario registrado. A.2.2 Tabla de eliminar cartera 101 Requisito Mostrar cartera Identificador 2.3 Prioridad Media Precondición El usuario debe de tener la sesión iniciada. Descripción El usuario puede ver los datos de una de sus carteras. Entrada NA Salida Información de la cartera seleccionada Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 102 2 El usuario hace click en ‘Mis carteras’ 3 La aplicación muestra la página principal de las carteras del usuario 4 El usuario hace click en la cartera a mostrar. 5 La aplicación muestra la página de la cartera. Postcondición NA Excepciones 2 Se mostrará el mensaje correspondiente si el usuario no dispone de carteras. Comentarios NA Actores Usuario registrado. 103 A.2.3 Tabla de mostrar cartera Requisito Buscar cartera Identificador 2.4 Prioridad Baja Precondición El usuario debe de tener la sesión iniciada Descripción El usuario puede buscar una de sus carteras. Entrada Nombre de la cartera Salida Cartera encontrada Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en ‘Mis carteras’ 104 3 La aplicación muestra la página principal de las carteras del usuario. 4 El usuario rellena el campo de buscar carteras 5 La aplicación muestra una lista de carteras que coincide con los filtros de búsqueda 6 El usuario hace click en la cartera buscada. Postcondición NA Excepciones 4 Se mostrará el mensaje correspondiente si la búsqueda no ha tenido resultados. Comentarios NA Actores Usuario registrado. A.2.4 Tabla de buscar cartera 105 Requisito Modificar cartera Identificador 2.5 Prioridad Media Precondición El usuario debe de tener la sesión iniciada y carteras disponibles Descripción El usuario puede modificar una cartera Entrada Valor de los activos a modificar Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 112 3 La aplicación muestra la página principal del mercado junto con los activos financieros. 4 El usuario introduce el activo financiero a buscar y hace click en ‘Buscar’. 5 La aplicación muestra los activos financieros que concuerdan con el campo introducido. Postcondición NA Excepciones NA Comentarios NA Actores Usuario registrado. A.3.2 Tabla de Buscar activo Requisito Mostrar activo financiero 113 Identificador 3.3 Prioridad Alta Precondición El usuario debe de tener la sesión iniciada. Descripción El usuario puede ver la lista de activos disponibles en la aplicación Entrada NA Salida Información del activo financiero Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en ‘Mercado’ 114 3 La aplicación muestra la página principal del mercado junto con los activos financieros. 4 El usuario hace click en el activo financiero a solicitar información. 5 La aplicación muestra la información de su activo financiero. Postcondición NA Excepciones NA Comentarios NA Actores Usuario registrado. A.3.3 Tabla de mostrar activo financiero 115 Requisito Mostrar predicción Identificador 3.4 Prioridad Alta Precondición El usuario debe de tener la sesión iniciada. Descripción El usuario puede ver la predicción de un activo financiero. Entrada NA Salida Datos de la predicción Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 116 2 El usuario hace click en ‘Mercado’ 3 La aplicación muestra la página principal del mercado junto con los activos financieros. 4 El usuario hace click en el activo financiero a predecir. 5 La aplicación muestra la información del activo financiero. 6 El usuario hace click en ‘Predecir’. 7 La aplicación muestra la predicción del valor del activo. Postcondición NA 117 Excepciones NA Comentarios NA Actores Usuario registrado. A.3.4 Tabla de mostrar predicción Requisito Comprar acciones del activo Identificador 3.5 Prioridad Alta Precondición El usuario debe de tener la sesión iniciada. Descripción El usuario puede realizar la compra de una cantidad de acciones de un activo. 118 Entrada Cantidad de acciones a comprar Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en ‘Mercado’ 3 La aplicación muestra la página principal del mercado junto con los activos financieros. 4 El usuario hace click en el activo a comprar. 5 La aplicación carga la página principal del activo 119 6 El usuario hace click en ‘Comprar’. 7 El usuario introduce la cantidad a comprar y hace click en ‘Comprar’. Postcondición El usuario ha realizado la compra de una cantidad del activo financiero. Excepciones NA Comentarios NA Actores Usuario registrado. A.3.5 Tabla de comprar acciones Requisito Vender acciones del activo Identificador 3.6 120 Prioridad Alta Precondición El usuario debe de tener la sesión iniciada. Descripción El usuario puede vender una cantidad de un activo financiero específico. Entrada Cantidad para vender Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en ‘Mercado’ 121 3 La aplicación muestra la página principal del mercado junto con los activos financieros. 4 El usuario hace click en el activo a vender 5 La aplicación carga la página principal del activo 6 El usuario hace click en ‘Vender’ 7 El usuario introduce la cantidad a vender y hace click en ‘Vender’. Postcondición El usuario ha realizado la venta de una cantidad del activo financiero. Excepciones NA 128 Comentarios NA Actores Usuario registrado. A.4.3 Tabla de listar notificaciones Requisito Añadir alerta Identificador 4.4 Prioridad Media Precondición El usuario debe de tener la sesión iniciada Descripción El usuario puede añadir una notificación Entrada Valor del activo financiero Salida Mensaje de confirmación 129 Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 3 La aplicación muestra todos los activos financieros disponibles. 4 El usuario hace click en el activo financiero a poner una alerta. 5 La aplicación muestra la página principal del activo financiero. 6 El usuario hace click en ‘Añadir alerta’ 7 La aplicación muestra una ventana modal donde el 130 usuario añade el valor del activo financiero Postcondición La alerta del activo financiero se ha añadido. Excepciones 7 Se mostrará el mensaje correspondiente si el usuario añade un campo incorrecto Comentarios NA Actores Usuario registrado A.4.4 Tabla de añadir alerta Requisito Eliminar alerta Identificador 4.5 131 Prioridad Media Precondición El usuario debe de tener la sesión iniciada y una notificación asociada a ese activo Descripción El usuario puede eliminar una alerta. Entrada NA Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en ‘Notificaciones’. 3 La aplicación muestra la página de las notificaciones y alertas del usuario 132 4 El usuario hace click en la alerta a eliminar 5 La aplicación muestra la información de dicha alerta. 6 El usuario hace click en ‘Eliminar tarea’ 7 La aplicación muestra un mensaje de aviso. 8 El usuario hace click en ‘Eliminar’ Postcondición La notificación se ha eliminado. Excepciones 3 Se muestra el mensaje correspondiente si el usuario no tiene ninguna alerta creada. Comentarios NA Actores Usuario registrado. A.4.5 Tabla de eliminar alerta 133 A.6 Módulo de Interacción con Usuario Los casos pertenecientes a este módulo son: • Seguir usuario (Tabla A.5.1) • Buscar usuario (Tabla A.5.2) • Dejar de seguir usuario (Tabla A.5.3) • Enviar publicación (Tabla A.5.4) • Comentar publicación (Tabla A.5.5) • Interaccionar con una publicación (Tabla A.5.6) • Mostrar tablón (Tabla A.5.7) • Mostrar publicación (Tabla A.5.8) • Seguir usuario (Tabla A.5.9) A continuación, se describe cada uno de ellos Requisito Seguir usuario Identificador 5.1 Prioridad Baja Precondición El usuario debe de tener la sesión iniciada 134 Descripción El usuario puede seguir a otro usuario registrado en la aplicación Entrada Nombre del usuario Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario introduce el nombre del usuario a buscar en el campo de búsqueda. 3 El usuario hace click en ‘Buscar’. 135 4 La aplicación muestra una lista con los usuarios que coinciden con el campo introducido. 5 El usuario hace click en el usuario buscado. 6 La aplicación muestra el perfil del usuario. 7 El usuario hace click en ‘Seguir’ Postcondición El usuario ha comenzado a seguir a otro usuario registrado. Excepciones 4 Se mostrará el mensaje correspondiente si a aplicación no ha encontrado usuarios coincidentes. 136 6 Se mostrará el mensaje correspondiente si el usuario a seguir tiene el perfil privado. Comentarios NA Actores Usuario registrado. A.5.1 Tabla de seguir usuario Requisito Buscar usuario Identificador 5.2 Prioridad Media Precondición El usuario debe de tener la sesión iniciada Descripción El usuario puede buscar a otro usuario registrado en la aplicación 137 Entrada Nombre del usuario Salida Datos del perfil del usuario buscado Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario introduce el nombre del usuario a buscar en el campo de búsqueda. 3 El usuario hace click en ‘Buscar’. 4 La aplicación muestra una lista con los usuarios que coinciden con el campo introducido. 144 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en la publicación a comentar 3 La aplicación muestra la publicación, así como sus opciones. 4 El usuario hace click en ‘Comentar’ 5 La aplicación abre una ventana modal. 6 El usuario introduce el comentario en el campo específico y hace click en ‘Comentar’. Postcondición La publicación se ha actualizado 145 Excepciones 4 Se mostrará el mensaje correspondiente si el usuario no tiene publicaciones Comentarios NA Actores Usuario registrado. A.5.5 Tabla de comentar publicación Requisito Interaccionar con una publicación Identificador 5.6 Prioridad Baja Precondición El usuario debe de tener la sesión iniciada. 146 Descripción El usuario puede interaccionar en una publicación Entrada NA Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario hace click en la publicación a interaccionar 3 La aplicación muestra la publicación, así como sus opciones. 4 El usuario hace click en ‘Me gusta’ 147 Postcondición La publicación se ha actualizado Excepciones 4 Se mostrará el mensaje si el usuario no tiene publicaciones Comentarios NA Actores Usuario registrado. A.5.6 Tabla de interaccionar en una publicación Requisito Mostrar tablón Identificador 5.7 Prioridad Alta Precondición El usuario debe de tener la sesión iniciada 148 Descripción El usuario puede ver el tablón con las publicaciones de los usuarios a los que sigue. Entrada NA Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal donde puede ver la lista de publicaciones. Postcondición NA Excepciones NA Comentarios NA 149 Actores Usuario registrado. A.5.7 Tabla de mostrar tablón Requisito Mostrar publicación Identificador 5.8 Prioridad Media Precondición El usuario debe de tener la sesión iniciada Descripción El usuario puede ver el contenido de una publicación Entrada NA Salida NA Paso Acción Secuencia normal 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 150 2 La aplicación muestra una lista de las publicaciones asociadas al usuario 3 El usuario hace click en la publicación a la que quiere solicitar información 4 La aplicación muestra la publicación con toda su información. Postcondición NA Excepciones NA Comentarios NA Actores Usuario registrado. A.5.8 Tabla de mostrar publicación Requisito Seguir usuario Identificador 5.9 151 Prioridad Baja Precondición El usuario debe de tener la sesión iniciada Descripción El usuario puede seguir a otro usuario registrado en la aplicación Entrada Nombre del usuario Salida NA Secuencia normal Paso Acción 1 El usuario accede a la aplicación, se le muestra la pantalla principal. 2 El usuario introduce el nombre del usuario a buscar en el campo de búsqueda. 152 3 El usuario hace click en ‘Buscar’. 4 La aplicación muestra una lista con los usuarios que coinciden con el campo introducido. 5 El usuario hace click en el usuario buscado. 6 La aplicación muestra el perfil del usuario. 7 El usuario hace click en ‘Seguir’ Postcondición El usuario ha comenzado a seguir a otro usuario registrado. Excepciones 4 Se mostrará el mensaje correspondiente si a aplicación no ha encontrado usuarios coincidentes. 153 6 Se mostrará el mensaje correspondiente si el usuario a seguir tiene el perfil privado. Comentarios NA Actores Usuario registrado. A.5.9 Tabla de seguir usuario