Aaronaught a déjà une excellente réponse, mais comme il y avait d’autres réponses, maintenant supprimées, totalement fausses quant à la nature d’une exigence non fonctionnelle, je pense qu’il serait utile d’ajouter quelques explications afin d’éviter les erreurs exigence non fonctionnelle est.
Une exigence non fonctionnelle est "une qualité ou une propriété que le produit doit avoir" ¹. James Taylor a expliqué qu'une exigence non fonctionnelle "[...] est [néanmoins] une exigence et qu'elle est importante pour le client - parfois même plus que l'exigence fonctionnelle" . Il donne ensuite deux exemples: le logo du produit, ainsi que la précision et la fiabilité de l'équipement. Ces deux exemples montrent très bien que:
- Les exigences non fonctionnelles ne sont pas un jibber-jabber marketing comme celui-ci: "Internet est important de nos jours et nous voulons un site Web".
- Les exigences non fonctionnelles concernent les clients car elles peuvent avoir un impact important sur leur productivité et sur leur capacité à utiliser le produit.
- Les exigences non fonctionnelles sont totalement objectives.
Le dernier point est essentiel. Si l'exigence est subjective, il n'y a rien à faire dans la liste des exigences. Il serait impossible de construire des tests de validation à partir de quelque chose de subjectif . Le seul objectif de la liste des exigences est d’énumérer les attentes non ambiguës du client. "Je veux que ce carré soit rouge" est une exigence. "Je veux que ce carré ait une belle couleur" est un souhait qui nécessite une explication.
Rappelez-vous que la liste des exigences est comme un contrat (et dans la plupart des cas, fait partie d'un contrat). Il est signé par le client et la société de développement. En cas de litige, il sera utilisé légalement pour déterminer si vous avez correctement effectué votre travail. Que se passe-t-il si je vous commande un produit logiciel, précisez que "le produit doit être excellent" et refuse de payer lorsque le produit est terminé, car pour moi, ce que vous avez réellement fait n'est pas un excellent produit?
Voyons quelques exemples.
1. Le logiciel répond à l'utilisateur final.
Ce n'est pas une obligation. Pas fonctionnel. Pas un non-fonctionnel. Ce n'est simplement pas une exigence. Du tout. Il a une valeur nulle. Vous ne pouvez pas vérifier si le système logiciel répond à cette exigence lors des tests de validation. Ni vous - le service d'assurance qualité, ni le client.
2. Le rechargement des statistiques utilisateur s'effectue 90% du temps en dessous de 100 ms. lorsqu’il est testé sur une machine présentant les performances spécifiées à l’annexe G, partie 2 et une charge inférieure à 10% pour le CPU, inférieure à 50% pour la mémoire et aucune opération de disque R / W active.
C'est une exigence. Si l'annexe G partie 2 est suffisamment précise, je peux prendre la machine avec un matériel similaire et effectuer le test de validation dans le département d'assurance qualité, et j'obtiendrai toujours un résultat binaire: réussi ou échoué.
Est-ce une exigence fonctionnelle? Non, cela ne précise pas ce que le système doit faire. Il y avait probablement une exigence fonctionnelle auparavant, spécifiant que l'application logicielle doit pouvoir recharger les statistiques des utilisateurs.
Est-ce une exigence non fonctionnelle? C'est. Il spécifie une propriété qu'un produit doit avoir, c'est-à-dire le temps de réponse maximum / moyen, en fonction du seuil de pourcentage.
3. L'application est écrite en C #.
Est-ce une exigence? Nous ne savons pas vraiment sans contexte. Le développeur principal peut souhaiter souhaiter, en insérant cette exigence, éviter par la suite une discussion avec ses collègues sur le langage à utiliser. Il peut également s'agir d'une exigence reposant sur des éléments matériels / logiciels, hérités ou de compatibilité. Nous ne savons pas
4. La base de code C # du produit est conforme aux règles minimales recommandées par Microsoft et aux règles de globalisation Microsoft.
C'est une chose étrange. Personnellement, je préférerais ne pas appeler cela une exigence et la placer dans un document séparé spécifiant les normes et les meilleures pratiques.
5. La fenêtre principale de l'application comporte une bordure bleue (# 00f) de 10 pixels avec des cercles remplis de rose (#fcc), ces cercles étant placés sur le bord intérieur du bord et ayant un diamètre de 3 pixels, séparés par 20 pixels les uns des autres.
C'est une exigence et une non-fonctionnelle. Il spécifie quelque chose que nous pouvons tester lors des tests de validation et une propriété du produit, et non pas ce que le produit est destiné à faire.
6. Le système de suivi des véhicules mesure la vitesse avec une précision de ± 0,016 mi / h.
Aussi une exigence non fonctionnelle. Il donne un seuil mesurable de la précision du système. Il ne dit pas ce que le système doit faire, mais indique avec quelle précision il fait son travail. Mais attendez? Cela indique que le système de localisation des véhicules mesure la vitesse, n'est-ce pas? Donc, c'est aussi une exigence fonctionnelle? Eh bien, non, puisque nous mettons l'accent sur la précision de la mesure et non sur le fait que la mesure est effectuée.
7. Le système de localisation du véhicule mesure la vitesse du véhicule.
Maintenant, c'est une exigence fonctionnelle. Cela ne dit pas comment le système fonctionne, mais ce qu'il fait. Grâce aux exigences fonctionnelles, nous pourrions apprendre que le système de suivi des véhicules mesure la vitesse, la charge de la batterie, la pression de Je ne sais pas quoi et si les phares sont allumés ou non.
8. Les pages du site web prennent 850 ms. charger.
Ce n'est pas une obligation. Est-ce que tente d'être un, mais est totalement invalide. Comment pourriez-vous en tirer parti? Quelles pages? Tout? Testé via un réseau local de 1 Gbps sur une machine cliente à quatre cœurs et un serveur à huit cœurs avec SSD utilisés à 2%, ou via le modem d'un ordinateur portable ancien et misérable alors que le site Web est hébergé par un petit serveur utilisé à 99%. ? Que veut-on dire par "charger"? Est-ce que cela signifie télécharger la page? Le télécharger et l'afficher? Envoyer la demande POST avec des données volumineuses, puis charger la réponse et l'afficher?
Pour conclure, une exigence non fonctionnelle est toujours une exigence, ce qui signifie qu'elle décrit quelque chose qui est totalement objectif et peut être vérifiée au moyen d'un test de validation automatisé ou manuel, mais au lieu de dire ce que fait le système, il explique comment fait quelque chose ou comment le système est lui-même .
¹ Gestion des projets de technologie de l’information: Application de stratégies de gestion de projet aux initiatives relatives aux logiciels, au matériel informatique et à l’intégration, James Taylor, ISBN: 0814408117.