5. Otros Requisitos No Funcionales - SamuelSalcedo22/My-GitHub-Project-IngRequisitos GitHub Wiki

5.1 Objetivos de rendimiento

El sistema de Bolsa de Empleo está diseñado para ofrecer un rendimiento óptimo tanto en entornos de desarrollo como en producción, asegurando tiempos de respuesta aceptables y una experiencia de usuario fluida. A continuación, se detallan los objetivos de rendimiento establecidos para garantizar la eficiencia del sistema bajo distintas condiciones de uso.

Tiempo de respuesta

  • El tiempo de carga de cualquier página web del sistema no debe superar los 2 segundos bajo condiciones normales de red.

  • El tiempo de respuesta de acciones críticas, como el inicio de sesión, la publicación de una oferta o la postulación a una vacante, debe ser inferior a 1 segundo en promedio.

  • El sistema debe poder procesar formularios (registro, login, postulación) con retroalimentación inmediata.

Capacidad de usuarios concurrentes

  • En su versión inicial, el sistema debe soportar al menos 100 usuarios simultáneos navegando y realizando operaciones básicas sin degradación perceptible del rendimiento.

  • Para versiones en producción en la nube, se recomienda implementar escalabilidad vertical y horizontal para soportar hasta 1000 usuarios concurrentes, utilizando servidores con balanceo de carga y base de datos optimizada.

Eficiencia del servidor

  • La utilización promedio del CPU en condiciones normales no debe superar el 70 % de la capacidad del servidor.

  • El consumo de memoria RAM debe mantenerse por debajo del 75 % en cargas promedio (50 usuarios activos).

  • Las consultas a la base de datos deben estar optimizadas para evitar operaciones costosas y minimizar los tiempos de espera.

Rendimiento en dispositivos móviles

  • La interfaz debe cargarse correctamente en dispositivos móviles con conexión 4G o superior en menos de 4 segundos.

  • Todas las vistas se deben de reorganizar para evitar recarga adicional de contenido innecesario.

Tolerancia ante carga

  • En pruebas de estrés, el sistema debe mantener la estabilidad con un crecimiento progresivo de usuarios durante intervalos de 15 minutos.

  • En caso de caída del servidor, el sistema debe ser reiniciable manualmente sin pérdida de datos gracias al uso de almacenamiento persistente y control de sesiones.

5.2 Requisitos de seguridad

El sistema de Bolsa de Empleo, al tratar datos sensibles de usuarios como nombres, correos electrónicos, contraseñas y comentarios, debe implementar medidas que eviten pérdidas de información, uso indebido de la plataforma y exposición no autorizada de datos. A continuación, se detallan los requisitos de seguridad asociados a la protección y correcto uso del sistema.

Protección contra pérdida de información

  • El sistema debe garantizar la persistencia de los datos mediante el uso de bases de datos gestionadas con integridad referencial.

  • Las operaciones críticas (como postulación, edición o eliminación de ofertas) deben ejecutarse solo después de validaciones completas del lado del servidor.

  • Se recomienda realizar copias de seguridad automáticas periódicas si el sistema se despliega en producción, especialmente en nubes públicas o servidores auto-gestionados.

Prevención de accesos no autorizados

  • Solo los usuarios autenticados podrán acceder a funcionalidades protegidas (por ejemplo, publicar ofertas, postularse, dejar opiniones).

  • El sistema debe implementar medidas de autenticación seguras:

  • Uso obligatorio de contraseñas cifradas
  • Validaciones de sesión (inicio/cierre de sesión)

Prevención de daño a otros usuarios

  • Se debe evitar que un usuario pueda manipular datos ajenos.

  • Un candidato no puede ver o modificar postulaciones de otros.

  • Una empresa solo puede gestionar sus propias ofertas y postulaciones.

  • Las rutas deben ser protegidas con verificaciones de tipo de usuario (is_empresa, is_candidato) antes de permitir acciones.

Prevención de mal uso de formularios o datos

  • Los formularios deben contar con validaciones tanto en frontend como backend.

  • Se debe evitar que los campos acepten contenido malicioso (scripts, etiquetas HTML, etc.).

  • Los archivos que eventualmente se suban (como CVs) deben tener restricciones de tipo y tamaño.

Políticas y regulaciones aplicables

Aunque el sistema no está destinado a ambientes médicos, financieros o de misión crítica, debe adherirse a principios generales de seguridad web. En caso de uso institucional, se recomienda:

  • Cumplir con normas básicas de protección de datos personales.

  • Solicitar consentimiento informado para el tratamiento de datos sensibles.

5.3 Requisitos de seguridad

El sistema de Bolsa de Empleo maneja información personal sensible de los usuarios, como datos de identificación, correo electrónico, credenciales de acceso y contenido relacionado con postulaciones y opiniones. Por tanto, se deben aplicar mecanismos de seguridad robustos para proteger la confidencialidad, integridad y disponibilidad de la información.

Requisitos de autenticación de identidad

  • Todo usuario debe autenticarse mediante un formulario de acceso que solicite nombre de usuario y contraseña.

  • Las contraseñas se almacenan de forma segura utilizando el algoritmo de cifrado, provisto por Django.

  • Se debe implementar control de sesiones para asegurar que:

  • Solo un usuario autenticado puede acceder a funciones protegidas.
  • Las sesiones puedan ser cerradas manualmente y caduquen por inactividad prolongada.
  • En caso de recuperación de contraseña (funcionalidad futura), se utilizará verificación vía correo electrónico con tokens únicos temporales.

