En el contexto del proyecto del dashboard interactivo para análisis de tendencias de mercado, es fundamental establecer claramente los requisitos del sistema:
- Visualización en Tiempo Real: El sistema debe ser capaz de mostrar los datos del índice NASDAQ y de las empresas que lo componen en tiempo real.
- Gráficos de Líneas Dinámicos: Se requiere la capacidad de generar gráficos de líneas dinámicos que muestren la evolución de los precios de las acciones a lo largo del tiempo.
- Filtrado por Empresa: Los usuarios deben poder filtrar los datos por empresa específica para realizar análisis detallados.
- Herramientas de Análisis Básicas: Se necesita la inclusión de herramientas básicas de análisis, como cálculo de tendencias, medias móviles, etc.
- Rendimiento: El sistema debe ser capaz de manejar actualizaciones y solicitudes de datos en tiempo real de manera eficiente, con tiempos de respuesta mínimos.
- Seguridad: Debe implementarse un sistema de autenticación seguro para garantizar que solo usuarios autorizados puedan acceder al sistema y a los datos del mercado.
- Usabilidad: La interfaz de usuario debe ser intuitiva y fácil de usar, con una navegación clara y comprensible.
- Escalabilidad: El sistema debe ser escalable para manejar un aumento en el volumen de datos y usuarios sin comprometer el rendimiento.
- Mantenibilidad: El código debe estar bien estructurado y documentado para facilitar su mantenimiento y futuras actualizaciones.
La arquitectura del sistema del dashboard interactivo para análisis de tendencias de mercado se basará en una estructura de componentes bien definida y una comunicación clara entre ellos. Aquí se detalla cómo se organizará:
-
Frontend (Cliente Web):
- Interfaz de usuario (UI) para visualización de datos.
- Componentes de gráficos y visualización.
- Módulos de interacción con el usuario (filtros, selecciones, etc.).
-
Backend (Servidor):
- API para la obtención y procesamiento de datos del mercado.
- Lógica de negocio para el filtrado y análisis de datos.
- Gestión de sesiones y usuarios.
-
Base de Datos:
- Almacenamiento de datos del mercado y configuraciones del usuario.
- Puede incluir bases de datos relacionales o no relacionales, dependiendo de los requisitos de almacenamiento y consulta.
- La comunicación entre el frontend y el backend se realizará a través de solicitudes HTTP, utilizando métodos RESTful para la transferencia de datos.
- El frontend enviará solicitudes al backend para obtener datos actualizados del mercado y realizar operaciones de filtrado y análisis.
- El backend procesará estas solicitudes, accederá a la base de datos según sea necesario y devolverá los datos procesados al frontend para su visualización.
- Se establecerá una comunicación bidireccional entre el frontend y el backend para notificar actualizaciones en tiempo real de los datos del mercado, utilizando tecnologías como WebSockets.
Este patrón sería útil para implementar la actualización en tiempo real de los gráficos. Podrías utilizarlo para notificar a los elementos gráficos cuando los datos subyacentes cambien y así actualizar automáticamente la visualización.
Util para asegurarse de que solo haya una instancia del objeto API en tu sistema y para proporcionar un punto de acceso global a esta instancia.
Permitira encapsular la creación de estos objetos y proporcionar una forma consistente de crear nuevas instancias de gráficos según las necesidades de tu aplicación.
Permite adjuntar nuevas funcionalidades a objetos existentes de manera flexible y transparente.
Python
Django
Firebase
Modelado UML: PlantUML Pruebas Unitarias: pytest Análisis de Código: Pylint
Git y Github
GitLab CI/CD
Selecciona un IDE compatible con el lenguaje de programación y las tecnologías del proyecto. Ejemplos incluyen: Visual Studio Code para Python.
- Flask: Flask==2.0.2
- SQLAlchemy: SQLAlchemy==1.4.32
- pytest: pytest==6.2.5
- requests: requests==2.26.0
- pandas: pandas==1.3.3
- Instalar Visual Studio Code
- Instalar Python:
- Instalar Django
- Instalar dependencias para Python
- Configurar Firebase
- Integrar Firebase con Python
- Configurar Credenciales
- Git junto con GitHub
- GitLab CI
Verificar la correcta funcionalidad de las unidades individuales de código, como funciones o métodos, de manera aislada.
- Utilizar el framework de pruebas unitarias pytest para Python.
- Escribir casos de prueba que cubran los escenarios esperados y casos extremos.
- Automatizar las pruebas para ejecutarlas con cada cambio en el código.
Comprobar que los módulos o unidades de código funcionan correctamente cuando se combinan o integran entre sí.
- Identificar las interfaces y puntos de interacción entre los diferentes componentes del Dashboard.
- Diseñar casos de prueba que simulen escenarios de uso real donde múltiples componentes interactúan.
- Utilizar herramientas como pytest para automatizar la ejecución de estas pruebas.
Asegurar que el sistema cumple con los requisitos y expectativas del usuario final, siendo usable y funcional.
- Desarrollar escenarios de prueba basados en los casos de uso reales del Dashboard.
- Involucrar a usuarios finales o representantes en el proceso de prueba para obtener retroalimentación directa.
- Realizar pruebas en un entorno que simule fielmente el entorno de producción.
Elaborar un documento detallado del plan de pruebas, que incluya objetivos, estrategias, recursos necesarios, cronograma y responsables.
Utilizar pytest como herramienta principal para la automatización de las pruebas. Preparar datos de prueba y configurar entornos de prueba según sea necesario.
Seguir el plan de pruebas ejecutando las pruebas planificadas, registrando los resultados y rastreando los errores encontrados hasta su resolución.
Al finalizar las pruebas, evaluar el proceso y los resultados para identificar áreas de mejora tanto en el sistema como en el proceso de pruebas.
-
Elección del Entorno de Hosting:
- Nube: Se utilizará GitHub Pages como plataforma de alojamiento, lo que proporciona un despliegue sencillo y gratuito para sitios estáticos.
-
Disponibilidad y Escalabilidad:
- GitHub Pages ofrece una alta disponibilidad y escalabilidad para sitios estáticos, lo que garantiza un acceso confiable a los usuarios y la capacidad de crecimiento conforme al tráfico del sitio.
-
Seguridad y Cumplimiento:
- GitHub Pages proporciona seguridad a través de HTTPS y permite la implementación de medidas de seguridad adicionales a través de configuraciones de DNS y políticas de seguridad del navegador.
-
Backup y Recuperación ante Desastres:
- GitHub Pages realiza copias de seguridad automáticas del contenido del sitio, lo que garantiza la disponibilidad continua del mismo. Además, al estar integrado con Git, el contenido del sitio se puede restaurar fácilmente en caso de pérdida.
-
Monitoreo y Mantenimiento:
- Se pueden implementar herramientas de monitoreo de terceros para supervisar el rendimiento del sitio y realizar mantenimientos periódicos para garantizar su operación continua.
-
Automatización del Despliegue:
- Se puede configurar la integración continua (CI) con GitHub Pages para automatizar el proceso de despliegue cada vez que se realizan cambios en el repositorio de GitHub, lo que agiliza y garantiza la consistencia del despliegue.