Definición
Los requerimientos son una especificación de lo que debe ser implementado. Estos son descripciones de cómo el sistema se debe comportar, de las propiedades y atributos del mismo. Deben ser una restricción del proceso de desarrollo del sistema Sommerville and Sawyer, 1997
Estándar de la Terminología de la Ingeniería de Software de la IEEE,1997.
- Una condición o capacidad que un usuario necesita para resolver un problema o alcanzar un objetivo.
- Una capacidad o condición que debe poseer el sistema o los componentes del sistema para satisfacer un contrato, estándar, especificación, u otro documento formalmente impuesto.
- Una representación documentada de una condición o capacidad documentada como las descritas en (1) y (2).
Características de un buen requerimiento.
- Escrito en forma de “Debe”
- Correcto
- Realizable
- Necesario
- Priorizable
- No Ambiguo
- Verificable
- Traceable (Puede Seguirse)
- Independiente del Diseño
- Identificador único
- Necesario
- Conciso
- Consistente (No en conflicto con otros)
- No Repetido
- Localizado (en un componente o elemento del sistema)
Requerimientos funcionales.
Son declaraciones de los servicios que debe proporcionar el sistema, de la manera en que debe reaccionar ante entradas particulares y de cómo se debe comportar en situaciones particulares. En algunos casos los requerimientos funcionales de los sistemas también pueden declarar explícitamente lo que el sistema no debe hacer. Sommerville, 2005Ejemplos de requerimiento funcional correcto
- El sistema debe contar con un mecanismo de seguridad conformado por nombre de usuario, contraseña y un campo de verificación que aplica la prueba de Turing inversa.
- El sistema deber permitir almacenar artículos en una base de datos relacional.
Ejemplos de requerimiento funcional incorrecto
- El sistema debe contar con un mecanismo que provea gran seguridad.
- El sistema debe permitir almacenar algunos datos importantes
Requerimientos no funcionales
Los requerimientos no funcionales como su nombre lo indica no se centran en las funcionalidades especificas del software o lo que debe hacer, estos se ocupan de propiedades emergentes del software como la fiabilidad, tiempos de respuesta, apariencia, capacidad de almacenamiento, etc.
No por lo anterior se deben subestimar este tipo de requerimientos un error frecuente dado que son igual y en algunos casos más importantes que los mismos requerimientos funcionales en el sentido de que si un programa es capaz de cumplir a la perfección con todos los cómputos para los que fue creado y tiene una interfaz de usuario inaccesible quedara en desuso.
Algunos ejemplos de requerimientos no funcionales, requerimientos de:
- Eficiencia.
- Usabilidad.
- Rendimiento.
- Espacio
- Fiabilidad.
- Portabilidad.
- Implementación.
- Uso de estándares.
- Interoperabilidad.
- Éticos.
- De ley
- De privacidad
- De seguridad
Problemas frecuentes
- Difíciles de Recolectar
- Imposibilidad de Rastrear el cambio
- Difíciles de Escribir
- Demasiada forma, poco contenido
- Falta de organización
El siguiente Link lo llevara a la platilla de IEEE 830 para documentar requerimientos.
IEEE 830 PDF