Passer au contenu

Exigences non fonctionnelles expliquées : exemples, types, outils

Quelles sont les exigences non fonctionnelles

Développer un bon produit ne consiste pas seulement à ajouter toutes les fonctionnalités requises. C’est aussi une question de savoir à quel point ces fonctionnalités fonctionnent au lancement du produit.

Imaginez une équipe développant une application web. Ils ont réussi à implémenter le système de connexion, mais il faut 15 à 20 secondes pour charger et ça plante quand 30 à 50 utilisateurs essaient de se connecter simultanément. Ces problèmes ne concernent pas l’absence de fonctionnalités du système; il s’agit de la performance du système.

C’est là que les exigences non fonctionnelles entrent en jeu. Ils sont définis lors de la phase de planification du développement du produit, ce qui assure la satisfaction des utilisateurs et le succès de l’entreprise.

Selon une étude menée par le Carnegie Mellon Institute, 60 à 80% du coût de développement d’un produit est attribué à la refonte — c’est-à-dire à la correction de bogues résultant d’exigences manquantes, en particulier celles non fonctionnelles.

Ce blogue couvre la définition des exigences non fonctionnelles, la distinction entre exigences fonctionnelles et non fonctionnelles, les types courants de NFR avec des exemples, ainsi que des conseils pour rédiger des exigences non fonctionnelles efficaces.

Qu’est-ce que les exigences non fonctionnelles (NFR)?

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 caractéristiques du système, les NFR définissent comment le système doit se comporter et comment il doit performer dans divers scénarios.

Les NFR se concentrent sur la vitesse, la sécurité, la facilité d’utilisation, la fiabilité du système, ainsi que sur la façon dont il devrait évoluer avec le temps à mesure que la base d’utilisateurs augmente. Ainsi, ils aident les développeurs à établir des attentes claires quant au comportement du système.

Par exemple, une boutique en ligne pourrait avoir des NFR, tels que :

  • La page produit devrait se charger en moins d’une seconde pour améliorer l’expérience utilisateur.
  • Le système devrait être disponible 99,9% du temps, même en période de pointe.
  • Les informations sensibles de l’utilisateur doivent être chiffrées pour des raisons de sécurité.

Avec des NFR clairs, les développeurs peuvent construire un système fiable capable de répondre aux attentes des utilisateurs et des parties prenantes. Lorsque les NFR sont ignorés, les équipes ont souvent du mal à atteindre les buts et objectifs.

Exigences fonctionnelles vs. non fonctionnelles : quelle est la différence?

L’équipe de développement produit traite principalement de deux types d’exigences : fonctionnelles et non fonctionnelles.

Comme son nom l’indique, les exigences fonctionnelles définissent les caractéristiques que le système devrait avoir pour répondre aux besoins des utilisateurs. Un exemple d’exigence fonctionnelle pour le système de location de voitures est « Les utilisateurs devraient pouvoir comparer plusieurs voitures. »

En revanche, les exigences non fonctionnelles décrivent comment le système devrait fonctionner. Plutôt que d’ajouter de nouvelles fonctionnalités, il garantit que le système est accessible aux utilisateurs dans toutes les situations, évolutif, protège les données des utilisateurs, etc. Par exemple, un NFR dans un système de location de voiture est « 1 000 utilisateurs simultanés devraient pouvoir réserver leur voiture en même temps. »

Comprenons davantage les différences dans le tableau ci-dessous.

Aspect
Exigences fonctionnelles
Exigence non fonctionnelle
Objectif
Ce que le système devrait faire
Comment le système devrait fonctionner
Focus
Fonctionnalités et actions des utilisateurs
Performance, sécurité, fiabilité, utilisabilité, etc.
Défini par
Principalement défini par les développeurs, les utilisateurs finaux et d’autres parties prenantes.
Principalement défini par des concepteurs de systèmes.
Essais
Les cas de test fonctionnels sont utilisés pour tester les caractéristiques clés du produit.
Les NFR sont testés selon différentes méthodes, telles que les tests de performance et de charge.
Visibilité
Habituellement visible pour l’utilisateur final
C’est surtout en coulisses, mais ça affecte l’expérience utilisateur.
Impact en cas de manque
Certaines fonctionnalités peuvent ne pas fonctionner, mais d’autres fonctionnalités du système fonctionnent normalement.
Tout le système peut ralentir ou planter.

