La ingeniería de requisitos es una disciplina fundamental en el desarrollo de software, ya que se enfoca en establecer lo que el cliente requiere de un sistema de software. Esto implica determinar los servicios que el cliente necesita que el sistema provea, así como los límites en los que el sistema debe operar y desarrollarse.
“La IR es un proceso que comprende todas las actividades requeridas para crear y mantener un documento de requisitos del sistema. Existen cuatro actividades genéricas de alto nivel en este proceso. Estas son: estudio de factibilidad del sistema, la obtención y análisis de los requisitos, la especificación y documentación, y finalmente la validación.” - Sommerville
La ingeniería de requisitos se lleva a cabo en la etapa inicial del proceso de ingeniería de software, conocida como la etapa de especificación de requisitos. Esta etapa se sitúa antes del diseño e implementación del software y es fundamental para comprender las necesidades de los usuarios y establecer los requisitos del sistema que se va a desarrollar, para asi no arrastrar problemas a futuras etapas.
Tiene la función de capturar, analizar, documentar y gestionar los requisitos del software, estableciendo las bases para el diseño, desarrollo e implementación exitosos del sistema.
Algunas de las funciones que cumple son:
Depende, es cierto que el documento de requerimientos de software no se implementa siempre exáctamente de la misma manera. Por ejemplo en las siguientes citas podemos apreciar como dependiendo del contexto pueden tener diferencias:
“En ocasiones, los requerimientos del usuario y del sistema se integran en una sola descripción. En otros casos, los requerimientos del usuario se definen en una introducción a la especificación de requerimientos del sistema. Si hay un gran número de requerimientos, los requerimientos del sistema detallados podrían presentarse en un documento aparte.”
“El nivel de detalle que se incluya en un documento de requerimientos depende del tipo de sistema a diseñar y el proceso de desarrollo utilizado. Los sistemas críticos necesitan tener requerimientos detallados porque la seguridad y la protección también deben analizarse de forma pormenorizada. Cuando el sistema lo desarrolla una compañía independiente (por ejemplo, mediante la subcontratación), deben detallarse y precisarse las especificaciones del sistema. Si se utiliza un proceso de desarrollo iterativo interno, entonces el documento de requerimientos suele ser mucho menos detallado y cualquier ambigüedad puede resolverse durante el desarrollo del sistema.”
Más allá de las diferencias que pueden tener, es importante que se siga un estándar para crearlo, por ejemplo, el que define la IEEE.