Spécification des besoins logiciels

Pour une couverture plus large de ce sujet, voir Besoins logiciels.

Une spécification des besoins logiciels (SRS) est une description d’un système logiciel à développer. Elle est modélisée après la spécification des exigences métier (CONOPS), également connue sous le nom de spécification des exigences des parties prenantes (StRS). La spécification des exigences logicielles énonce les exigences fonctionnelles et non fonctionnelles, et elle peut inclure un ensemble de cas d’utilisation qui décrivent les interactions que le logiciel doit fournir à l’utilisateur pour une interaction parfaite.

La spécification des exigences logicielles établit la base d’un accord entre les clients et les entrepreneurs ou les fournisseurs sur la façon dont le produit logiciel doit fonctionner (dans un projet axé sur le marché, ces rôles peuvent être joués par les divisions marketing et développement). La spécification des exigences logicielles est une évaluation rigoureuse des exigences avant les étapes plus spécifiques de la conception du système, et son objectif est de réduire les remaniements ultérieurs. Elle doit également fournir une base réaliste pour l’estimation des coûts, des risques et des délais du produit. Utilisées de manière appropriée, les spécifications des exigences logicielles peuvent aider à prévenir l’échec des projets logiciels.

Le document de spécification des exigences logicielles énumère les exigences suffisantes et nécessaires au développement du projet. Pour dériver les exigences, le développeur doit avoir une compréhension claire et approfondie des produits en cours de développement. Cela est possible grâce à des communications détaillées et continues avec l’équipe de projet et le client tout au long du processus de développement du logiciel.

Le SRS peut être l’une des descriptions d’éléments de données livrables d’un contrat ou avoir d’autres formes de contenu mandaté par l’organisation.

Typiquement, un SRS est rédigé par un rédacteur technique, un architecte système ou un programmeur logiciel.