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 ingeniería de requisitos emplea principios, métodos, técnicas y herramientas para descubrir, documentar y mantener los requisitos de los stakeholders, es decir, todas las partes interesadas en el proyecto de desarrollo de software. El objetivo es asegurar que el sistema cumpla con las necesidades y expectativas de los clientes y usuarios, y que sea eficiente y efectivo en su desempeño.
“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.
<aside> 📄 El documento de requerimientos de software (llamado algunas veces especificación de requerimientos de software o SRS) es un comunicado oficial de lo que deben implementar
los desarrolladores del sistema. Incluye tanto los requerimientos del usuario para un sis- tema, como una especificación detallada de los requerimientos del sistema.
</aside>
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.