Différents types d’exigences non fonctionnelles à connaître

Les exigences non fonctionnelles sont regroupées selon des domaines spécifiques comme la performance, la sécurité, l’utilisabilité, etc. Les équipes de gestion des exigences doivent bien comprendre chaque type pour assurer le succès du projet.

Ici, nous avons couvert 9 types de NFR avec des exemples.

Diagramme montrant les exigences de base non fonctionnelles comme l’ergonomie, la performance et la sécurité.
Catégories clés d’exigences de base non fonctionnelles en développement logiciel.

1. Exigences de performance

Les exigences de performance se concentrent sur la rapidité et l’efficacité de tout système. Il définit la rapidité avec laquelle le système doit traiter les demandes de l’utilisateur et y répondre. Les utilisateurs se frustrent souvent en utilisant des systèmes peu performants, ce qui entraîne des taux de rebond élevés.

Exemples (système d’IA générative)
  • Le système doit répondre aux requêtes de l’utilisateur dans un délai de 1,2 seconde.
  • Lors de la saisie de la requête dans la boîte d’entrée, la latence ne doit pas dépasser 500 ms.

2. Exigences de scalabilité

La scalabilité concerne la capacité du système à croître tout en restant performant. Lorsque les utilisateurs du système ou les demandes de traitement de données augmentent, un système évolutif fonctionne sans avoir besoin d’une reconstruction complète du système.

Les exigences de scalabilité sont importantes pour les entreprises qui acceptent la croissance future ou les pics saisonniers de trafic. Si les exigences de scalabilité sont ignorées, le système peut planter s’il ne peut pas gérer la charge pendant les heures de pointe.

Exemples
  • Le système de messagerie devrait continuer à fonctionner de façon fluide même si la base d’utilisateurs passe de 100 000 à 5 millions d’utilisateurs actifs.
  • Pendant la vente, la boutique en ligne devrait pouvoir gérer 10 fois le trafic sans aucune dégradation de performance.

3. Exigences de disponibilité

Les exigences de disponibilité décrivent combien de temps le système doit être accessible aux utilisateurs. La grande disponibilité du système réduit considérablement les risques d’arrêt et améliore la confiance de l’utilisateur. Pour certains systèmes, même quelques minutes d’arrêt peuvent entraîner la perte de millions de dollars, d’utilisateurs et de réputation.

Exemple
  • Le système bancaire en ligne devrait être disponible 99,95% du temps. Pour les activités de maintenance, le système peut avoir un temps d’arrêt de 30 minutes entre 2 h et 4 h du matin, heure locale.

4. Exigences de portabilité

Les NFR de portabilité concernent la facilité avec laquelle le système peut fonctionner avec différents environnements, y compris les systèmes d’exploitation, les fournisseurs cloud ou les appareils. Un système portable permet d’économiser du temps et des efforts lors du passage du développement à la production ou lors de l’expansion vers de nouvelles plateformes.

Exemples (plateforme de médias sociaux)
  • Une application devrait fonctionner sur tous les appareils mobiles.
  • Les utilisateurs Android et iOS devraient bénéficier des mêmes fonctionnalités de base.
  • Le système devrait être prêt pour conteneurs (par exemple, Docker) afin de supporter un déploiement rapide sur différents environnements cloud comme AWS, Azure ou GCP.

5. Exigences de compatibilité

Les NFR de compatibilité définissent à quel point le système fonctionne avec d’autres systèmes, logiciels ou matériels. Cela est important dans les environnements où le système doit se connecter à des API, des bases de données, des navigateurs ou des services tiers. Une mauvaise compatibilité peut entraîner des fonctionnalités défaillantes, des plaintes des utilisateurs et des problèmes d’intégration.

Exemples
  • L’option de partage d’écran dans une application de visioconférence devrait fonctionner sur les navigateurs mobiles et de bureau.
  • Un outil de gestion de projet devrait s’intégrer parfaitement à diverses plateformes comme Google Agendas, Slack, etc., sans que les utilisateurs aient à le configurer manuellement.

6. Exigences de fiabilité

