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:
-
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.
-
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.
-
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.
-
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.
-
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:
-
El sistema debe asegurar que las contraseñas se almacenen utilizando algoritmos de hashing seguros.
- Cumplido mediante bcrypt, scrypt o Argon2.
-
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.
-
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.
-
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:
-
El sistema debe generar respaldos automáticos con una frecuencia mínima diaria.
- Cumplido mediante la automatización de backups cada 24 horas.
-
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.
-
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.