Dans le monde de l'ingénierie, en particulier dans le développement de logiciels et l'ingénierie de systèmes, la compréhension de la distinction critique entre exigences fonctionnelles et non fonctionnelles est fondamentale pour la réussite des projets. 37% des projets échouent en raison d'exigences imprécises ou erronées, ce qui rend indispensable pour les ingénieurs, les développeurs, les gestionnaires de projets et les parties prenantes la compréhension approfondie de ces concepts.

Ce guide complet explore en profondeur les exigences fonctionnelles et non fonctionnelles, en fournissant des exemples pratiques, des pratiques exemplaires pour la documentation et des stratégies pour une gestion efficace des exigences. Que vous construisiez une plateforme de commerce électronique, que vous développiez des logiciels d'entreprise ou que vous conçoyiez des systèmes complexes, la maîtrise de ces exigences améliorera considérablement les résultats de votre projet.

Quelles sont les exigences fonctionnelles?

Dans le domaine de l'ingénierie des logiciels et des systèmes, une exigence fonctionnelle définit une fonction d'un système ou de son composant, lorsqu'une fonction est décrite comme un résumé (ou une spécification ou un énoncé) du comportement entre les intrants et les extrants.

Les exigences fonctionnelles définissent les caractéristiques et les fonctions d'un système. En d'autres termes, elles décrivent exactement ce que le produit logiciel doit faire dans des conditions normales pour répondre aux besoins de l'utilisateur.

Les exigences fonctionnelles peuvent comprendre des calculs, des détails techniques, la manipulation et le traitement des données et d'autres fonctionnalités spécifiques qui définissent ce qu'un système est censé accomplir. Elles servent de base aux équipes de développement, fournissant des lignes directrices claires sur ce qu'il faut construire et sur la façon dont le système doit réagir aux diverses entrées.

Caractéristiques principales des exigences fonctionnelles