Les exigences de fiabilité évaluent à quelle fréquence le système fonctionne sans défaillance, même lors d’événements inattendus. C’est important pour des applications comme les logiciels bancaires, les systèmes de santé, etc., que les gens utilisent quotidiennement.

Exemples (système de gestion des patients hospitaliers)
  • Le système devrait fonctionner sans panne pendant 99,95% du temps sur une période de 30 jours.
  • Lorsque la connexion à la base de données échoue, le système doit réessayer trois fois pour récupérer automatiquement.
  • Lorsque le système plante, il devrait annuler le dernier déploiement pour la récupération.

7. Exigences de maintenabilité

Les NFR de maintenabilité définissent la facilité et la rapidité avec lesquelles le système peut être mis à jour ou corrigé. Il couvre le temps et les ressources nécessaires à la maintenance du système. La maintenabilité est toujours importante dans les projets ou produits à grande échelle en constante amélioration.

Exemples (système CRM pour équipes de vente)
  • Tout bug devrait être corrigé dans les 30 minutes.
  • Les développeurs doivent pouvoir déployer la nouvelle version ou les mises à jour sans affecter les sessions utilisateur actives.

8. Exigences de sécurité

Les NFR de sécurité définissent comment le système doit protéger et sauvegarder les données sensibles des utilisateurs contre les accès non autorisés, les violations de sécurité et les cyberattaques. Cela inclut principalement la mise en place de mécanismes d’authentification et de chiffrement pour protéger les données.

Exemples (Application de négociation boursière)
  • Les données de l’utilisateur doivent être chiffrées lors d’une requête API entre le frontend et le backend du système pour mettre à jour les données.
  • Les utilisateurs doivent se connecter en utilisant l’authentification à deux facteurs (2FA) pour toutes les actions financières.
  • Le système devrait verrouiller un compte après cinq tentatives de connexion ratées et alerter l’utilisateur par courriel.

9. Exigences d’ergonomie

L’ergonomie met l’accent sur la facilité avec laquelle les utilisateurs interagissent avec le système. Un produit à grande utilisabilité améliore l’expérience utilisateur et peut être adopté par de nouveaux utilisateurs avec une formation minimale. Une mauvaise utilisabilité entraîne de la frustration et augmente les coûts de soutien.

Exemple
  • Dans l’application de livraison de nourriture en ligne, toutes les actions majeures (ajouter au panier, appliquer un coupon, recommander) devraient être accessibles en 2 tapotements ou moins sur mobile.

Pourquoi les exigences non fonctionnelles sont importantes : défaillances et leçons réelles

Les équipes de développement produit se concentrent principalement sur les exigences fonctionnelles, mais ne prêtent pas attention aux exigences non fonctionnelles. Les équipes pensent que si la fonctionnalité fonctionne, c’est fini. Cependant, ils ne tiennent pas compte de la performance, de la fiabilité, de la sécurité et d’autres NFR.

Voici comment le fait de sauter des exigences non fonctionnelles a mené à de graves défaillances dans les systèmes réels.

Amazon : Panne pendant le Prime Day (2018)

En 2018, Amazon a subi une panne majeure lors de l’événement Prime Day. Le nombre d’utilisateurs du site a augmenté de façon inattendue, et le système n’a pas pu les gérer. À cause de cela, le site Amazon a planté, et les acheteurs recevaient des messages d’erreur. Amazon a perdu près de 90 à 100 millions de dollars lors de cette panne d’une heure.

Cette panne est survenue à cause d’une mauvaise gestion de la scalabilité. Donc, le système doit toujours être prêt à évoluer dans toutes les situations et doit être disponible la plupart du temps.

Knight Capital : Défaillance du système de trading (2012)

En 2012, Knight Capital a lancé le logiciel de trading sans tests appropriés. Moins de 45 minutes après le lancement, le système a commencé à effectuer de mauvaises transactions qui ont causé à l’entreprise une perte de 440 millions de dollars.

Cette défaillance du système s’est produite parce que la fiabilité logicielle n’a pas été testée correctement, et qu’il n’y avait aucun contrôle de sécurité pour arrêter les actions défectueuses.

TSB Bank : Catastrophe de migration informatique (2018)

