I requisiti non funzionali (NFR, non-functional requirements) sono caratteristiche non funzionali di un sistema IT, come prestazioni, sicurezza, resilienza, scalabilità, manutenibilità. Svolgono un ruolo chiave nella progettazione dell'architettura, spesso determinando le soluzioni tecniche e l'infrastruttura non meno dei requisiti funzionali.
Ad esempio: se un sistema aziendale richiede un'elevata disponibilità (uptime > 99.99%), l'architetto deve implementare meccanismi di failover, replica dei dati, bilanciamento del carico. Altrimenti, il valore commerciale potrebbe andare perso.
Esempio: come l'NFR influisce sull'architettura (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=["*"], ) # Questo approccio è necessario se tra gli NFR è presente il requisito di supportare l'integrazione con front-end esterni
Caratteristiche chiave:
Posso aggiungere NFR nelle fasi successive dello sviluppo senza conseguenze?
No, gli NFR critici devono essere considerati sin dall'inizio, altrimenti sarà necessaria una radicale riprogettazione dell'architettura.
La responsabilità per il rispetto degli NFR è solo dell'architetto?
Falso. È una responsabilità dell'intero team di progetto, dagli analisti agli DevOps.
Possiamo considerare la scalabilità e la sicurezza esclusivamente compiti dell'infrastruttura?
No. Scalabilità e sicurezza sono sia compiti architetturali che infrastrutturali (ad esempio, la separazione dei dati per utenti viene realizzata a livello di servizi).