Protección de la información

  • Los datos personales de los usuarios no deben ser expuestos públicamente ni compartidos entre roles de usuario distintos.

  • El sistema debe garantizar que:

  • Las empresas no tengan acceso directo a datos de otros candidatos fuera del proceso de postulación.
  • Los candidatos no puedan acceder a información sensible de otras empresas.
  • Las opiniones deben mostrarse únicamente entre las partes involucradas y con mecanismos de moderación básica.

Seguridad en la transmisión de datos

  • Todas las comunicaciones deben realizarse utilizando el protocolo HTTPS con certificados TLS válidos.

  • No se debe permitir acceso a través de HTTP en entornos de producción.

Políticas externas y cumplimiento

  • La plataforma debe alinearse con los principios establecidos por la Ley 1581 de 2012 (Colombia) sobre protección de datos personales.

  • En caso de integrarse a instituciones o entornos formales, se recomienda el cumplimiento adicional del Reglamento General de Protección de Datos.

5.4 Atributos de calidad del software

La calidad del sistema de Bolsa de Empleo se define por una serie de características no funcionales que impactan directamente en la experiencia del usuario final, la mantenibilidad del sistema, su estabilidad y capacidad de evolución. A continuación se describen los atributos de calidad que guían el diseño y desarrollo del sistema:

Usabilidad

  • El sistema debe ser intuitivo y fácil de navegar, incluso para usuarios sin conocimientos técnicos.

  • Las interfaces deben estar claramente etiquetadas, con formularios simples, retroalimentación visual y mensajes de ayuda.

  • Las operaciones comunes (registrarse, postularse, publicar una oferta) deben realizarse en menos de 3 clics desde la pantalla principal del usuario autenticado.

Mantenibilidad

  • La estructura del proyecto en Django sigue la arquitectura estándar de Modelos - Vistas - Templates (MTV).

  • Todo el código debe estar modularizado y documentado, permitiendo agregar nuevas funcionalidades sin modificar la lógica existente.

Fiabilidad

  • El sistema debe estar disponible al menos el 99% del tiempo en entornos de producción.

  • Los errores deben ser manejados de forma controlada para evitar caídas completas del sistema.

  • Se deben mostrar mensajes de error claros al usuario sin exponer información técnica sensible.

Robustez

  • El sistema debe ser resistente a entradas inválidas y maliciosas, utilizando validaciones tanto en el backend como en el frontend.

  • En caso de fallo de algún componente (por ejemplo, caída de la base de datos), se debe mostrar un mensaje amigable e intentar recuperación automática si es posible.

Portabilidad

  • El sistema debe poder desplegarse en cualquier servidor que soporte Python 3.10+ y bases de datos como SQLite o PostgreSQL.

  • Debe ser posible migrar el sistema entre entornos (local, nube, institucional) con mínimos ajustes de configuración.

Adaptabilidad y escalabilidad

  • El sistema debe permitir agregar nuevas funcionalidades (como paneles de administración, API REST, notificaciones por correo) sin alterar la lógica base.

  • La arquitectura debe permitir escalar horizontalmente con balanceadores de carga y servidores adicionales en la nube si se requiere soportar más usuarios.

Interoperabilidad

Aunque actualmente es una aplicación independiente, el sistema está preparado para integrarse con sistemas externos mediante:

  • Exportación de datos

  • Conexiones a APIs (futuro)

  • Intercambio de información en formatos comunes como JSON y CSV

Reusabilidad

  • Los formularios, templates y vistas están diseñados de forma reutilizable mediante el uso de clases base, componentes HTML y mixins.

  • La lógica de validación está centralizada en formularios (forms.py) reutilizables.

Testabilidad

  • El sistema debe ser probado usando herramientas de testing de Django (TestCase) para verificar:
  • Registro y login de usuarios
  • Creación de ofertas
  • Postulación y cambio de estado
  • Los tests deben poder ejecutarse de forma automática antes de cada despliegue.

5.5 Reglas de negocio

ID Regla de negocio Descripción
BR01 Tipos de usuario exclusivos Cada usuario puede ser empresa o candidato, pero no ambos al mismo tiempo. Se valida mediante los campos is_empresa y is_candidato.
BR02 Acceso basado en rol Las funcionalidades del sistema se habilitan según el tipo de usuario autenticado (empresa o candidato).
BR03 Publicación y gestión de ofertas solo por empresas Solo los usuarios con rol empresa pueden crear, editar y eliminar ofertas laborales.
BR04 Postulación solo por candidatos Solo los usuarios con rol candidato pueden postularse a ofertas laborales.
BR05 Opiniones cruzadas restringidas Una empresa solo puede opinar sobre un candidato que se haya postulado a una de sus ofertas. Un candidato solo puede opinar sobre una empresa si aplicó.
BR06 Opiniones únicas por par usuario Solo se permite una opinión por combinación empresa–candidato o candidato–empresa.
BR07 Validación de pertenencia de datos Un usuario solo puede modificar o eliminar los datos que le pertenecen (sus propias ofertas, postulaciones u opiniones).
BR08 Acceso protegido por sesión Todas las funcionalidades que modifican información están protegidas con login_required y validación de rol.
BR09 Restricción de duplicación de registros No se permite crear dos cuentas con el mismo correo electrónico. Un candidato no puede postularse dos veces a la misma oferta.
BR10 Estados de postulación controlados El estado de una postulación solo puede ser modificado por la empresa propietaria de la oferta, usando opciones válidas (POSTULADO, RECHAZADO, etc.).
BR11 Identificación única de ofertas Cada oferta laboral cuenta con un identificador único asignado automáticamente al momento de su creación.
BR12 Trazabilidad de acciones Se registra la fecha de publicación de las ofertas y la fecha en que se realiza cada postulación.