Los casos de uso describen principalmente comportamiento funcional: qué hace el sistema cuando un actor intenta lograr un objetivo. Sin embargo, muchas veces no alcanza con saber qué debe hacer el sistema; también importa cómo debe hacerlo.
Los requisitos no funcionales expresan cualidades, restricciones y condiciones de calidad que debe cumplir el sistema. Pueden referirse a rendimiento, seguridad, usabilidad, disponibilidad, accesibilidad, confiabilidad, auditoría, privacidad o compatibilidad.
Estos requisitos pueden estar relacionados con todo el sistema o con casos de uso específicos. Por ejemplo, Solicitar turno puede requerir una respuesta rápida, protección de datos personales y confirmación clara para el paciente.
Un requisito no funcional define una cualidad o restricción del sistema. No suele describir una funcionalidad nueva, sino una condición que afecta la forma en que se ejecutan las funcionalidades.
Ejemplos:
Un requisito no funcional puede aplicar a un caso de uso concreto. Por ejemplo, en Solicitar turno, el sistema no solo debe permitir reservar; también debe responder en tiempos aceptables, proteger datos del paciente y evitar reservas duplicadas.
Si el caso de uso tiene importancia crítica, conviene documentar los atributos de calidad que afectan directamente su ejecución.
Los requisitos no funcionales actúan como condiciones de calidad sobre el caso de uso. Una misma funcionalidad puede estar afectada por rendimiento, seguridad, usabilidad, disponibilidad, privacidad y auditoría. Estos atributos no cambian el objetivo del actor, pero sí condicionan la forma aceptable de cumplirlo.
El rendimiento indica tiempos de respuesta, capacidad de procesamiento o cantidad de usuarios que el sistema debe soportar. En casos de uso interactivos, es importante porque afecta directamente la experiencia del actor.
Ejemplos relacionados con Solicitar turno:
La seguridad define cómo se protegen operaciones, datos y accesos. En un caso de uso puede indicar autenticación, autorización, protección contra modificaciones indebidas o manejo seguro de información sensible.
Ejemplos:
La privacidad se relaciona con el tratamiento de datos personales o sensibles. En sistemas médicos, educativos, financieros o laborales, estos requisitos son especialmente importantes.
Ejemplos:
La usabilidad indica qué tan fácil, clara y eficiente debe ser la interacción. Puede afectar el diseño de pantallas, mensajes, cantidad de pasos, prevención de errores y comprensión del proceso.
Ejemplos:
La accesibilidad busca que el sistema pueda ser usado por personas con distintas capacidades, dispositivos o condiciones de uso. Puede incluir compatibilidad con lectores de pantalla, contraste suficiente, navegación con teclado y textos comprensibles.
Ejemplos:
La disponibilidad indica cuándo el sistema debe estar operativo. Puede aplicar al sistema completo o a casos de uso críticos.
Ejemplos:
La confiabilidad indica que el sistema debe comportarse de manera estable y evitar resultados incorrectos. En casos de uso con datos compartidos, también importa la consistencia.
Ejemplos:
La auditoría permite reconstruir qué ocurrió, quién realizó una operación y cuándo. Es importante cuando hay datos sensibles, responsabilidades legales o cambios críticos.
Ejemplos:
Un requisito no funcional debe ser lo más medible posible. Frases como "el sistema debe ser rápido" o "la interfaz debe ser amigable" son demasiado vagas.
Mejores ejemplos:
Los requisitos no funcionales pueden documentarse en varios lugares:
Lo importante es que puedan encontrarse, validarse y probarse.
Para el caso de uso Solicitar turno, se podrían documentar estos requisitos no funcionales:
| Atributo | Requisito relacionado |
|---|---|
| Rendimiento | La búsqueda de horarios debe responder en menos de 3 segundos en condiciones normales. |
| Seguridad | Solo pacientes autenticados pueden confirmar turnos propios. |
| Privacidad | La confirmación no debe incluir información clínica sensible. |
| Usabilidad | El resumen final debe mostrar fecha, hora, profesional y sede antes de confirmar. |
| Confiabilidad | No debe registrarse una reserva si el horario ya fue tomado por otro usuario. |
Los requisitos no funcionales deben poder verificarse. Algunos se prueban con pruebas funcionales, otros con pruebas de rendimiento, seguridad, accesibilidad o disponibilidad.
Por ejemplo, si se exige que la búsqueda responda en menos de 3 segundos, debe existir una forma de medirlo. Si se exige que solo usuarios autorizados accedan a datos, debe haber pruebas de permisos.
Al documentar requisitos no funcionales, suelen aparecer estos errores:
Antes de cerrar los requisitos no funcionales asociados a un caso de uso, conviene revisar:
Los casos de uso explican qué comportamiento funcional debe ofrecer el sistema, pero los requisitos no funcionales indican con qué nivel de calidad, seguridad, rendimiento y confiabilidad debe hacerlo.
Documentar estos requisitos junto a los casos de uso críticos permite construir software más adecuado al contexto real. En el próximo tema estudiaremos plantillas para documentar casos de uso.