.MD Copialo y llevalo a cualquier apunte que tengas con MARKDOWN.
# 🏆 NFR & Atributos de Calidad: El ADN de un Sistema Robusto
Este módulo profundiza en cómo determinar si un sistema tiene la calidad adecuada mediante el análisis técnico de requisitos, la gestión de riesgos y la aceptación consciente de restricciones.
---
## 1. Requisitos Funcionales: El "Qué" y el "Para qué"
Definen las tareas específicas que el sistema debe ejecutar para resolver el problema del cliente.
* **Componentes clave:**
* **Actores:** Quién tiene la necesidad (Usuario, Sistema externo, Admin).
* **Resultados esperados:** Qué entrega el sistema tras el proceso.
* **Criterios de aceptación:** Condiciones mínimas para dar por válida la solución.
* **El Método Amazon (Working Backwards):** Antes de listar requisitos técnicos, se diseña el comunicado de prensa o manual de usuario. Esto asegura que el "Qué" esté alineado con el valor real para el usuario.
* **Clasificación:**
* **Visibles:** Funciones que el usuario opera directamente.
* **Background:** Procesos internos (ej. una IA procesando datos en la nube) que entregan un resultado final.
* **Control y Regulación:** Manejo de accesos y cumplimiento de leyes.
---
## 2. NFR: Requisitos No Funcionales (Atributos de Calidad)
Son el núcleo del trabajo del arquitecto. Definen **cómo** se comporta el sistema bajo presión y a través del tiempo.
* **Atributos Técnicos:** Seguridad, Usabilidad, Mantenibilidad, Extensibilidad y Resiliencia.
* **El Factor Costo:** No es solo el presupuesto inicial, sino cuánto cuesta mantener el sistema vivo (tokens de IA, gas en Web3, servidores).
* **Análisis de Impacto:** Cuantifica las consecuencias de una decisión o un fallo.
* **Económico:** Pérdida por caída de servicio.
* **Reputacional:** Pérdida de confianza del usuario.
* **Regulatorio:** Multas legales por fallos de seguridad.
---
## 3. Gestión de Riesgos: Severidad vs. Frecuencia
El arquitecto no elimina todos los riesgos, los **gestiona** mediante una matriz de prioridad.
| Nivel de Riesgo | Estrategia | Ejemplo |
| :--- | :--- | :--- |
| **Severidad Alta / Frecuencia Alta** | **Resolver Ya** | Caída constante del motor de pagos. |
| **Severidad Alta / Frecuencia Baja** | **Mitigar / Plan B** | Un hackeo masivo a los Smart Contracts (Web3). |
| **Severidad Baja / Frecuencia Alta** | **Mejorar / Aceptar** | El buscador de la app es un poco lento en horas pico. |
| **Severidad Baja / Frecuencia Baja** | **Monitorear** | Un error visual menor en navegadores antiguos. |
---
## 4. Restricciones: Los Límites del Diseño
Las restricciones son fronteras que aparecen al elegir una tecnología. No existe la "bala de plata"; cada elección tiene una limitación implícita.
### El Dilema de la Persistencia de Datos
* **Bases de Datos Relacionales (SQL):**
* **Ventaja:** Seguridad de esquemas, integridad total de datos (ideal para contabilidad).
* **Restricción:** Esquemas rígidos que dificultan cambios rápidos y escalabilidad masiva horizontal.
* **Bases de Datos Orientadas a Documentos (NoSQL):**
* **Ventaja:** Flexibilidad estructural (ideal para perfiles de usuario variables o datos de IA).
* **Restricción:** Capacidades analíticas limitadas y dificultad para mantener consistencia estricta en tiempo real.
---
> **💡 Conclusión del Arquitecto:** Diseñar es el arte de elegir qué problemas estás dispuesto a tener. Elegir una restricción hoy es una decisión estratégica para habilitar una funcionalidad mañana.