TSB Bank au Royaume-Uni a rencontré de sérieux problèmes en 2018 après avoir transféré les données clients vers un nouveau système. La migration des données de l’ancienne plateforme vers la nouvelle plateforme a été un succès. Mais après cela, beaucoup de clients n’ont pas pu se connecter, certains ont vu des informations incorrectes sur leur profil, et quelques utilisateurs ont pu voir les données privées d’autres personnes. Au final, la banque a payé environ 330 millions de livres sterling pour tout réparer et a perdu la confiance des clients.

Les raisons de cette défaillance étaient une faible fiabilité du système et des mesures de sécurité faibles.

Conseils et meilleures pratiques pour rédiger des exigences claires non fonctionnelles

Comme discuté précédemment, les exigences non fonctionnelles sont cruciales pour le succès d’un projet. Cependant, les écrire correctement est un défi. Beaucoup d’équipes rencontrent des erreurs courantes qui peuvent entraîner des retards ou un mauvais comportement du système par la suite. Les équipes devraient suivre les meilleures pratiques ci-dessous pour éviter les erreurs courantes et rédiger de bonnes exigences logicielles.

  1. Soyez précis et évitez les termes vagues : Lors de la définition des exigences non fonctionnelles, soyez clair et évitez toute ambiguïté. Par exemple, au lieu de dire « Le système devrait être rapide », dites des choses comme « Le système devrait charger le tableau de bord en moins de 2 secondes pour 90% des utilisateurs. » De cette façon, chaque membre de l’équipe peut comprendre l’objectif clair du NFR.
  2. Rendez tous les NFR mesurables et testables : Fixez toujours des métriques ou des fourchettes pour mesurer les critères de réussite. Par exemple, au lieu d’indiquer qu’une application doit avoir une « Haute Scalabilité », disons : « L’application devrait supporter 500 utilisateurs simultanés sans affecter la performance. » Cela aide les équipes à suivre les progrès et à s’assurer que l’application respecte correctement le NFR.
  3. Définir les NFR pour les composants du système : Au lieu de définir un NFR particulier pour l’ensemble du système, définissez-le pour le composant spécifique. Par exemple, lors du développement d’une boutique en ligne, vous n’avez pas besoin de définir des exigences de scalabilité pour le panneau d’administration si seulement un nombre fixe d’administrateurs va interagir avec.
  4. Collaborez avec toutes les parties prenantes clés : Lors de la définition des exigences non fonctionnelles, impliquez toutes les parties prenantes clés, y compris les développeurs, les testeurs QA, les équipes de sécurité, les architectes, les propriétaires de produits et même les utilisateurs finaux lorsque nécessaire. Chacun a des aspects différents qui peuvent aider à renforcer les NFR.
  5. Relier les exigences aux objectifs d’affaires : Chaque NFR devrait avoir un vrai but. Si la disponibilité, la rapidité ou la sécurité aident votre entreprise à gagner de l’argent ou à garder des clients, cela doit être clairement reflété dans vos exigences. Dites « 99,9% de disponibilité pour respecter les engagements de commande en ligne » au lieu de simplement « haute disponibilité ». Cela permet à l’équipe de comprendre pourquoi l’exigence est importante.
  6. Regroupez les NFR en catégories : Plutôt que d’avoir une longue liste de NFR, regroupez-les selon les types, comme la performance, la fiabilité, l’évolutivité, etc.
  7. Utilisez une mise en page et une terminologie cohérentes : Assurez-vous d’utiliser un format standard pour rédiger les exigences. Vous pouvez définir l’ID des exigences, la description, la priorité et les critères de mesure pour chaque exigence.
  8. Utilisez les bons outils pour simplifier le travail : Utilisez les bons outils pour la gestion des exigences. Modern Requirements4DevOps, une solution de gestion des exigences intégrée nativement dans Azure DevOps, offre des fonctionnalités telles que la traçabilité des exigences, la gestion des versions et variantes, la gestion des documents, la gestion des révisions, etc.

Utiliser Modern Requirements4DevOps pour rédiger de meilleurs documents d’exigences non fonctionnels

Documenter les exigences non fonctionnelles est important pour s’assurer que chaque membre de l’équipe et chaque partie prenante ait une compréhension commune des objectifs du projet. Avec une documentation claire, les équipes peuvent minimiser le risque de malentendus, ce qui peut entraîner des remaniements coûteux.

Ici, nous avons introduit quelques fonctionnalités clés de Modern Requirements4DevOps qui peuvent simplifier le flux de travail de création de la documentation des exigences.

  1. Smart Docs : Ce module permet aux équipes de créer et de gérer des documents d’exigences vivantes directement dans Azure DevOps. Il offre une interface similaire à Microsoft Word pour rédiger et éditer des documents. De plus, cela permet aux équipes de lier directement les exigences des arriérés aux documents. Ainsi, chaque fois que des données d’exigence sont modifiées, elles seront instantanément reflétées dans le document.
  1. Modèles réutilisables : Le module Smart Docs offre aussi des modèles méta réutilisables. Les utilisateurs peuvent créer un méta-modèle une fois et le réutiliser sur plusieurs documents. En utilisant des modèles réutilisables, les équipes peuvent promouvoir la cohérence des documents et économiser du temps passé à rédiger le document à partir de zéro.
  1. Copilot4DevOps : Il s’agit d’un assistant IA pour la gestion des exigences dans Azure DevOps, fourni avec Modern Requirements4DevOps. Il permet aux utilisateurs d’extraire des exigences à partir de données d’entrée brutes, d’analyser les exigences à l’aide de l’IA, de générer des SOP/documents, etc. Découvrez plus de fonctionnalités de Copilot4DevOps.
Copilot4DevOps assistant IA avec automatisation et fonctionnalités d’analyse.
Copilot4DevOps : Outils pilotés par l’IA pour une gestion des exigences plus intelligente.
  1. Contrôle de version : En utilisant le système de gestion de versions offert par MR4DevOps, les équipes peuvent suivre les modifications apportées dans les documents. Grâce à cela, les équipes peuvent observer comment le NFR a évolué avec le temps.
  1. Gestion des révisions : Les équipes peuvent utiliser le module de gestion des révisions pour créer des demandes de révision de documents et les envoyer aux parties prenantes pour obtenir des retours. Grâce à ce module, les équipes peuvent modifier et examiner ensemble les documents d’exigences.

En utilisant les fonctionnalités ci-dessus de Modern Requirements4DevOps, les équipes peuvent créer des documents d’exigences non fonctionnels bien structurés et cohérents. De plus, avec l’aide de Copilot4DevOps, les équipes peuvent générer des documents précis à partir de NFR prédéfinis en quelques secondes.

Foire aux questions (FAQ)

1. Quelles sont les exigences fonctionnelles et non fonctionnelles?

Les exigences fonctionnelles définissent les caractéristiques clés du système, et les exigences non fonctionnelles définissent les capacités opérationnelles du système, y compris la performance, la disponibilité, la scalabilité, etc.

Les modèles d’exigences non fonctionnels offrent une structure prédéfinie pour définir les NFR. Cela assure la cohérence entre tous les NFR.

Oui, Copilot4DevOps permet aux équipes d’extraire des NFR à partir du texte brut, des documents, des diagrammes, etc., et de les sauvegarder directement dans l’espace de travail Azure.

Il existe plusieurs outils sur le marché, mais si vous utilisez Azure DevOps pour la gestion de projet, Modern Requirements4DevOps peut être un choix incontournable.

L’équipe devrait établir des points de contrôle réguliers pour la révision et la mise à jour des NFR. Les équipes devraient aussi les réviser après les mises à jour majeures du système.

Table des matières
Commencez à utiliser Modern Requirements dès aujourd’hui

✅ Définir, gérer et tracer les exigences dans Azure DevOps
✅ Collaborez sans effort entre les équipes réglementées
✅ Commencez GRATUITEMENT — pas besoin de carte de crédit

Articles récents
New MR Logo cropped
Products
New MR Logo cropped

Exigences modernes4DevOps

End-to-end requirements management in Azure DevOps.

Copilot4DevOps

AI-powered assistance for DevOps workflows.

Agents4DevOps

Autonomous AI agents for DevOps execution.

Pont AI Sync

Real-time data sync across tools and systems.

Pourquoi les exigences modernes

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.