Skip to content

Instantly share code, notes, and snippets.

@Jyuls
Last active March 7, 2024 23:10
Show Gist options
  • Save Jyuls/cdf67ef150f57d08a46c387ccc71e25e to your computer and use it in GitHub Desktop.
Save Jyuls/cdf67ef150f57d08a46c387ccc71e25e to your computer and use it in GitHub Desktop.
1.4Analisis

1. Definición de Requisitos

En el contexto del proyecto del dashboard interactivo para análisis de tendencias de mercado, es fundamental establecer claramente los requisitos del sistema:

1.1 Requisitos Funcionales del Sistema

  1. 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.
  2. 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.
  3. Filtrado por Empresa: Los usuarios deben poder filtrar los datos por empresa específica para realizar análisis detallados.
  4. 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.

1.2 Requisitos No Funcionales

  1. 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.
  2. 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.
  3. Usabilidad: La interfaz de usuario debe ser intuitiva y fácil de usar, con una navegación clara y comprensible.
  4. Escalabilidad: El sistema debe ser escalable para manejar un aumento en el volumen de datos y usuarios sin comprometer el rendimiento.
  5. Mantenibilidad: El código debe estar bien estructurado y documentado para facilitar su mantenimiento y futuras actualizaciones.

2. Análisis y Diseño

2.1 Diseño Arquitectónico

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á:

2.1.1 Componentes del Sistema:

  1. 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.).
  2. 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.
  3. 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.

2.1.2 Comunicación entre Componentes:

  1. 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.
  2. El frontend enviará solicitudes al backend para obtener datos actualizados del mercado y realizar operaciones de filtrado y análisis.
  3. 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.
  4. 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.

2.2 Casos de uso:

2.2.1 Caso de Uso Visualizar Datos del Mercado

DSqngi9048VnVaxn9zLxHQuW2QHL437zi3l6WNK7PYUDuX4ybHVJ5BO_-FY65kontWeLkGJ2uBfS0rbTKgXLuXJcEBULNOqsvReKGJVhruhUsJ5nM4EMWhruucmT7eHVXBxV_StYUBzgrYGuZATfFFxJamQfUPj_0000

2.2.2 Caso de Uso Filtrar Datos por Empresa

NOun2i9044NxESKdbIbo1KaWMWeIj1ysOrpOx8JPIIKUmLDvCKcXXUtdlyThYxFvEYTASdEumk9qTupH97ZKJ1nS3PUoiaKbscREKn9KnvZSsD2pQy6YXiEyc1Iky21y4JJDVdSLm_kLnnW4fsxektFzznWaIGXHC_yqDT6JMidZblS1

2.2.3 Caso de Uso Visualizar Detalles de Empresa

XSyX3i9048LXlwTugGBHAv2AOb5GFso7CibqjvcT6WYduWXS32fg20dsp_V4QugJ-JngKBuuFCDak3fwCOukEGMAdWsdCfD93akbD2YZwkJJL6vaQDb9bGjwndwSZ0jLk0UiCzJrRjEnuP37i_72b5Qv_U5QBj5aYl9wfl-w8ys6OtRIR_m83QT--VS6

2.2.4 Caso de Uso Configurar Preferencias

NSunYiCm44RXNgVuSRKkV8N5ooPbS9eSO936oe2iWT4eJSYfSeHSBBX8a_R11szkJkPzAw7mwd25IRuwaXX75ws1eglXqZgPQ0XxffeBO_ZNkahkHeQpySh6DGgr0VU03y0q_VuS2sSnB2PSdQAydXM9KRJX89IDDchZb_cBBZSod3GfbXQxwHWUOUQQzjit

2.3 Diagrama de clases:

VLB1IWCn4BtdAq9FMwK7hq6aXVOWg23L3vXDXZgGpPH9jWV5VtUtJT9s5VUovCtBUsyUMSO4alhEAsKznAWttLumWlvIUlWMEd3N2XgzJK9Xbq67qGhjBN6OJ0xWMTuuWJVQSTzwLDz5-Z4uilYosgvNhrKVJtxHw2UAwJxRFnodjvhRX04bex6P_qs3dU0E2gt9cgOiCyyqzDHHEFDEk-

