academia/docs/entregables/01-analisis/requisitos/AN-004-requisitos-no-funcio...

8.3 KiB

AN-004: Requisitos No Funcionales

Proyecto: Sistema de Registro de Estudiantes - Inter Rapidísimo Rol: Arquitecto de Software Fecha: 2026-01-07


1. Resumen

Este documento define los atributos de calidad (requisitos no funcionales) que el sistema debe cumplir, estableciendo métricas medibles y criterios de aceptación.


2. Requisitos No Funcionales

RNF-001: Rendimiento - Tiempo de Respuesta

Atributo Valor
ID RNF-001
Categoría Rendimiento
Prioridad Alta
Métrica Tiempo de respuesta < 200ms (P95)

Descripción: El sistema debe responder a las solicitudes del usuario en menos de 200 milisegundos en el percentil 95.

Criterios de Aceptación:

Operación Tiempo Máximo
Consulta lista de estudiantes < 150ms
Consulta catálogo materias < 100ms
Inscripción en materia < 200ms
Crear/actualizar estudiante < 200ms
Consulta compañeros de clase < 150ms

Medición:

  • Herramienta: Application Insights / Logs estructurados
  • Ambiente: Producción simulada
  • Carga: 100 usuarios concurrentes

RNF-002: Rendimiento - Throughput

Atributo Valor
ID RNF-002
Categoría Rendimiento
Prioridad Media
Métrica >= 500 requests/segundo

Descripción: El sistema debe soportar al menos 500 solicitudes por segundo sin degradación.

Criterios de Aceptación:

  • API soporta 500 req/s con latencia < 200ms
  • Sin errores 5xx bajo carga normal
  • CPU < 80% bajo carga máxima

RNF-003: Seguridad - OWASP Top 10

Atributo Valor
ID RNF-003
Categoría Seguridad
Prioridad Crítica
Estándar OWASP Top 10 2021

Descripción: El sistema debe estar protegido contra las 10 vulnerabilidades más críticas según OWASP.

Controles por Vulnerabilidad:

# Vulnerabilidad Control Implementado
A01 Broken Access Control Validación de permisos en cada endpoint
A02 Cryptographic Failures HTTPS obligatorio, hashing de datos sensibles
A03 Injection Consultas parametrizadas (EF Core), validación de entrada
A04 Insecure Design Clean Architecture, validación en dominio
A05 Security Misconfiguration Headers de seguridad, CORS restrictivo
A06 Vulnerable Components Auditoría de dependencias (dotnet list package --vulnerable)
A07 Auth Failures Rate limiting, validación de sesión
A08 Data Integrity Failures Validación de DTOs, firma de respuestas
A09 Logging Failures Logs estructurados sin datos sensibles
A10 SSRF Validación de URLs, no fetch de recursos externos

Criterios de Aceptación:

  • Análisis SAST sin vulnerabilidades críticas
  • Headers de seguridad configurados (CSP, X-Frame-Options, etc.)
  • Sin secretos en código fuente
  • HTTPS en todos los endpoints

RNF-004: Seguridad - Validación de Entrada

Atributo Valor
ID RNF-004
Categoría Seguridad
Prioridad Alta

Descripción: Toda entrada del usuario debe ser validada tanto en frontend como en backend.

Reglas de Validación:

Campo Regla Frontend Regla Backend
Nombre Required, MaxLength(100) FluentValidation
Email Required, EmailFormat ValueObject + Validator
IDs Numeric Tipo fuerte (int)

Criterios de Aceptación:

  • Ningún input llega a la BD sin validación
  • Mensajes de error claros y sin información sensible
  • Sanitización de HTML en campos de texto

RNF-005: Usabilidad - Responsive Design

Atributo Valor
ID RNF-005
Categoría Usabilidad
Prioridad Alta
Estándar Mobile First

Descripción: La interfaz debe adaptarse correctamente a diferentes tamaños de pantalla.

Breakpoints Soportados:

