Niet-functionele vereisten (NFR, non-functional requirements) zijn de niet-functionele eigenschappen van een IT-systeem, zoals prestaties, veiligheid, fouttolerantie, schaalbaarheid en onderhoudbaarheid. Ze spelen een sleutelrol in het ontwerp van de architectuur, waarbij ze vaak de technische oplossingen en infrastructuur bepalen, net zo goed als functionele vereisten.
Bijvoorbeeld: als een bedrijfsysteem hoge beschikbaarheid vereist (uptime > 99.99%), moet de architect mechanismen voor automatische failover, gegevensreplicatie en load balancing implementeren. Anders kan de bedrijfsmatige waarde verloren gaan.
Voorbeeld: hoe NFR invloed heeft op de architectuur (in 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=["*"], ) # Deze aanpak is noodzakelijk als onder NFR een vereiste staat voor integratie met externe front-ends
Belangrijke kenmerken:
Kun je NFR in latere stadia van de ontwikkeling toevoegen zonder gevolgen?
Nee, kritische NFR moeten vanaf het begin worden overwogen, anders is een radicale herontwerp van de architectuur nodig.
Is de verantwoordelijkheid voor het naleven van NFR alleen bij de architect?
Onjuist. Dit is de verantwoordelijkheid van het hele projectteam - van analisten tot devops.
Kun je schaalbaarheid en veiligheid beschouwen als uitsluitend infrastructuurproblemen?
Nee. Schaalbaarheid en veiligheid zijn zowel architecturale als infrastructuurproblemen (bijvoorbeeld, gegevensscheiding op gebruikersniveau wordt op servicelagen gerealiseerd).