Cette question (et ma réponse) est plutôt subjective car les gens peuvent avoir des opinions différentes et il n'y a pas de véritable norme acceptée ici mais j'essaie néanmoins d'expliquer mon raisonnement.
Le format de données requis (ou implémenté) est définitivement une exigence fonctionnelle car il définit la façon dont votre application communique avec les autres. Les autres exigences sont traditionnellement considérées comme non-fonctionnelles mais dans la pratique, vous pouvez obtenir un peu philosophique ici car il n'y a pas de réponse unique.
Traditionnellement, des éléments tels que la performance, la sécurité ou l'apparence d'une application étaient considérés comme des exigences non fonctionnelles et ont donc été rétrogradés de manière efficace vers l'arrière-pensée ou la convivialité. À mon avis, c'est fondamentalement faux. Par extension, je pense que cette distinction est erronée et ne devrait pas être faite en premier lieu. Selon votre application, différentes choses (ou fonctionnalités) sont plus importantes que d'autres, mais souvent, les exigences traditionnellement non fonctionnelles peuvent faire ou défaire une application. Par exemple, un système de messagerie peut être aussi beau que possible, s'il n'est pas sécurisé et s'il fuit des messages, il est inutile. De même, un jeu informatique rapide et sécurisé, mais qui n'a pas l'air sympa et n'est pas facile à comprendre ne vaudra probablement pas grand-chose (il y a des exceptions). Ainsi, les exigences traditionnellement non fonctionnelles peuvent très bien constituer une partie importante de la fonctionnalité fournie.
Le meilleur exemple est ce même site Web où vous posez votre question. L'exigence principale non fonctionnelle est la performance. Il est généralement considéré comme agréable d'avoir, non planifié dans le produit et non considéré comme une fonctionnalité de base. Sur Stack Overflow (et d'autres sites d'échange de pile), les performances sont considérées comme l'une des principales caractéristiques et les développeurs considèrent qu'une page lente n'est pas fonctionnelle.
Un autre exemple est dans l'espace UI/UX. Généralement, vous avez considéré le comportement d'une interface utilisateur (la fonction) séparé du look (la non-fonction). Mais si vous regardez par exemple applications de smartphone ou applications web, vous trouverez souvent que l'expérience de l'utilisateur est définie à la fois par le comportement exact et la conception qui ne peuvent pas être séparés car les deux sont fortement connectés et affectent de manière significative les uns les autres. Ainsi, pour ma conclusion: Vous devriez réfléchir à vos besoins réels en termes de ce que vous voulez que votre application fournisse. La distinction entre fonctionnel et non-fonctionnel est plutôt inutile car elle ne vous aide pas à définir ce qui est important et ce qui ne l'est pas.Au lieu de cela, se concentrer sur vos valeurs et de définir l'expérience utilisateur que vous souhaitez fournir (à la fois pour les utilisateurs finaux ainsi que les développeurs, les administrateurs, ...)
Merci pour cette explication, je retiens une chose importante: je dois mettre l'accent sur le contenu, ne pas déranger moi-même avec fonctionnel et non fonctionnel parce que la limite n'est pas si croquante :) –
Pouvez-vous suggérer une référence à maîtriser l'écriture de * document sur les exigences de l'utilisateur *? –
Voici une source simple mais très efficace. http://reqtest.com/requirements-blog/functional-vs-non-functional-requirements/ – unknown