Requirements Lifecycle Management: How to Keep Requirements Accurate, Controlled, and Traceable
Learn how to trace, maintain, prioritize, and control requirements throughout...
Développer un bon produit ne se résume pas à y intégrer toutes les fonctionnalités requises. Il s'agit également de s'assurer que ces fonctionnalités fonctionnent correctement une fois le produit lancé.
Imaginez une équipe en train de développer une application web. Elle a réussi à mettre en place le système de connexion, mais celui-ci met entre 15 et 20 secondes à se charger et plante lorsque 30 à 50 utilisateurs tentent de se connecter simultanément. Ces problèmes ne sont pas liés à des fonctionnalités manquantes du système ; ils concernent les performances de celui-ci.
C'est là que les exigences non fonctionnelles entrent en jeu. Elles sont définies lors de la phase de planification du développement du produit, ce qui garantit la satisfaction des utilisateurs et la réussite commerciale.
Selon une étude menée par l'Institut Carnegie Mellon, 60 à 80 % du coût du développement d'un produit sont imputables aux retouches, c'est-à-dire à la correction des bogues résultant d'exigences manquantes, en particulier d'exigences non fonctionnelles.
Cet article traite de la définition des exigences non fonctionnelles, de la distinction entre exigences fonctionnelles et non fonctionnelles, des types courants d'exigences non fonctionnelles accompagnés d'exemples, ainsi que de conseils pour rédiger des exigences non fonctionnelles efficaces.
Les exigences non fonctionnelles (NFR) sont des spécifications qui décrivent les capacités opérationnelles d'un système. En termes simples, plutôt que de définir les fonctionnalités du système, les NFR définissent comment le système doit se comporter et quel niveau de performance il doit atteindre dans divers scénarios.
Les NFR mettent l'accent sur la vitesse, la sécurité, la facilité d'utilisation et la fiabilité du système, ainsi que sur sa capacité à évoluer au fil du temps à mesure que la base d'utilisateurs s'élargit. Elles aident ainsi les développeurs à définir des attentes claires quant au comportement du système.
Par exemple, une boutique en ligne peut avoir des NFR, tels que :
Grâce à des exigences non fonctionnelles clairement définies, les développeurs peuvent mettre au point un système fiable, capable de répondre aux attentes des utilisateurs et des parties prenantes. Lorsque ces exigences sont négligées, les équipes ont souvent du mal à atteindre leurs buts et objectifs.
L'équipe de développement de produits traite principalement deux types d'exigences : les exigences fonctionnelles et les exigences non fonctionnelles.
Comme leur nom l'indique, les exigences fonctionnelles définissent les fonctionnalités dont le système doit disposer pour répondre aux besoins des utilisateurs. Voici un exemple d'exigence fonctionnelle pour un système de location de voitures : « Les utilisateurs doivent pouvoir comparer plusieurs voitures. »
En revanche, les exigences non fonctionnelles décrivent le comportement attendu du système. Plutôt que d'ajouter de nouvelles fonctionnalités, elles garantissent que le système soit accessible aux utilisateurs en toute circonstance, qu'il soit évolutif, qu'il protège les données des utilisateurs, etc. Par exemple, une exigence non fonctionnelle dans un système de location de voitures pourrait être la suivante : « 1 000 utilisateurs simultanés doivent pouvoir réserver leur voiture en même temps. »
Examinons de plus près ces différences dans le tableau ci-dessous.
Aspect | Exigence fonctionnelle | Exigence non fonctionnelle |
|---|---|---|
Objectif | Ce que le système devrait faire | Quelles devraient être les performances du système ? |
En bref | Fonctionnalités et actions de l'utilisateur | Performances, sécurité, fiabilité, convivialité, etc. |
défini par | Principalement définis par les développeurs, les utilisateurs finaux et d'autres parties prenantes. | Principalement défini par les concepteurs de systèmes. |
Essais | Les cas de test fonctionnels servent à tester les fonctionnalités clés du produit. | Les NFR sont testés à l'aide de différentes méthodes, telles que les tests de performance et les tests de charge. |
Visibilité | Généralement visible pour l'utilisateur final | C'est surtout en coulisses, mais cela a une incidence sur l'expérience utilisateur. |
Conséquences en cas de manquement | Certaines fonctionnalités peuvent ne pas fonctionner, mais les autres fonctionnalités du système fonctionnent normalement. | L'ensemble du système risque de ralentir ou de planter. |
Les exigences non fonctionnelles sont regroupées en fonction de domaines spécifiques tels que les performances, la sécurité, la convivialité, etc. Les équipes chargées de la gestion des exigences doivent bien comprendre chaque type d'exigence pour assurer la réussite du projet.
Nous avons présenté ici 9 types de NFR, accompagnés d'exemples.
Les exigences de performance portent principalement sur la rapidité et l'efficacité d'un système. Elles déterminent la vitesse à laquelle le système doit traiter les demandes des utilisateurs et y répondre. Les utilisateurs sont souvent frustrés lorsqu'ils utilisent des systèmes peu performants, ce qui entraîne des taux de rebond élevés.
L'évolutivité désigne la capacité d'un système à s'adapter à une croissance tout en conservant ses performances. Lorsque le nombre d'utilisateurs ou les demandes de traitement de données augmentent, un système évolutif continue de fonctionner sans qu'il soit nécessaire de le reconstruire entièrement.
Les exigences en matière d'évolutivité sont essentielles pour les entreprises qui prévoient une croissance future ou des pics de trafic saisonniers. Si ces exigences ne sont pas prises en compte, le système risque de tomber en panne lorsqu'il ne sera plus en mesure de gérer la charge pendant les pics de trafic.
Les exigences en matière de disponibilité définissent le temps pendant lequel le système doit rester accessible aux utilisateurs. La haute disponibilité du système réduit considérablement les risques d'indisponibilité et renforce la confiance des utilisateurs. Pour certains systèmes, même quelques minutes d'indisponibilité peuvent entraîner des pertes se chiffrant en millions de dollars, ainsi que la perte d'utilisateurs et d'une partie de la réputation.
Les exigences de portabilité (NFR) portent sur la facilité avec laquelle le système peut s'adapter à différents environnements, notamment les systèmes d'exploitation, les fournisseurs de services cloud ou les appareils. Un système portable permet de gagner du temps et de réduire les efforts lors du passage de la phase de développement à la production ou lors de l'extension à de nouvelles plateformes.
Les exigences fonctionnelles non fonctionnelles (NFR) relatives à la compatibilité définissent le niveau d'interopérabilité du système avec d'autres systèmes, logiciels ou matériels. Cet aspect est crucial dans les environnements où le système doit se connecter à des API, des bases de données, des navigateurs ou des services tiers. Une compatibilité insuffisante peut entraîner des dysfonctionnements, des plaintes des utilisateurs et des problèmes d'intégration.
Les exigences en matière de fiabilité permettent d'évaluer la fréquence à laquelle le système fonctionne sans défaillance, même en cas d'événements imprévus. Elles revêtent une importance particulière pour les applications telles que les logiciels bancaires, les systèmes de santé, etc., que les utilisateurs consultent quotidiennement.
Les exigences non fonctionnelles (NFR) relatives à la maintenabilité définissent la facilité et la rapidité avec lesquelles le système peut être mis à jour ou corrigé. Elles englobent le temps et les ressources nécessaires à la maintenance du système. La maintenabilité revêt toujours une importance particulière dans les projets de grande envergure ou pour les produits faisant l'objet d'améliorations constantes.
Les exigences fonctionnelles non fonctionnelles (NFR) en matière de sécurité définissent la manière dont le système doit protéger et préserver les données sensibles des utilisateurs contre les accès non autorisés, les failles de sécurité et les cyberattaques. Elles portent principalement sur la mise en œuvre de mécanismes d'authentification et de chiffrement destinés à protéger les données.
L'ergonomie porte sur la facilité avec laquelle les utilisateurs peuvent interagir avec le système. Un produit très ergonomique améliore l'expérience utilisateur et peut être adopté par de nouveaux utilisateurs avec un minimum de formation. Une ergonomie médiocre engendre de la frustration et augmente les coûts d'assistance.
Les équipes de développement de produits se concentrent principalement sur les exigences fonctionnelles, mais ne prêtent pas attention aux exigences non fonctionnelles. Elles estiment que si la fonctionnalité fonctionne, le travail est terminé. Elles ne tiennent toutefois pas compte des performances, de la fiabilité, de la sécurité et d'autres exigences non fonctionnelles.
Voici comment le fait de ne pas tenir compte des exigences non fonctionnelles a entraîné des défaillances majeures dans des systèmes réels.
En 2018, Amazon a connu une panne majeure lors de l'événement Prime Day. Le nombre d'utilisateurs du site a augmenté de manière inattendue, et le système n'a pas pu faire face à l'afflux. En conséquence, le site web d'Amazon s'est bloqué et les acheteurs ont reçu des messages d'erreur. Amazon a perdu entre 90 et 100 millions de dollars au cours de cette panne d'une heure.
Cette panne est due à une mauvaise gestion de l'évolutivité. Le système doit donc être en mesure de s'adapter à toute situation et doit être disponible la plupart du temps.
En 2012, Knight Capital a lancé son logiciel de trading sans l'avoir soumis à des tests adéquats. Moins de 45 minutes après son lancement, le système a commencé à passer des ordres erronés qui ont entraîné une perte de 440 millions de dollars pour l'entreprise.
Cette défaillance du système s'est produite parce que la fiabilité du logiciel n'avait pas été testée correctement et qu'il n'existait aucun dispositif de sécurité permettant d'empêcher les actions défectueuses.
Au Royaume-Uni, la banque TSB a connu de graves difficultés en 2018 après avoir transféré les données de ses clients vers un nouveau système. La migration des données de l'ancienne plateforme vers la nouvelle s'est déroulée sans encombre. Cependant, par la suite, de nombreux clients n'ont pas pu se connecter, certains ont constaté des informations erronées dans leur profil et quelques utilisateurs ont pu consulter les données personnelles d'autres personnes. Au final, la banque a dû débourser environ 330 millions de livres sterling pour remédier à ces problèmes et a perdu la confiance de ses clients.
Cet échec s'explique par le manque de fiabilité du système et la faiblesse des mesures de sécurité.
Comme nous l'avons vu précédemment, les exigences non fonctionnelles sont essentielles à la réussite d'un projet. Cependant, il n'est pas facile de les formuler correctement. De nombreuses équipes commettent des erreurs courantes qui peuvent entraîner des retards ou un mauvais fonctionnement du système par la suite. Les équipes doivent suivre les bonnes pratiques ci-dessous pour éviter ces erreurs courantes et rédiger des spécifications logicielles de qualité.
Il est important de documenter les exigences non fonctionnelles afin de garantir que chaque membre de l'équipe et chaque partie prenante ait une vision commune des objectifs du projet. Grâce à une documentation claire, les équipes peuvent réduire au minimum le risque de malentendus, qui peuvent entraîner des retouches coûteuses.
Nous avons présenté ici quelques fonctionnalités clés de Modern Requirements4DevOps qui permettent de simplifier le processus de création de la documentation des exigences.
Grâce aux fonctionnalités susmentionnées de Modern Requirements4DevOps, les équipes peuvent créer des documents de spécifications non fonctionnelles bien structurés et cohérents. De plus, avec l'aide de Copilot4DevOps, les équipes peuvent générer en quelques secondes des documents précis à partir de spécifications non fonctionnelles prédéfinies.
Les exigences fonctionnelles définissent les principales caractéristiques du système, tandis que les exigences non fonctionnelles définissent ses capacités opérationnelles, notamment ses performances, sa disponibilité, son évolutivité, etc.
Les modèles d'exigences non fonctionnelles offrent une structure prédéfinie pour définir ces exigences. Ils garantissent ainsi la cohérence entre toutes les exigences non fonctionnelles.
Oui, Copilot4DevOps permet aux équipes d'extraire les exigences non fonctionnelles (NFR) à partir de textes bruts, de documents, de schémas, etc., et de les enregistrer directement dans l'espace de travail Azure.
Il existe de nombreux outils sur le marché, mais si vous utilisez Azure DevOps pour la gestion de projets, Modern Requirements4DevOps peut s'avérer un choix de premier ordre.
L'équipe doit mettre en place des étapes régulières pour examiner et mettre à jour les NFR. Les équipes doivent également les réexaminer après chaque mise à jour majeure du système.
✅ Définissez, gérez et suivez les exigences dans Azure DevOps
✅ Collaborez en toute fluidité entre équipes soumises à des réglementations
✅ Commencez GRATUITEMENT — aucune carte de crédit requise
Learn how to trace, maintain, prioritize, and control requirements throughout...
A deep dive into BABOK strategy analysis. Covers current state...
Learn how to write clear, testable requirements that prevent project...
End-to-end requirements management in Azure DevOps.
AI-powered assistance for DevOps workflows.
Autonomous AI agents for DevOps execution.
Real-time data sync across tools and systems.
Designed to work natively within Azure DevOps, Modern Requirements extends the platform with powerful capabilities that help teams capture, manage, and validate requirements more effectively.