Besoins et exigences
Introduction
L’objectif de ce chapitre est de bien comprendre la notion de besoin et celle, également très importante, d’exigence, ainsi que de présenter les principaux enjeux d’une bonne expression des besoins. Nous reviendrons également sur l’ingénierie des exigences, discipline extrêmement importante dans le domaine du développement d’un logiciel ou d’un système. Enfin, nous finirons par sensibiliser le lecteur aux complémentarités, aux spécificités et aux points d’attention de l’expression des besoins et de l’ingénierie des exigences dans un contexte agile.
Différence entre besoin et exigence
Trop souvent, que ce soit dans le cadre d’interventions sur le terrain ou lors de la lecture de différents articles sur le Web, nous constatons que les termes « besoin » et « exigence » sont employés indifféremment pour désigner quelque chose exprimé par l’utilisateur d’un produit. Alors parle-t-on de la même chose ou non ? Voyons si ces deux notions sont réellement identiques ou si elles cachent des concepts différents. Pour commencer à répondre à la question ci-dessus, il convient de revenir sur les définitions de ces deux mots.
1. Besoin
Lorsque nous recherchons la définition d’un mot, le premier réflexe est de regarder dans un dictionnaire. La définition donnée par le dictionnaire Larousse ne nous aide pas trop et apporte même de la confusion puisque le terme « besoin » est défini en utilisant le mot « exigence ». Ainsi, on y trouve la définition suivante : "un besoin est une exigence née d’un sentiment de manque, de privation de quelque chose qui est nécessaire à la vie organique", ou bien "un besoin est une chose considérée comme nécessaire à l’existence".
Un autre réflexe est de consulter les différentes normes et nombreux standards. Dans la norme AFNOR X50-150, il est précisé qu’un besoin est une nécessité, un désir, un souhait, une envie, un manque ou une insatisfaction éprouvé par un utilisateur, un client..., par ce que l’on appelle une partie prenante. Pour notre cas, cette définition nous convient mieux et c’est celle que nous retiendrons dans la suite de cet ouvrage.
Un besoin est une nécessité, un désir, un souhait, une envie,
un manque ou une insatisfaction éprouvé par une partie prenante.
Un besoin peut être également une idée ou une proposition de faire quelque chose, comme une idée de changement, par exemple. Cette idée peut être le résultat d’un travail individuel, d’une réflexion sur un sujet ou le résultat d’un travail collectif issu d’un atelier...
Enjeux principaux
Les enjeux d’une bonne expression des besoins sont nombreux. Si nous devions en retenir seulement cinq, ce serait vraisemblablement les suivants :
-
Satisfaction des utilisateurs (et des clients).
-
Communication entre les parties prenantes.
-
Collaboration entre les parties prenantes.
-
Maîtrise du coût, du délai et du périmètre.
-
Activités du projet ciblées sur des buts essentiels.
1. Satisfaction des clients et des utilisateurs
Un produit de qualité est un produit qui satisfait ses utilisateurs ; et satisfaire les utilisateurs d’un produit, c’est répondre aux exigences des utilisateurs. En agile, la satisfaction des utilisateurs se mesure par rapport à la valeur délivrée par la solution. Plus cette valeur est grande, plus la satisfaction des utilisateurs est au rendez-vous.
Les activités d’expression du besoin doivent donc être orientées valeur. Tout besoin doit être challengé par rapport à l’importance qu’on lui accorde. Nous avons bien évidemment une échelle de valeur entre les besoins car tous ne sont pas considérés comme apportant la même valeur. Les besoins sont émis par les parties prenantes (utilisateurs, clients…) et doivent être priorisés de manière relative les uns par rapport aux autres.
2. Communication entre les parties prenantes
La communication est la base de la compréhension entre les personnes. C’est par des signaux verbaux et non verbaux que nous établissons des relations avec les autres et développons une appréciation les uns envers les autres. Au premier abord, les signaux non verbaux sont plus déterminants que les paroles. Cependant, par la suite, la communication verbale devient l’outil principal de confirmation ou de correction de cette première impression.
Lorsque de nombreuses parties prenantes sont impliquées dans un projet, des problèmes liés à la communication verbale apparaissent nécessairement. Ces problèmes génèrent au mieux des incompréhensions, des ambiguïtés, et au pire des conflits entre les parties...
Ingénierie des exigences
L’ingénierie des exigences est une discipline qui regroupe un ensemble d’activités, de méthodes, de techniques et d’outils consistant principalement à établir et à maintenir un référentiel d’exigences propre à un produit. C’est une discipline qui appartient au domaine de l’ingénierie système et nous la retrouvons dans la description de nombreux frameworks ou domaines d’études, comme par exemple la Business Analyse.
L’ingénierie des exigences est la base de tout projet de réalisation d’un produit. Elle est présente sur tout le cycle de vie du produit et s’applique quelle que soit la manière de construire le produit, y compris en agile.
Fred Brooks, auteur de l’expression « Pas de balle en argent » (traduction littérale de No Silver Bullet), affirme qu’il n’y a pas de solution miracle en génie logiciel, et que la chose la plus difficile à réaliser lorsque l’on souhaite construire un système est de définir ce qu’il doit faire.
L’ingénierie des exigences distingue les activités de développement des exigences et les activités de gestion des exigences, que nous détaillerons un peu plus loin.
Le référentiel d’exigences sert à tracer les exigences et à garantir la satisfaction du besoin à toutes les étapes du cycle de vie du développement du produit. Le référentiel est la base de la collaboration entre les équipes.
Figure 8 - Collaboration autour du référentiel d’exigences
1. Principes d’ingénierie
Vous allez comprendre que maintenant les principes d’ingénierie décrits ci-dessous trouvent également toute leur place dans un contexte agile.
Pour mener à bien un projet, il est nécessaire de réaliser un certain nombre d’activités : analyse (ou étude), conception, réalisation, test, mise en service, maintenance. Ces activités doivent être réalisées avec rigueur et discipline, y compris dans un contexte agile. Il est donc fortement conseillé de définir des principes qui vont guider de manière logique...
Déclinaison opérationnelle de l’ingénierie des exigences en agile
1. Valeurs agiles en ingénierie des exigences
Alors que l’ingénierie des exigences est une discipline qui commence à être reconnue par les organisations qui définissent et conçoivent des systèmes complexes, nous assistons dans le même temps à la montée en puissance de la gestion de projet agile.
Dans ce nouveau contexte organisationnel, nous ne pouvons pas nous empêcher de nous poser les questions suivantes : retrouvons-nous les quatre valeurs de l’agilité en ingénierie des exigences ? Si oui, sous quelle forme les trouve-t-on ? Et comment peuvent-elles être déclinées ?
L’équipe - Les individus et leurs interactions
En ingénierie des exigences, les parties prenantes constituent la source principale des exigences. Un objectif fondamental de l’ingénierie des exigences est de comprendre les désirs et les besoins des parties prenantes et d’en extraire des exigences, ce qui se trouve être la mission principale d’un Product Owner en agile. Les utilisateurs d’un produit sont également des parties prenantes et leurs exigences représentent des conditions ou des capacités requises pour résoudre un problème ou atteindre un objectif.
Le processus de développement des exigences, qui produit les exigences, est un processus cognitif qui repose sur une communication intensive et sur l’action réciproque entre les parties prenantes et l’équipe en charge de la définition et de la réalisation du produit. Les processus et les outils sont importants pour manipuler le contenu souvent complexe et soutenir ce processus cognitif.
Néanmoins, cette première valeur de l’agilité insiste sur le fait que les processus et les outils ne sont pas une fin en soi ; ils doivent être introduits de façon raisonnable et avec discernement, et doivent être utilisés avec soin et pragmatisme.
Le produit - Des logiciels opérationnels
L’ingénierie des exigences est la base de la compréhension des besoins des utilisateurs et de l’appropriation par l’équipe de développement de leurs exigences, afin qu’elle...