Dispositivo Ancho Soporte
Mobile 320px - 480px Obligatorio
Tablet 481px - 768px Obligatorio
Desktop 769px - 1024px Obligatorio
Large Desktop > 1024px Obligatorio

Criterios de Aceptación:

  • UI funcional en Chrome, Firefox, Safari, Edge
  • Sin scroll horizontal en mobile
  • Formularios usables con teclado virtual
  • Touch targets >= 44px

RNF-006: Usabilidad - Accesibilidad

Atributo Valor
ID RNF-006
Categoría Usabilidad
Prioridad Media
Estándar WCAG 2.1 Nivel AA

Descripción: El sistema debe ser accesible para usuarios con discapacidades.

Criterios de Aceptación:

  • Contraste de colores >= 4.5:1
  • Navegación completa por teclado
  • Labels en todos los inputs
  • Atributos ARIA donde corresponda
  • Textos alternativos en imágenes

RNF-007: Mantenibilidad - Cobertura de Tests

Atributo Valor
ID RNF-007
Categoría Mantenibilidad
Prioridad Alta
Métrica >= 80% cobertura

Descripción: El código debe tener una cobertura de tests unitarios mínima del 80%.

Distribución de Tests:

Capa Cobertura Mínima Tipo de Tests
Domain 90% Unit tests
Application 85% Unit + Integration
Adapters 70% Integration
Frontend 75% Unit + Component

Criterios de Aceptación:

  • Cobertura global >= 80%
  • Todas las reglas de negocio con tests
  • Tests ejecutables en CI/CD

RNF-008: Mantenibilidad - Calidad de Código

Atributo Valor
ID RNF-008
Categoría Mantenibilidad
Prioridad Media

Descripción: El código debe seguir estándares de calidad medibles.

Métricas:

Métrica Umbral
Complejidad ciclomática < 10 por método
Duplicación de código < 3%
Archivos < 100 líneas
Métodos < 30 líneas
Warnings del compilador 0

Herramientas:

  • .NET: dotnet format, Roslyn Analyzers
  • Angular: ESLint, Prettier

RNF-009: Disponibilidad

Atributo Valor
ID RNF-009
Categoría Disponibilidad
Prioridad Media
Métrica 99% uptime

Descripción: El sistema debe estar disponible el 99% del tiempo durante horario laboral.

Criterios de Aceptación:

  • Health checks implementados
  • Reinicio automático ante fallos
  • Graceful shutdown
  • Logs de errores para diagnóstico

RNF-010: Escalabilidad

Atributo Valor
ID RNF-010
Categoría Escalabilidad
Prioridad Baja

Descripción: La arquitectura debe permitir escalado horizontal sin cambios de código.

Criterios de Aceptación:

  • Aplicación stateless
  • Configuración externalizada
  • Base de datos separada de aplicación
  • Contenedores Docker funcionales

3. Matriz de Priorización

ID Requisito Prioridad Impacto Esfuerzo
RNF-003 Seguridad OWASP Crítica Alto Alto
RNF-001 Tiempo respuesta Alta Alto Medio
RNF-004 Validación entrada Alta Alto Medio
RNF-005 Responsive Alta Alto Medio
RNF-007 Cobertura tests Alta Medio Alto
RNF-002 Throughput Media Medio Medio
RNF-006 Accesibilidad Media Medio Medio
RNF-008 Calidad código Media Medio Bajo
RNF-009 Disponibilidad Media Alto Medio
RNF-010 Escalabilidad Baja Bajo Alto

4. Estrategia de Validación

Tests de Rendimiento

# k6 para load testing
k6 run --vus 100 --duration 30s tests/performance/api-load.js

Tests de Seguridad

# OWASP ZAP scan
docker run -t owasp/zap2docker-stable zap-baseline.py -t https://localhost:5001

Tests de Accesibilidad

# Lighthouse CI
npx lighthouse https://localhost:4200 --only-categories=accessibility

5. Aprobación

Rol Nombre Fecha Firma
Arquitecto Sistema 2026-01-07
Líder Técnico Pendiente - -
QA Lead Pendiente - -