Especificación de requisitos de software

Para una cobertura más amplia de este tema, véase Requisitos de software.

Una especificación de requisitos de software (SRS) es una descripción de un sistema de software a desarrollar. Se basa en la especificación de requisitos empresariales (CONOPS), también conocida como especificación de requisitos de las partes interesadas (StRS). La especificación de requisitos de software establece los requisitos funcionales y no funcionales, y puede incluir un conjunto de casos de uso que describen las interacciones del usuario que el software debe proporcionar al usuario para una perfecta interacción.

La especificación de requisitos de software establece la base de un acuerdo entre los clientes y los contratistas o proveedores sobre cómo debe funcionar el producto de software (en un proyecto impulsado por el mercado, estos papeles pueden ser desempeñados por las divisiones de marketing y desarrollo). La especificación de los requisitos del software es una evaluación rigurosa de los requisitos antes de las fases más específicas de diseño del sistema, y su objetivo es reducir el rediseño posterior. También debe proporcionar una base realista para estimar los costes, riesgos y plazos del producto. Utilizadas adecuadamente, las especificaciones de requisitos de software pueden ayudar a evitar el fracaso del proyecto de software.

El documento de especificación de requisitos de software enumera los requisitos suficientes y necesarios para el desarrollo del proyecto. Para derivar los requisitos, el desarrollador necesita tener una comprensión clara y profunda de los productos en desarrollo. Esto se logra a través de comunicaciones detalladas y continuas con el equipo del proyecto y el cliente a lo largo del proceso de desarrollo de software.

El SRS puede ser una de las descripciones de elementos de datos entregables de un contrato o tener otras formas de contenido exigidas por la organización.

Típicamente un SRS es escrito por un escritor técnico, un arquitecto de sistemas o un programador de software.