Nicht-funktionale Anforderungen (NFR, non-functional requirements) sind nicht-funktionale Eigenschaften von IT-Systemen, wie Leistung, Sicherheit, Ausfallsicherheit, Skalierbarkeit und Wartbarkeit. Sie spielen eine entscheidende Rolle im Architekturdesign und bestimmen oft technische Lösungen und Infrastruktur nicht weniger als funktionale Anforderungen.
Beispiel: Wenn das Geschäftssystem eine hohe Verfügbarkeit (Uptime > 99,99 %) erfordert, muss der Architekt Mechanismen für die automatische Umschaltung (Failover), Datenreplikation und Lastverteilung implementieren. Andernfalls könnte der Geschäftswert verloren gehen.
Beispiel: wie NFR die Architektur beeinflusst (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=["*"], ) # Dieser Ansatz ist notwendig, wenn unter den NFR eine Anforderung zur Unterstützung der Integration mit externen Front-Ends besteht.
Kernmerkmale:
Kann man NFR in späteren Entwicklungsphasen ohne Folgen hinzufügen?
Nein, kritische NFR müssen von Anfang an berücksichtigt werden, andernfalls ist eine radikale Überarbeitung der Architektur erforderlich.
Liegt die Verantwortung für die Einhaltung von NFR nur beim Architekten?
Falsch. Dies ist eine Verantwortung des gesamten Projektteams — von Analysten bis zu DevOps.
Kann man Skalierbarkeit und Sicherheit ausschließlich als Aufgaben der Infrastruktur betrachten?
Nein. Skalierbarkeit und Sicherheit sind sowohl architektonische als auch infrastrukturelle Aufgaben (zum Beispiel wird die Trennung von Daten nach Benutzern auf der Diensteebene realisiert).