Requisitos funcionales y no funcionales en arquitectura de software

Clase 7 de 24Curso de Fundamentos de Arquitectura de Software

Resumen

¿Sabes cómo determinar si un sistema informático posee la calidad adecuada? Dominar los requisitos funcionales y no funcionales es clave en arquitectura de software para garantizar un sistema robusto, íntegro y adaptable en el tiempo.

¿Qué son los requisitos funcionales y por qué son importantes?

Los requisitos funcionales definen específicamente qué problemas resuelve un sistema. Se centran principalmente en:

  • Quién tiene la necesidad.
  • Qué se espera como resultado.
  • Cómo evaluar si la solución propuesta cumple con las condiciones mínimas.
  • Los límites operativos y posibles fallos aceptables dentro del sistema.

Estos requisitos se clasifican en:

  • Capacidades visibles directamente por el usuario.
  • Procesos que ocurren en background ofreciendo resultados al usuario.
  • Control de acceso, regulaciones y manejo de excepciones conocidas.

Un método reciente y útil, conocido como método Amazon, plantea soluciones antes de enumerar requisitos, permitiendo recibir retroalimentación de usuarios para definir especificaciones más precisas.

¿Cuál es la importancia de los requisitos no funcionales?

Los requisitos no funcionales se relacionan directamente con los atributos de calidad del software, conformando el núcleo de la atención arquitectónica. Son imprescindibles para que un sistema pueda evolucionar adecuadamente con el tiempo.

Tipos de requisitos no funcionales:

  • Atributos sobre calidad de software: seguridad, usabilidad, mantenibilidad, extensibilidad, entre otros.
  • Costo: factor clave para conducir y valorar decisiones en proyectos.
  • Impacto: mide los resultados que acarrea cada decisión tomada, comprendiendo pérdidas económicas, regulatorias o reputacionales. Se evalúa con una función específica que ayuda a cuantificar el costo potencial de distintos errores.

¿Cómo se gestionan los riesgos y las restricciones en proyectos?

Identificar requisitos y analizar impactos lleva a estructurar tablas de riesgos, priorizando según severidad y frecuencia. Esto facilita decidir cuáles resolver previamente, cuáles aceptar posteriormente o cuáles requieren planes específicos de mitigación o control al materializarse.

Las restricciones aparecen como límites dinámicos al diseñar soluciones tecnológicas. Muchas surgen durante el propio proyecto, dependiendo de decisiones técnicas específicas:

  • Bases de datos relacionales: seguridad de esquemas predefinidos limitando flexibilidad.
  • Bases de datos orientadas a documentos: conceden flexibilidad estructural, reduciendo capacidades analíticas comunes como SQL.

Para consolidar esta información, un ejercicio práctico recomendado es listar riesgos conocidos y analizar restricciones existentes en el contexto specific del problema abordado. ¿Cuáles podrías identificar en tus proyectos actuales?