De acuerdo con el estándar IEEE 729, un requisito se define de la siguiente manera:
- Una condición o capacidad que necesita un usuario para resolver un problema o lograr un objetivo.
- Una condición o capacidad que debe cumplir o poseer un sistema o componente del sistema para satisfacer un contrato, estándar, especificación u otros documentos impuestos formalmente.
- Una representación documentada de una condición o capacidad como en 1 y 2.
Un requisito de software puede ser de 3 tipos:
- Requerimientos funcionales
- requerimientos no funcionales
- Requisitos de dominio
Requerimientos funcionales:Estos son los requisitos que el usuario final exige específicamente como prestaciones básicas que debe ofrecer el sistema. Todas estas funcionalidades deben estar necesariamente incorporadas al sistema como parte del contrato. Estos se representan o establecen en forma de entrada que se le dará al sistema, la operación realizada y la salida esperada. Son básicamente los requisitos declarados por el usuario que se pueden ver directamente en el producto final, a diferencia de los requisitos no funcionales. Por ejemplo, en un sistema de gestión hospitalaria, un médico debería poder recuperar la información de sus pacientes. Cada requisito funcional de alto nivel puede implicar varias interacciones o diálogos entre el sistema y el mundo exterior. Para describir con precisión los requisitos funcionales, se deben enumerar todos los escenarios.
Requisitos no funcionales: Son básicamente las restricciones de calidad que el sistema debe satisfacer según el contrato del proyecto. La prioridad o la medida en que se implementan estos factores varía de un proyecto a otro. También se les llama requisitos no conductuales. Básicamente se ocupan de cuestiones como:
- Portabilidad
- Seguridad
- mantenibilidad
- Fiabilidad
- Escalabilidad
- Actuación
- reutilización
- Flexibilidad
Los NFR se clasifican en los siguientes tipos:
- Restricciones de la interfaz
- Restricciones de rendimiento: tiempo de respuesta, seguridad, espacio de almacenamiento, etc.
- Restricciones operativas
- Restricciones del ciclo de vida: mantenibilidad, portabilidad, etc.
- Restricciones económicas
El proceso de especificación de requisitos no funcionales requiere el conocimiento de la funcionalidad del sistema, así como el conocimiento del contexto dentro del cual operará el sistema.
Requisitos de dominio: Los requisitos de dominio son los requisitos que son característicos de una categoría particular o dominio de proyectos. Las funciones básicas que necesariamente debe exhibir un sistema de un dominio específico entran dentro de esta categoría. Por ejemplo, en un software académico que mantiene registros de una escuela o universidad, la funcionalidad de poder acceder a la lista de profesores y la lista de estudiantes de cada grado es un requisito de dominio. Por lo tanto, estos requisitos se identifican a partir de ese modelo de dominio y no son específicos del usuario.