La gestion des exigences consiste à gérer les exigences hiérarchisées d'un projet, à détecter les incohérences entre elles et à assurer leur traçabilité.
Dans de nombreux métiers, l'expression de ces exigences donne lieu à une quantité de documents dont la cohérence et la qualité conditionnent le succès ou l'échec des projets concernés.
Il existe des logiciels spécialisés qui permettent d'aider à la réalisation de cette activité.
Certains cahiers des charges (en haute qualité environnementale appliquée au bâti, par exemple) peuvent contenir des « performanciels » et des « exigenciels », comprenant des niveaux de résultats attendus que l'architecte et la maîtrise d'œuvre s'engagent à atteindre (obligation de résultats, et parfois de moyens ; par exemple utilisation de panneaux solaires, d'isolants produits à partir de matériaux végétaux issus de l'agriculture biologique, etc.).
On peut adopter différentes classifications des exigences selon l'approche ou l'organisation préexistante, par exemple :
On retrouve presque toujours des problématiques récurrentes auxquelles la gestion des exigences apporte des solutions :
La traçabilité des exigences est une sous-discipline et un concept clé mis en avant de la gestion des exigences dans le domaine du développement de logiciel et de l'ingénierie des systèmes.
La traçabilité des exigences est la possibilité de lire facilement ce qu'il est advenu et ce qu'il est censé advenir de quelque chose.
La traçabilité des exigences consiste à documenter la vie des exigences. Il doit être possible de retracer jusqu'à leur origine chacune des exigences et chacun des changements les affectant ; les exigences doivent donc être documentées pour achever la traçabilité.
Les exigences proviennent souvent de sources diverses, telles que l'équipe marketing, les clients ou les utilisateurs. L'ensemble de ces personnes ont des besoins pour le produit (ou système). Grâce à la traçabilité des exigences, chaque fonctionnalité implémentée pourra être reliée à une personne ou à un groupe l'ayant demandée durant la phase de définition des exigences.
Elle aide à répondre aux questions du type :
Un jour un constructeur automobile décida de réduire les coûts sur l'un de ses modèles phares. Une équipe se pencha sur les spécifications du modèle et chercha des axes de réduction des coûts. Quelqu'un s'avisa que le modèle était conçu pour résister à un vent arrière, avec de la pluie, de 200 km/h (exigence produit) ce qui entraînait des coûts de fabrication importants. On décida donc de changer cela en allégeant la fermeture du coffre à bagage situé à l'arrière (exigence composant). Ce n'est qu'à l'automne, chez les concessionnaires, qui trouvaient de l'eau dans les coffres, que l'on prit en compte que les voitures étaient acheminées par train Express (exigence partie prenante)[1].
Le Capability Maturity Model Integration décrit les activités liées à la gestion des exigences dans certains modèles de conception logicielle :
Les parties prenantes du projet expriment des besoins, qui sont formulés sous forme d'exigences. Les responsables du projet, après avoir compris les exigences et en avoir vérifié la cohérence, les intègrent au projet.
Cela peut impliquer :
Pour garantir l'engagement des parties prenantes du projet, en ce qui concerne les impacts sur le projet d'une nouvelle exigence ou d'un changement, on évalue les conséquences sur le projet et on demande validation de l'exigence par les parties.
Cette activité peut donner lieu à :
Au cours d'un projet les exigences évoluent pour diverses raisons. Il est important de gérer efficacement les changements et les ajouts. Pour pouvoir évaluer correctement les impacts il est important que l'origine et la justification de tous les changements soient documentées. On peut en outre vouloir mesurer la volatilité des changements.
On parle de traçabilité bidirectionnelle. Notamment on doit pouvoir tracer une exigence depuis son plus haut niveau jusqu'au plus bas.
Un outil de gestion d'exigences doit avoir des caractéristiques proches de celles d'un wiki. Notamment il doit permettre la modification d'un même item par de nombreuses personnes (en tenant compte des autorisations attribuées à chaque personne), doit gérer les versions et l'historique.
Il existe de nombreux outils de gestion des exigences :
Note : L'environnement Microsoft Visual Studio intègre des modules de gestion d'exigences. L'une des caractéristiques des exigences étant d'être vérifiable, les outils ALM (précédemment Test Director puis Quality Center), édité par HP, Squash, et Hénix, et dont la principale activité est centrée autour de la définition de jeux de tests, possèdent eux aussi un module permettant de gérer les exigences. Enterprise Architect de Sparks permet aussi de gérer les exigences avec la traçabilité sur les composants ou les process impactés.