Nicht-funktionale Anforderungen
15 Anforderungen nach ISO/IEC 25010 Qualitaetsmerkmalen: Performance, Reliability, Security, Usability, Maintainability, Portability, Compatibility. Jede Anforderung ist messbar und hat einen Zielwert.
Performance (3)
| Slug | Beschreibung | Messkriterium | Zielwert | Prozess |
|---|---|---|---|---|
NFR-01 |
Antwortzeit von magic_code_login Schritt 1 bis Schritt 4 unter Last | P95 Antwortzeit in Millisekunden | <= 500 ms | magic_code_login |
NFR-02 |
Lexoffice-Voucher-Erzeugung | P95 Antwortzeit fuer Lexoffice-API-Call | <= 2000 ms | monatsabo_zyklus |
NFR-03 |
PayPal-Webhook-Verarbeitung bis Quittung | P95 Ende-zu-Ende-Zeit | <= 5 Sekunden | monatsabo_zyklus |
Reliability (3)
| Slug | Beschreibung | Messkriterium | Zielwert | Prozess |
|---|---|---|---|---|
NFR-04 |
System-Uptime pro Monat | Verfuegbarkeit in Prozent gemessen durch Monit | >= 99.5 % | global |
NFR-05 |
PayPal-Webhook-Retry bei transienten Fehlern | Anzahl Retries mit exponentiellem Backoff | 3 Retries, Backoff 1-4-9 Sekunden | monatsabo_zyklus |
NFR-06 |
Zertifikat-Hash-Integritaet | SHA-256 verifizierbar bei Abruf | 100 % Match zwischen gespeichertem Hash und Datei | zertifikat_ausstellung |
Security (4)
| Slug | Beschreibung | Messkriterium | Zielwert | Prozess |
|---|---|---|---|---|
NFR-07 |
Session-Cookie-Flags | HttpOnly, Secure, SameSite | alle drei Flags gesetzt | magic_code_login |
NFR-08 |
Magic-Code Brute-Force-Schutz | Anzahl Anfragen pro E-Mail pro Stunde | <= 5 Versuche | magic_code_login |
NFR-09 |
TLS-Mindestversion fuer alle Endpunkte | TLS-Version laut Handshake-Log | >= TLS 1.2, bevorzugt 1.3 | global |
NFR-10 |
Passwoerter nicht gespeichert | Code-Scan auf password-Spalten in Schema | keine Passwort-Spalten ausserhalb credentials | global |
Usability (1)
| Slug | Beschreibung | Messkriterium | Zielwert | Prozess |
|---|---|---|---|---|
NFR-11 |
Seitensprache Deutsch mit korrekten Umlauten | HTML lang-Attribut plus Zeichenvalidierung | lang=de und UTF-8 | global |
Maintainability (2)
| Slug | Beschreibung | Messkriterium | Zielwert | Prozess |
|---|---|---|---|---|
NFR-12 |
LOC pro PHP-Datei | Zeilen pro Datei | <= 80 hart | global |
NFR-13 |
Layer-Trennung Domain/App/Infra/UI | Keine Query oder HTML in Domain-Klassen | 0 Verletzungen in src/Planung/Domain | global |
Portability (1)
| Slug | Beschreibung | Messkriterium | Zielwert | Prozess |
|---|---|---|---|---|
NFR-14 |
Datenbank-Abstraktion via PDO | Anzahl direkter mysql-Funktionsaufrufe | 0 | global |
Compatibility (1)
| Slug | Beschreibung | Messkriterium | Zielwert | Prozess |
|---|---|---|---|---|
NFR-15 |
Browser-Kompatibilitaet ohne JS-Framework | Funktional in Chromium/Firefox/Safari letzte 2 Versionen | 3 Browser aktuell | global |