06. Requerimientos No Funcionales (ISO 25010)
Fase: 03 — Ingeniería de Requisitos
Entregable: 06 de 09
Proyecto: NoteVault (PC Windows, macOS, Linux, Android, iOS / iPhone)
Estado: Formalizado y Certificado
1. Catálogo Cuantitativo de Requisitos No Funcionales (NFR)
Los requisitos no funcionales de NoteVault se definen bajo el estándar internacional ISO/IEC 25010 (Modelo de Calidad del Producto de Software), asignando a cada dimensión métricas cuantitativas, verificables y vinculantes para la arquitectura del sistema:
| Código NFR | Dimensión ISO 25010 | Subcaracterística | Declaración del Requisito No Funcional | Métrica Cuantitativa Verificable | Método de Auditoría |
|---|---|---|---|---|---|
| NFR-01 | Eficiencia de Desempeño | Comportamiento Temporal | Latencia de Apertura de Nota: Lectura de archivo desde disco y montaje visual en el DOM. | < 30 ms en archivos de hasta 10,000 líneas de Markdown. | Benchmark automatizado Vitest con archivos sintéticos. |
| NFR-02 | Eficiencia de Desempeño | Comportamiento Temporal | Búsqueda Global en Bóveda: Búsqueda difusa (fuzzy search) en texto completo sobre notas indexadas. | < 120 ms con tope seguro de MAX_SCAN_NOTES = 4000. |
Prueba de estrés con índice poblado con 4,000 notas reales. |
| NFR-03 | Eficiencia de Desempeño | Utilización de Recursos | Consumo de Memoria en Reposo (Idle): Huella de memoria RAM en cliente de escritorio Electron. | < 180 MB en reposo con bóveda abierta de tamaño medio (500 notas). | Medición con Administrador de Tareas / process.memoryUsage(). |
| NFR-04 | Eficiencia de Desempeño | Fluidez de Interfaz | Tasa de Refresco Visual: Animaciones, paneo de canvas y arrastre en tableros Kanban. | ≥ 60 FPS estables (tiempo de cuadro < 16.6 ms). | Chrome DevTools Performance Timeline / FPS Meter. |
| NFR-05 | Seguridad | Confidencialidad e Integridad | Aislamiento en Electron: Mitigación de Remote Code Execution (RCE) y ataques de inyección. | contextIsolation: true, nodeIntegration: false, sandbox: true. |
Script de validación automatizada de opciones de ventana en CI. |
| NFR-06 | Seguridad | Integridad de Datos | Sanitización HTML contra XSS: Neutralización de vectores maliciosos en Markdown y webview. | 100% de contenido renderizado procesado con DOMPurify.sanitize(). |
Batería de pruebas de seguridad con payloads XSS conocidos. |
| NFR-07 | Seguridad | Control de Acceso Local | Confinamiento de Rutas (Path Traversal): Prohibición de escape fuera del directorio de la bóveda. | Cero acceso a rutas con secuencias .. o llamadas fuera de vault_path. |
Test unitario de auditoría de seguridad sobre appState.resolve(). |
| NFR-08 | Confiabilidad | Tolerancia a Fallos | Cero Corrupción de Archivos: Atomicidad estricta en cada operación de guardado a disco. | Protocolo de escritura en temporal .tmp + reemplazo atómico fs.rename. |
Test de corte abrupto de hilo (kill -9) durante guardado masivo. |
| NFR-09 | Confiabilidad | Disponibilidad | Operatividad 100% Offline (Local-First): Funcionamiento pleno sin conexión a internet ni dependencias de nube. | 100% de funciones disponibles en modo avión sin caídas ni advertencias bloqueantes. | Suite de pruebas E2E ejecutadas con interfaz de red desactivada. |
| NFR-10 | Confiabilidad | Recuperabilidad | Detección de Conflictos de Sincronización: Prevención de sobreescritura ciega por herramientas P2P (Syncthing/Git). | Comparación de mtime antes de escribir; bloqueo de sobreescritura si mtime_disco > mtime_memoria. |
Test de concurrencia simulando edición simultánea externa. |
| NFR-11 | Portabilidad | Adaptabilidad y Coexistencia | Simetría Multiplataforma (PC y Móvil): Paridad de formato de bóveda entre clientes de PC y Móvil. | 100% de compatibilidad byte a byte en formato VAULT_FORMAT.md v4. |
Validación cruzada con la suite de pruebas del cliente Flutter. |
| NFR-12 | Mantenibilidad | Modularidad | Desacoplamiento Modular: Ausencia de dependencias circulares entre los 15 módulos del sistema. | 0 ciclos de importación en análisis estático de dependencias. | madge --circular frontend/src/ con resultado 0 ciclos. |
| NFR-13 | Accesibilidad | Cumplimiento Normativo | Contraste y Navegación Universal: Estándares de diseño inclusivo para personas con discapacidad visual o motriz. | WCAG 2.1 Nivel AA (ratio de contraste ≥ 4.5:1, soporte total de teclado). | Auditoría automatizada con axe-core y styles.contrast.test.ts. |
| NFR-14 | Usabilidad | Capacidad de Aprendizaje | Tiempo de Adopción (Day 1 Onboarding): Curva de aprendizaje para crear la primera nota o rutina. | < 60 segundos desde la primera apertura de la aplicación. | Prueba de usuario con cronómetro sobre usuarios no familiarizados. |
2. Marco Conceptual: Requerimiento No Funcional Cuantitativo
1. **Entidad principal e independiente.**
2. **Es la entidad líder del conjunto de datos:** posee un identificador global único que fija un umbral numérico inmutable de calidad arquitectónica (`nfr_metric_id`: `NFR-01-PERF-LATENCY`), consultado en auditorías técnicas y pipelines de CI/CD.
3. **Existe por sí misma en el catálogo de calidad sin depender de funcionalidades específicas**, y es la única responsable de fijar los límites infranqueables de rendimiento, seguridad, resiliencia y accesibilidad del sistema.
4. **Punto de entrada y límite de consistencia:** Una regresión que viole un umbral NFR (ej. latencia > 30 ms o falla en sanitización XSS) bloquea automáticamente la compilación y el pase a producción.