Les prescriptions fonctionnelles présentent plusieurs caractéristiques qui les distinguent des autres types d'exigences:

  • Spécificité:[ Ils décrivent des comportements et des fonctions précis que le système doit exécuter
  • Testabilité:[ Chaque exigence peut être vérifiée par des essais visant à confirmer la mise en œuvre
  • Focus de l'utilisateur:[ Ils sont directement liés aux besoins de l'utilisateur et aux objectifs opérationnels
  • Action-orientée:[ Ils définissent ce que le système fait en réponse aux entrées
  • Mesurabilité:[ Ils ont défini des résultats qui peuvent être mesurés, comme une connexion réussie avec des identifiants valides

Types de prescriptions fonctionnelles

Les exigences fonctionnelles peuvent être classées en plusieurs types selon les flux de travail et les comportements qu'elles décrivent :

Règles d'affaires et logique

Les règles commerciales sont généralement le plus grand groupe car elles définissent la façon dont le système répond aux commandes dans le flux utilisateur principal. Ces exigences précisent la logique opérationnelle de base qui anime le comportement de l'application, y compris les calculs, les processus de prise de décision et l'automatisation du workflow.

Authentification et autorisation de l'utilisateur

Les exigences en matière d'authentification et d'autorisation définissent la façon dont les utilisateurs accèdent au système et les autorisations qu'ils ont. Ces exigences précisent les mécanismes de connexion, les politiques de mot de passe, le contrôle d'accès basé sur le rôle et les protocoles de sécurité pour la vérification de l'identité des utilisateurs.

Exigences en matière de gestion des données

Les exigences en matière de données définissent comment les données doivent être créées, stockées, modifiées et supprimées. Elles sont particulièrement importantes si votre produit gère des données sensibles des utilisateurs.

Exigences relatives à l'interface utilisateur

Les exigences de l'interface utilisateur précisent comment vos utilisateurs interagiront avec votre produit. Ils définissent les éléments de conception qui rendent la navigation intuitive. Ces exigences décrivent les éléments visuels, les modèles d'interaction, les flux de navigation et les composants d'interface utilisateur que les utilisateurs rencontreront.

Exigences en matière de transaction et de traitement

Ces exigences définissent la façon dont le système traite les transactions, gère les opérations et gère les flux de travail, et précisent les étapes à suivre pour accomplir les tâches, la séquence des opérations et les résultats attendus de divers processus.

Exemples complets de besoins fonctionnels

La compréhension des exigences fonctionnelles devient plus claire grâce à des exemples concrets dans différents secteurs et types d'application. Voici des exemples détaillés organisés par domaine :

Exemples d'applications de commerce électronique

Un site Web du commerce électronique doit comporter des exigences fonctionnelles qui définissent la façon dont les clients cherchent des articles, examinent leurs caractéristiques, font une commande, paient et reçoivent une confirmation.

  • Le système doit permettre aux utilisateurs de créer un compte en utilisant l'adresse e-mail et le mot de passe
  • Les utilisateurs devraient pouvoir parcourir les produits par catégorie, prix et filtres de marque
  • Les utilisateurs doivent pouvoir ajouter des produits à un panier et voir le contenu du panier
  • L'utilisateur peut consulter des articles dans le panier, changer leur numéro, ou les supprimer avant la commande
  • L'utilisateur peut ajouter le code promo et obtenir une réduction avant la caisse
  • Le système doit traiter les transactions de paiement de façon sécuritaire par des passerelles de paiement intégrées
  • Le système envoie un email de confirmation à l'utilisateur après avoir réservé un vol
  • Les utilisateurs devraient être en mesure de fournir des commentaires ou de tarifer des services/produits dans l'application

Systèmes bancaires et financiers

  • Le système doit permettre aux clients de transférer des fonds entre comptes
  • Les utilisateurs doivent pouvoir consulter l'historique des transactions au cours des 12 derniers mois.
  • L'application doit permettre le calendrier de paiement de factures avec des options de paiement récurrentes
  • Le système doit générer des relevés mensuels de compte en format PDF
  • Les utilisateurs doivent pouvoir créer des alertes de compte pour des types de transactions spécifiques
  • Le système doit vérifier les soldes des comptes avant de traiter les demandes de retrait

Systèmes de gestion des soins de santé

  • Le système doit permettre aux fournisseurs de soins de prévoir des rendez-vous avec les patients
  • Le personnel médical doit pouvoir consulter et mettre à jour les dossiers médicaux des patients.
  • La demande doit permettre la gestion des prescriptions et les demandes de renouvellement
  • Le système doit générer des rappels automatisés de rendez-vous par courriel et SMS
  • Les professionnels de la santé doivent pouvoir consulter les résultats des tests et les rapports de diagnostic des patients.
  • Le système doit soutenir l'intégration des dossiers de santé électroniques (DSE) avec les systèmes externes

Gestion du contenu et médias sociaux

  • Le système doit permettre aux visiteurs de blog de s'inscrire à la newsletter en laissant leur email
  • Les utilisateurs doivent pouvoir créer, modifier et publier du contenu avec un formatage de texte riche
  • Le système doit permettre la catégorisation du contenu en utilisant des balises et des catégories
  • Les utilisateurs doivent être en mesure de télécharger et de gérer des fichiers multimédias, y compris des images et des vidéos
  • L'application peut envoyer des notifications aux utilisateurs pour des mises à jour, des rappels ou du contenu promotionnel
  • Le système doit fournir des fonctionnalités de recherche pour tout le contenu publié
  • Les utilisateurs doivent pouvoir partager du contenu sur des plateformes de médias sociaux externes

Systèmes de planification des ressources (PGI)

  • Le logiciel de gestion d'hôtel doit permettre au personnel de gérer les réservations entrantes, de créer et de gérer des plans tarifaires, d'accepter les paiements, de générer des rapports, etc.
  • Le système doit suivre les niveaux d'inventaire et générer des alertes de réordre automatique
  • Les utilisateurs doivent être en mesure de produire des rapports financiers, y compris des états des profits et pertes
  • La demande doit soutenir les opérations et les conversions multi-devises
  • Le système doit permettre de suivre le temps des employés et de traiter les états de paie.
  • Les utilisateurs doivent être en mesure de gérer les relations avec les fournisseurs et les bons de commande

Exemples d'applications mobiles

  • L'application devrait permettre aux utilisateurs de créer des comptes et de se connecter en utilisant des identifiants comme l'email et le mot de passe ou par l'intégration des médias sociaux
  • L'application doit supporter le mode hors ligne avec la synchronisation des données lorsque la connectivité est rétablie
  • Les utilisateurs doivent pouvoir accéder aux services et aux fonctionnalités basés sur l'emplacement
  • L'application doit permettre des notifications push pour les mises à jour et alertes importantes
  • Les utilisateurs doivent pouvoir personnaliser les paramètres et préférences de l'application
  • Le système doit soutenir l'authentification biométrique, y compris la reconnaissance des empreintes digitales et du visage

What Are Exigences non fonctionnelles?

Dans le domaine de l'ingénierie des systèmes et de l'ingénierie des exigences, une exigence non fonctionnelle (NFR) est une exigence qui précise des critères qui peuvent être utilisés pour juger du fonctionnement d'un système plutôt que des comportements particuliers.

Les exigences fonctionnelles définissent ce qu'un système est censé faire et les exigences non fonctionnelles définissent comment un système est censé être. Les exigences non fonctionnelles (NFR) définissent comment un système doit fonctionner, en se concentrant sur les performances, la fiabilité et l'expérience utilisateur plutôt que sur des caractéristiques spécifiques. Elles garantissent que le système est efficace, sécurisé et durable au fil du temps.

Les exigences non fonctionnelles sont souvent appelées les « attributs de qualité » d'un système. Les propriétés globales du système marquent généralement la différence entre le succès ou l'échec du projet de développement. Bien que les exigences fonctionnelles garantissent le fonctionnement du système, les exigences non fonctionnelles garantissent qu'il fonctionne bien et répondent aux attentes des utilisateurs en matière de qualité, de performance et de fiabilité.

Comprendre l'importance des exigences non fonctionnelles

L'accent mis uniquement sur les exigences fonctionnelles au détriment des exigences non fonctionnelles peut causer des problèmes majeurs. Les exigences fonctionnelles peuvent être considérées comme satisfaites même si les exigences non fonctionnelles ne le sont pas. Une transaction qui prend 20 secondes pour réussir peut être fonctionnelle – mais elle n'est certainement pas utilisable.

Les exigences non fonctionnelles ont une incidence directe sur la satisfaction des utilisateurs, l'adoption du système et le succès à long terme. Un système qui remplit toutes les fonctions requises mais qui se charge lentement, se plante fréquemment ou présente des vulnérabilités de sécurité ne répond pas aux objectifs opérationnels et aux besoins des utilisateurs.

Types complets de prescriptions non fonctionnelles

Informellement, ces qualités sont parfois appelées «ilités», à partir d'attributs comme la stabilité et la portabilité.Les qualités – c'est-à-dire les exigences non fonctionnelles – peuvent être divisées en deux grandes catégories: les qualités d'exécution, telles que la sûreté, la sécurité et la facilité d'utilisation, qui sont observables pendant le fonctionnement (au moment de l'exécution).

Exigences de performance

Les exigences de performance précisent comment le système doit réagir à une charge d'utilisateur lourde. Cela implique de vérifier les paramètres tels que le temps de démarrage, le temps de réponse, la latence et le nombre maximum d'utilisateurs simultanés que l'application peut supporter.

Les exigences de rendement sont essentielles pour garantir que les systèmes puissent gérer les charges de travail attendues sans dégradation.

  • Heure de réponse:[ Le temps maximal accordé au système pour répondre aux demandes des utilisateurs
  • Tirage:[ Le nombre de transactions ou d'opérations que le système peut traiter par unité de temps
  • Utilisation des ressources:[ Consommation de processeur, de mémoire et de bande passante dans diverses conditions de charge
  • Utilisateurs simultanés: Le nombre d'utilisateurs simultanés que le système peut prendre en charge
  • Temps de chargement:[ Quelle rapidité pour la charge des pages, des écrans ou des données pour les utilisateurs

Exemple : Une exigence de performance pour une application bancaire serait qu'elle devrait être capable de traiter les transactions dans les 3 secondes, même pendant les périodes de trafic d'utilisateurs élevés.

Exigences en matière de sécurité

Les exigences en matière de sécurité définissent comment le système protège les données, empêche l'accès non autorisé et maintient la confidentialité, l'intégrité et la disponibilité.

Les exigences en matière de sécurité comprennent :

  • Authentification:[ Méthodes de vérification de l'identité de l'utilisateur
  • Autorisation:[ Mécanismes de contrôle d'accès et niveaux de permission
  • Encryptage des données:[ Protection des données en transit et au repos
  • Pistes de vérification:[ Exploitation forestière et surveillance des événements liés à la sécurité
  • Protection de la vulnérabilité:[ Défenses contre les menaces communes à la sécurité
  • Confidentialité des données:[ Conformité aux règles de confidentialité et aux normes de protection des données

Exemple : Les données doivent être chiffrées en transit à l'aide de la norme TLS 1.3 et au repos à l'aide des normes de chiffrement AES-256.

Exigences de convivialité

La facilité d'utilisation est essentiellement une question de convivialité. Cela signifie que l'interface produit doit être intuitive et facile à naviguer, que ses fonctionnalités doivent être compréhensibles et faciles à trouver, et, surtout, qu'elle doit répondre aux besoins de l'utilisateur.

Les exigences de facilité d'emploi portent sur:

  • Apprendre:[ La rapidité avec laquelle de nouveaux utilisateurs peuvent devenir productifs avec le système
  • Efficacité: Combien rapidement les utilisateurs expérimentés peuvent accomplir des tâches
  • Mémorabilité:[ La facilité avec laquelle les utilisateurs peuvent retourner au système après une période de non-utilisation
  • Prévention des erreurs: Caractéristiques de conception qui empêchent les erreurs d'utilisateur
  • Satisfaction: Comme le système est agréable et satisfaisant à utiliser
  • Accessibilité:[ Soutien aux utilisateurs handicapés et aux besoins divers

Exemple : Les nouveaux utilisateurs doivent pouvoir effectuer leur première transaction dans les 5 minutes sans avoir besoin d'aide ou de documentation externe.

Exigences de fiabilité et de disponibilité

Cet ensemble de NFR stipule que le système doit être disponible pour être utilisé dans toute la mesure du possible et que les temps d'arrêt doivent être réduits au minimum.

Les principales considérations sont les suivantes :

  • [En pourcentage du temps d'exploitation et d'accessibilité du système
  • Temps moyen entre les défaillances (MTBF): Temps moyen entre les défaillances du système
  • Temps moyen de réparation (MTTR): Temps moyen requis pour restaurer la fonctionnalité du système
  • Tolérance de défaillance:[ Capacité du système à continuer à fonctionner malgré les défaillances des composants
  • Rétablissement des catastrophes:[ Procédures et capacités pour se remettre d'échecs catastrophiques

Exemple : Le système doit être disponible 99,9 % du temps, à l'exclusion des fenêtres d'entretien prévues, ce qui ne représente pas plus de 8,76 heures d'arrêt par année.

Exigences en matière de calibrage

Les exigences de scalabilité définissent la façon dont le système se développe et s'adapte à des exigences accrues, que ce soit en termes d'utilisateurs, de volume de données ou de traitement des transactions.

  • Scalabilité horizontale:[ Capacité d'ajouter plus de serveurs ou de nœuds pour distribuer la charge
  • Scalabilité verticale:[ Capacité d'augmenter les ressources sur les serveurs existants
  • Échelle des données:[ Capacité de gérer les volumes de données croissants
  • Scalabilité géographique:[ Soutien à l'expansion vers de nouvelles régions ou de nouveaux emplacements

Exemple : Le système devrait pouvoir traiter 20 millions d'utilisateurs sans détérioration des performances.

Exigences de maintien en état

Un système durable doit pouvoir être maintenu de façon rentable pendant toute sa durée de vie prévue et peut inclure des exigences supplémentaires telles que la modifiabilité, la configurabilité, l'extensibilité et l'interopérabilité.

La viabilité comprend :

  • Qualité du code:[ Normes de lisibilité, de documentation et de structure du code
  • Modularité:[ Degré auquel les composants du système sont indépendants et interchangeables
  • Testabilité:[ Facilité d'essai des composants du système et fonctionnalité
  • Configuration:[ Capacité de modifier le comportement du système sans changement de code
  • Extensibilité: Facilité d'ajouter de nouvelles fonctionnalités et capacités

Exigences réglementaires et de conformité

Les exigences non fonctionnelles de la catégorie de conformité stipulent que les systèmes logiciels doivent satisfaire aux exigences légales et réglementaires; la vérification est généralement incluse dans cette catégorie également.

Les exigences de conformité varient selon l'industrie et la juridiction, mais comprennent généralement :

  • La passerelle de traitement des paiements doit être conforme au SSD PCI
  • Le logiciel clinique doit être conforme à la loi HIPAA (loi sur la transférabilité et la responsabilité en matière d'assurance-santé) et au RGPD (règlement général sur la protection des données).
  • Les datacenters Cloud doivent être conformes à la certification de sécurité ISO 27001
  • Les systèmes doivent respecter des normes spécifiques à l'industrie, comme la norme SOC 2, la norme FISMA ou la réglementation de la FDA.
  • Vérification des capacités de l'enregistrement et de la production de rapports pour la conformité à la réglementation

Exigences de compatibilité et d'interopérabilité

Ces exigences définissent le fonctionnement du système avec d'autres systèmes, plateformes et technologies, et assurent une intégration et un échange de données sans failles dans différents environnements.

  • Compatibilité de la plate-forme:[ Systèmes et dispositifs d'exploitation que le système doit supporter
  • Compatibilité du navigateur: Navigateurs Web et versions qui doivent être pris en charge
  • Compatibilité API:[ Normes et protocoles pour l'intégration du système
  • Compatibilité des formats de données: Prise en charge de divers formats et normes de données
  • Intégration du système de legacy:[ Capacité de travailler avec les systèmes existants

Exemple : Un programme fonctionnant sous Windows 10 doit pouvoir fonctionner sous Windows 11 sans aucun changement de comportement et de performance.

Besoins en matière de capacité

Les besoins en matière de capacité précisent le volume de données, de transactions et d'utilisateurs que le système doit accueillir, à la fois actuellement et à l'avenir.

  • Capacité de stockage:[ Quantité de données que le système doit stocker
  • Capacité d'utilisation:[ Nombre maximal d'utilisateurs enregistrés et concurrents
  • Volume des transactions:[ Nombre de transactions traitées par période de temps
  • Norme de bande réseau:[ Exigences relatives au transfert de données

Exemple : Les pages du site Web doivent être chargées en 3 secondes avec le nombre total d'utilisateurs simultanés <5mil.

Comparaison détaillée : Exigences fonctionnelles et non fonctionnelles

La compréhension des différences entre les exigences fonctionnelles et non fonctionnelles est essentielle pour une gestion efficace des exigences.

Définition et orientation

Les exigences fonctionnelles conduisent à l'architecture d'application d'un système, tandis que les exigences non fonctionnelles conduisent à l'architecture technique d'un système. Les exigences fonctionnelles répondent « ce que » le système fait, tandis que les exigences non fonctionnelles répondent « comment » il le fait.

Style de documentation

En général, les exigences fonctionnelles sont exprimées sous la forme "le système doit faire", tandis que les exigences non fonctionnelles prennent la forme "le système doit être", ce qui reflète la différence fondamentale dans ce que chaque type d'exigence précise.

Approche d'essai

Les exigences fonctionnelles sont généralement testées au moyen de méthodes d'essai fonctionnelles telles que les essais unitaires, les essais d'intégration et les essais d'acceptation par les utilisateurs.

Mesurer les exigences non fonctionnelles : Les caractéristiques sont plus faciles à tester, mais les qualités comme la facilité d'utilisation, l'évolutivité et la fiabilité sont plus difficiles à mesurer et à valider.

Impact sur la réussite du projet

Les exigences fonctionnelles et non fonctionnelles sont les deux faces d'une même pièce. Ensemble, elles créent des logiciels complets et utilisables. Les deux types sont essentiels, mais elles ont une incidence différente sur les projets :

  • Les exigences fonctionnelles déterminent si le système peut exécuter les tâches requises
  • Les exigences non fonctionnelles déterminent si les utilisateurs voudront réellement utiliser le système.
  • Les exigences fonctionnelles manquantes entraînent des caractéristiques incomplètes
  • Les exigences non fonctionnelles manquantes entraînent une mauvaise expérience utilisateur et une mauvaise qualité du système.

Défis de hiérarchisation

Les exigences fonctionnelles reçoivent souvent plus d'attention, tandis que des aspects importants comme l'évolutivité, la sécurité ou la surveillance peuvent être négligés, ce qui peut conduire à des systèmes qui fonctionnent techniquement mais qui ne répondent pas aux attentes de qualité ou aux besoins opérationnels.

Pourquoi les deux exigences sont essentielles à la réussite du projet

Les exigences fonctionnelles sont l'épine dorsale du succès du développement de logiciels et de systèmes. Elles définissent exactement ce qu'un produit doit faire pour répondre aux besoins des utilisateurs et des entreprises. En spécifiant les fonctions et les comportements d'un système devrait présenter, les exigences fonctionnelles garantissent que chaque fonction s'harmonise avec les attentes des utilisateurs et les objectifs du projet.

Toutefois, les exigences fonctionnelles sont insuffisantes, et les deux types d'exigences sont en collaboration pour créer des systèmes efficaces :

Clarté et orientation

Having clearly defined functional requirements reduces the risk of miscommunication between stakeholders and your development team. This w