Tag 1 abgeschlossen

This commit is contained in:
Christoph Schwörer
2026-08-26 08:19:33 +02:00
parent f045b99a25
commit 7df384f6d2
77 changed files with 7456 additions and 3311 deletions
@@ -95,6 +95,8 @@ Ohne Subagenten sind Haupt- und Gesamtwerte für `claude-opus-5` identisch.
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -131,6 +133,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 4 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 71 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -148,6 +154,7 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (35 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 71 von 71 mit Tracelinks (100,0 %) |
## Opus-Solo-Block (K–O), fünf Messpunkte
@@ -16,7 +16,8 @@
"tracelinks": "SyRS-001, SyRS-002, SyRS-003",
"konsolidierung": "nein",
"pruefidee": "Für jede der sieben Kundenbelegarten kann ein Beleg angelegt werden; eine Rechnung lässt sich",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-002",
@@ -35,7 +36,8 @@
"tracelinks": "SyRS-004, SyRS-005",
"konsolidierung": "nein",
"pruefidee": "Nach Anlage einer zweiten Filiale existieren für diese eigene Nummernkreiseinträge; ein Beleg",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-003",
@@ -54,7 +56,8 @@
"tracelinks": "SyRS-006, SyRS-007, SyRS-008",
"konsolidierung": "nein",
"pruefidee": "Ein Benutzer ohne Gruppenzugehörigkeit erhält aus `CheckRightsFromUser` eine leere Rechteliste;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-004",
@@ -73,7 +76,8 @@
"tracelinks": "SyRS-014, SyRS-015",
"konsolidierung": "nein",
"pruefidee": "Eine Anmeldung mit einer Anwendung, deren Lizenz-GUID nicht in der Lizenzdatei enthalten ist,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-005",
@@ -92,7 +96,8 @@
"tracelinks": "SyRS-017",
"konsolidierung": "nein",
"pruefidee": "Ein Ticket kann angelegt, einem Bearbeiter zugewiesen, kategorisiert und abgeschlossen werden;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-006",
@@ -111,7 +116,8 @@
"tracelinks": "SyRS-018",
"konsolidierung": "nein",
"pruefidee": "Eine Zeit, die einer Rechnungsposition zugeordnet ist, kann nicht gelöscht werden; der Versuch,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-007",
@@ -130,7 +136,8 @@
"tracelinks": "SyRS-019",
"konsolidierung": "nein",
"pruefidee": "Ein Vertrag mit `BillingIntervalKind = Quarterly` und `BillingIntervalDuration = 1` erzeugt",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-008",
@@ -149,7 +156,8 @@
"tracelinks": "SyRS-020",
"konsolidierung": "nein",
"pruefidee": "Eine Rechnung in Stufe 3 wird durch einen weiteren Mahnlauf nicht weiter erhöht; nach",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-009",
@@ -168,7 +176,8 @@
"tracelinks": "SyRS-021, SyRS-022",
"konsolidierung": "nein",
"pruefidee": "Für einen konfigurierten Lieferanten wird ein OpenTrans-2.1-Auftragsbestätigungsdokument",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-010",
@@ -187,7 +196,8 @@
"tracelinks": "SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Ein Web-Account kann sich anmelden, ein freigegebenes Angebot einsehen und annehmen; der",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-011",
@@ -206,7 +216,8 @@
"tracelinks": "SyRS-024",
"konsolidierung": "nein",
"pruefidee": "Bei aktivierter Einstellung enthält das erzeugte Rechnungs-PDF ein eingebettetes XML, das die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-012",
@@ -225,7 +236,8 @@
"tracelinks": "SyRS-025",
"konsolidierung": "nein",
"pruefidee": "Ein Benutzer ohne `ACCESS_CLEANUP_DATABASE` erhält bei Aufruf der Bereinigung die Meldung",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-013",
@@ -244,7 +256,8 @@
"tracelinks": "SyRS-008, SyRS-026, SyRS-030",
"konsolidierung": "nein",
"pruefidee": "Nach Änderung eines Belegs sind `ChangedByI3D`, `ChangedAt` und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-014",
@@ -263,7 +276,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "Kandidat: Die Lokalisierung ist auf vier voneinander unabhängige Ressourcensätze verteilt",
"pruefidee": "Für jeden Schlüssel in `LocalizedStrings.resx` existiert ein Eintrag in",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-015",
@@ -282,7 +296,8 @@
"tracelinks": "SyRS-031, SyRS-032",
"konsolidierung": "nein",
"pruefidee": "Der Nexus-Host startet aus dem Container-Image und beantwortet Anfragen unter der in",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-001",
@@ -301,7 +316,8 @@
"tracelinks": "StRS-001 | SwRS-008",
"konsolidierung": "nein",
"pruefidee": "Die numerischen Werte bestehender Enum-Einträge ändern sich zwischen zwei Releases nicht;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-002",
@@ -321,7 +337,8 @@
"tracelinks": "StRS-001, StRS-013 | SwRS-015, SwRS-016",
"konsolidierung": "Kandidat: Die Übergänge nach `Completed` sind an mindestens vier verschiedenen Stellen in",
"pruefidee": "Ein neu angelegter Beleg hat `State = Active` und `Version = 1`; ein stornierter Beleg lässt",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-003",
@@ -340,7 +357,8 @@
"tracelinks": "StRS-001 | SwRS-015",
"konsolidierung": "nein",
"pruefidee": "Der Versuch, eine Rechnung in einen Auftrag weiterzuführen, wird abgelehnt; eine Barrechnung",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-004",
@@ -359,7 +377,8 @@
"tracelinks": "StRS-001, StRS-002 | SwRS-014",
"konsolidierung": "nein",
"pruefidee": "Zwei parallele Anlagevorgänge im selben Nummernkreis erhalten unterschiedliche Nummern; eine",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-005",
@@ -378,7 +397,8 @@
"tracelinks": "StRS-002, StRS-003 | SwRS-016",
"konsolidierung": "Kandidat: Die Filialprüfung ist getrennt für Anlage (`CanUserCreateReceiptsInBranch`, eigene",
"pruefidee": "Ein Benutzer der Filiale A mit dem Recht \"Rechnungen anzeigen - nur eigene Filiale\" kann eine",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-006",
@@ -397,7 +417,8 @@
"tracelinks": "StRS-003 | SwRS-016, SwRS-017, SwRS-023",
"konsolidierung": "Kandidat: Es existieren mindestens vier parallele Prüfwege - `AppUser.HasUserRight(...)`",
"pruefidee": "Ein direkter API-Aufruf (unter Umgehung der Oberfläche) einer rechtegeschützten Methode ohne",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-007",
@@ -416,7 +437,8 @@
"tracelinks": "StRS-003 | SwRS-016",
"konsolidierung": "nein",
"pruefidee": "Der Löschversuch der Gruppe \"Administratoren\" wird abgelehnt; das Anlegen einer zweiten Gruppe",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-008",
@@ -434,7 +456,8 @@
"tracelinks": "StRS-003, StRS-013 | SwRS-007",
"konsolidierung": "nein",
"pruefidee": "Nach Zuweisung eines Rechts an eine Gruppe existiert genau ein `AppRightLog` vom Typ",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-009",
@@ -453,7 +476,8 @@
"tracelinks": "StRS-003, StRS-004 | SwRS-023, SwRS-010",
"konsolidierung": "nein",
"pruefidee": "Ein Aufruf ohne `Ticket` liefert Status `InvalidTicket`; ein Aufruf mit einem Ticket einer",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-010",
@@ -472,7 +496,8 @@
"tracelinks": "StRS-003, StRS-004 | SwRS-009",
"konsolidierung": "nein",
"pruefidee": "Bei `SystemAuthenticationMethod.ActiveDirectory` und deaktivierter AD-Konfiguration liefert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-011",
@@ -491,7 +516,8 @@
"tracelinks": "StRS-003 | SwRS-009",
"konsolidierung": "nein",
"pruefidee": "Bei aktiviertem 2FA und `TwoFactorValidDurationInDays = 0` wird bei jeder Anmeldung ein",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-012",
@@ -510,7 +536,8 @@
"tracelinks": "StRS-003 | SwRS-009",
"konsolidierung": "nein",
"pruefidee": "Ein Benutzer mit `AccountDisabledFromDate` = gestern und leerem `AccountDisabledToDate` kann",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-013",
@@ -529,7 +556,8 @@
"tracelinks": "StRS-003, StRS-004, StRS-013 | SwRS-011, SwRS-023",
"konsolidierung": "nein",
"pruefidee": "Ein deaktiviertes Token liefert \"Token ist deaktiviert.\" und erzeugt einen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-014",
@@ -548,7 +576,8 @@
"tracelinks": "StRS-004 | SwRS-010",
"konsolidierung": "nein",
"pruefidee": "Eine Anmeldung mit einer unbekannten Lizenz-GUID liefert den Fehlercode",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-015",
@@ -567,7 +596,8 @@
"tracelinks": "StRS-004 | SwRS-010",
"konsolidierung": "nein",
"pruefidee": "Bei einer Lizenz mit Anzahl 1 kann sich ein zweiter Benutzer nicht anmelden; derselbe Benutzer",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-016",
@@ -586,7 +616,8 @@
"tracelinks": "StRS-004 | SwRS-010",
"konsolidierung": "nein",
"pruefidee": "Ein Ticket der Standardart ist 30 Minuten nach dem letzten Aufruf ungültig; die Einstellung",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-017",
@@ -606,7 +637,8 @@
"tracelinks": "StRS-005 | SwRS-015",
"konsolidierung": "Kandidat: `UpdateHelpdeskBL.CanHelpdeskClose`, `HelpdeskWebServiceBL.CanHelpdeskClose` und",
"pruefidee": "Ein Ticket mit einer aktiven Checkliste, deren Kennzeichen `CanCloseHelpdesk` = 0 ist und die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-018",
@@ -625,7 +657,8 @@
"tracelinks": "StRS-006, StRS-013 | SwRS-016",
"konsolidierung": "nein",
"pruefidee": "Eine einem Beleg zugeordnete Zeit kann auch mit dem Löschrecht nicht gelöscht werden; nach",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-019",
@@ -644,7 +677,8 @@
"tracelinks": "StRS-007 | SwRS-022, SwRS-012",
"konsolidierung": "Kandidat: Die Umrechnung Intervallart → Monate ist dreifach implementiert",
"pruefidee": "Ein Vertrag mit Quartalsintervall und Faktor 1, dessen Abrechnung am 15. eines Monats",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-020",
@@ -663,7 +697,8 @@
"tracelinks": "StRS-008, StRS-013 | SwRS-015",
"konsolidierung": "nein",
"pruefidee": "Ein Mahnlauf über eine Rechnung in Stufe 1 setzt diese auf Stufe 2 mit aktuellem Datum;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-021",
@@ -682,7 +717,8 @@
"tracelinks": "StRS-009 | SwRS-015",
"konsolidierung": "nein",
"pruefidee": "Für einen Lieferanten mit `EdiDataType.OpenTrans21` und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-022",
@@ -701,7 +737,8 @@
"tracelinks": "StRS-009, StRS-013 | SwRS-002",
"konsolidierung": "nein",
"pruefidee": "Ein fehlgeschlagener Produktivlauf erzeugt einen Protokolleintrag mit Zustand `Exception`,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-023",
@@ -720,7 +757,8 @@
"tracelinks": "StRS-010, StRS-003 | SwRS-009, SwRS-017",
"konsolidierung": "Kandidat: Es existieren zwei vollständig getrennte Rechtemodelle (`Sichtrus`/`Sichmemb` für",
"pruefidee": "Ein Web-Account, dessen Kunde gesperrt ist, kann sich nicht anmelden; ein angemeldetes",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-024",
@@ -739,7 +777,8 @@
"tracelinks": "StRS-011 | SwRS-013",
"konsolidierung": "Kandidat: Die Aktivierung ist doppelt steuerbar (global über `IsZugferdEnabled()`,",
"pruefidee": "Eine gespeicherte, nicht stornierte Rechnung erzeugt bei aktivierter Einstellung ein PDF mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-025",
@@ -758,7 +797,8 @@
"tracelinks": "StRS-012 | SwRS-016",
"konsolidierung": "nein",
"pruefidee": "Ein Benutzer ohne `ACCESS_CLEANUP_DATABASE` erhält \"Insufficient rights!\"; ein berechtigter",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-026",
@@ -777,7 +817,8 @@
"tracelinks": "StRS-013, StRS-001 | SwRS-005, SwRS-003",
"konsolidierung": "nein",
"pruefidee": "Nach einer Belegänderung existiert in der zugehörigen Versionstabelle ein Datensatz mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-027",
@@ -796,7 +837,8 @@
"tracelinks": "StRS-013 | SwRS-024",
"konsolidierung": "nein",
"pruefidee": "Client A und Client B laden denselben Beleg; nach dem Speichern durch A erhält B beim",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-028",
@@ -815,7 +857,8 @@
"tracelinks": "StRS-014 | SwRS-021",
"konsolidierung": "Kandidat: vier voneinander unabhängige Ressourcensätze mit teils redundanten Schlüsseln.",
"pruefidee": "Bei Umschaltung auf Englisch erscheinen in einer Stichprobe von Masken und Fehlermeldungen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-029",
@@ -834,7 +877,8 @@
"tracelinks": "StRS-015, StRS-004 | SwRS-020",
"konsolidierung": "nein",
"pruefidee": "Nach Installation einer neueren Version enthält `DBUpdate` Einträge für alle Skripte, deren",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-030",
@@ -853,7 +897,8 @@
"tracelinks": "StRS-013, StRS-015 | SwRS-002",
"konsolidierung": "Kandidat: Vier getrennte NLog-Konfigurationen (WPF-Client, Konsolen-Host, Windows-Dienst,",
"pruefidee": "Ein fehlgeschlagener Anmeldeversuch erzeugt einen `WARN`-Eintrag mit Benutzernamen,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-031",
@@ -872,7 +917,8 @@
"tracelinks": "StRS-015 | SwRS-020",
"konsolidierung": "nein",
"pruefidee": "Ein aus `main` gebautes Artefakt trägt die aus `version.json` abgeleitete Version und im",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-032",
@@ -890,7 +936,8 @@
"tracelinks": "StRS-015 | SwRS-001",
"konsolidierung": "Kandidat: Die doppelte Implementierung jeder Modulschnittstelle verdoppelt den",
"pruefidee": "Ein Modul, das nur `CentronConnectionType.CentronWebServices` deklariert, wird bei",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-001",
@@ -909,7 +956,8 @@
"tracelinks": "SyRS-032 | StRS-015",
"konsolidierung": "Kandidat: Die durchgängige Doppelimplementierung ist die größte strukturelle Redundanz der",
"pruefidee": "Für eine Stichprobe von `I*Logic`-Schnittstellen existieren jeweils eine `BL*Logic`- und eine",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-002",
@@ -928,7 +976,8 @@
"tracelinks": "SyRS-006, SyRS-022, SyRS-030 | StRS-013",
"konsolidierung": "Kandidat: Neben `Result`/`Result<T>` existiert im Web-Service-Host ein zweites Modell",
"pruefidee": "Ein Aufruf ohne erforderliches Recht liefert `Status = Error` und `MessageCode = 10000`;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-003",
@@ -947,7 +996,8 @@
"tracelinks": "SyRS-026, SyRS-001 | StRS-001",
"konsolidierung": "Kandidat: Modernes Entitäts-/View-Mapping und Legacy-Save-Repository bilden dasselbe",
"pruefidee": "Ein neu eingeführtes Belegfeld wird gespeichert und nach erneutem Laden unverändert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-004",
@@ -966,7 +1016,8 @@
"tracelinks": "SyRS-001, SyRS-026 | StRS-001",
"konsolidierung": "nein",
"pruefidee": "Für jede Belegart existieren Tabelle und View; eine Abfrage über die View liefert dieselben",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-005",
@@ -984,7 +1035,8 @@
"tracelinks": "SyRS-026 | StRS-013",
"konsolidierung": "nein",
"pruefidee": "Ein Vergleich der Spaltenlisten von `RechKopf` und `RechKopfVersions` ergibt bis auf `I3D`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-006",
@@ -1003,7 +1055,8 @@
"tracelinks": "SyRS-001 | StRS-001",
"konsolidierung": "Kandidat: Es existieren zwei Namensvarianten für Fremdschlüssel (`…I3D` und historisch",
"pruefidee": "Eine Schemaprüfung ergibt für alle Tabellen einen Primärschlüssel `I3D` vom Typ",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-007",
@@ -1022,7 +1075,8 @@
"tracelinks": "SyRS-008, SyRS-026 | StRS-013",
"konsolidierung": "nein",
"pruefidee": "Nach Anlage eines Datensatzes sind `CreatedByI3D` und `CreatedDate` gesetzt; nach einer",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-008",
@@ -1039,7 +1093,8 @@
"tracelinks": "SyRS-001, SyRS-021 | StRS-001",
"konsolidierung": "nein",
"pruefidee": "Ein Vergleich der Enum-Werte zweier aufeinanderfolgender Releases ergibt keine geänderten",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-009",
@@ -1058,7 +1113,8 @@
"tracelinks": "SyRS-010, SyRS-011, SyRS-012, SyRS-023 | StRS-003",
"konsolidierung": "Kandidat: Drei verschiedene Hashverfahren im selben System (ungesalzenes SHA-1 für",
"pruefidee": "Zwei Benutzer mit identischem Kennwort besitzen in der Datenbank denselben Hashwert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-010",
@@ -1077,7 +1133,8 @@
"tracelinks": "SyRS-009, SyRS-015, SyRS-016 | StRS-004",
"konsolidierung": "nein",
"pruefidee": "Zwei aufeinanderfolgende Ticketerzeugungen für dasselbe Gerät liefern unterschiedliche",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-011",
@@ -1095,7 +1152,8 @@
"tracelinks": "SyRS-013 | StRS-003, StRS-013",
"konsolidierung": "nein",
"pruefidee": "In der Tabelle `AccessToken` steht ausschließlich ein 64 Zeichen langer Hexwert; ein",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-012",
@@ -1114,7 +1172,8 @@
"tracelinks": "SyRS-019, SyRS-024 | StRS-007, StRS-011",
"konsolidierung": "Kandidat: `double`- und `decimal`-Überladungen derselben Formeln existieren parallel und",
"pruefidee": "Für Basispreis 10,005, Währungsfaktor 1, Rabatt 0, Genauigkeit 2 liefert `CalculateNetPrice`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-013",
@@ -1133,7 +1192,8 @@
"tracelinks": "SyRS-024, SyRS-003 | StRS-011, StRS-001",
"konsolidierung": "nein",
"pruefidee": "Für einen Nettobetrag von 100,00 und einen Steuersatz von 19 % liefert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-014",
@@ -1151,7 +1211,8 @@
"tracelinks": "SyRS-004 | StRS-001",
"konsolidierung": "nein",
"pruefidee": "Bei zwei gleichzeitigen Aufrufen mit `updateDatabase = true` liefert genau ein Aufruf die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-015",
@@ -1170,7 +1231,8 @@
"tracelinks": "SyRS-002, SyRS-003, SyRS-017, SyRS-020, SyRS-021 | StRS-001",
"konsolidierung": "Kandidat: Die Schnittstelle umfasst ca. 100 Methoden, von denen jede Implementierung",
"pruefidee": "Für jede Belegart existiert genau eine `IReceiptSpecificLogic`-Implementierung mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-016",
@@ -1189,7 +1251,8 @@
"tracelinks": "SyRS-005, SyRS-006, SyRS-007, SyRS-018, SyRS-025 | StRS-003",
"konsolidierung": "Kandidat: vier Prüfmechanismen für dieselbe fachliche Funktion (siehe SyRS-006).",
"pruefidee": "Alle vier Prüfwege liefern für denselben Benutzer und dasselbe Recht dasselbe Ergebnis;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-017",
@@ -1207,7 +1270,8 @@
"tracelinks": "SyRS-006, SyRS-023 | StRS-003",
"konsolidierung": "nein",
"pruefidee": "Zehn aufeinanderfolgende `HasUserRight`-Aufrufe innerhalb einer Sitzung erzeugen genau eine",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-018",
@@ -1226,7 +1290,8 @@
"tracelinks": "SyRS-006, SyRS-014, SyRS-032 | StRS-003, StRS-004",
"konsolidierung": "nein",
"pruefidee": "Ein Benutzer ohne das Modulrecht sieht das Modul nicht im Menü; bei fehlender Modullizenz",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-019",
@@ -1245,7 +1310,8 @@
"tracelinks": "SyRS-024, SyRS-016, SyRS-002 | StRS-011",
"konsolidierung": "Kandidat: zwei Einstellungstabellen mit zwei Schlüsselenums für dieselbe Aufgabe; im",
"pruefidee": "Zu jedem Wert in `ApplicationSettingID` existiert ein `case` in",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-020",
@@ -1264,7 +1330,8 @@
"tracelinks": "SyRS-029, SyRS-031 | StRS-015",
"konsolidierung": "Kandidat: zwei Migrationsmechanismen (C#-Skriptklassen und XAML-Skriptsammlungen)",
"pruefidee": "Ein zweiter Start nach erfolgreicher Migration führt kein Skript erneut aus; ein Skript, das",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-021",
@@ -1283,7 +1350,8 @@
"tracelinks": "SyRS-028 | StRS-014",
"konsolidierung": "Kandidat: siehe SyRS-028 - vier getrennte Ressourcensätze.",
"pruefidee": "Eine Codeanalyse findet in anwendersichtbaren Pfaden keine hartkodierten deutschen Literale;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-022",
@@ -1302,7 +1370,8 @@
"tracelinks": "SyRS-019 | StRS-007",
"konsolidierung": "Kandidat: drei Implementierungen derselben fachlichen Umrechnung mit abweichender",
"pruefidee": "Für einen Vertrag mit `BillingIntervalKind = Daily` und Faktor 30 liefern Abrechnung und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-023",
@@ -1321,7 +1390,8 @@
"tracelinks": "SyRS-009, SyRS-013, SyRS-006 | StRS-003",
"konsolidierung": "Kandidat: Zwei parallele Schnittstellenstile (WCF-Bridge mit Interceptoren und",
"pruefidee": "Eine neu hinzugefügte, mit `[Authenticate]` markierte Dienstmethode ist ohne weitere",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-024",
@@ -1339,6 +1409,7 @@
"tracelinks": "SyRS-027 | StRS-013",
"konsolidierung": "Kandidat: Pessimistische Sperre (`AssetLockBL`) und optimistische Sperre",
"pruefidee": "Benutzer A öffnet einen Beleg; Benutzer B erhält beim Öffnen eine Sperrmeldung und kann die",
"qm": ""
"qm": "",
"uebernahme": ""
}
]
@@ -2,6 +2,8 @@
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -38,6 +40,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 4 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 71 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -55,5 +61,6 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (35 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 71 von 71 mit Tracelinks (100,0 %) |
@@ -95,6 +95,8 @@ Ohne Subagenten sind Haupt- und Gesamtwerte für `claude-opus-5` identisch.
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -131,6 +133,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 3 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 119 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -148,6 +154,7 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (54 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 119 von 119 mit Tracelinks (100,0 %) |
## Opus-Solo-Block (K–O), fünf Messpunkte
@@ -2,6 +2,8 @@
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -38,6 +40,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 3 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 119 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -55,5 +61,6 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (54 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 119 von 119 mit Tracelinks (100,0 %) |
@@ -95,6 +95,8 @@ Ohne Subagenten sind Haupt- und Gesamtwerte für `claude-opus-5` identisch.
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -131,6 +133,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 4,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 114 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -148,6 +154,7 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (50 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 114 von 114 mit Tracelinks (100,0 %) |
## Opus-Solo-Block (K–O), fünf Messpunkte
@@ -2,6 +2,8 @@
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -38,6 +40,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 4,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 114 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -55,5 +61,6 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (50 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 114 von 114 mit Tracelinks (100,0 %) |
@@ -95,6 +95,8 @@ Ohne Subagenten sind Haupt- und Gesamtwerte für `claude-opus-5` identisch.
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -131,6 +133,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 3,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 182 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -148,6 +154,7 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (51 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 182 von 182 mit Tracelinks (100,0 %) |
## Opus-Solo-Block (K–O), fünf Messpunkte
@@ -2,6 +2,8 @@
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -38,6 +40,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 3,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 182 (100,0 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -55,5 +61,6 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (51 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 182 von 182 mit Tracelinks (100,0 %) |
@@ -95,6 +95,8 @@ Ohne Subagenten sind Haupt- und Gesamtwerte für `claude-opus-5` identisch.
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -131,6 +133,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 4 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 108 (99,1 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -148,6 +154,7 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (46 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 109 von 109 mit Tracelinks (100,0 %) |
## Opus-Solo-Block (K–O), fünf Messpunkte
@@ -16,7 +16,8 @@
"tracelinks": "SyRS-14, SyRS-21, SwRS-14",
"konsolidierung": "Kandidat: StRS-02 (Filialbeschränkung ist zugleich ein Berechtigungskonzept; im Zielsystem sollte",
"pruefidee": "Zwei Filialen anlegen, in jeder eine Rechnung erzeugen; die vergebenen Rechnungsnummern müssen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-02",
@@ -35,7 +36,8 @@
"tracelinks": "SyRS-09, SyRS-10, SyRS-20, SwRS-09",
"konsolidierung": "Kandidat: StRS-03 (Rechte und Lizenzen wirken in `ModuleRegistration.cs` als UND-Verknüpfung auf",
"pruefidee": "Einem Benutzer das Recht `ADD_NEW_HELPDESK` entziehen; ein Anlageversuch über UI *und* über die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-03",
@@ -54,7 +56,8 @@
"tracelinks": "SyRS-07, SyRS-09, SwRS-11",
"konsolidierung": "Kandidat: StRS-02 (siehe dort).",
"pruefidee": "Lizenzanzahl für `ServiceBoard` auf 1 setzen; ein zweiter gleichzeitiger Login eines anderen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-04",
@@ -73,7 +76,8 @@
"tracelinks": "SyRS-11, SyRS-15, SyRS-16, SwRS-16, SwRS-17",
"konsolidierung": "nein",
"pruefidee": "Angebot anlegen → in Auftrag überführen → Lieferschein → Rechnung; anschließend am Auftrag die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-05",
@@ -91,7 +95,8 @@
"tracelinks": "SyRS-12, SwRS-16",
"konsolidierung": "nein",
"pruefidee": "Rechnung stornieren, anschließend \"als bezahlt markieren\" aufrufen; der Aufruf muss mit der oben",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-06",
@@ -110,7 +115,8 @@
"tracelinks": "SyRS-32, SyRS-33, SwRS-21",
"konsolidierung": "Kandidat: StRS-10 (Vertragsabrechnung, Pauschalabrechnung und vereinfachte Ticketabrechnung erzeugen",
"pruefidee": "Vertrag mit Intervall \"Quartal(e)\", Dauer 1, vorschüssig anlegen; die automatische Abrechnung muss",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-07",
@@ -129,7 +135,8 @@
"tracelinks": "SyRS-32, SwRS-21",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit Monatskontingent 10 Stunden, `RestTake = true`, Verbrauch 6 Stunden in Periode 1:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-08",
@@ -148,7 +155,8 @@
"tracelinks": "SyRS-27, SyRS-28, SyRS-29, SyRS-30, SwRS-19",
"konsolidierung": "nein",
"pruefidee": "Ticket anlegen, Status ändern, weiterleiten, schließen; die Ticket-Historie muss für jede dieser",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-09",
@@ -167,7 +175,8 @@
"tracelinks": "SyRS-31, SwRS-20",
"konsolidierung": "Kandidat: StRS-10",
"pruefidee": "Zeit erfassen, in eine Rechnung überführen, anschließend die Zeit löschen wollen — der Löschversuch",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-10",
@@ -185,7 +194,8 @@
"tracelinks": "SyRS-32, SyRS-33, SwRS-21",
"konsolidierung": "Kandidat: StRS-06, StRS-09 — die fünf Abrechnungsmodule bilden dieselbe fachliche Grundfunktion",
"pruefidee": "Denselben Kunden über Vertragsabrechnung und über vereinfachte Ticketabrechnung abrechnen; beide",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-11",
@@ -204,7 +214,8 @@
"tracelinks": "SyRS-01, SyRS-20, SyRS-35, SwRS-10, SwRS-24",
"konsolidierung": "Kandidat: StRS-02 — es existieren zwei getrennte Rechtekataloge (`UserRightsConst` für Mitarbeiter,",
"pruefidee": "Mit einem Web-Account anmelden, der nur `WEBRIGHT_EDITONLYOWNREQUESTS` besitzt: Der Zugriff auf ein",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-12",
@@ -223,7 +234,8 @@
"tracelinks": "SyRS-34, SwRS-18",
"konsolidierung": "nein",
"pruefidee": "Warenkorb im Zustand `Created` direkt freigeben wollen (ohne `ReadyForCheck`): Der Aufruf muss mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-13",
@@ -242,7 +254,8 @@
"tracelinks": "SyRS-26, SwRS-22",
"konsolidierung": "nein",
"pruefidee": "Kunde mit `ExportZUGFeRDDocument = true` und gepflegter Leitweg-ID: Der Rechnungsversand muss ein",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-14",
@@ -261,7 +274,8 @@
"tracelinks": "SyRS-26, SwRS-22",
"konsolidierung": "nein",
"pruefidee": "Rechnung exportieren, Export wiederholen: Der zweite Lauf darf die Rechnung nicht erneut in die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-15",
@@ -280,7 +294,8 @@
"tracelinks": "SyRS-22, SwRS-15",
"konsolidierung": "nein",
"pruefidee": "Kunde auf Mahnstufe 3 setzen, Sperrschwelle auf 2 konfigurieren; ein neuer Auftrag für diesen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-16",
@@ -299,7 +314,8 @@
"tracelinks": "SyRS-11, SwRS-05",
"konsolidierung": "nein",
"pruefidee": "Lieferschein mit Menge 5 buchen; der Lagerbestand des Artikels muss anschließend um genau 5",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-17",
@@ -318,7 +334,8 @@
"tracelinks": "SyRS-11, SyRS-20, SwRS-17",
"konsolidierung": "Kandidat: StRS-04 — Kunden- und Lieferantenbelege teilen die Basisklasse `ReceiptBase`, sind aber in",
"pruefidee": "Zwei Lieferantenrechnungen mit identischer externer Rechnungsnummer desselben Lieferanten erfassen;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-18",
@@ -336,7 +353,8 @@
"tracelinks": "SyRS-20, SwRS-15",
"konsolidierung": "nein",
"pruefidee": "`InvoiceAutoProvisionIsActive = true`, Prozentsatz 3, Mitarbeiter X; eine neue Rechnung über 1.000 €",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-19",
@@ -355,7 +373,8 @@
"tracelinks": "SyRS-10, SwRS-09",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit `RIGHT_MITARBEITERAUSLASTUNGNUREIGENEFILIALE` öffnet die Mitarbeiterauslastung; es",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-20",
@@ -374,7 +393,8 @@
"tracelinks": "SyRS-45, SwRS-07",
"konsolidierung": "nein",
"pruefidee": "Löschanfrage für einen Ansprechpartner ausführen; danach müssen Name und Kontaktdaten durch den",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-21",
@@ -393,7 +413,8 @@
"tracelinks": "SyRS-29, SyRS-37, SwRS-07",
"konsolidierung": "Kandidat: die vier parallelen Historienmechanismen (`ChangeLog`, `ReceiptLog`,",
"pruefidee": "Fälligkeitsdatum eines Tickets ändern; die Ticket-Historie muss einen Eintrag \"Fälligkeitsdatum",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-22",
@@ -412,7 +433,8 @@
"tracelinks": "SyRS-46, SwRS-24",
"konsolidierung": "nein",
"pruefidee": "Angebot per C-Sign versenden; nach kundenseitiger Unterzeichnung muss der Web-Beleg-Status auf",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-23",
@@ -431,7 +453,8 @@
"tracelinks": "SyRS-47, SwRS-27",
"konsolidierung": "nein",
"pruefidee": "ITscope-API-Key hinterlegen und `IsITscopeArticleSearchActive` aktivieren; die Artikelsuche im",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-24",
@@ -450,7 +473,8 @@
"tracelinks": "SyRS-01, SyRS-02, SyRS-04, SwRS-12, SwRS-13",
"konsolidierung": "nein",
"pruefidee": "`SystemAuthenticationMethod = OpenIdConnect` setzen und für einen Benutzer keine verknüpfte",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-25",
@@ -469,7 +493,8 @@
"tracelinks": "SyRS-38, SwRS-29",
"konsolidierung": "Kandidat: Es existieren mindestens zwei getrennte Ressourcenkataloge (WPF-Client und Nexus) mit",
"pruefidee": "Anwendung mit englischer Kultur starten; alle in `LocalizedStrings.en.resx` gepflegten Texte müssen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-26",
@@ -488,7 +513,8 @@
"tracelinks": "SyRS-13, SyRS-15, SwRS-14",
"konsolidierung": "nein",
"pruefidee": "RMA-Vorgang anlegen: Es müssen drei getrennte Nummern (Reparatureingang, RMA, Rückversand) aus den",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-01",
@@ -506,7 +532,8 @@
"tracelinks": "StRS-24 → SyRS-01 → SwRS-12, SwRS-13",
"konsolidierung": "nein",
"pruefidee": "Anmeldung mit korrektem Benutzernamen und falschem Passwort sowie mit unbekanntem Benutzernamen:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-02",
@@ -525,7 +552,8 @@
"tracelinks": "StRS-24 → SyRS-02 → SwRS-12",
"konsolidierung": "nein",
"pruefidee": "`SystemAuthenticationMethod = ActiveDirectory` setzen, AD in der Web-Service-Konfiguration",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-03",
@@ -543,7 +571,8 @@
"tracelinks": "StRS-24 → SyRS-03 → SwRS-13",
"konsolidierung": "nein",
"pruefidee": "Für ein Konto `AccountDisabledFromDate = gestern` ohne `ToDate` setzen; die Anmeldung muss mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-04",
@@ -561,7 +590,8 @@
"tracelinks": "StRS-24 → SyRS-04 → SwRS-12",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit aktivem E-Mail-Zweitfaktor anmelden und den Code nicht bestätigen: Es darf kein",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-05",
@@ -579,7 +609,8 @@
"tracelinks": "StRS-24 → SyRS-05 → SwRS-13",
"konsolidierung": "nein",
"pruefidee": "Ticket einer `Default`-Anwendung erzeugen, Systemzeit um 31 Minuten vorstellen, geschützte Methode",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-06",
@@ -596,7 +627,8 @@
"tracelinks": "StRS-24 → SyRS-06 → SwRS-13",
"konsolidierung": "nein",
"pruefidee": "Zwei Aufrufe im Abstand von 4 Minuten absetzen; das gespeicherte `ExpiryDate` darf sich nach dem",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-07",
@@ -615,7 +647,8 @@
"tracelinks": "StRS-03 → SyRS-07 → SwRS-11",
"konsolidierung": "nein",
"pruefidee": "Lizenzanzahl auf 1 setzen und von zwei verschiedenen Maschinen mit demselben Benutzer anmelden:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-08",
@@ -632,7 +665,8 @@
"tracelinks": "StRS-02, StRS-03 → SyRS-08 → SwRS-11",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit `RIGHT_DISALLOW_SERVICEBOARD_LOGIN` versucht die Anmeldung am ServiceBoard: Sie muss",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-09",
@@ -651,7 +685,8 @@
"tracelinks": "StRS-02, StRS-03 → SyRS-09 → SwRS-30, SwRS-31",
"konsolidierung": "nein",
"pruefidee": "Recht für \"Rechteverwaltung\" entziehen: Das Modul darf nach Neustart nicht mehr registriert sein;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-10",
@@ -670,7 +705,8 @@
"tracelinks": "StRS-01, StRS-02, StRS-19 → SyRS-10 → SwRS-09",
"konsolidierung": "Kandidat: SyRS-21 — Filialbeschränkung ist in Helpdesk, Belegwesen und Auswertungen jeweils",
"pruefidee": "Benutzer mit `SHOW_HELPDESK_ONLY_OWN_BRANCH` ruft ein Ticket einer fremden Filiale direkt über die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-11",
@@ -689,7 +725,8 @@
"tracelinks": "StRS-04, StRS-16, StRS-17 → SyRS-11 → SwRS-17",
"konsolidierung": "nein",
"pruefidee": "Ein Dokument an ein Ticket und an eine Rechnung hängen; beide Zuordnungen müssen in derselben",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-12",
@@ -707,7 +744,8 @@
"tracelinks": "StRS-05 → SyRS-12 → SwRS-16",
"konsolidierung": "nein",
"pruefidee": "Wie StRS-05.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-13",
@@ -725,7 +763,8 @@
"tracelinks": "StRS-04, StRS-26 → SyRS-13 → SwRS-14",
"konsolidierung": "nein",
"pruefidee": "Zwei parallele Anlagen desselben Belegtyps auslösen; beide müssen unterschiedliche, aufeinander",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-14",
@@ -743,7 +782,8 @@
"tracelinks": "StRS-01 → SyRS-14 → SwRS-14",
"konsolidierung": "nein",
"pruefidee": "Zwei Filialen mit disjunkten Nummernbereichen konfigurieren; je ein Ticket pro Filiale anlegen und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-15",
@@ -761,7 +801,8 @@
"tracelinks": "StRS-04, StRS-26 → SyRS-15 → SwRS-17",
"konsolidierung": "nein",
"pruefidee": "Auftrag mit 10 Stück in zwei Teillieferscheine à 5 Stück überführen; ein dritter Lieferschein darf",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-16",
@@ -779,7 +820,8 @@
"tracelinks": "StRS-04 → SyRS-16 → SwRS-17",
"konsolidierung": "nein",
"pruefidee": "Anzahlungsrechnung zu einem Auftrag erzeugen und anschließend die Belegprogression des Auftrags",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-17",
@@ -796,7 +838,8 @@
"tracelinks": "StRS-04, StRS-21 → SyRS-17 → SwRS-16",
"konsolidierung": "nein",
"pruefidee": "Angebot in Version 3 bringen, in einen Auftrag überführen, anschließend eine neue Version aus",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-18",
@@ -814,7 +857,8 @@
"tracelinks": "StRS-04, StRS-21 → SyRS-18 → SwRS-16",
"konsolidierung": "nein",
"pruefidee": "Beleg in zwei Sitzungen laden, in Sitzung A speichern, danach in Sitzung B speichern: Der zweite",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-19",
@@ -832,7 +876,8 @@
"tracelinks": "StRS-04 → SyRS-19 → SwRS-16",
"konsolidierung": "Kandidat: SyRS-18 — es existieren zwei parallele Nebenläufigkeitsmechanismen (Sperre und",
"pruefidee": "Beleg in Sitzung A zur Bearbeitung öffnen; Sitzung B muss beim Öffnen die Sperrmeldung erhalten und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-20",
@@ -851,7 +896,8 @@
"tracelinks": "StRS-02, StRS-11, StRS-17, StRS-18 → SyRS-20 → SwRS-15",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit `SHOW_INVOICES`, aber ohne `EDIT_INVOICE`: Anzeige muss gelingen, jede Änderung mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-21",
@@ -869,7 +915,8 @@
"tracelinks": "StRS-01, StRS-02 → SyRS-21 → SwRS-15",
"konsolidierung": "Kandidat: SyRS-10",
"pruefidee": "Benutzer der Filiale 2 mit `EDIT_INVOICE_ONLY_OWN_BRANCH` bearbeitet eine Rechnung der Filiale 1:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-22",
@@ -887,7 +934,8 @@
"tracelinks": "StRS-15 → SyRS-22 → SwRS-15",
"konsolidierung": "nein",
"pruefidee": "Sperrschwelle für \"Auftrag\" auf 2 setzen, Kunde auf Mahnstufe 2: Auftragsanlage muss scheitern,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-23",
@@ -905,7 +953,8 @@
"tracelinks": "StRS-04 → SyRS-23 → SwRS-08, SwRS-15",
"konsolidierung": "nein",
"pruefidee": "`ReceiptUserStateRequiredInInvoices = true` setzen und eine Rechnung ohne Belegstatus speichern:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-24",
@@ -923,7 +972,8 @@
"tracelinks": "StRS-04, StRS-13 → SyRS-24 → SwRS-15",
"konsolidierung": "nein",
"pruefidee": "Kunde ohne Steuernummer und ohne USt-IdNr.; die Erstellung eines Belegs der prüfpflichtigen Art",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-25",
@@ -941,7 +991,8 @@
"tracelinks": "StRS-04, StRS-13 → SyRS-25 → SwRS-22",
"konsolidierung": "nein",
"pruefidee": "Standardreport der Reportgruppe \"Rechnung\" entfernen und eine Rechnung drucken wollen: Der Aufruf",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-26",
@@ -960,7 +1011,8 @@
"tracelinks": "StRS-13, StRS-14 → SyRS-26 → SwRS-22",
"konsolidierung": "nein",
"pruefidee": "Kunde einer Firmengruppe zuordnen, Leitweg-ID nur an der Firmengruppe pflegen: Die Rechnung muss",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-27",
@@ -979,7 +1031,8 @@
"tracelinks": "StRS-08 → SyRS-27 → SwRS-19",
"konsolidierung": "nein",
"pruefidee": "Neuen Ticketstatus anlegen und als \"geschlossen\"-Status konfigurieren; das Schließen eines Tickets",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-28",
@@ -998,7 +1051,8 @@
"tracelinks": "StRS-08, StRS-21 → SyRS-28 → SwRS-19",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne `CLOSE_REQUEST` setzt den Abschlussstatus: Der Speichervorgang muss mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-29",
@@ -1015,7 +1069,8 @@
"tracelinks": "StRS-08, StRS-21 → SyRS-29 → SwRS-19",
"konsolidierung": "Kandidat: SyRS-37 — die Ticket-Historie ist ein eigener Mechanismus neben `ChangeLog`.",
"pruefidee": "Ticketstatus ändern und speichern; anschließend muss genau ein neuer Historieneintrag mit altem und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-30",
@@ -1034,7 +1089,8 @@
"tracelinks": "StRS-08 → SyRS-30 → SwRS-19",
"konsolidierung": "nein",
"pruefidee": "Ticket auf Eskalationsstufe 2 bringen, Fälligkeitsdatum um eine Woche verschieben: `EscalationLevel`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-31",
@@ -1052,7 +1108,8 @@
"tracelinks": "StRS-09 → SyRS-31 → SwRS-20",
"konsolidierung": "nein",
"pruefidee": "Zeit erfassen, in einen Auftrag übernehmen, Zeit löschen wollen: Der Versuch muss mit der",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-32",
@@ -1071,7 +1128,8 @@
"tracelinks": "StRS-06, StRS-07, StRS-10 → SyRS-32 → SwRS-21",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit Jahresintervall (Dauer 1) und Monatskontingent (`DifferContingentIntervalDuration = 1`):",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-33",
@@ -1088,7 +1146,8 @@
"tracelinks": "StRS-06, StRS-10 → SyRS-33 → SwRS-21",
"konsolidierung": "nein",
"pruefidee": "Zwei sonst identische Verträge, einer vorschüssig, einer nachschüssig: Die am selben Stichtag",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-34",
@@ -1107,7 +1166,8 @@
"tracelinks": "StRS-12 → SyRS-34 → SwRS-18",
"konsolidierung": "nein",
"pruefidee": "Warenkorb `ReadyForCheck` durch einen Web-Account ohne `WEBRIGHT_WEBCART2_CHECK_CART` freigeben",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-35",
@@ -1126,7 +1186,8 @@
"tracelinks": "StRS-11, StRS-24 → SyRS-35 → SwRS-24",
"konsolidierung": "nein",
"pruefidee": "Kundenportal auf Port 8443 konfigurieren; eine interne ServiceBoard-Seite über Port 8443 aufrufen:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-36",
@@ -1144,7 +1205,8 @@
"tracelinks": "StRS-11 → SyRS-36 → SwRS-24",
"konsolidierung": "nein",
"pruefidee": "Datei mit 30 MB über das Kundenportal hochladen: Der Upload muss abgewiesen werden; dieselbe Datei",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-37",
@@ -1162,7 +1224,8 @@
"tracelinks": "StRS-21 → SyRS-37 → SwRS-07",
"konsolidierung": "Kandidat: SyRS-29 und die Mechanismen `ReceiptLog` / `ReceiptHistoryEntry` bilden dieselbe",
"pruefidee": "Ein protokolliertes Feld auf einen Wert mit mehr als 255 Zeichen setzen: Das Protokoll darf keinen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-38",
@@ -1181,7 +1244,8 @@
"tracelinks": "StRS-25 → SyRS-38 → SwRS-29",
"konsolidierung": "Kandidat: getrennte Ressourcenbestände in WPF-Client und Nexus.",
"pruefidee": "Anwendung mit `en-US` starten; Stichprobe von 20 Dialogtexten muss vollständig englisch sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-39",
@@ -1200,7 +1264,8 @@
"tracelinks": "StRS-02 → SyRS-39 → SwRS-23",
"konsolidierung": "nein",
"pruefidee": "Update zweimal hintereinander auf derselben Datenbank ausführen: Der zweite Lauf darf keine",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-40",
@@ -1218,7 +1283,8 @@
"tracelinks": "StRS-21 → SyRS-40 → SwRS-26",
"konsolidierung": "nein",
"pruefidee": "Eine Einzelaufgabe des Dienstes künstlich fehlschlagen lassen: Der Dienst muss den Fehler mit",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-41",
@@ -1236,7 +1302,8 @@
"tracelinks": "StRS-21 → SyRS-41 → SwRS-26",
"konsolidierung": "Kandidat: zwei getrennte Protokollkonfigurationen mit abweichenden Stufen und Aufbewahrungsfristen.",
"pruefidee": "Über 15 Tage hinweg täglich Warnungen erzeugen: Es dürfen nie mehr als 15 Archivdateien im",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-42",
@@ -1255,7 +1322,8 @@
"tracelinks": "StRS-11, StRS-25 → SyRS-42 → SwRS-28",
"konsolidierung": "nein",
"pruefidee": "Container starten und einen Beleg-PDF-Report erzeugen: Umlaute und deutsche Datumsformate müssen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-43",
@@ -1274,7 +1342,8 @@
"tracelinks": "StRS-02 → SyRS-43 → SwRS-33",
"konsolidierung": "nein",
"pruefidee": "Einen Test absichtlich fehlschlagen lassen: Die Build-Pipeline muss abbrechen und keine Artefakte",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-44",
@@ -1292,7 +1361,8 @@
"tracelinks": "StRS-24 → SyRS-44 → SwRS-13",
"konsolidierung": "nein",
"pruefidee": "Zwei Benutzer mit identischem Passwort anlegen; die gespeicherten Werte in `Sichbenu.Password`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-45",
@@ -1311,7 +1381,8 @@
"tracelinks": "StRS-20 → SyRS-45 → SwRS-07",
"konsolidierung": "Kandidat: Der Code enthält mehrere auskommentierte Löschpfade (`DoDeleteCustomer`,",
"pruefidee": "Löschanfrage für einen Ansprechpartner ausführen, der auf einem Ticket und einer Rechnung",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-46",
@@ -1331,7 +1402,8 @@
"tracelinks": "StRS-22 → SyRS-46 → SwRS-24",
"konsolidierung": "nein",
"pruefidee": "Angebot per C-Sign versenden, kundenseitig \"mit Änderungswunsch annehmen\": Der Belegzustand muss",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-47",
@@ -1349,7 +1421,8 @@
"tracelinks": "StRS-23 → SyRS-47 → SwRS-27",
"konsolidierung": "nein",
"pruefidee": "Lizenz für eine Anbindung entfernen: Die zugehörige Einstellungsseite darf nach Neustart nicht",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-01",
@@ -1368,7 +1441,8 @@
"tracelinks": "SyRS-11 → SwRS-01",
"konsolidierung": "nein",
"pruefidee": "Statische Prüfung: Kein Typ aus `Centron.Data.Entities.*` darf in `Centron.WPF.UI` oder",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-02",
@@ -1387,7 +1461,8 @@
"tracelinks": "SyRS-09 → SwRS-02",
"konsolidierung": "Kandidat: Für ein Web-/SaaS-Zielsystem entfällt der Zweck der Dualität; die BL-Variante ist dann",
"pruefidee": "Zu jeder `I*Logic`-Schnittstelle in `Services/Logics` muss je genau eine `BL*Logic`- und eine",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-03",
@@ -1406,7 +1481,8 @@
"tracelinks": "SyRS-20, SyRS-23 → SwRS-03",
"konsolidierung": "nein",
"pruefidee": "Jede öffentliche Methode einer `*BL`-Klasse, die fehlschlagen kann, muss `Result` bzw. `Result<T>`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-04",
@@ -1424,7 +1500,8 @@
"tracelinks": "SyRS-20, SyRS-23 → SwRS-04",
"konsolidierung": "nein",
"pruefidee": "Eine hypothetische neue Belegart hinzufügen: Es darf keine Änderung an `ReceiptBL` erforderlich",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-05",
@@ -1442,7 +1519,8 @@
"tracelinks": "SyRS-11, SyRS-37 → SwRS-05",
"konsolidierung": "nein",
"pruefidee": "Zu jeder Klasse unter `Centron.Entities/Entities` muss genau eine Mappingklasse unter",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-06",
@@ -1461,7 +1539,8 @@
"tracelinks": "SyRS-11 → SwRS-06",
"konsolidierung": "nein",
"pruefidee": "Schemaprüfung: Jede Tabelle in `dbo` besitzt genau einen gruppierten Primärschlüssel auf `I3D`;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-07",
@@ -1480,7 +1559,8 @@
"tracelinks": "SyRS-37 → SwRS-07",
"konsolidierung": "Kandidat: `DBEntity.State` (nullable int) und `IsDeleted` (bit) kodieren beide Aktiv-/Inaktiv-",
"pruefidee": "Datensatz löschen und anschließend über die Datenbank prüfen: Die Zeile muss noch existieren und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-08",
@@ -1499,7 +1579,8 @@
"tracelinks": "SyRS-23 → SwRS-08",
"konsolidierung": "Kandidat: `Stammdat` (`AppSettingsConst`) und `ApplicationSettings` (`ApplicationSettingID`)",
"pruefidee": "Zu jedem Wert von `ApplicationSettingID` muss `GetApplicationSettingDescription` einen von `null`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-09",
@@ -1518,7 +1599,8 @@
"tracelinks": "SyRS-10, SyRS-20 → SwRS-09",
"konsolidierung": "Kandidat: SwRS-10 — zwei getrennte Rechtekataloge für Mitarbeiter und Web-Accounts.",
"pruefidee": "Statische Prüfung: In `Centron.BL`, `Centron.WPF.UI` und `CentronNexus` darf kein Rechtevergleich",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-10",
@@ -1536,7 +1618,8 @@
"tracelinks": "SyRS-20, SyRS-34, SyRS-35 → SwRS-10",
"konsolidierung": "Kandidat: SwRS-09 — im Zielsystem als ein Rechtemodell mit Nutzerklassen abzubilden.",
"pruefidee": "Web-Account mit `WEBRIGHT_EDITALLREQUESTS` versucht eine Belegbearbeitung: Der Zugriff muss über",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-11",
@@ -1554,7 +1637,8 @@
"tracelinks": "SyRS-07, SyRS-08 → SwRS-11",
"konsolidierung": "nein",
"pruefidee": "Neue Anwendung in `ApplicationKind` ergänzen und ohne weitere Änderung anmelden: Die Anmeldung muss",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-12",
@@ -1573,7 +1657,8 @@
"tracelinks": "SyRS-01, SyRS-02, SyRS-04 → SwRS-12",
"konsolidierung": "nein",
"pruefidee": "Für jeden `AuthObject`-Untertyp muss `AuthenticatorFactory.GetMainAuthenticator` einen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-13",
@@ -1592,7 +1677,8 @@
"tracelinks": "SyRS-05, SyRS-44 → SwRS-13",
"konsolidierung": "nein",
"pruefidee": "Zwei Tickets für dasselbe Gerät und denselben Benutzer nacheinander erzeugen (nach Löschen des",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-14",
@@ -1610,7 +1696,8 @@
"tracelinks": "SyRS-13, SyRS-14 → SwRS-14",
"konsolidierung": "nein",
"pruefidee": "Für jeden Wert von `NumberGroupEnum` müssen `GetTableName()` und `GetFieldName()` nichtleere Werte",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-15",
@@ -1628,7 +1715,8 @@
"tracelinks": "SyRS-20, SyRS-21, SyRS-22, SyRS-23, SyRS-24 → SwRS-15",
"konsolidierung": "nein",
"pruefidee": "Beleg mit zwei fehlenden Pflichtfeldern speichern: Das Ergebnis muss beide Felder benennen, nicht",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-16",
@@ -1647,7 +1735,8 @@
"tracelinks": "SyRS-12, SyRS-17, SyRS-18, SyRS-19 → SwRS-16",
"konsolidierung": "Kandidat: Die Kodierung von Vorlagen über negative Nummern ist eine implizite Konvention; im",
"pruefidee": "Beleg mit `Number = -1` anlegen: `IsTemplate` muss `true` liefern und der Beleg darf nicht in",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-17",
@@ -1666,7 +1755,8 @@
"tracelinks": "SyRS-11, SyRS-15, SyRS-16 → SwRS-17",
"konsolidierung": "nein",
"pruefidee": "Belegprogression für jede unterstützte Objektart aufrufen: Es darf in keinem Fall ein",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-18",
@@ -1685,7 +1775,8 @@
"tracelinks": "SyRS-34 → SwRS-18",
"konsolidierung": "nein",
"pruefidee": "Für jeden der sechs Übergänge prüfen, dass bei fehlendem Recht weder `AngKopf.CartState` geändert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-19",
@@ -1704,7 +1795,8 @@
"tracelinks": "SyRS-27, SyRS-28, SyRS-29, SyRS-30 → SwRS-19",
"konsolidierung": "nein",
"pruefidee": "Ticket über das Kundenportal bei aktivierter Kundenfreigabe anlegen: Der Status muss `null`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-20",
@@ -1723,7 +1815,8 @@
"tracelinks": "SyRS-31 → SwRS-20",
"konsolidierung": "nein",
"pruefidee": "Zeit einem Auftrag zuordnen: `IsAssignedToOrder` und `IsAssignedToAsset` müssen `true` liefern,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-21",
@@ -1742,7 +1835,8 @@
"tracelinks": "SyRS-32, SyRS-33 → SwRS-21",
"konsolidierung": "nein",
"pruefidee": "Für jede Kombination aus `BillingIntervalKinds` und `DifferContingentInterval` einen Testfall",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-22",
@@ -1762,7 +1856,8 @@
"tracelinks": "SyRS-25, SyRS-26 → SwRS-22",
"konsolidierung": "nein",
"pruefidee": "Erzeugte XML-Datei mit dem KOSIT-Validierungswerkzeug gegen das XRechnung-Schema prüfen: Es dürfen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-23",
@@ -1781,7 +1876,8 @@
"tracelinks": "SyRS-39 → SwRS-23",
"konsolidierung": "nein",
"pruefidee": "Alle Skriptklassen laden und prüfen, dass jede Nummer genau einmal vorkommt und die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-24",
@@ -1800,7 +1896,8 @@
"tracelinks": "SyRS-35, SyRS-36 → SwRS-24",
"konsolidierung": "nein",
"pruefidee": "Neues Recht in `UserRightsConst` ergänzen und im Portal per `AuthorizeCombinedAttribute`",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-25",
@@ -1819,7 +1916,8 @@
"tracelinks": "SyRS-05, SyRS-08 → SwRS-25",
"konsolidierung": "Kandidat: Die 1279 Altmethoden und die v1-Controller decken teils dieselbe Fachfunktion ab",
"pruefidee": "Jede Methode in `ICentronRestService` muss `[Authenticate]` tragen; Methoden ohne dieses Attribut",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-26",
@@ -1838,7 +1936,8 @@
"tracelinks": "SyRS-40, SyRS-41 → SwRS-26",
"konsolidierung": "Kandidat: NLog (Backend/WPF) und `Microsoft.Extensions.Logging` (Controller) bestehen parallel.",
"pruefidee": "Stichprobe von 20 `*BL`-Klassen: Jede muss einen klassenbezogenen Logger deklarieren; keine",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-27",
@@ -1856,7 +1955,8 @@
"tracelinks": "SyRS-26 → SwRS-27",
"konsolidierung": "Kandidat: Konnektoren liegen teils unter `src/apis/`, teils in `Centron.BL/DataExchange`; im",
"pruefidee": "Abhängigkeitsprüfung: Kein Projekt unter `src/apis/` darf `Centron.BL` referenzieren (nur die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-28",
@@ -1876,7 +1976,8 @@
"tracelinks": "SyRS-42, SyRS-43 → SwRS-28",
"konsolidierung": "nein",
"pruefidee": "`dotnet build Centron.sln` mit dem in `global.json` fixierten SDK muss ohne Warnungen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-29",
@@ -1895,7 +1996,8 @@
"tracelinks": "SyRS-38 → SwRS-29",
"konsolidierung": "Kandidat: getrennte Ressourcenbestände in Backend, WPF-Client und Nexus.",
"pruefidee": "Statische Prüfung: Deutschsprachige Zeichenkettenliterale in `Centron.BL` sind zu listen; sie",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-30",
@@ -1914,7 +2016,8 @@
"tracelinks": "SyRS-09 → SwRS-30",
"konsolidierung": "nein",
"pruefidee": "`GetRightsForModule` für jedes registrierte Modul aufrufen: Die zurückgegebene Rechteliste muss",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-31",
@@ -1932,7 +2035,8 @@
"tracelinks": "SyRS-09 → SwRS-31",
"konsolidierung": "nein",
"pruefidee": "Für jeden Moduleintrag `GetRights()` aufrufen und mit einer manuellen Auswertung des",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-32",
@@ -1951,7 +2055,8 @@
"tracelinks": "SyRS-11 → SwRS-32",
"konsolidierung": "nein",
"pruefidee": "Mapperkonfiguration validieren (`AssertConfigurationIsValid`-Äquivalent): Alle Zielfelder müssen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-33",
@@ -1971,7 +2076,8 @@
"tracelinks": "SyRS-43 → SwRS-33",
"konsolidierung": "nein",
"pruefidee": "`dotnet test Centron.sln` gegen das Referenzdatenbankabbild ausführen: Alle Tests müssen ohne",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-34",
@@ -1988,7 +2094,8 @@
"tracelinks": "SyRS-28, SyRS-43 → SwRS-34",
"konsolidierung": "nein",
"pruefidee": "DEBUG-Build starten und eine Ticketabschlussmail an eine externe Adresse auslösen: Der tatsächliche",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-35",
@@ -2007,7 +2114,8 @@
"tracelinks": "SyRS-38 → SwRS-35",
"konsolidierung": "nein",
"pruefidee": "Alle `.cs`- und `.xaml`-Dateien auf BOM prüfen; Abweichungen sind zu listen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-36",
@@ -2026,6 +2134,7 @@
"tracelinks": "SyRS-13, SyRS-15 → SwRS-36",
"konsolidierung": "Kandidat: Vier parallele Datenzugriffswege (LINQ, generische DAO, benannte Abfragen, Rohzugriff)",
"pruefidee": "Statische Prüfung: In `ExecuteQuery`/`ExecuteScalar…`-Aufrufen dürfen keine benutzergesteuerten",
"qm": ""
"qm": "",
"uebernahme": ""
}
]
@@ -2,6 +2,8 @@
Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockformat des Prompts). Erzeugt von `analyse-anforderungen.py`.
Die Kenngrößen decken die **maschinell prüfbare** Hälfte des Evaluationsrahmens aus Kapitel 4.3 ab: Belegqualität und Übernahmewürdigkeit gehören zur *Statement-Qualität*, Verteilung und Konsolidierungskandidaten zur *Set-Qualität*, Tracelinks und Belegklassifikation zur *Traceability-Qualität*. Die Expertenbewertung nach Likert-Skala tritt daneben und wird hier nicht ersetzt.
### Verteilung über die Ebenen
| Ebene | Anzahl | Anteil |
@@ -38,6 +40,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 4 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 108 (99,1 %) |
### Übernahmewürdigkeit
**nicht erhoben** – das Feld `Übernahmewürdigkeit` wurde erst mit der Prompt-Fassung vom 2026-08-26 eingeführt und liegt für diesen Lauf nicht vor. Hinweise auf Workarounds stecken ersatzweise im Feld `Status`.
### Status
| Kategorie | Anzahl | Anteil |
@@ -55,5 +61,6 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **erfüllt** (0 Anforderungen ohne Beleg) |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (46 risikorelevante Anforderungen, alle gedeckt) |
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | *nicht erhoben* (Feld erst ab Prompt-Fassung 2026-08-26) |
| **Traceability** – Verknüpfung zwischen den Ebenen | 109 von 109 mit Tracelinks (100,0 %) |