2.4 Diagrama de Actividades

PP1DIWD148NtVOf7LiaL9WiJ60GNYKZ0VQNxXMdeL0zT7M_X8Jo0AmyWE1TpGdGKPls-zrEriIgbNix9DGyQVSnhr-oorI85hLXtp5820XE6LmtH4_ljeTq-ZTY1YNvqw8ZctiVXGx5uPi5kU3Eqh98IRR5syOJbr-TCWKq18T-jK3igbZQyhnpGF1uhbGL1QZO4fgaOk0MsD0fUHkQY0f

2.5 Diagrama de Secuencia

dP9DQiGm38NtEeKkC1V8eamWNNJHdnBQlIOMrA2nWordqTDN0PDsMXD8btxM-tXwzZah9IrN0Q19OyAtN2Zv232RxYS_Kr0SA7zS8YLte_Ol3pVd--kSE1D0PU3fxjlPuRitMVmdeIED6HqBFlNZqB_2DhLQ3DlX6CMmsfYrwr_WWPV2il0kromrLeUFXREc1hiTV6JXQV8n42wSR5v9X5

2.6 Selección de Patrones de Diseño

2.6.1 Patrón Observer:

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.

2.6.2 Patrón Singleton:

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.

2.6.3 Patrón Factory Method

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.

2.6.4 Patrón Decorator

Permite adjuntar nuevas funcionalidades a objetos existentes de manera flexible y transparente.

3. Selección de Herramientas y Tecnologías

3.1 Lenguaje de Programación y Framework

3.1.1 Lenguaje de Programación:

Python

3.1.2 Framework:

Django

3.2 Base de Datos y Otras Herramientas de Desarrollo

3.2.1 Base de Datos:

Firebase

3.2.2 Otras Herramientas de Desarrollo:

Modelado UML: PlantUML Pruebas Unitarias: pytest Análisis de Código: Pylint

3.3 Configuración de Sistemas de Control de Versiones y Herramientas de CI/CD

3.3.1 Sistemas de Control de Versiones:

Git y Github

Herramientas de CI/CD:

GitLab CI/CD

4. Preparación del Entorno de Desarrollo

4.1 Configurar IDEs y Dependencias de Software

4.1.2 IDEs (Entornos de Desarrollo Integrado):

Selecciona un IDE compatible con el lenguaje de programación y las tecnologías del proyecto. Ejemplos incluyen: Visual Studio Code para Python.

4.1.3 Dependencias de Software:

  • 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

4.2 Preparar el Entorno Local o de Nube

4.2.1 Entorno Local:**

  • Instalar Visual Studio Code
  • Instalar Python:
  • Instalar Django
  • Instalar dependencias para Python

4.2.2 Entorno de Nube:**

  • Configurar Firebase
  • Integrar Firebase con Python
  • Configurar Credenciales

4.2.3 Herramientas Adicionales

  • Git junto con GitHub
  • GitLab CI

5. Plan de Pruebas

5.1 Pruebas unitarias

5.1.1 Objetivo

Verificar la correcta funcionalidad de las unidades individuales de código, como funciones o métodos, de manera aislada.

5.1.2 Como hacerlo?

  • 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.

5.2 Pruebas de Integración

5.2.1 Objetivo

Comprobar que los módulos o unidades de código funcionan correctamente cuando se combinan o integran entre sí.

5.2.2 Como hacerlo?

  • 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.

5.3 Pruebas de Aceptación de Usuarios

5.3.1 Objetivo

Asegurar que el sistema cumple con los requisitos y expectativas del usuario final, siendo usable y funcional.

5.3.2 Como hacerlo?

  • 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.

5.4 Implementando el Plan de Pruebas

5.4.1 Documentacion

Elaborar un documento detallado del plan de pruebas, que incluya objetivos, estrategias, recursos necesarios, cronograma y responsables.

5.4.2 Herramientas y Recursos

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.

5.4.3 Ejecución y Seguimiento

Seguir el plan de pruebas ejecutando las pruebas planificadas, registrando los resultados y rastreando los errores encontrados hasta su resolución.

5.4.4 Evaluacion

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.

6. Estrategia de Despliegue

6.1 Planificar el Despliegue del Sistema

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment