How to Achieve ARP4754A Development Assurance in Aerospace Programs
Check out the importance of ARP4754A, the ARP4754A development cycle,...
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.
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 :
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.
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. |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
✅ 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
Check out the importance of ARP4754A, the ARP4754A development cycle,...
Learn more about the importance of NIST RMF, what the...
Learn more about the NERC IP compliance, which industries is...
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.