# Gestion des exigences

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.).

## Indépendance de la classification des exigences

On peut adopter différentes classifications des exigences selon l'approche ou l'organisation préexistante, par exemple :
* En fonction des personnes qui les émettent :
       Exigences utilisateurs, exigences-métier, exigences techniques.
* En fonction de leur niveau de précision :
       Objectifs, spécification générales, spécification détaillées (certifications, label environnemental...), scénario d'utilisation.
* En fonction de la nature de l'exigence :
       Fonctionnalité, ergonomie (utilisabilité), de robustesse, performance, sécurité.
On retrouve presque toujours des problématiques récurrentes auxquelles la gestion des exigences apporte des solutions :
* Collecte,
* Validation,
* Gestion des priorités,
* Gestion du changement,
* Gestion de la qualité,
* Liens avec le reste du projet et/ou avec le contexte.

## Traçabilité des exigences

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.

### Définition

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 :
* D'où vient une exigence ? (Quel besoin cette exigence couvre-t-elle ? Pourquoi a-t-on conçu la solution de cette manière et quelles étaient les autres possibilités ?)
* Cette exigence est-elle nécessaire ?
* Où met-on en œuvre cette exigence ?
* Comment interpréter cette exigence ?
* Quelle décision de conception affecte la mise en œuvre de l'exigence ?
* Cet élément de conception est-il nécessaire ?
* La solution réalisée est-elle conforme aux exigences ?
* Comment testera-t-on cette exigence ?
* Toutes les exigences sont-elles prises en compte ? (peut se lire : est-ce que le projet est terminé ?)
* Et sinon, quel est le pourcentage d'exigences prises en compte ? Et quelles sont les exigences non (encore) prises en compte ?
* Quel est l'impact du changement d'une exigence ?

### Illustration

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).

## CMMI

Le Capability Maturity Model Integration décrit les activités liées à la gestion des exigences dans certains modèles de conception logicielle :
* Comprendre et intégrer les exigences au projet,
* Valider les exigences,
* Gérer le changement d'exigences,
* Maintenir la traçabilité des exigences,
* Gérer les incohérences entre le projet et les exigences.

### Comprendre et intégrer les exigences au projet

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 :
* De maintenir une liste des acteurs habilités à exprimer les exigences,
* De maintenir des critères pour accepter ou non les exigences,
* D'analyser des exigences vis-à-vis des critères,
* De formaliser l'acceptation d'une exigence.

### Valider les exigences

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 à :
* Une analyse d'impact d'une exigence ou d'un changement d'exigence
* Un document formalisant l'engagement des parties sur les exigences et leurs impacts.

### Gérer le changement

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.

## Cela peut impliquer de produire

* Un état des exigences,
* Une base de données des exigences,
* Une base de données des décisions concernant les exigences.

### Maintenir la traçabilité des exigences

On parle de traçabilité bidirectionnelle. Notamment on doit pouvoir tracer une exigence depuis son plus haut niveau jusqu'au plus bas.

## Wiki et exigences

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.

## Outils

Il existe de nombreux outils de gestion des exigences :
* Integrity lié avec Windchill PDMLink de l'éditeur PTC
* IBM Engineering Requirements Management DOORS Family (anciennement IBM Rational DOORS)
* IBM Engineering Requirements Management DOORS Next
* Envision Requirements
* Jama Software
* LDRA TBreq
* PowerAMC intègre un outil de gestion d'exigences qui fonctionne avec Microsoft Office
* Polarion de Siemens intègre un module de gestion des exigences
* Reqtify
* Visure Requirements ALM
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.