Exigences non fonctionnelles: l'angle mort du chef de projet

Les exigences non fonctionnelles sont souvent négligées en début de projet. Performance, sécurité, maintenabilité: comment les identifier et les intégrer dès le cadrage.

Un budget qui se joue après la livraison

Dans la plupart des projets logiciels, l’essentiel de l’attention se concentre sur les fonctionnalités. Le backlog regorge de user stories, les comités de pilotage valident des écrans, les sponsors s’enthousiasment pour de nouvelles capacités métier. Pendant ce temps, les exigences non fonctionnelles (NFR, Non-Functional Requirements), c’est-à-dire les critères de qualité du système comme la disponibilité, la fiabilité, la performance ou la maintenabilité, restent en arrière-plan. Elles figurent parfois dans un document d’architecture que personne ne relit après le kick-off.

Cette asymétrie d’attention a un coût mesurable. Selon plusieurs études, notamment une analyse publiée dans PMC, la maintenance représente entre 50% et 80% du coût total de possession (TCO, Total Cost of Ownership) d’un système logiciel. Autrement dit, pour chaque franc investi dans le développement, il faut prévoir deux à quatre francs pour l’exploitation et la maintenance. Le chef de projet qui ne prend pas cette réalité en compte dès la phase de planification construit un système dont le coût réel lui échappe.

Pourquoi les NFR disparaissent du radar

Plusieurs mécanismes expliquent cette sous-représentation systématique des exigences non fonctionnelles dans les plans de projet.

Le premier est cognitif. Les fonctionnalités sont tangibles: on peut les montrer, les tester, les démontrer à un sponsor. La disponibilité ou l’exploitabilité (operability), c’est-à-dire la capacité du système à être maintenu et supervisé en production, ne se voient que lorsqu’elles font défaut. Un système qui fonctionne 99,9% du temps ne génère aucune gratification visible; un système qui tombe une heure au mauvais moment provoque une crise.

Le deuxième est organisationnel. Dans beaucoup d’entreprises, les équipes de développement et les équipes d’exploitation répondent à des hiérarchies différentes. Le chef de projet pilote le développement; l’exploitation relève de l’IT opérationnel. Les exigences non fonctionnelles tombent dans l’interstice entre les deux, sans propriétaire clair.

Le troisième est méthodologique. Les frameworks agiles populaires structurent le travail autour de la valeur utilisateur. C’est une force pour prioriser les fonctionnalités, mais cela crée un biais systémique contre les travaux d’infrastructure, de monitoring ou de résilience qui ne produisent pas de valeur directement visible pour l’utilisateur final.

Le syndrome “works on my machine”

L’expression est devenue un cliché dans les équipes techniques, mais elle révèle un problème d’arbitrage plus profond. Quand un développeur considère qu’un composant fonctionne parce qu’il tourne sur son poste de travail, il évalue la qualité du système exclusivement sous l’angle du développement. Les contraintes de production (charge concurrente, reprise sur panne, supervision, déploiement automatisé) ne font pas partie de sa définition du “terminé”.

Le chef de projet porte une responsabilité directe dans cette situation. Si la Definition of Done ne contient aucun critère opérationnel, si les revues de sprint n’incluent jamais l’équipe d’exploitation, si les SLO (Service Level Objectives, objectifs mesurables de niveau de service définis avec les parties prenantes) ne sont pas traduits en exigences techniques, alors le projet livre des fonctionnalités sans garantie qu’elles survivront au contact de la production.

Ce n’est pas un problème technique mais un problème de gouvernance que le chef de projet est le mieux placé pour résoudre, parce qu’il est le seul acteur dont le mandat couvre l’ensemble du cycle de vie du livrable.

Structurer l’arbitrage entre fonctionnel et opérationnel

Reconnaître le problème ne suffit pas. Le chef de projet a besoin de mécanismes concrets pour que les exigences non fonctionnelles reçoivent un traitement équitable dans la priorisation.

La première action consiste à rendre les NFR explicites dans le backlog. Chaque exigence non fonctionnelle significative devrait avoir sa propre entrée, avec des critères d’acceptation mesurables. “Le système doit être rapide” n’est pas une exigence; “le temps de réponse moyen doit rester inférieur à 200ms sous une charge de 500 utilisateurs simultanés” en est une. AltexSoft propose une taxonomie utile pour structurer cette démarche.

La deuxième action est d’impliquer les équipes d’exploitation dès le cadrage. Les architectes opérationnels savent quelles contraintes pèseront sur le système en production. Leur absence des ateliers de conception est une des causes principales du décalage entre ce qui est livré et ce qui est exploitable.

La troisième action porte sur le suivi financier. Le chef de projet devrait demander une estimation du coût d’exploitation annuel dès la phase de business case, et la confronter au coût de développement. Les données compilées par Idealink montrent que la plupart des organisations sous-estiment ce ratio de façon significative. Cette information transforme la conversation avec le sponsor: il ne s’agit plus de demander du temps pour “de la technique”, mais de présenter le coût réel de la décision.

La tension business-opérations: un arbitrage permanent

Le sponsor veut livrer vite, l’équipe d’exploitation veut un système stable et le chef de projet se trouve au point de friction entre ces deux forces légitimes.

La tentation est de céder systématiquement au time-to-market, parce que la pression business est immédiate alors que les conséquences opérationnelles sont différées. Un système livré sans monitoring adéquat fonctionne parfaitement pendant les premières semaines. Les problèmes apparaissent plus tard, quand la charge augmente, quand le développeur principal quitte l’équipe, quand une mise à jour de sécurité casse une dépendance non documentée.

À ce stade, le coût de remédiation dépasse largement ce qu’aurait coûté une prise en compte initiale des exigences opérationnelles. Les équipes de support sont mobilisées en urgence, les correctifs sont déployés sans tests suffisants et le système entre dans un cycle de dette technique qui s’auto-alimente.

Le chef de projet expérimenté sait que cet arbitrage ne se gagne pas en opposant la technique au business. Il se gagne en traduisant les exigences opérationnelles dans le langage du sponsor: coût d’indisponibilité par heure, risque de perte de données, délai de reprise après incident. Quand la disponibilité (availability, le pourcentage de temps où le système est opérationnel) passe de 99% à 99,9%, la différence semble négligeable en pourcentage, mais elle représente une réduction de l’indisponibilité annuelle de 87 heures à 8,7 heures.

Quand le business dicte tout

Il existe des situations où la pression commerciale est si forte que toute exigence non technique est considérée comme un obstacle. Le chef de projet qui accepte sans discussion cette hiérarchie des priorités ne rend service à personne. Un système livré rapidement mais impossible à maintenir génère plus de frustration et de coûts qu’un système livré avec quelques semaines de retard mais exploitable dans la durée.

Cela ne signifie pas qu’il faille bloquer chaque livraison au nom de la perfection technique. L’arbitrage raisonné consiste à identifier les NFR critiques (celles dont l’absence menace la viabilité du système en production) et à les sanctuariser, tout en acceptant des compromis sur les NFR souhaitables. La distinction entre “le système doit résister à une panne de serveur” et “le système devrait supporter un pic de charge saisonnier” n’est pas la même conversation avec le sponsor.

Le chef de projet qui maîtrise cette distinction transforme un conflit récurrent entre développement et exploitation en un processus de décision structuré. Les exigences non fonctionnelles cessent d’être un sujet technique relégué aux architectes pour devenir un élément de gouvernance du projet, au même titre que le périmètre fonctionnel ou le budget.