1. Requisitos funcionales: Estos describen * qué * debe hacer el sistema. A menudo se expresan como:
* Casos de uso: Describa las interacciones entre los usuarios (u otros sistemas) y el sistema, describiendo una secuencia específica de acciones y resultados esperados.
* Historias de usuario: Descripciones de funcionalidad más cortas y más informales desde la perspectiva de un usuario (por ejemplo, "Como cliente, quiero poder agregar artículos a mi carrito de compras para poder comprarlos más tarde").
* Listas de características: Una simple enumeración de las características del sistema. Menos detallados que los casos de uso pero útil para la planificación de alto nivel.
* Diagramas de estado: Muestre los diferentes estados que puede estar un sistema y cómo se transforma entre ellos. Útil para sistemas con gestión estatal compleja.
* Diagramas de flujo de datos: Ilustrar el flujo de datos a través del sistema.
2. Requisitos no funcionales (o atributos de calidad): Estos describen * cómo * debe funcionar el sistema. A menudo están relacionados con:
* Rendimiento: Tiempos de respuesta, rendimiento, tasas de transacción, utilización de recursos (CPU, memoria, red). A menudo expresado cuantitativamente (por ejemplo, "el sistema deberá responder a las solicitudes de los usuarios dentro de los 2 segundos").
* escalabilidad: Capacidad para manejar la carga creciente (usuarios, datos, transacciones). A menudo especificado en términos de crecimiento esperado y rendimiento del sistema bajo ese crecimiento.
* Seguridad: Protección contra el acceso no autorizado, las infracciones de datos y otras amenazas. Definido a través de políticas de seguridad y mecanismos de control de acceso.
* Fiabilidad: Frecuencia y duración de las fallas, tiempo medio entre fallas (MTBF), tiempo medio de recuperación (MTTR).
* Disponibilidad: Porcentaje de tiempo El sistema está operativo.
* mantenimiento: Facilidad de modificar y actualizar el sistema.
* Usabilidad: Facilidad de uso para los usuarios previstos. A menudo medido a través de pruebas de usuario y retroalimentación.
* Portabilidad: Capacidad para ejecutar en diferentes plataformas y entornos.
3. Requisitos de capacidad: Estos describen la capacidad del sistema para manejar una determinada carga de trabajo. Esto incluye:
* Volumen de datos: Cantidad de datos que el sistema necesita almacenar y procesar.
* Concurrencia de usuario: Número de usuarios simultáneos que el sistema puede admitir.
* Tasa de transacción: Número de transacciones que el sistema puede procesar por unidad de tiempo.
* Límites de recursos: Límites en CPU, memoria, almacenamiento, ancho de banda de red.
Métodos para especificar la funcionalidad y la capacidad:
* Lenguaje natural: A menudo se usa para descripciones de alto nivel, pero puede ser ambigua.
* Lenguajes de especificación formales: Use notaciones matemáticas o lógicas precisas para evitar ambigüedad (por ejemplo, Z, VDM). Más riguroso pero requiere experiencia especializada.
* Idiomas de modelado: Use anotaciones visuales para representar la estructura y el comportamiento del sistema (por ejemplo, UML). Un buen equilibrio entre precisión y comprensión.
* Documento de especificación de requisitos del sistema (SRS): Un documento formal que describe de manera integral todos los requisitos funcionales y no funcionales.
La elección de métodos depende de factores como el tamaño del proyecto, la complejidad, el presupuesto y la experiencia técnica del equipo. A menudo, se utiliza una combinación de estos métodos para crear una especificación integral y clara. Es crucial garantizar que las especificaciones sean inequívocas, completas, consistentes y verificables. La trazabilidad entre los requisitos, el diseño y la implementación también es importante para el desarrollo y el mantenimiento efectivos del sistema.