Les exigences non fonctionnelles (NFR, non-functional requirements) sont des caractéristiques non fonctionnelles d'un système informatique, telles que la performance, la sécurité, la tolérance aux pannes, la scalabilité et la maintenabilité. Elles jouent un rôle clé dans la conception de l'architecture, définissant souvent des solutions techniques et une infrastructure tout autant que les exigences fonctionnelles.
Par exemple : si un système commercial exige une haute disponibilité (uptime > 99.99 %), l'architecte doit mettre en œuvre des mécanismes de basculement automatique (failover), de réplication des données et d'équilibrage de charge. Sinon, la valeur commerciale peut être perdue.
Exemple : comment les NFR influencent l'architecture (en Python, FastAPI) :
from fastapi import FastAPI from starlette.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Cette approche est nécessaire si parmi les NFR figure l'exigence de support pour l'intégration avec des frontaux externes
Caractéristiques clés :
Peut-on ajouter des NFR à des étapes tardives du développement sans conséquences ?
Non, les NFR critiques doivent être prises en compte dès le début, sinon une refonte radicale de l'architecture sera nécessaire.
La responsabilité de la mise en œuvre des NFR repose-t-elle uniquement sur l'architecte ?
Faux. C'est la responsabilité de toute l'équipe projet – des analystes aux DevOps.
Peut-on considérer la scalabilité et la sécurité comme des tâches uniquement d'infrastructure ?
Non. La scalabilité et la sécurité sont à la fois des tâches architecturales et d'infrastructure (par exemple, la segmentation des données par utilisateur est réalisée au niveau des services).