Requisitos derivados del diseño - SebaUSM/GRUPO02-2025-PROYINF GitHub Wiki

Los concerns identificados generan una serie de requisitos no funcionales que afectan directamente al diseño del sistema. A continuación, se detallan los principales requisitos derivados y cómo se abordan:


Availability

Concern 1: Notificaciones de actualizaciones

Requisitos derivados del diseño:

  1. El sistema debe garantizar que las notificaciones de actualización se entreguen en tiempo real a todos los destinatarios relevantes.

    • Cumplido mediante WebSockets o RabbitMQ, que permiten comunicaciones asincrónicas en tiempo real.
  2. El sistema debe asegurar la entrega de las notificaciones incluso si el destinatario no está conectado en el momento del envío.

    • Se necesitan colas persistentes con lógica de reintento automático y almacenamiento temporal de mensajes.
  3. El sistema debe monitorear el estado de entrega de cada notificación enviada.

    • Es recomendable integrar herramientas de observabilidad como Prometheus o Elastic Stack para lograrlo.
  4. El sistema debe garantizar la alta disponibilidad del canal de notificaciones.

    • RabbitMQ en clúster o balanceo de carga en WebSocket asegurarán disponibilidad continua.
  5. El sistema debe evitar la duplicación o pérdida de mensajes en caso de fallas de red o reconexiones.

    • Requiere implementación de mecanismos de idempotencia y confirmaciones (ACKs).

Security

Concern 2: Sistema de encriptación de contraseñas

Requisitos derivados del diseño:

  1. El sistema debe asegurar que las contraseñas se almacenen utilizando algoritmos de hashing seguros.

    • Cumplido mediante bcrypt, scrypt o Argon2.
  2. Las contraseñas deben transmitirse por canales seguros para evitar interceptación.

    • HTTPS obligatorio en todas las rutas, con redirección automática desde HTTP y uso de HSTS.
  3. El sistema debe tener una arquitectura que permita la separación de responsabilidades en el manejo de autenticación.

    • Implementado mediante un módulo dedicado y desacoplado del resto del sistema.
  4. El sistema debe registrar intentos de acceso no autorizados o fallidos relacionados con autenticación.

    • No contemplado originalmente. Se debe añadir un módulo de auditoría con logs de acceso y alertas de seguridad.

Availability

Concern 3: Respaldo de datos y boletines

Requisitos derivados del diseño:

  1. El sistema debe generar respaldos automáticos con una frecuencia mínima diaria.

    • Cumplido mediante la automatización de backups cada 24 horas.
  2. El sistema debe almacenar los respaldos en una ubicación segura y accesible en caso de recuperación.

    • Debe garantizarse que el almacenamiento esté cifrado y replicado.
  3. El sistema debe permitir la recuperación rápida y confiable de los datos a partir de los respaldos.

    • Es necesario incluir pruebas periódicas de restauración para verificar que los respaldos pueden ser usados efectivamente en caso de fallo.