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
@@ -101,6 +101,8 @@ zurückgenommen; zum weiteren Weg der Codebasis siehe Anmerkung 9.
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) | 1,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 96 (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** (49 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 | 96 von 96 mit Tracelinks (100,0 %) |
## Anmerkungen/Auffälligkeiten
@@ -15,7 +15,8 @@
"tracelinks": "SyRS-001, SyRS-002",
"konsolidierung": "nein",
"pruefidee": "Ein Angebot mit n Positionen wird zu einem Auftrag weitergeführt; Kunde und Positionsdaten müssen identisch übernommen werden (Stichprobe über UI oder Integrationstest).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-002",
@@ -33,7 +34,8 @@
"tracelinks": "SyRS-003, SyRS-004",
"konsolidierung": "nein",
"pruefidee": "Signaturprozess mit gültigem Token durchlaufen; danach Prüfen, dass `WebReceiptState` gesetzt ist und ein erneuter Aufruf desselben Tokens als \"bereits signiert\" abgelehnt wird.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-003",
@@ -51,7 +53,8 @@
"tracelinks": "SyRS-005",
"konsolidierung": "nein",
"pruefidee": "Rechnung festschreiben, danach Änderungsversuch an Position/Kopf durchführen → muss abgelehnt werden; erneutes Festschreiben → muss abgelehnt werden (\"Die Rechnung ist festgeschrieben...\").",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-004",
@@ -68,7 +71,8 @@
"tracelinks": "SyRS-006",
"konsolidierung": "nein",
"pruefidee": "Für Netto=100, Steuersatz=19 → Steuerbetrag=19.00, Brutto=119.00 (kaufmännisch gerundet); Test mit Rabatt und Fremdwährungsfaktor.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-005",
@@ -85,7 +89,8 @@
"tracelinks": "SyRS-001, SyRS-002",
"konsolidierung": "Kandidat: StRS-001 (Teil derselben Belegketten-Logik)",
"pruefidee": "Beleg mit 2 Positionen anlegen, eine Position vollständig weiterverarbeiten (Beleg bleibt Active), zweite Position vollständig weiterverarbeiten (Beleg wechselt zu Completed).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-006",
@@ -102,7 +107,8 @@
"tracelinks": "SyRS-007, SyRS-008",
"konsolidierung": "nein",
"pruefidee": "Ticket ohne Pflichtfeld anlegen → muss abgelehnt werden; Ticket mit allen Pflichtfeldern anlegen → muss erfolgreich sein und Historieneintrag erzeugen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-007",
@@ -119,7 +125,8 @@
"tracelinks": "SyRS-008",
"konsolidierung": "Kandidat: StRS-018 (allgemeines Rechtesystem, hier domänenspezifische Ausprägung)",
"pruefidee": "Benutzer mit `SHOW_HELPDESK_ONLY_OWN_BRANCH` darf Ticket anderer Filiale nicht in der Liste sehen (Integrationstest mit zwei Filialen).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-008",
@@ -135,7 +142,8 @@
"tracelinks": "SyRS-009",
"konsolidierung": "nein",
"pruefidee": "RMA ohne HelpdeskI3D anlegen → muss mit DependencyCheckFailed-Fehler abgelehnt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-009",
@@ -152,7 +160,8 @@
"tracelinks": "SyRS-007, SyRS-010",
"konsolidierung": "nein",
"pruefidee": "Zwei parallele Ausführungsversuche derselben fälligen Aufgabe → nur ein Ticket darf entstehen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-010",
@@ -168,7 +177,8 @@
"tracelinks": "SyRS-011",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne `CHANGE_ARTICLE_PRICE` versucht Preisänderung zu speichern → Preis bleibt auf altem DB-Wert.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-011",
@@ -185,7 +195,8 @@
"tracelinks": "SyRS-012",
"konsolidierung": "nein",
"pruefidee": "Inventurposition mit abweichender Zählmenge anlegen → `CloseState` muss \"Risk\" oder \"problem\" ergeben, nicht \"Ok\".",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-012",
@@ -202,7 +213,8 @@
"tracelinks": "SyRS-013",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne `CREATE_PARTIAL_COMMISSION_FOR_ORDER` versucht Teilkommission anzulegen → Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-013",
@@ -218,7 +230,8 @@
"tracelinks": "SyRS-014",
"konsolidierung": "nein",
"pruefidee": "Artikel mit Mindestbestand 10, aktuellem Bestand 3, offenem Auftragsbedarf 5 → Vorschlagsmenge muss ≥ 12 ergeben (rechnerische Nachvollziehung, exakte Formel im Quellcode zu verifizieren).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-014",
@@ -235,7 +248,8 @@
"tracelinks": "SyRS-015",
"konsolidierung": "nein",
"pruefidee": "EDI-Konfiguration mit Distributor \"EGIS\" → erzeugtes Dokument muss dem EGIS-spezifischen Format entsprechen (Format-Validierung).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-015",
@@ -251,7 +265,8 @@
"tracelinks": "SyRS-016, SyRS-017",
"konsolidierung": "nein",
"pruefidee": "Zwei identische Transaktionsimporte (gleiche IBAN/Datum/Betrag/Beschreibung) → zweiter Import muss als Duplikat markiert werden, nicht doppelt verbucht werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-016",
@@ -267,7 +282,8 @@
"tracelinks": "SyRS-016",
"konsolidierung": "Kandidat: StRS-015 (beide betreffen Zahlungsbuchung auf Rechnungen)",
"pruefidee": "Benutzer ohne Recht versucht Zahlung zu löschen → Ablehnung mit definierter Fehlermeldung; Rechnungsbetrag bleibt unverändert.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-017",
@@ -284,7 +300,8 @@
"tracelinks": "SyRS-018",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne `CAN_CHANGE_DATE`-Recht öffnet Timer-Billing-Einstellungen → Datumsfeld ist deaktiviert; direkter Web-Service-Aufruf mit geänderten Datum ohne Recht muss serverseitig abgelehnt werden (nicht nur UI-Test!).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-018",
@@ -301,7 +318,8 @@
"tracelinks": "SyRS-019, SyRS-020",
"konsolidierung": "nein",
"pruefidee": "Für eine Stichprobe von 10 unterschiedlichen Modulaktionen: Benutzer ohne jeweiliges Recht → serverseitige Ablehnung (nicht nur UI-Ausblendung).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-019",
@@ -318,7 +336,8 @@
"tracelinks": "SyRS-021, SyRS-022",
"konsolidierung": "nein",
"pruefidee": "Anmeldung über jedes der vier Verfahren mit gültigen Testdaten → gültiges Ticket wird ausgestellt; ungültige Zugangsdaten → Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-020",
@@ -334,7 +353,8 @@
"tracelinks": "SyRS-021",
"konsolidierung": "nein",
"pruefidee": "Anmeldung mit korrektem ersten Faktor, aber ohne/mit falschem zweiten Faktor → Anmeldung muss abgelehnt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-021",
@@ -350,7 +370,8 @@
"tracelinks": "SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Gespeichertes Passwort einsehen → Protokolleintrag mit ActionType \"Zugriff\" muss entstehen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-022",
@@ -367,7 +388,8 @@
"tracelinks": "SyRS-024, SyRS-021",
"konsolidierung": "nein",
"pruefidee": "Kunde A meldet sich an und darf keine Tickets von Kunde B sehen (Mandanten-/Kundentrennungstest).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-023",
@@ -384,7 +406,8 @@
"tracelinks": "SyRS-024, SyRS-025",
"konsolidierung": "nein",
"pruefidee": "Web-Account ohne WebCart2-Lizenz ruft `/webcart/shop` auf → Zugriff muss verweigert werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-024",
@@ -401,7 +424,8 @@
"tracelinks": "SyRS-026, SyRS-027",
"konsolidierung": "nein",
"pruefidee": "CI-Pipeline-Lauf erzeugt alle drei signierten Artefakte (MSI ×2, Container-Image) ohne manuellen Eingriff.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-025",
@@ -418,7 +442,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "Kandidat: strukturell ähnliches Client-Pattern wie StRS-026 (Versanddienstleister)",
"pruefidee": "Ein Dienst liefert HTTP 401 → nur dieser Dienst wird als fehlgeschlagen markiert, übrige Anreicherungsquellen bleiben nutzbar.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-026",
@@ -435,7 +460,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "Kandidat: GLS und Shipcloud bilden dieselbe fachliche Funktion \"Versandauftrag erstellen\" redundant ab.",
"pruefidee": "Versandauftrag mit gültigen Empfängerdaten auslösen → Tracking-ID und Label müssen im System hinterlegt sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-027",
@@ -452,7 +478,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "nein",
"pruefidee": "ebInterface-Export einer Testrechnung gegen offizielles XSD-Schema validieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-028",
@@ -469,7 +496,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "nein",
"pruefidee": "Abruf von `GetDeviceCounters` für ein Testgerät liefert plausible Zählerwerte zurück.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-001",
@@ -486,7 +514,8 @@
"tracelinks": "StRS-001; SwRS-001, SwRS-002",
"konsolidierung": "nein",
"pruefidee": "Code-Review: Suche nach belegartspezifischer if/else- oder switch-Verzweigung innerhalb `ReceiptBL` außerhalb der `IReceiptSpecificLogic`-Aufrufe (sollte nicht signifikant vorkommen).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-002",
@@ -503,7 +532,8 @@
"tracelinks": "StRS-001, StRS-005; SwRS-003",
"konsolidierung": "nein",
"pruefidee": "Datenbankabfrage über alle Belegtabellen mit `ReceiptState`-Spalte liefert konsistente Wertemenge {1,2,3}.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-003",
@@ -519,7 +549,8 @@
"tracelinks": "StRS-002; SwRS-004",
"konsolidierung": "nein",
"pruefidee": "Zweiten Signiervorgang für denselben Beleg anstoßen, während erster aktiv ist → Ablehnung mit definierter Fehlermeldung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-004",
@@ -535,7 +566,8 @@
"tracelinks": "StRS-002; SwRS-005, SwRS-006",
"konsolidierung": "nein",
"pruefidee": "Abgelaufenen Token direkt per HTTP-Request aufrufen (ohne UI) → Server muss ablehnen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-005",
@@ -551,7 +583,8 @@
"tracelinks": "StRS-003; SwRS-007, SwRS-008",
"konsolidierung": "nein",
"pruefidee": "Direkter INSERT ohne Angabe von `IsFixed` gegen Testdatenbank → DB muss Default 0 setzen, NULL darf nicht möglich sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-006",
@@ -567,7 +600,8 @@
"tracelinks": "StRS-004; SwRS-009, SwRS-010",
"konsolidierung": "nein",
"pruefidee": "Gleiche Testwerte über WPF-Client und Nexus-Web-Client eingeben → identisches Ergebnis.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-007",
@@ -583,7 +617,8 @@
"tracelinks": "StRS-006, StRS-009; SwRS-011, SwRS-012",
"konsolidierung": "nein",
"pruefidee": "Direkter API-Aufruf zum Schließen eines Tickets ohne `CLOSE_REQUEST`-Recht → serverseitige Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-008",
@@ -599,7 +634,8 @@
"tracelinks": "StRS-006, StRS-007; SwRS-013",
"konsolidierung": "nein",
"pruefidee": "Netzwerk-Mitschnitt einer Listenabfrage eines eingeschränkten Benutzers → Antwortdaten dürfen keine unzulässigen Datensätze enthalten (nicht nur UI-Ausblendung).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-009",
@@ -615,7 +651,8 @@
"tracelinks": "StRS-008; SwRS-014, SwRS-015",
"konsolidierung": "nein",
"pruefidee": "Speicherversuch eines RMA mit `HelpdeskI3D = 0` → `ResultException` mit Code `DependencyCheckFailed`.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-010",
@@ -631,7 +668,8 @@
"tracelinks": "StRS-009; SwRS-016, SwRS-017",
"konsolidierung": "nein",
"pruefidee": "Simultane Ausführung derselben Aufgabe aus zwei Prozessen → nur eine Ausführung erfolgreich, zweite erhält Lock-Timeout.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-011",
@@ -647,7 +685,8 @@
"tracelinks": "StRS-010; SwRS-018",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit Recht \"Artikel bearbeiten\", aber ohne `CHANGE_ARTICLE_PRICE`, ändert Preis und Beschreibung gleichzeitig → Beschreibung wird gespeichert, Preis bleibt unverändert.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-012",
@@ -664,7 +703,8 @@
"tracelinks": "StRS-011; SwRS-019, SwRS-020",
"konsolidierung": "nein",
"pruefidee": "Position mit Zählmenge ≠ Sollmenge und ohne Barcode-Konflikt → `CloseState = Risk`, keine Freigabe als \"Ok\".",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-013",
@@ -680,7 +720,8 @@
"tracelinks": "StRS-012; SwRS-021",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit nur Anlage-Recht versucht Löschung → Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-014",
@@ -696,7 +737,8 @@
"tracelinks": "StRS-013; SwRS-022",
"konsolidierung": "nein",
"pruefidee": "Lasttest: Bestellvorschlagsberechnung während gleichzeitiger Bestandsbuchung → Ergebnis muss nachvollziehbar einem Zeitpunkt zuordenbar sein (Konsistenzprüfung, ggf. [HYPOTHESE] bzgl. Transaktionsisolationsstufe, siehe Hypothesen.md).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-015",
@@ -712,7 +754,8 @@
"tracelinks": "StRS-014; SwRS-023",
"konsolidierung": "nein",
"pruefidee": "Konfiguration auf \"ITScope\" umstellen → erzeugtes Dokument muss ITScope-spezifisches Format aufweisen, ohne Codeänderung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-016",
@@ -729,7 +772,8 @@
"tracelinks": "StRS-015, StRS-016; SwRS-024, SwRS-025, SwRS-026",
"konsolidierung": "Kandidat: SyRS-017 (beide betreffen Zahlungsverbuchung)",
"pruefidee": "Duplikat-Importtest sowie Lösch-Test ohne Recht (siehe StRS-015/016 für Details).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-017",
@@ -745,7 +789,8 @@
"tracelinks": "StRS-015; SwRS-025",
"konsolidierung": "Kandidat: SyRS-016",
"pruefidee": "Zahlung mit Differenz 0,05 zur Forderung → Rechnung wird als bezahlt markiert; Differenz 0,20 → nicht.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-018",
@@ -761,7 +806,8 @@
"tracelinks": "StRS-017; SwRS-027",
"konsolidierung": "nein",
"pruefidee": "Direkter Web-Service-Aufruf zur Datumsänderung ohne Recht (unter Umgehung der UI) → muss serverseitig abgelehnt werden. [HYPOTHESE]: Ob der eigentliche Schreibpfad (nicht nur die Anzeige-Flags) diese Prüfung ebenfalls erzwingt, wurde im Rahmen dieser Iteration nicht bis zur konkreten Save-Methode zurückverfolgt — siehe Hypothesen.md.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-019",
@@ -778,7 +824,8 @@
"tracelinks": "StRS-018; SwRS-028",
"konsolidierung": "nein",
"pruefidee": "Rechteprüfung während simuliertem DB-Verbindungsfehler auslösen → Ergebnis muss `false` (verweigert) sein, nicht Exception nach oben durchreichen oder `true` liefern.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-020",
@@ -794,7 +841,8 @@
"tracelinks": "StRS-018; SwRS-029",
"konsolidierung": "nein",
"pruefidee": "Code-Review-Test: zwei parallele Branches fügen ein neues Recht mit dem \"nächsten\" ID-Wert hinzu → Merge-Konflikt wird nicht automatisch, sondern nur durch Textgleichheit des Kommentars erkannt (Risiko einer stillen ID-Kollision, falls nicht rechtzeitig bemerkt).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-021",
@@ -810,7 +858,8 @@
"tracelinks": "StRS-019, StRS-020, StRS-022; SwRS-030, SwRS-031, SwRS-032, SwRS-033",
"konsolidierung": "nein",
"pruefidee": "Anmeldung über Basic-Auth und über OIDC vergleichen → resultierendes Ticket hat identische Struktur/Felder.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-022",
@@ -826,7 +875,8 @@
"tracelinks": "StRS-019; SwRS-032",
"konsolidierung": "nein",
"pruefidee": "Ticket erzeugen, künstlich Systemzeit über Ablaufgrenze vorstellen (Testsystem) → Ticket wird abgelehnt.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-023",
@@ -842,7 +892,8 @@
"tracelinks": "StRS-021; SwRS-034",
"konsolidierung": "nein",
"pruefidee": "Zugriff auf gespeichertes Passwort → Protokolleintrag muss unmittelbar entstehen, unabhängig vom Ergebnis des Zugriffs.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-024",
@@ -859,7 +910,8 @@
"tracelinks": "StRS-022, StRS-023; SwRS-035",
"konsolidierung": "nein",
"pruefidee": "Als Web-Account-Kunde angemeldet, direkten API-Aufruf auf einen internen/administrativen Endpunkt oder auf Daten eines anderen Kunden versuchen → muss abgelehnt werden. [HYPOTHESE]: Die konkrete serverseitige Scoping-Prüfung pro Kundenportal-Endpunkt wurde nicht für jeden einzelnen Controller einzeln verifiziert — siehe Hypothesen.md.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-025",
@@ -875,7 +927,8 @@
"tracelinks": "StRS-023; SwRS-036",
"konsolidierung": "nein",
"pruefidee": "Web-Account ohne Lizenz ruft `/webcart/shop` direkt per URL auf → Zugriff wird verweigert. [HYPOTHESE]: Das genaue Verhalten des `AuthorizeLicense`-Attributs (Redirect vs. Fehlerseite vs. Exception) wurde nicht im Detail nachvollzogen — siehe Hypothesen.md.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-026",
@@ -891,7 +944,8 @@
"tracelinks": "StRS-024; SwRS-038",
"konsolidierung": "nein",
"pruefidee": "CI-Lauf beobachten: alle drei Artefakte müssen mit gültiger Authenticode-Signatur vorliegen, Pipeline darf bei Signaturfehler nicht grün werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-027",
@@ -908,7 +962,8 @@
"tracelinks": "StRS-024; SwRS-038",
"konsolidierung": "Kandidat: SyRS-026 (beide betreffen Auslieferung/Deployment)",
"pruefidee": "Dasselbe Image mit zwei unterschiedlichen `appsettings`-Overrides starten → unterschiedliches Zielsystem wird angesprochen, ohne Image-Neubau.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-028",
@@ -925,7 +980,8 @@
"tracelinks": "StRS-025, StRS-026, StRS-027, StRS-028; SwRS-039, SwRS-040",
"konsolidierung": "nein",
"pruefidee": "Simulierter Ausfall eines externen Dienstes (z. B. Timeout) → übrige Integrationen und Kernfunktionen bleiben funktionsfähig; Antwortzeitverhalten bei Ausfall ist [HYPOTHESE] (kein Timeout-Override gefunden, Default-`HttpClient`-Timeout vermutlich wirksam — siehe Hypothesen.md).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-001",
@@ -942,7 +998,8 @@
"tracelinks": "SyRS-001",
"konsolidierung": "nein",
"pruefidee": "Statische Codeanalyse: keine belegartspezifische Fallunterscheidung außerhalb der `*SpecificLogic`-Klassen in `ReceiptBL`.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-002",
@@ -959,7 +1016,8 @@
"tracelinks": "SyRS-001",
"konsolidierung": "nein",
"pruefidee": "Reflection-Test: alle Belegart-Entitäten erben von derselben Basisklasse.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-003",
@@ -975,7 +1033,8 @@
"tracelinks": "SyRS-002",
"konsolidierung": "nein",
"pruefidee": "Letzte offene Position eines Belegs vollständig verarbeiten → `ReceiptState` wechselt automatisch zu `Completed`.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-004",
@@ -991,7 +1050,8 @@
"tracelinks": "SyRS-003",
"konsolidierung": "nein",
"pruefidee": "Zweiten `GenerateTokenForDocument`-Aufruf für denselben `receiptI3D` bei aktivem Vorgang → `Result.AsError`.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-005",
@@ -1007,7 +1067,8 @@
"tracelinks": "SyRS-004",
"konsolidierung": "nein",
"pruefidee": "Abgelaufenen Token per direktem Methodenaufruf/HTTP-Request verwenden → definierter Fehlercode, keine Nutzdaten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-006",
@@ -1024,7 +1085,8 @@
"tracelinks": "SyRS-004",
"konsolidierung": "nein",
"pruefidee": "Annahme mit Signatur → `WebOfferSign`; Annahme ohne Signatur → `WebOfferSignedWithoutSignature`.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-007",
@@ -1040,7 +1102,8 @@
"tracelinks": "SyRS-005",
"konsolidierung": "nein",
"pruefidee": "Bereits fixierte Rechnung erneut festschreiben → Ablehnung mit definierter Meldung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-008",
@@ -1057,7 +1120,8 @@
"tracelinks": "SyRS-005",
"konsolidierung": "nein",
"pruefidee": "INSERT ohne explizite Angabe von `IsFixed` → DB setzt automatisch 0, NULL wird von der DB abgelehnt.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-009",
@@ -1073,7 +1137,8 @@
"tracelinks": "SyRS-006",
"konsolidierung": "nein",
"pruefidee": "Netto=100,005, Steuersatz=19 → erwarteter, kaufmännisch gerundeter Wert (Unit-Test mit Grenzwerten wie x,xx5).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-010",
@@ -1089,7 +1154,8 @@
"tracelinks": "SyRS-006",
"konsolidierung": "nein",
"pruefidee": "Auftrag mit Steuersatz X zu Rechnung mit späterem Datum (nach Steuersatzänderung) weiterführen → Ergebnis muss mit `TakeoverVatMode.Yes`-Regel übereinstimmen (Übernahme statt Neuberechnung).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-011",
@@ -1105,7 +1171,8 @@
"tracelinks": "SyRS-007",
"konsolidierung": "nein",
"pruefidee": "Ticket ohne Pflichtfeld \"Kunde\" speichern → Ablehnung vor Persistierung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-012",
@@ -1121,7 +1188,8 @@
"tracelinks": "SyRS-007",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit `EDIT_HELPDESK` ohne `CLOSE_REQUEST` versucht `ClosedAt` zu setzen → Feld wird serverseitig zurückgesetzt.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-013",
@@ -1138,7 +1206,8 @@
"tracelinks": "SyRS-008",
"konsolidierung": "nein",
"pruefidee": "SQL-Profiling der Abfrage eines eingeschränkten Benutzers → WHERE-Klausel enthält bereits die Scope-Bedingung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-014",
@@ -1154,7 +1223,8 @@
"tracelinks": "SyRS-009",
"konsolidierung": "nein",
"pruefidee": "RMA mit `HelpdeskI3D = 0` speichern → `ResultException` vor jeder Nebenwirkung, keine Teilverarbeitung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-015",
@@ -1170,7 +1240,8 @@
"tracelinks": "SyRS-009",
"konsolidierung": "nein",
"pruefidee": "Artikel von `SendForth` zu `Invoice` überführen → Historieneintrag mit korrektem Alt-/Neu-Zustand entsteht.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-016",
@@ -1186,7 +1257,8 @@
"tracelinks": "SyRS-010",
"konsolidierung": "nein",
"pruefidee": "Zwei parallele Prozessaufrufe für dieselbe Aufgaben-ID → nur ein Prozess erhält das Lock (LockTimeout=0 lässt zweiten sofort fehlschlagen).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-017",
@@ -1202,7 +1274,8 @@
"tracelinks": "SyRS-010",
"konsolidierung": "Kandidat: SwRS-012 (gleiche zugrundeliegende Rechteklasse ADD_NEW_HELPDESK)",
"pruefidee": "Aufgabe mit Ausführungskontext ohne `ADD_NEW_HELPDESK`-Recht fällig werden lassen → Ticketerstellung schlägt fehl statt das Recht zu ignorieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-018",
@@ -1218,7 +1291,8 @@
"tracelinks": "SyRS-011",
"konsolidierung": "nein",
"pruefidee": "Speichervorgang mit geänderter Warengruppe (ohne Recht) und geändertem Namen (mit Recht) → Name wird gespeichert, Warengruppe bleibt auf DB-Wert.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-019",
@@ -1234,7 +1308,8 @@
"tracelinks": "SyRS-012",
"konsolidierung": "nein",
"pruefidee": "Zählmenge = Sollmenge, kein Barcode-Konflikt → `CloseState = Ok`; Zählmenge ≠ Sollmenge → `Risk`/`problem`.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-020",
@@ -1250,7 +1325,8 @@
"tracelinks": "SyRS-012",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne Recht versucht gelöschte Inventur wiederherzustellen → Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-021",
@@ -1266,7 +1342,8 @@
"tracelinks": "SyRS-013",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit nur Anlage-Recht versucht Löschung → Ablehnung; umgekehrter Test analog.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-022",
@@ -1282,7 +1359,8 @@
"tracelinks": "SyRS-014",
"konsolidierung": "nein",
"pruefidee": "Vergleich der berechneten Vorschlagsmenge gegen manuell nachgerechneten Erwartungswert für einen Testartikel.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-023",
@@ -1298,7 +1376,8 @@
"tracelinks": "SyRS-015",
"konsolidierung": "nein",
"pruefidee": "Konfigurationswechsel auf anderen Distributor → anderer Dokumentersteller wird aufgerufen (Unit-Test mit Mock).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-024",
@@ -1314,7 +1393,8 @@
"tracelinks": "SyRS-016",
"konsolidierung": "nein",
"pruefidee": "Identischen Transaktionsdatensatz zweimal importieren → zweiter Import löst Warnung aus; [HYPOTHESE]: ob der Anwender den Doppelimport trotzdem bestätigen kann, wurde nicht bis zur UI-Ebene zurückverfolgt — siehe Hypothesen.md.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-025",
@@ -1330,7 +1410,8 @@
"tracelinks": "SyRS-016, SyRS-017",
"konsolidierung": "nein",
"pruefidee": "Verbuchungsversuch auf eine bereits `Canceled`-Rechnung mit positivem Betrag → muss abgelehnt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-026",
@@ -1346,7 +1427,8 @@
"tracelinks": "SyRS-016",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne Recht versucht Löschung → Rechnung/`PaidFC` bleibt exakt unverändert (nicht nur Fehlermeldung prüfen, sondern Datenzustand).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-027",
@@ -1362,7 +1444,8 @@
"tracelinks": "SyRS-018",
"konsolidierung": "nein",
"pruefidee": "Vergleich der von zwei unterschiedlich berechtigten Testbenutzern gelieferten Flag-Werte.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-028",
@@ -1379,7 +1462,8 @@
"tracelinks": "SyRS-019",
"konsolidierung": "nein",
"pruefidee": "Rechteprüfung mit simuliertem DB-Fehler → Rückgabewert `false`.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-029",
@@ -1395,7 +1479,8 @@
"tracelinks": "SyRS-020",
"konsolidierung": "nein",
"pruefidee": "Code-Review-Historie prüfen: gab es je einen ID-Kollisionsfall bei parallelen Pull-Requests? (retrospektive Prüfidee)",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-030",
@@ -1411,7 +1496,8 @@
"tracelinks": "SyRS-021",
"konsolidierung": "nein",
"pruefidee": "Konfigurationswechsel AD → OIDC → Verhalten der Factory ändert sich entsprechend (Unit-Test).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-031",
@@ -1429,7 +1515,8 @@
"tracelinks": "SyRS-021",
"konsolidierung": "nein",
"pruefidee": "Sicherheitsreview/Penetrationstest: identische Testpasswörter zweier Benutzer erzeugen identischen gespeicherten Hash (Nachweis fehlenden Salts).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-032",
@@ -1445,7 +1532,8 @@
"tracelinks": "SyRS-021, SyRS-022",
"konsolidierung": "nein",
"pruefidee": "Ticket auf simuliertem Fremdgerät verwenden → Ablehnung; Ticket nach Ablaufzeit verwenden → Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-033",
@@ -1461,7 +1549,8 @@
"tracelinks": "SyRS-021",
"konsolidierung": "Kandidat: Verhältnis zu separatem Modul `TwoFactorAuthenticator\\TwoFactorAuthenticationBL.cs` ungeklärt — siehe Hypothesen.md.",
"pruefidee": "2FA aktiv, korrekter erster Faktor, falscher zweiter Faktor → Anmeldung wird verweigert.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-034",
@@ -1477,7 +1566,8 @@
"tracelinks": "SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Zugriff auf Testpasswort → Protokolleintrag mit korrektem `EmployeeI3D` und aktuellem Zeitstempel.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-035",
@@ -1494,7 +1584,8 @@
"tracelinks": "SyRS-024",
"konsolidierung": "nein",
"pruefidee": "Versuch, sich als Kunde über den internen Login-Pfad anzumelden → muss fehlschlagen bzw. ist technisch nicht vorgesehen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-036",
@@ -1510,7 +1601,8 @@
"tracelinks": "SyRS-025",
"konsolidierung": "nein",
"pruefidee": "Direkter URL-Aufruf `/webcart/shop` ohne Lizenz → keine Artikel-/Preisdaten werden übertragen (Netzwerk-Mitschnitt).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-037",
@@ -1526,7 +1618,8 @@
"tracelinks": "SyRS-025",
"konsolidierung": "nein",
"pruefidee": "Erster Aufruf ohne bestehenden Warenkorb → neuer Warenkorb wird automatisch angelegt und zurückgegeben.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-038",
@@ -1543,7 +1636,8 @@
"tracelinks": "SyRS-026, SyRS-027",
"konsolidierung": "nein",
"pruefidee": "Pipeline-Lauf beobachten: Signaturverifikation muss für alle drei Artefakte grün sein, sonst Pipeline-Abbruch.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-039",
@@ -1559,7 +1653,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "nein",
"pruefidee": "Simulierter 401-Response → `ITscopeException` mit definierter Meldung; simulierter 404 → leere Liste statt Exception.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-040",
@@ -1575,6 +1670,7 @@
"tracelinks": "SyRS-028",
"konsolidierung": "nein",
"pruefidee": "Abruf mit abgelaufenem Token → automatische Erneuerung vor erneutem Versuch (bzw. [HYPOTHESE], falls kein automatischer Retry gefunden — siehe Hypothesen.md).",
"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 |
@@ -32,6 +34,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 96 (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 |
@@ -49,5 +55,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** (49 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 | 96 von 96 mit Tracelinks (100,0 %) |
@@ -101,6 +101,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 |
@@ -137,6 +139,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 89 (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 |
@@ -154,6 +160,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** (34 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 | 89 von 89 mit Tracelinks (100,0 %) |
## Anmerkungen/Auffälligkeiten
@@ -15,7 +15,8 @@
"tracelinks": "SyRS-001, SyRS-002",
"konsolidierung": "nein",
"pruefidee": "Für jeden der sieben Belegtypen erzeugen, in jeden der drei Zustände überführen und prüfen, dass kein vierter Zustand erreichbar ist.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-002",
@@ -33,7 +34,8 @@
"tracelinks": "SyRS-003",
"konsolidierung": "Kandidat: Zwei parallele Implementierungen (Legacy \"Asset\"-System `Sales/CustomerAssets/*` und modernes \"Receipt\"-System `Sales/Receipts/*`) bilden denselben Belegzyklus und dieselbe Weiterleitungslogik redundant ab (siehe SwRS-Abschnitt \"Datenmodell\").",
"pruefidee": "Versuch, einen Lieferschein direkt in ein Angebot umzuwandeln, muss vom System zurückgewiesen werden; Angebot→Auftrag muss gelingen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-003",
@@ -51,7 +53,8 @@
"tracelinks": "SyRS-004, SyRS-005",
"konsolidierung": "nein",
"pruefidee": "Rechnung stornieren und prüfen, dass eine neue Version erzeugt wird und die ursprünglichen Werte in der Versionstabelle erhalten bleiben.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-004",
@@ -69,7 +72,8 @@
"tracelinks": "SyRS-006",
"konsolidierung": "Kandidat: Zwei redundante Mechanismen (pessimistische Sperre + optimistisches Concurrency-Guid) lösen dieselbe fachliche Anforderung; im Zielsystem auf einen Mechanismus konsolidieren.",
"pruefidee": "Beleg durch Benutzer A öffnen (sperren), Speicherversuch durch Benutzer B muss abgelehnt bzw. mit Hinweis versehen werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-005",
@@ -87,7 +91,8 @@
"tracelinks": "SyRS-007, SyRS-008",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit monatlichem Intervall und fälligem Abrechnungsdatum anlegen, Abrechnungslauf ausführen, Rechnung sowie fortgeschriebenes `LastSubsequentBillingDate` prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-006",
@@ -104,7 +109,8 @@
"tracelinks": "SyRS-009",
"konsolidierung": "nein",
"pruefidee": "Rechnungslauf für einen RMM-Vertrag bei simuliert nicht erreichbarem RMM-Dienst ausführen; erwartetes Ergebnis: Abbruch mit definierter Fehlermeldung, keine Rechnung erzeugt.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-007",
@@ -121,7 +127,8 @@
"tracelinks": "SyRS-008",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit Stundenkontingent anlegen, Verbrauch über das Kontingent hinaus buchen, Monitoring-Warnung/Restbestand prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-008",
@@ -139,7 +146,8 @@
"tracelinks": "SyRS-010, SyRS-011",
"konsolidierung": "nein",
"pruefidee": "Angebot über den Web-Kanal versenden, interne Freigabe erteilen, Kundenannahme simulieren, resultierenden Auftrag und Statuskette prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-009",
@@ -155,7 +163,8 @@
"tracelinks": "SyRS-011",
"konsolidierung": "nein",
"pruefidee": "Dokument mit gültigem Zertifikat signieren und die Signatur mit einem PDF-Prüfwerkzeug verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-010",
@@ -172,7 +181,8 @@
"tracelinks": "SyRS-012",
"konsolidierung": "nein",
"pruefidee": "Kunde mit Kreditlimit 1.000 € anlegen, offene Aufträge über 1.000 € erfassen, weiteren Auftrag anlegen und Bestätigungsdialog verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-011",
@@ -190,7 +200,8 @@
"tracelinks": "SyRS-013, SyRS-014",
"konsolidierung": "Kandidat: `ProductMatrix`-Mechanismus (kundenindividuelle Katalogkategorien/Produkte) deckt fachlich ähnliches Ziel ab (Steuerung der für einen Kunden sichtbaren Artikel) — Verhältnis zu Sonderpreisen ungeklärt, siehe Hypothesen.md.",
"pruefidee": "Kunde mit Sonderpreisen für Artikel X anlegen, per Web-Account im WebCart einloggen, Sichtbarkeit von Artikel X prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-012",
@@ -206,7 +217,8 @@
"tracelinks": "SwRS (siehe SwRS-Abschnitt Datenmodell)",
"konsolidierung": "Kandidat: Es existiert daneben ein neuerer Begriff \"Account\" (`Centron.BL/Accounts/*`) als mögliche Nachfolgeabstraktion zu `Customer` — Verhältnis ungeklärt, [HYPOTHESE] siehe Hypothesen.md H-02.",
"pruefidee": "Adressobjekt für einen Lieferanten anlegen und prüfen, dass dieselbe Tabellenstruktur wie bei Kundenadressen verwendet wird.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-013",
@@ -223,7 +235,8 @@
"tracelinks": "SyRS-015",
"konsolidierung": "nein",
"pruefidee": "Vorlage anlegen, als Standard markieren, neues Ticket-Erstellungsformular öffnen und automatisches Vorbefüllen mit Standardvorlage prüfen; Löschversuch der Standardvorlage muss abgelehnt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-014",
@@ -239,7 +252,8 @@
"tracelinks": "SyRS-015",
"konsolidierung": "nein",
"pruefidee": "Ticket mit offenem RMA-Vorgang schließen und prüfen, ob (aktuell) keine Blockade erfolgt — Regressionsbasis für spätere Vervollständigung der Prüfung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-015",
@@ -257,7 +271,8 @@
"tracelinks": "SyRS-016, SyRS-017",
"konsolidierung": "nein",
"pruefidee": "Benutzer aus allen Rechtegruppen entfernen und prüfen, dass sämtliche geschützten Funktionen gesperrt sind; nach Gruppenzuordnung Freischaltung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-016",
@@ -276,7 +291,8 @@
"tracelinks": "SyRS-017",
"konsolidierung": "Kandidat: identisches Muster ist in mind. 4 Fachmodulen (Helpdesk, Kalender, Mitarbeiterauslastung, Rechteverwaltung) separat implementiert statt zentral wiederverwendet.",
"pruefidee": "Benutzer mit Grundrecht + \"nur eigene Filiale\" anlegen, Datensätze anderer Filialen anlegen, Sichtbarkeit/Zugriff verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-017",
@@ -293,7 +309,8 @@
"tracelinks": "SyRS-016",
"konsolidierung": "nein",
"pruefidee": "Web-Account-Recht vergeben/entziehen und prüfen, dass dies keine Auswirkung auf interne `UserRightsConst`-Prüfungen hat.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-018",
@@ -309,7 +326,8 @@
"tracelinks": "SyRS-017",
"konsolidierung": "nein",
"pruefidee": "Recht einer Gruppe hinzufügen und Vorhandensein eines Protokolleintrags mit Benutzer/Zeitstempel prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-019",
@@ -326,7 +344,8 @@
"tracelinks": "SyRS-018, SyRS-019",
"konsolidierung": "nein",
"pruefidee": "Anmeldung über jede der drei Methoden in einer Testumgebung durchführen und erfolgreichen Login sowie Ticket-Erstellung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-020",
@@ -343,7 +362,8 @@
"tracelinks": "SyRS-020",
"konsolidierung": "nein",
"pruefidee": "Ticket erzeugen, 31 Minuten warten (bzw. Ablaufzeit simulieren), nachfolgenden API-Aufruf auf Ablehnung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-021",
@@ -360,7 +380,8 @@
"tracelinks": "SyRS-018",
"konsolidierung": "nein",
"pruefidee": "2FA für einen Benutzer aktivieren, Login ohne bzw. mit korrektem/falschem TOTP-Code testen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-022",
@@ -377,7 +398,8 @@
"tracelinks": "SyRS-021",
"konsolidierung": "nein",
"pruefidee": "Feature ohne zugehörige Lizenz aufrufen und Sperrung/Ausblendung prüfen; Mengenlizenz mit `count=3` testen (4. Nutzung muss abgelehnt werden).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-023",
@@ -394,7 +416,8 @@
"tracelinks": "SyRS-022",
"konsolidierung": "nein",
"pruefidee": "Zwei gleichzeitige Rechnungserstellungen (parallelisiert) simulieren und prüfen, dass keine doppelte Nummer vergeben wird.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-024",
@@ -410,7 +433,8 @@
"tracelinks": "SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Rechnung festschreiben, Änderungsversuch durchführen und Ablehnung mit definierter Fehlermeldung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-025",
@@ -426,7 +450,8 @@
"tracelinks": "SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Stornierung einer bereits exportierten Rechnung versuchen (muss abgelehnt werden); Stornierung einer offenen, nicht exportierten Rechnung durchführen (muss gelingen und neue Version erzeugen).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-026",
@@ -442,7 +467,8 @@
"tracelinks": "SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Zahlung erfassen (Beleg wird \"bezahlt\"), Zahlung löschen und Rückkehr des Belegs in den unbezahlten Zustand inkl. korrekten Betrags prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-027",
@@ -458,7 +484,8 @@
"tracelinks": "SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Bankverbindung löschen, die von einem aktiven Vertrag mit SEPA-Mandat referenziert wird; Ablehnung mit Belegliste prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-028",
@@ -476,7 +503,8 @@
"tracelinks": "SyRS-024",
"konsolidierung": "nein",
"pruefidee": "Rechnung mit aktivierter ZUGFeRD-Einstellung erzeugen und die PDF-eingebettete XML mit einem Validator (z. B. KOSIT-Tool) prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-029",
@@ -494,7 +522,8 @@
"tracelinks": "SyRS-025, SyRS-026",
"konsolidierung": "nein",
"pruefidee": "Testbestellung an einen konfigurierten EDI-Distributor senden und Empfang/Verarbeitung einer simulierten Auftragsbestätigung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-030",
@@ -510,7 +539,8 @@
"tracelinks": "SyRS-027",
"konsolidierung": "nein",
"pruefidee": "Artikel unter Mindestbestand setzen und Erscheinen in der Bestellvorschlagsliste mit korrekter Menge prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-031",
@@ -526,7 +556,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "nein",
"pruefidee": "Bestellung mit 100 Stück anlegen, zwei Teillieferungen von je 40 und 60 Stück buchen, kumulierten Status nach jeder Teillieferung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-032",
@@ -543,7 +574,8 @@
"tracelinks": "SyRS-029",
"konsolidierung": "nein",
"pruefidee": "Warenausgang ohne Negativbuchungsrecht über den verfügbaren Bestand hinaus buchen; Ablehnung und Kollegen-Anmeldedialog prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-033",
@@ -560,7 +592,8 @@
"tracelinks": "SyRS-029",
"konsolidierung": "nein",
"pruefidee": "Bestandsänderung durchführen und Vorhandensein eines zugehörigen Protokolleintrags mit Benutzer/Zeitstempel/Mengenänderung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-034",
@@ -578,7 +611,8 @@
"tracelinks": "SyRS-030",
"konsolidierung": "nein",
"pruefidee": "Artikel mit hinterlegtem Aktionspreis und aktivierten externen Quellen öffnen; alle Quellen müssen parallel mit Anbieterkennzeichnung angezeigt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-035",
@@ -595,7 +629,8 @@
"tracelinks": "SyRS-013, SyRS-031",
"konsolidierung": "nein",
"pruefidee": "Als Web-Account anmelden, Artikel im Shop auswählen, Bestellung auslösen, im Belegverlauf wiederfinden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-036",
@@ -612,7 +647,8 @@
"tracelinks": "SyRS-032",
"konsolidierung": "nein",
"pruefidee": "TradePool-Zugang für einen Testkunden einrichten, Artikelsuche über mehrere importierte Distributoren durchführen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-037",
@@ -630,7 +666,8 @@
"tracelinks": "SyRS-033, SyRS-034",
"konsolidierung": "nein",
"pruefidee": "Web-Service-Container unter Linux gemäß Dokumentation starten und Basisfunktionalität (Login, einfacher API-Aufruf) verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-038",
@@ -646,7 +683,8 @@
"tracelinks": "SyRS-035",
"konsolidierung": "nein",
"pruefidee": "Pull Request mit \"Ticket 12345\" im Titel mergen und automatischen Eintrag der Versionsnummer im Ticketsystem prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-039",
@@ -662,7 +700,8 @@
"tracelinks": "SyRS-041",
"konsolidierung": "nein",
"pruefidee": "Denselben Anwendungsfall (z. B. Kundenanlage) einmal über Direktverbindung und einmal über Web-Service ausführen; identisches fachliches Ergebnis prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-040",
@@ -679,7 +718,8 @@
"tracelinks": "SyRS-042",
"konsolidierung": "nein",
"pruefidee": "Anzeigesprache auf Englisch umstellen und Vorhandensein englischer Übersetzung für eine Stichprobe von UI-Elementen prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-041",
@@ -695,7 +735,8 @@
"tracelinks": "SyRS-036",
"konsolidierung": "nein",
"pruefidee": "Bekannte Dateninkonsistenz (z. B. fehlende AccountI3D in einem Todo) erzeugen und nach einem Ausführungszyklus die automatische Korrektur prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-042",
@@ -713,7 +754,8 @@
"tracelinks": "SyRS-037, SyRS-038",
"konsolidierung": "nein",
"pruefidee": "API-Aufruf ohne gültiges Recht (403), ohne gültige Authentifizierung (401) und mit beidem (Erfolg) gegen einen v1-Endpunkt prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-043",
@@ -729,7 +771,8 @@
"tracelinks": "SyRS-039",
"konsolidierung": "nein",
"pruefidee": "API-Aufruf durchführen und Vorhandensein eines entsprechenden Telemetrie-Eintrags nach dem nächsten Bucket-Zyklus prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-044",
@@ -746,7 +789,8 @@
"tracelinks": "SyRS-040",
"konsolidierung": "nein",
"pruefidee": "Zwei Filialen unter einem Mandanten anlegen, Auftrag je Filiale erfassen und filialbezogene Auswertung/Berechtigungsfilterung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-045",
@@ -762,7 +806,8 @@
"tracelinks": "SyRS-044",
"konsolidierung": "nein",
"pruefidee": "Zwei Benutzer mit identischem Passwort anlegen und prüfen, ob die gespeicherten Hash-Werte identisch sind (Indiz für fehlendes Salt); Ergebnis mit Sicherheitsverantwortlichen bewerten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-001",
@@ -778,7 +823,8 @@
"tracelinks": "StRS-001; SwRS-001",
"konsolidierung": "nein",
"pruefidee": "Versuch, einen ungültigen Integer-Wert außerhalb {1,2,3} in `State` zu schreiben, muss durch Typsystem/DB verhindert werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-002",
@@ -795,7 +841,8 @@
"tracelinks": "StRS-001; SwRS-002",
"konsolidierung": "nein",
"pruefidee": "Struktur eines neu hinzugefügten Belegtyps (z. B. anhand der Dokumentation) gegen die Basisklassen validieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-003",
@@ -811,7 +858,8 @@
"tracelinks": "StRS-002; SwRS-003",
"konsolidierung": "nein",
"pruefidee": "Direkter API-/BL-Aufruf zur Weiterleitung eines nicht erlaubten Übergangs muss mit definiertem Fehler abgelehnt werden (nicht nur UI-seitig ausgeblendet).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-004",
@@ -827,7 +875,8 @@
"tracelinks": "StRS-003; SwRS-004",
"konsolidierung": "nein",
"pruefidee": "Neue Spalte nur an der Basistabelle ergänzen (Versionstabelle bewusst auslassen) und Auftreten des dokumentierten Laufzeitfehlers bei Versionierung verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-005",
@@ -843,7 +892,8 @@
"tracelinks": "StRS-003; SwRS-004",
"konsolidierung": "nein",
"pruefidee": "Ereignis für zwei unterschiedliche Belegtypen auslösen und Vorhandensein je eines `AnlageLog`-Eintrags mit korrektem `AnlageArt` prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-006",
@@ -860,7 +910,8 @@
"tracelinks": "StRS-004; SwRS-005",
"konsolidierung": "Kandidat: siehe StRS-004 (zwei parallele Mechanismen).",
"pruefidee": "Siehe StRS-004.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-007",
@@ -876,7 +927,8 @@
"tracelinks": "StRS-005; SwRS-006",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit Quartalsintervall (Monthly×3) anlegen und Fälligkeitsberechnung über mehrere Zyklen prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-008",
@@ -892,7 +944,8 @@
"tracelinks": "StRS-005, StRS-007; SwRS-006",
"konsolidierung": "nein",
"pruefidee": "Kontingent bis knapp unter, dann über die Überwachungsschwelle buchen und Statusänderung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-009",
@@ -908,7 +961,8 @@
"tracelinks": "StRS-006; SwRS-007",
"konsolidierung": "nein",
"pruefidee": "RMM-Dienst-Endpunkt für einen Testlauf deaktivieren und Abbruch der Rechnungserstellung mit definierter Fehlermeldung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-010",
@@ -925,7 +979,8 @@
"tracelinks": "StRS-008; SwRS-008",
"konsolidierung": "nein",
"pruefidee": "Web-Angebot durch alle Hauptpfade (Annahme ohne Signatur / mit Signatur / Ablehnung / Änderungswunsch) führen und Zustandsfolge protokollieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-011",
@@ -942,7 +997,8 @@
"tracelinks": "StRS-008, StRS-009; SwRS-008",
"konsolidierung": "nein",
"pruefidee": "Dokument ohne interne Freigabe darf nicht an den Kunden-Signaturlink gelangen; nach Freigabe muss der Versand erfolgen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-012",
@@ -958,7 +1014,8 @@
"tracelinks": "StRS-010; SwRS-009",
"konsolidierung": "nein",
"pruefidee": "Siehe StRS-010.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-013",
@@ -974,7 +1031,8 @@
"tracelinks": "StRS-011, StRS-035; SwRS-010",
"konsolidierung": "nein",
"pruefidee": "Endpunkt für einen Testkunden mit Sonderpreisen aufrufen und korrekte Artikelliste inkl. Preis prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-014",
@@ -990,7 +1048,8 @@
"tracelinks": "StRS-011; SwRS-010",
"konsolidierung": "Kandidat: Verhältnis zu Sonderpreis-Mechanismus (SyRS-013) ungeklärt — möglicherweise zwei Mechanismen für dasselbe fachliche Ziel \"Artikelsichtbarkeit je Kunde steuern\" (siehe Hypothesen.md).",
"pruefidee": "Kundenindividuelle Produktmatrix konfigurieren und Filterwirkung im Katalog/WebCart prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-015",
@@ -1006,7 +1065,8 @@
"tracelinks": "StRS-013, StRS-014; SwRS-011",
"konsolidierung": "nein",
"pruefidee": "Zweite Vorlage als Standard setzen und Aberkennung des Standard-Flags der ersten Vorlage prüfen; Löschversuch der aktuellen Standardvorlage muss scheitern.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-016",
@@ -1022,7 +1082,8 @@
"tracelinks": "StRS-015, StRS-017; SwRS-012",
"konsolidierung": "nein",
"pruefidee": "Mehrere Rechteprüfungen innerhalb derselben Sitzung ausführen und (via Profiling) genau einen SQL-Zugriff für die Rechteliste nachweisen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-017",
@@ -1038,7 +1099,8 @@
"tracelinks": "StRS-015, StRS-016, StRS-018; SwRS-012, SwRS-013",
"konsolidierung": "nein",
"pruefidee": "Versuch, einem Benutzer ohne Gruppenzuordnung ein Einzelrecht zuzuweisen — es muss kein entsprechender Mechanismus im System existieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-018",
@@ -1054,7 +1116,8 @@
"tracelinks": "StRS-019, StRS-021; SwRS-014",
"konsolidierung": "nein",
"pruefidee": "Systemeinstellung zwischen den drei Methoden umschalten und erfolgreichen Login je Methode prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-019",
@@ -1071,7 +1134,8 @@
"tracelinks": "StRS-019; SwRS-014",
"konsolidierung": "nein",
"pruefidee": "Manipuliertes/abgelaufenes Token gegen `jwt/login` senden und Ablehnung (401) prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-020",
@@ -1088,7 +1152,8 @@
"tracelinks": "StRS-020; SwRS-015",
"konsolidierung": "nein",
"pruefidee": "Ticket serverseitig invalidieren und Zeit bis zur client-seitigen Erkennung (Abmeldung/Hinweis) messen; muss innerhalb des konfigurierten Revalidierungsintervalls liegen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-021",
@@ -1104,7 +1169,8 @@
"tracelinks": "StRS-022, StRS-042; SwRS-016",
"konsolidierung": "nein",
"pruefidee": "Lizenz `CentronInternal` deaktivieren und Zugriff auf entsprechend geschützten Endpunkt trotz gültiger Benutzerrechte prüfen (muss abgelehnt werden).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-022",
@@ -1120,7 +1186,8 @@
"tracelinks": "StRS-023; SwRS-017",
"konsolidierung": "nein",
"pruefidee": "Lasttest mit ≥10 parallelen Rechnungserstellungen gegen denselben Nummernkreis; Eindeutigkeit aller vergebenen Nummern prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-023",
@@ -1138,7 +1205,8 @@
"tracelinks": "StRS-024, StRS-025, StRS-026, StRS-027; SwRS-018",
"konsolidierung": "nein",
"pruefidee": "Je Guard einen gezielten Verletzungsversuch durchführen und Ablehnung mit spezifischer Fehlermeldung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-024",
@@ -1155,7 +1223,8 @@
"tracelinks": "StRS-028; SwRS-019",
"konsolidierung": "nein",
"pruefidee": "Einstellung aktivieren, Rechnung finalisieren, PDF auf eingebettete ZUGFeRD-XML prüfen (z. B. mit KOSIT-Validator).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-025",
@@ -1171,7 +1240,8 @@
"tracelinks": "StRS-029; SwRS-020",
"konsolidierung": "nein",
"pruefidee": "Bestellung an einen nicht speziell konfigurierten Distributor auslösen und Erzeugung eines validen openTRANS-2.1-Dokuments prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-026",
@@ -1188,7 +1258,8 @@
"tracelinks": "StRS-029; SwRS-020",
"konsolidierung": "nein",
"pruefidee": "Testdatei je unterstütztem Format einspielen und korrekte Delegation an die jeweilige Partial-Class (per Log/Trace) prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-027",
@@ -1204,7 +1275,8 @@
"tracelinks": "StRS-030; SwRS-021",
"konsolidierung": "nein",
"pruefidee": "Artikel mit offenem Zulauf und Unterschreitung des Mindestbestands prüfen; Bestellvorschlagsmenge muss den Zulauf berücksichtigen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-028",
@@ -1220,7 +1292,8 @@
"tracelinks": "StRS-031; SwRS-022",
"konsolidierung": "nein",
"pruefidee": "Siehe StRS-031.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-029",
@@ -1237,7 +1310,8 @@
"tracelinks": "StRS-032, StRS-033; SwRS-023",
"konsolidierung": "nein",
"pruefidee": "Siehe StRS-032/033.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-030",
@@ -1253,7 +1327,8 @@
"tracelinks": "StRS-034; SwRS-024",
"konsolidierung": "nein",
"pruefidee": "Aktionspreis außerhalb des Gültigkeitszeitraums anlegen und Nichterscheinen in der Preismatrix prüfen; Preismatrix-Ladezeit mit und ohne Cache messen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-031",
@@ -1269,7 +1344,8 @@
"tracelinks": "StRS-035; SwRS-025",
"konsolidierung": "nein",
"pruefidee": "Login über Nexus durchführen, Cookie-Setzung prüfen, Ticket serverseitig invalidieren und erzwungene Abmeldung gemäß SyRS-020 prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-032",
@@ -1285,7 +1361,8 @@
"tracelinks": "StRS-036; SwRS-025",
"konsolidierung": "Kandidat: dritter, unabhängiger Authentifizierungsmechanismus neben Haupt-Auth (SyRS-018) und Web-Account-Rechten (StRS-017) — Konsolidierungspotenzial für Zielsystem.",
"pruefidee": "TradePool-Login mit korrektem/falschem Passwort testen; Nichtverfügbarkeit einer TradePool-Sitzung für reguläre c-entron-Endpunkte prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-033",
@@ -1302,7 +1379,8 @@
"tracelinks": "StRS-037; SwRS-026",
"konsolidierung": "nein",
"pruefidee": "`docker compose up` gemäß Konfiguration ausführen und Erreichbarkeit aller vier Dienste prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-034",
@@ -1318,7 +1396,8 @@
"tracelinks": "StRS-037; SwRS-026",
"konsolidierung": "nein",
"pruefidee": "Linux-Installation gemäß Dokumentation aufsetzen und Nichtverfügbarkeit der Sub-Web-Services sowie Klartext-Zertifikatspasswort in der Konfigurationsdatei verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-035",
@@ -1334,7 +1413,8 @@
"tracelinks": "StRS-038; SwRS-026",
"konsolidierung": "nein",
"pruefidee": "Test-Pull-Request mit Ticketreferenz mergen, Build auslösen und automatischen Ticket-Eintrag verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-036",
@@ -1350,7 +1430,8 @@
"tracelinks": "StRS-041; SwRS-027",
"konsolidierung": "nein",
"pruefidee": "Eine Wartungsaufgabe gezielt zum Fehlschlagen bringen (z. B. durch inkonsistente Testdaten) und Fortsetzung der übrigen Aufgaben im selben Zyklus prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-037",
@@ -1367,7 +1448,8 @@
"tracelinks": "StRS-042; SwRS-028",
"konsolidierung": "nein",
"pruefidee": "Neuen Controller im Namensraum `Controllers.v2.*` anlegen und automatische Zuordnung zur API-Version 2 ohne weitere Konfiguration prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-038",
@@ -1383,7 +1465,8 @@
"tracelinks": "StRS-042; SwRS-028",
"konsolidierung": "nein",
"pruefidee": "Cross-Origin-Testanfrage von einer nicht autorisierten Domain senden und erfolgreiche CORS-Freigabe (statt Ablehnung) verifizieren; im Rahmen der Validierung mit Sicherheitsverantwortlichen klären, ob dies beabsichtigt ist.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-039",
@@ -1399,7 +1482,8 @@
"tracelinks": "StRS-043; SwRS-029",
"konsolidierung": "nein",
"pruefidee": "Parallele API-Aufrufe (≥20 gleichzeitig) simulieren und korrekte, verlustfreie Bucket-Aggregation prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-040",
@@ -1416,7 +1500,8 @@
"tracelinks": "StRS-044; SwRS-030",
"konsolidierung": "nein",
"pruefidee": "Siehe StRS-044.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-041",
@@ -1432,7 +1517,8 @@
"tracelinks": "StRS-039; SwRS-031",
"konsolidierung": "nein",
"pruefidee": "Neues Modul ohne eine der beiden Implementierungen registrieren und Fehlverhalten/Registrierungsfehler beim Start prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-042",
@@ -1448,7 +1534,8 @@
"tracelinks": "StRS-040; SwRS-032",
"konsolidierung": "nein",
"pruefidee": "Web-Service-Aufruf mit `Accept-Language: en-US` senden und englische statt deutsche Fehlermeldung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-043",
@@ -1465,7 +1552,8 @@
"tracelinks": "StRS-042; SwRS-033",
"konsolidierung": "nein",
"pruefidee": "Lasttest mit sehr vielen parallelen/wiederholten Anfragen eines einzelnen Clients durchführen und Verhalten (Drosselung ja/nein) beobachten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-044",
@@ -1481,6 +1569,7 @@
"tracelinks": "StRS-045; SwRS-034",
"konsolidierung": "nein",
"pruefidee": "Siehe StRS-045.",
"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) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 89 (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** (34 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 | 89 von 89 mit Tracelinks (100,0 %) |
@@ -97,6 +97,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 |
@@ -133,6 +135,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 89 (84,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 |
@@ -150,6 +156,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]` | **verletzt** – 1 von 43 ungedeckt: SyRS-035 |
| **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 | 97 von 106 mit Tracelinks (91,5 %) |
## Vergleich der drei Läufe (identischer Prompt)
@@ -14,7 +14,8 @@
"tracelinks": "SyRS-013, SyRS-014, SwRS-001, SwRS-002, SwRS-003, SwRS-004",
"konsolidierung": "nein",
"pruefidee": "End-to-End-Test: Angebot anlegen → in Auftrag wandeln → in Rechnung wandeln; prüfen, dass Kundendaten, Positionen und Preise unverändert übernommen werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-002",
@@ -31,7 +32,8 @@
"tracelinks": "SyRS-001, SyRS-003",
"konsolidierung": "Kandidat: CRM-Kundendaten (`Kunden`-Tabelle) und Webaccount-Kundenportalzugang (StRS-018) könnten im Zielsystem als ein Identitätsmodell konsolidiert werden.",
"pruefidee": "Neuen Kunden anlegen, Adresse/Kontaktperson hinzufügen, anschließend in einem Angebot referenzieren und Übernahme der Stammdaten prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-003",
@@ -48,7 +50,8 @@
"tracelinks": "SyRS-013, SwRS-001, SwRS-009",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit monatlichem Abrechnungsintervall anlegen, automatisierte Abrechnung aktivieren, Fälligkeitsdatum erreichen lassen (Testlauf) und Rechnungserzeugung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-004",
@@ -64,7 +67,8 @@
"tracelinks": "SyRS-013, SwRS-009, SwRS-010, SwRS-011",
"konsolidierung": "nein",
"pruefidee": "RMM-Dienst simuliert nicht erreichbar → Rechnungserstellung für RMM-Vertrag muss mit Fehlermeldung abbrechen, keine Teil-Rechnung darf erzeugt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-005",
@@ -81,7 +85,8 @@
"tracelinks": "SyRS-013, SyRS-014, SwRS-002",
"konsolidierung": "nein",
"pruefidee": "Bestellvorschlag erzeugen, in Lieferantenbestellung wandeln, Lieferschein und Lieferantenrechnung erfassen; Mengen-/Preisübernahme prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-006",
@@ -98,7 +103,8 @@
"tracelinks": "SyRS-021, SyRS-022, SyRS-026, SwRS-026, SwRS-027, SwRS-028",
"konsolidierung": "nein",
"pruefidee": "EDI-Testdatei eines unterstützten Lieferantenformats bereitstellen, Download-Zyklus abwarten, Übernahme in c-entron-Beleg prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-007",
@@ -115,7 +121,8 @@
"tracelinks": "SyRS-013, SwRS-001",
"konsolidierung": "nein",
"pruefidee": "Artikel anlegen, Lieferschein mit diesem Artikel buchen, Bestandsfortschreibung im Lagerbestand prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-008",
@@ -132,7 +139,8 @@
"tracelinks": "SyRS-013, SwRS-007",
"konsolidierung": "nein",
"pruefidee": "Artikel mit gültigem Aktionspreis und externem API-Preis öffnen; Preismatrix muss beide Quellen gleichzeitig mit korrekter Kennzeichnung anzeigen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-009",
@@ -149,7 +157,8 @@
"tracelinks": "SyRS-013",
"konsolidierung": "nein",
"pruefidee": "RMA-Fall für retournierten Artikel anlegen, Status bis Abschluss verfolgen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-010",
@@ -167,7 +176,8 @@
"tracelinks": "SyRS-003, SyRS-037, SwRS-034",
"konsolidierung": "Kandidat: WPF-Helpdesk-Modul und Nexus-ServiceBoard bilden zwei parallele UI-Implementierungen derselben fachlichen Funktion – im Zielsystem konsolidierungsbedürftig.",
"pruefidee": "Ticket im WPF-Client anlegen, im Webportal auffindbar und bearbeitbar prüfen, Status bis \"geschlossen\" verfolgen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-011",
@@ -183,7 +193,8 @@
"tracelinks": "SyRS-013, SwRS-034",
"konsolidierung": "nein",
"pruefidee": "Vorlage mit Modus \"Group\" anlegen, als Standard setzen, aus Auftrag Tickets erzeugen lassen; genau ein Sammelticket mit Vorlagenwerten muss entstehen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-012",
@@ -200,7 +211,8 @@
"tracelinks": "SyRS-011, SwRS-014",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne das entsprechende Recht öffnet Timer-Billing-Einstellungen; Datumseingabe für Rechnungs-/Lieferscheindatum muss gesperrt sein und ein Hinweisfeld anzeigen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-013",
@@ -217,7 +229,8 @@
"tracelinks": "SyRS-011, SwRS-012, SwRS-013, SwRS-014",
"konsolidierung": "nein",
"pruefidee": "Mahnlauf mit Benutzer ohne Mahnungsrecht auslösen → Abbruch mit Fehlermeldung; mit berechtigtem Benutzer → korrekte Mahnstufenzuordnung je Kunde.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-014",
@@ -233,7 +246,8 @@
"tracelinks": "SyRS-011, SwRS-013, SwRS-014",
"konsolidierung": "Kandidat: OPOS und Mahnwesen (StRS-013) teilen dieselbe Rechteschutz-Idiom (`ThrowIfUserHasInsufficentRights`) und denselben fachlichen Kontext (Zahlungsüberwachung) – ggf. im Zielsystem als ein \"Forderungsmanagement\"-Baustein konsolidierbar.",
"pruefidee": "OPOS-Lauf durch nicht berechtigten Benutzer auslösen → Abbruch; Saldenkontrolle einer Testrechnung mit Teilzahlung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-015",
@@ -250,7 +264,8 @@
"tracelinks": "SyRS-023, SyRS-024, SwRS-029, SwRS-030",
"konsolidierung": "nein",
"pruefidee": "Rechnung mit mehreren Steuersätzen erzeugen, ZUGFeRD-Export prüfen (KOSIT-Validator), Summenabgleich innerhalb der Toleranz verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-016",
@@ -267,7 +282,8 @@
"tracelinks": "SyRS-011, SyRS-012, SwRS-014, SwRS-015, SwRS-016",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne Recht \"Kunde anlegen\" versucht, einen Kunden anzulegen → UI-Funktion ist deaktiviert und BL-Aufruf liefert Fehlermeldung \"Fehlende Rechte...\".",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-017",
@@ -284,7 +300,8 @@
"tracelinks": "SyRS-018, SwRS-021",
"konsolidierung": "nein",
"pruefidee": "Kunde ohne Lizenz für Modul X öffnet c-entron → Modul ist nicht im Modul-Menü sichtbar (`ModuleRegistration.IsModuleAvailable`).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-018",
@@ -301,7 +318,8 @@
"tracelinks": "SyRS-003, SyRS-037, SwRS-001",
"konsolidierung": "nein",
"pruefidee": "Als Webaccount-Nutzer Artikel in Warenkorb legen, Freigabe anfordern, als Freigebender genehmigen, Status \"bestellbereit\" prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-019",
@@ -317,7 +335,8 @@
"tracelinks": "SyRS-011, SyRS-012",
"konsolidierung": "nein",
"pruefidee": "Zwei Webaccount-Nutzer desselben Kunden mit unterschiedlicher Ticket-Sichtbarkeitskonfiguration anlegen; prüfen, dass jeder nur die für ihn freigegebenen Tickets sieht.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-020",
@@ -333,7 +352,8 @@
"tracelinks": "SyRS-038",
"konsolidierung": "nein",
"pruefidee": "E-Mail in Outlook öffnen, Add-in nutzen, um ein neues Ticket zu erstellen; Ticket muss im c-entron-System mit E-Mail-Bezug erscheinen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-021",
@@ -349,7 +369,8 @@
"tracelinks": "SyRS-027, SwRS-031, SwRS-032",
"konsolidierung": "nein",
"pruefidee": "Helpdesk-Zeit in c-entron anlegen (Datum X), Sync abwarten, Termin in Outlook manuell auf Datum Y ändern, erneut synchronisieren → c-entron-Datensatz muss weiterhin Datum X zeigen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-022",
@@ -366,7 +387,8 @@
"tracelinks": "SyRS-003",
"konsolidierung": "Kandidat: GLS-Direktanbindung und Shipcloud-Aggregator decken teils überlappende Funktionalität ab – im Zielsystem auf einen Versand-Abstraktionsdienst konsolidierbar.",
"pruefidee": "Lieferschein abschließen, Versandlabel über GLS/Shipcloud erzeugen, Tracking-Nummer im Beleg prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-023",
@@ -382,7 +404,8 @@
"tracelinks": "SyRS-013",
"konsolidierung": "nein",
"pruefidee": "Artikel mit bekanntem Herstellercode über Icecat-Abgleich anreichern lassen, Ergebnis (Beschreibung/Bild) im Artikelstamm prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-024",
@@ -399,7 +422,8 @@
"tracelinks": "SyRS-013, StRS-014",
"konsolidierung": "nein",
"pruefidee": "Testkonto über finAPI-Sandbox verbinden, Transaktionsimport auslösen, Zuordnung zu offener Rechnung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-025",
@@ -415,7 +439,8 @@
"tracelinks": "SyRS-013, StRS-004",
"konsolidierung": "nein",
"pruefidee": "Gerät mit docuFORM verknüpfen, Zählerstand-Abfrage auslösen, Übernahme in Vertragskontingent-Verbrauch (StRS-004) prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-026",
@@ -431,7 +456,8 @@
"tracelinks": "SyRS-013",
"konsolidierung": "nein",
"pruefidee": "Verkaufsstatistik für definierten Zeitraum abrufen und Summenkontrolle gegen manuell aggregierte Belegdaten durchführen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-027",
@@ -448,7 +474,8 @@
"tracelinks": "SyRS-012",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit \"nur eigene Filiale\"-Recht sucht Belege → nur Belege der eigenen Filiale werden zurückgegeben.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-028",
@@ -464,7 +491,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "Modul öffnen und konkrete Funktionen (Auskunft/Löschung/Anonymisierung) inventarisieren; mit Datenschutzbeauftragtem abgleichen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-029",
@@ -481,7 +509,8 @@
"tracelinks": "SyRS-013",
"konsolidierung": "nein",
"pruefidee": "Chat-Assistenten mit Testanfrage aufrufen, Antwortverhalten und Rechteschutz (Mandanten-/Filial-/Mitarbeiterebene) prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-030",
@@ -497,7 +526,8 @@
"tracelinks": "SyRS-001",
"konsolidierung": "nein",
"pruefidee": "Gleiche fachliche Aktion (z. B. Kunde anlegen) einmal über Direktverbindung, einmal über Webservice-Verbindung ausführen; Ergebnis muss identisch sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-001",
@@ -513,7 +543,8 @@
"tracelinks": "StRS-030",
"konsolidierung": "nein",
"pruefidee": "Statische Codeprüfung: Für ein Stichprobenmodul existieren `I*Logic`, `BL*Logic`, `WS*Logic` mit identischer Methodensignatur.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-002",
@@ -529,7 +560,8 @@
"tracelinks": "StRS-030",
"konsolidierung": "nein",
"pruefidee": "BL-Methode mit provoziertem Fehler aufrufen; Response muss `StatusCode.Failed` mit aussagekräftiger `Message` liefern, kein unbehandelter Exception-Durchschlag zum Client.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-003",
@@ -545,7 +577,8 @@
"tracelinks": "StRS-002, StRS-010, StRS-018, StRS-022",
"konsolidierung": "nein",
"pruefidee": "Gleichen Endpunkt von WPF-Client und einer unabhängigen HTTP-Anfrage (z. B. curl) mit gültigem Ticket aufrufen; identisches Ergebnis erwarten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-004",
@@ -561,7 +594,8 @@
"tracelinks": "SyRS-003",
"konsolidierung": "Kandidat: Legacy-WCF-Bridge (SyRS-004) und moderne v1-Controller (SyRS-005) bilden zwei parallele API-Generationen für teils gleiche fachliche Funktionen (z. B. Kunden/Aufträge existieren in beiden) – zentraler Konsolidierungskandidat für die Web-/SaaS-Neuimplementierung.",
"pruefidee": "Bestandsmethode aus `ICentronRestService` über `/REST/<Name>` aufrufen und Antwortformat/-inhalt gegen Erwartung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-005",
@@ -577,7 +611,8 @@
"tracelinks": "SyRS-004",
"konsolidierung": "nein",
"pruefidee": "`GET v1/customers/{id}` mit gültigem Token aufrufen und Response-Schema gegen DTO-Definition prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-006",
@@ -593,7 +628,8 @@
"tracelinks": "StRS-010",
"konsolidierung": "nein",
"pruefidee": "Zwei Clients verbinden, Chat-Nachricht von Client A senden, Zustellzeit/-inhalt bei Client B prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-007",
@@ -610,7 +646,8 @@
"tracelinks": "StRS-016",
"konsolidierung": "nein",
"pruefidee": "Mit abgelaufenem Ticket einen geschützten Endpunkt aufrufen → Antwort 401.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-008",
@@ -626,7 +663,8 @@
"tracelinks": "StRS-016",
"konsolidierung": "nein",
"pruefidee": "Anmeldung mit verknüpftem Microsoft-Testkonto durchführen, gültiges Ticket erhalten; Anmeldung mit nicht verknüpftem Konto → Fehler.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-009",
@@ -642,7 +680,8 @@
"tracelinks": "StRS-016",
"konsolidierung": "nein",
"pruefidee": "Access Token erstellen, damit Aufruf durchführen (Erfolg), Token deaktivieren, gleichen Aufruf wiederholen (Ablehnung).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-010",
@@ -659,7 +698,8 @@
"tracelinks": "StRS-016",
"konsolidierung": "nein",
"pruefidee": "2FA aktivieren, Anmeldung ohne zweiten Faktor → Ablehnung; mit korrektem RADIUS-Code → Erfolg.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-011",
@@ -676,7 +716,8 @@
"tracelinks": "StRS-016, StRS-013, StRS-014",
"konsolidierung": "nein",
"pruefidee": "Endpunkt mit `[AuthorizeUserRight(X)]` durch Benutzer ohne Recht X aufrufen → 401/403; mit Recht X → Erfolg.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-012",
@@ -692,7 +733,8 @@
"tracelinks": "StRS-027, SyRS-011",
"konsolidierung": "nein",
"pruefidee": "Filialbeschränkter Benutzer sucht Belege anderer Filialen über direkten API-Aufruf (nicht UI) → Ergebnis darf keine fremden Filialbelege enthalten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-013",
@@ -709,7 +751,8 @@
"tracelinks": "StRS-001, StRS-003, StRS-005, StRS-007, StRS-008, StRS-010, StRS-011, StRS-018, StRS-023, StRS-024, StRS-025, StRS-026, StRS-029, SwRS-004",
"konsolidierung": "Kandidat: Die Legacy-Spiegeltabellen (`Entities/DbEntities/AufKopf.cs` u. a.) führen ein rein numerisches `Status`-Feld (kein Enum) parallel zum modernen `ReceiptState`-Enum – im Zielsystem auf ein einziges Statusmodell konsolidierungsbedürftig.",
"pruefidee": "Beleg stornieren, danach Versuch, ihn in einen Folgebeleg zu wandeln → muss vom System verhindert werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-014",
@@ -725,7 +768,8 @@
"tracelinks": "StRS-001, StRS-005, SwRS-002, SwRS-003",
"konsolidierung": "nein",
"pruefidee": "Testweise inkonsistente `CanBeForwardedFrom`/`CanBeForwardedInto`-Konfiguration einspielen → Systemstart muss mit `ApplicationException` fehlschlagen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-015",
@@ -741,7 +785,8 @@
"tracelinks": "StRS-001, SwRS-005",
"konsolidierung": "nein",
"pruefidee": "Beleg mehrfach ändern und speichern; Anzahl und Inhalt der Einträge in `<Typ>KopfVersions` gegen die Änderungshistorie prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-016",
@@ -758,7 +803,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "Stichprobenprüfung mehrerer neuerer Tabellen (z. B. `HelpdeskCreationTemplate`) auf Einhaltung aller Konventionspunkte.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-017",
@@ -775,7 +821,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "Anwendung mit älterer DB-Version starten und Ausführung aller ausstehenden Skripte in der Konsolenausgabe verifizieren (vgl. Testvorgehen in `docs/guides/database/create-scripts.md`).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-018",
@@ -791,7 +838,8 @@
"tracelinks": "StRS-017",
"konsolidierung": "nein",
"pruefidee": "Lizenz mit `count=0` bzw. abgelaufenem Datum simulieren → betroffene Funktion muss verweigert werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-019",
@@ -807,7 +855,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "UI-Kultur auf Englisch umstellen, Stichprobe von Dialogen auf vollständige Übersetzung prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-020",
@@ -823,7 +872,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "Stichprobenprüfung der Byte-Order-Mark in neu committeten `.cs`-Dateien.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-021",
@@ -839,7 +889,8 @@
"tracelinks": "StRS-006",
"konsolidierung": "nein",
"pruefidee": "Testdatei auf konfiguriertem SFTP-Server ablegen, 30-Minuten-Zyklus abwarten, Verarbeitung im `EDIManagementLog` prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-022",
@@ -855,7 +906,8 @@
"tracelinks": "StRS-006, SyRS-021",
"konsolidierung": "nein",
"pruefidee": "Datei erzeugen, die 4-mal hintereinander einen Parsing-Fehler auslöst; fünfter Verarbeitungsversuch darf nicht mehr erfolgen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-023",
@@ -871,7 +923,8 @@
"tracelinks": "StRS-015",
"konsolidierung": "nein",
"pruefidee": "Rechnung mit Reverse-Charge-Position erzeugen; generierte XML muss Tax-Category \"AE\" und den vorgeschriebenen Befreiungstext enthalten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-024",
@@ -887,7 +940,8 @@
"tracelinks": "StRS-015, SyRS-023",
"konsolidierung": "nein",
"pruefidee": "Testrechnung mit künstlicher Summenabweichung von 5,00 erzeugen → ZUGFeRD-Export muss mit Fehler abbrechen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-025",
@@ -903,7 +957,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "Eine Wartungsaufgabe künstlich zum Fehlschlagen bringen; nachfolgende Aufgaben im selben Zyklus müssen dennoch ausgeführt werden (Log-Analyse).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-026",
@@ -919,7 +974,8 @@
"tracelinks": "StRS-006, SyRS-021",
"konsolidierung": "nein",
"pruefidee": "Webservice ohne verbundenen WPF-Client betreiben; EDI-Abruf muss dennoch planmäßig laufen (Log-Zeitstempel prüfen).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-027",
@@ -935,7 +991,8 @@
"tracelinks": "StRS-021",
"konsolidierung": "nein",
"pruefidee": "Termin in Outlook (Exchange Online) ändern, 60s abwarten, Änderung in Nexus/c-entron prüfen; gleichen Test für On-Premise-Exchange wiederholen und Einschränkungen verifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-028",
@@ -951,7 +1008,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "In DEBUG-Build Mailversand an externe Testadresse auslösen → tatsächlicher Empfänger muss `test@nexoware.com` sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-029",
@@ -968,7 +1026,8 @@
"tracelinks": "SyRS-003",
"konsolidierung": "nein",
"pruefidee": "Lasttest mit hoher Anfragefrequenz gegen einen ungeschützten Webservice-Endpunkt durchführen und Systemverhalten (Verfügbarkeit, Ressourcenverbrauch) beobachten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-030",
@@ -984,7 +1043,8 @@
"tracelinks": "SyRS-003",
"konsolidierung": "nein",
"pruefidee": "Cross-Origin-Testanfrage von einer Fremd-Domain mit gültigem Ticket absetzen und Antwortverhalten (CORS-Header) prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-031",
@@ -1002,7 +1062,8 @@
"tracelinks": "SyRS-033",
"konsolidierung": "nein",
"pruefidee": "Repository-Historie auf enthaltene Zugangsdaten scannen (z. B. mit Secret-Scanning-Tool); Empfehlung: Rotation aller im Repository sichtbaren Geheimnisse.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-032",
@@ -1018,7 +1079,8 @@
"tracelinks": "-",
"konsolidierung": "nein",
"pruefidee": "Vollständige Neuinstallation aller drei Komponenten in einer sauberen Testumgebung durchführen und Aufwand/Abhängigkeiten dokumentieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-033",
@@ -1035,7 +1097,8 @@
"tracelinks": "SyRS-031, SyRS-032",
"konsolidierung": "nein",
"pruefidee": "Web-Service unter Ubuntu/Debian gemäß Anleitung installieren und Funktionsumfang gegen Windows-Betrieb vergleichen (insbesondere Sub-Web-Services).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-034",
@@ -1052,7 +1115,8 @@
"tracelinks": "-",
"konsolidierung": "Kandidat: Parallel gepflegte Azure-DevOps-Pipelines (`azure/*`, `azure-blazor/*`) und neuere GitHub-Actions-Workflows decken teils dieselben Build-/Test-Schritte ab – Konsolidierungskandidat.",
"pruefidee": "Pull Request mit Ticketreferenz mergen; Build-Version muss automatisch im referenzierten Ticket hinterlegt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-035",
@@ -1068,7 +1132,8 @@
"tracelinks": "SyRS-034",
"konsolidierung": "nein",
"pruefidee": "Bekannte, absichtlich eingefügte Testschwachstelle in einem Feature-Branch committen und CodeQL-Erkennung im nächsten Lauf prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-036",
@@ -1085,7 +1150,8 @@
"tracelinks": "SyRS-034",
"konsolidierung": "nein",
"pruefidee": "Denselben EndToEnd-Test zweimal hintereinander ausführen und Ergebnisidentität prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-037",
@@ -1102,7 +1168,8 @@
"tracelinks": "StRS-010, StRS-018, StRS-019, StRS-020, StRS-021",
"konsolidierung": "nein",
"pruefidee": "Nexus ohne installierten WPF-Client betreiben und vollständigen Kundenportal-Workflow (StRS-018) end-to-end durchführen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-038",
@@ -1118,7 +1185,8 @@
"tracelinks": "StRS-020",
"konsolidierung": "nein",
"pruefidee": "Add-in gemäß Manifest in Outlook (Desktop und Web) installieren und Grundfunktion (Ticket aus E-Mail erstellen) prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-001",
@@ -1134,7 +1202,8 @@
"tracelinks": "SyRS-013, SyRS-015",
"konsolidierung": "nein",
"pruefidee": "Neues gemeinsames Kopf-Feld in `ReceiptBase` hinzufügen und Sichtbarkeit in allen sieben abgeleiteten Belegtypen ohne Zusatzaufwand prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-002",
@@ -1150,7 +1219,8 @@
"tracelinks": "SyRS-013, SyRS-014, SwRS-001",
"konsolidierung": "nein",
"pruefidee": "Für Belegtyp \"Rechnung\" prüfen, dass `CanBeForwardedInto` ausschließlich `CreditVoucherClass` erlaubt; Versuch, eine Rechnung in einen Auftrag zu wandeln, muss abgelehnt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-003",
@@ -1166,7 +1236,8 @@
"tracelinks": "SyRS-014, SwRS-002",
"konsolidierung": "nein",
"pruefidee": "Unit-Test: `ValidateConsistency()` mit absichtlich asymmetrischer Testkonfiguration aufrufen → `ApplicationException` erwarten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-004",
@@ -1183,7 +1254,8 @@
"tracelinks": "SyRS-013",
"konsolidierung": "Kandidat: Konsolidierung von `ReceiptState`-Enum und Legacy-`Status`/`FreigabeStatus`-Feldern zu einem einzigen Statusmodell im Zielsystem.",
"pruefidee": "Beleg-Statuswechsel auslösen und beide Felder (`ReceiptState` auf modernem Entity, `Status` in Legacy-Tabelle `AufKopf`) per SQL-Abfrage vergleichen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-005",
@@ -1199,7 +1271,8 @@
"tracelinks": "SyRS-015, SyRS-016",
"konsolidierung": "nein",
"pruefidee": "Neue Spalte nur in Basistabelle und modernem Entity hinzufügen (bewusst unvollständig) → Speichern über `SaveReceipt*Repository` muss den Wert NICHT persistieren (Nachweis des dokumentierten Fehlerbilds).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-006",
@@ -1215,7 +1288,8 @@
"tracelinks": "SyRS-015, SwRS-005",
"konsolidierung": "nein",
"pruefidee": "End-to-End-Test gemäß Empfehlung der Dokumentation: Feld setzen, speichern, Beleg neu laden, Rohwert in Legacy-Tabelle per SQL prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-007",
@@ -1231,7 +1305,8 @@
"tracelinks": "StRS-008, SyRS-013",
"konsolidierung": "nein",
"pruefidee": "Beleg mit gemischten Steuersätzen (7 %/19 %) anlegen; Summenberechnung je Steuersatzgruppe manuell nachrechnen und mit Systemergebnis vergleichen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-008",
@@ -1247,7 +1322,8 @@
"tracelinks": "StRS-008, SyRS-013, SwRS-007",
"konsolidierung": "nein",
"pruefidee": "Steuersatzänderung zu einem Stichtag anlegen; Beleg mit Datum vor und nach dem Stichtag erzeugen und jeweils angewandten Steuersatz prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-009",
@@ -1263,7 +1339,8 @@
"tracelinks": "StRS-003, StRS-004",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit Kontingent 10h anlegen, 4h verbrauchen, Position nachträglich auf 6h Verbrauch ändern; Kontingentsaldo muss korrekt auf 4h Rest aktualisiert werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-010",
@@ -1279,7 +1356,8 @@
"tracelinks": "StRS-004, SwRS-011",
"konsolidierung": "nein",
"pruefidee": "Rechnung für RMM-Vertrag mit Platzhalter `@@RMMArtikel@@` im Textbaustein erzeugen; RMM-Position muss exakt an der Platzhalterstelle erscheinen und der Platzhaltertext entfernt sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-011",
@@ -1295,7 +1373,8 @@
"tracelinks": "StRS-004, SwRS-010",
"konsolidierung": "nein",
"pruefidee": "RMM-Dienst in Testumgebung deaktivieren, Rechnungserstellung für Vertrag mit RMM-Artikelreferenz auslösen → Erstellung muss mit definierter Fehlermeldung abbrechen, keine Rechnung darf im System entstehen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-012",
@@ -1311,7 +1390,8 @@
"tracelinks": "StRS-013, SwRS-014",
"konsolidierung": "nein",
"pruefidee": "Kunde mit Rechnungen unterschiedlicher Überfälligkeit anlegen, Mahnlauf ausführen, korrekte Mahnstufenzuordnung und Textvariablen prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-013",
@@ -1327,7 +1407,8 @@
"tracelinks": "StRS-013, StRS-014, SyRS-011",
"konsolidierung": "Kandidat: identisches Rechteschutz-Idiom in Dunning und Opos – im Zielsystem als gemeinsamer Decorator/Cross-Cutting-Concern (z. B. Attribut) statt Code-Duplikation umsetzbar.",
"pruefidee": "BL-Methode `RunDunning`/`RunOpos` direkt (unter Umgehung der UI) mit einem Benutzer ohne Recht aufrufen → Exception muss geworfen werden, kein Lauf darf erzeugt werden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-014",
@@ -1344,7 +1425,8 @@
"tracelinks": "StRS-016, SyRS-011",
"konsolidierung": "nein",
"pruefidee": "Statische Codeprüfung: Keine direkte numerische Rechte-ID (Literal) in einem `HasUserRight`-Aufruf ohne `UserRightsConst`-Referenz.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-015",
@@ -1360,7 +1442,8 @@
"tracelinks": "StRS-016, SwRS-014, SwRS-016",
"konsolidierung": "nein",
"pruefidee": "Benutzer zwei Gruppen mit unterschiedlichen Rechten zuordnen; `GetRightsFromCurrentUser` muss die Vereinigungsmenge beider Gruppenrechte liefern.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-016",
@@ -1376,7 +1459,8 @@
"tracelinks": "StRS-016, SwRS-015, SyRS-017",
"konsolidierung": "nein",
"pruefidee": "Neues Recht per `AddRightIfNotExists` unterhalb eines bestehenden Elternrechts anlegen; `NumChildren` des Elternrechts muss automatisch um 1 erhöht sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-017",
@@ -1392,7 +1476,8 @@
"tracelinks": "SyRS-007",
"konsolidierung": "nein",
"pruefidee": "Anfrage mit manipuliertem/gefälschtem Ticket senden → 401; erfolgreiche Anfrage im Audit-Log mit korrekter IP/Methode wiederfinden.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-018",
@@ -1408,7 +1493,8 @@
"tracelinks": "SyRS-008",
"konsolidierung": "nein",
"pruefidee": "E-Mail-Adresse des verknüpften Microsoft-Kontos ändern; Anmeldung muss weiterhin denselben c-entron-Benutzer zuordnen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-019",
@@ -1424,7 +1510,8 @@
"tracelinks": "SyRS-008",
"konsolidierung": "nein",
"pruefidee": "Manipuliertes JWT (falsche Signatur, abgelaufen, wiederverwendet) gegen `POST /jwt/login` senden → Ablehnung in allen drei Fällen, mit Log-Eintrag.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-020",
@@ -1440,7 +1527,8 @@
"tracelinks": "SyRS-009",
"konsolidierung": "nein",
"pruefidee": "Access Token erstellen, erfolgreichen API-Aufruf durchführen, Token per `PUT {id}/deactivate` deaktivieren, identischen Aufruf wiederholen → Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-021",
@@ -1456,7 +1544,8 @@
"tracelinks": "StRS-017, SyRS-018",
"konsolidierung": "nein",
"pruefidee": "Lizenz-GUID, die nur in `LicenseGuids.cs`, nicht aber in `ApplicationKind.cs` gelistet ist, für einen Login-Versuch verwenden → Ablehnung.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-022",
@@ -1472,7 +1561,8 @@
"tracelinks": "SyRS-016",
"konsolidierung": "Kandidat: Doppelte Konfigurationsablage (`Stammdat` vs. `ApplicationSettings`) ist ein expliziter Migrationskandidat für das Zielsystem.",
"pruefidee": "Neue Einstellung mit nächster freier ID gemäß Kommentar in `ApplicationSettingID.cs` anlegen, Lese-/Schreibzugriff über `AppSettingsBL` prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-023",
@@ -1488,7 +1578,8 @@
"tracelinks": "SyRS-017",
"konsolidierung": "nein",
"pruefidee": "Anwendung zweimal hintereinander gegen dieselbe (bereits migrierte) Datenbank starten; zweiter Start darf keine SQL-Fehler und keine erneuten Schemaänderungen erzeugen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-024",
@@ -1505,7 +1596,8 @@
"tracelinks": "SyRS-016",
"konsolidierung": "nein",
"pruefidee": "Neue Entität ohne explizite Längenangabe in einem Mapping anlegen und Abweichung vom tatsächlichen DB-Schema als Codereview-Fehler identifizieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-025",
@@ -1522,7 +1614,8 @@
"tracelinks": "SyRS-016",
"konsolidierung": "nein",
"pruefidee": "Alle Verwendungsstellen von `RawSqlAccessDAO`/`GenericStoredProcedureDAO` auf konsequente Parametrisierung prüfen (keine Stringverkettung von Benutzereingaben).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-026",
@@ -1538,7 +1631,8 @@
"tracelinks": "StRS-006, SyRS-021",
"konsolidierung": "nein",
"pruefidee": "EDI-Datei im ALSO-CH-Format mit Swiss-ESR-Code verarbeiten und prüfen, dass andere Lieferantenformate (z. B. Herweck) unverändert funktionieren (Regressionstest).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-027",
@@ -1554,7 +1648,8 @@
"tracelinks": "SwRS-026",
"konsolidierung": "nein",
"pruefidee": "Lieferantenkonfiguration mit zwei unterschiedlichen `EdiDataType`/`ObjectKind`-Kombinationen anlegen und getrennte, korrekte Verarbeitung beider Dokumentarten prüfen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-028",
@@ -1570,7 +1665,8 @@
"tracelinks": "SyRS-022",
"konsolidierung": "nein",
"pruefidee": "Testdatei erzeugen, die 4-mal hintereinander eine Exception auslöst; Datei darf beim 5. Downloadzyklus nicht mehr verarbeitet werden, bleibt aber im Log sichtbar.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-029",
@@ -1586,7 +1682,8 @@
"tracelinks": "StRS-015, SyRS-023, SyRS-024",
"konsolidierung": "nein",
"pruefidee": "Rechnung mit Skonto-Zahlungsbedingung erzeugen; generierte XML muss BR-DE-18-konforme Skonto-Beschreibung inkl. korrekter Zeilenumbrüche (`&#xD;`) enthalten.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-030",
@@ -1602,7 +1699,8 @@
"tracelinks": "StRS-015",
"konsolidierung": "Kandidat: ZUGFeRD- (SwRS-029) und ebInterface-Export (SwRS-030) bilden zwei unabhängige Implementierungen für die fachlich verwandte Aufgabe \"elektronische Rechnung erzeugen\" – im Zielsystem auf eine gemeinsame E-Invoicing-Abstraktion mit länderspezifischen Profilen konsolidierbar.",
"pruefidee": "Rechnung exportieren und resultierende XML gegen das ebInterface-4.3-XSD-Schema validieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-031",
@@ -1618,7 +1716,8 @@
"tracelinks": "StRS-021, SyRS-027",
"konsolidierung": "nein",
"pruefidee": "Einzelnen Termin in Outlook ändern und Netzwerkverkehr/Log des nächsten Sync-Zyklus prüfen: nur der geänderte Termin darf übertragen werden, nicht der gesamte Kalender.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-032",
@@ -1634,7 +1733,8 @@
"tracelinks": "StRS-021, SwRS-031",
"konsolidierung": "nein",
"pruefidee": "Helpdesk-Zeittermin in c-entron anlegen, Sync abwarten, Termin in Outlook manuell auf anderes Datum ändern, erneut synchronisieren → c-entron-Datensatz muss unverändert bleiben (siehe StRS-021 Prüfidee).",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-033",
@@ -1650,7 +1750,8 @@
"tracelinks": "SyRS-025",
"konsolidierung": "nein",
"pruefidee": "Fehlende `AccountI3D`-Zuordnung in einem Todo-Eintrag künstlich erzeugen; nach einem Ausführungszyklus muss `ToDoBL.DataQualityFillAccountI3D()` den Wert korrigiert haben.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-034",
@@ -1666,7 +1767,8 @@
"tracelinks": "StRS-016, StRS-017, SyRS-011, SwRS-021",
"konsolidierung": "nein",
"pruefidee": "Modul mit Recht X und Lizenz Y konfigurieren; Benutzer mit Recht, aber ohne Lizenz → Modul nicht sichtbar; Benutzer mit Lizenz, aber ohne Recht → Modul nicht sichtbar.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-035",
@@ -1682,7 +1784,8 @@
"tracelinks": "SyRS-028",
"konsolidierung": "nein",
"pruefidee": "In DEBUG-Konfiguration Mailversand an fiktive externe Adresse `kunde@fremdefirma.de` auslösen; tatsächlicher SMTP-Empfänger muss `test@nexoware.com` sein.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-036",
@@ -1698,7 +1801,8 @@
"tracelinks": "SyRS-004",
"konsolidierung": "nein",
"pruefidee": "Neue Testmethode mit `[WebInvoke(UriTemplate=\"TestPing\")]` hinzufügen, Neustart des Hosts, Aufruf von `/REST/TestPing` ohne weitere Codeänderung muss funktionieren.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-037",
@@ -1714,7 +1818,8 @@
"tracelinks": "SyRS-002",
"konsolidierung": "nein",
"pruefidee": "Endpunkt mit provozierter NullReferenceException aufrufen (Produktionsmodus) → Antwort darf keinen Stacktrace enthalten, Fehler muss im Log erscheinen.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-038",
@@ -1730,6 +1835,7 @@
"tracelinks": "SyRS-016",
"konsolidierung": "Kandidat: Doppelte Soft-Delete-Modellierung – generisches `DBEntity.State` (StateEnum, ältere Entitäten) versus das in `docs/guides/database/database-conventions.md` beschriebene, neuere `IsDeleted`/`DeletedByI3D`/`DeletedDate`-Spaltenmuster (neue Tabellen). Im Zielsystem auf ein einheitliches Muster konsolidierbar.",
"pruefidee": "Entität löschen (Soft Delete), per SQL prüfen, dass der Datensatz weiterhin existiert mit `State=1`; reguläre fachliche Abfrage darf den Datensatz nicht mehr zurückliefern.",
"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) | 1,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 89 (84,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]` | **verletzt** – 1 von 43 ungedeckt: SyRS-035 |
| **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 | 97 von 106 mit Tracelinks (91,5 %) |
@@ -94,6 +94,8 @@ in allen Vorläufen klafften sie deutlich auseinander.
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 |
@@ -126,6 +128,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 54 (98,2 %) |
### Ü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 |
@@ -143,6 +149,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** (37 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 | 55 von 55 mit Tracelinks (100,0 %) |
## Vergleich aller Läufe (identischer Prompt)
@@ -14,7 +14,8 @@
"tracelinks": "SyRS-1, SyRS-4, SwRS-1, SwRS-2",
"konsolidierung": "nein",
"pruefidee": "Einem Benutzer wird ein Recht ausschließlich über Gruppenmitgliedschaft zugewiesen; Entfernen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-2",
@@ -30,7 +31,8 @@
"tracelinks": "SyRS-1, SwRS-3",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit MANAGE_RIGHTS_ONLY_OWN_BRANCH versucht Gruppe einer fremden Filiale zu löschen;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-3",
@@ -46,7 +48,8 @@
"tracelinks": "SyRS-4, SwRS-3",
"konsolidierung": "nein",
"pruefidee": "Nach AddRightToRightGroup existiert ein neuer AppRightLog-Eintrag mit Kind=AddRightToGroup.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-4",
@@ -62,7 +65,8 @@
"tracelinks": "SyRS-2, SwRS-6",
"konsolidierung": "nein",
"pruefidee": "Kunde ohne Lizenz für Modul X: LicenseManager.HasLicense(X) liefert false, UI blendet Modul X aus.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-5",
@@ -79,7 +83,8 @@
"tracelinks": "SyRS-7, SyRS-8, SwRS-8",
"konsolidierung": "nein",
"pruefidee": "Für jeden der sieben Belegtypen existiert eine Entity-Klasse, die von ReceiptBase erbt und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-6",
@@ -96,7 +101,8 @@
"tracelinks": "SyRS-10, SwRS-11, SwRS-12",
"konsolidierung": "nein",
"pruefidee": "Beleg wird zweimal gespeichert (Version 1 → 2); GetReceiptVersionByI3D(..., version:1) liefert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-7",
@@ -112,7 +118,8 @@
"tracelinks": "SyRS-8, SwRS-9",
"konsolidierung": "nein",
"pruefidee": "Benutzer A lädt Beleg (Guid=X), Benutzer B speichert denselben Beleg zuerst (Guid ändert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-8",
@@ -128,7 +135,8 @@
"tracelinks": "SyRS-9, SyRS-11, SwRS-8, SwRS-10",
"konsolidierung": "nein",
"pruefidee": "Setzen von isPaid=true auf einem aktiven Beleg ändert dessen State auf Completed; erneutes",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-9",
@@ -145,7 +153,8 @@
"tracelinks": "SyRS-12, SyRS-13, SwRS-13, SwRS-14",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit CalculationKind=Auto, State=aktiv, fälligem Intervall und mind. einer abrechenbaren",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-10",
@@ -161,7 +170,8 @@
"tracelinks": "SyRS-12, SwRS-13",
"konsolidierung": "nein",
"pruefidee": "Zwei sonst identische Verträge mit CalculationKind=Auto bzw. =Need: nur der Auto-Vertrag wird",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-11",
@@ -177,7 +187,8 @@
"tracelinks": "SyRS-14, SwRS-15",
"konsolidierung": "nein",
"pruefidee": "Rechnung mit DunningLevel=Level1 und Restbetrag > 0 erscheint in",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-12",
@@ -193,7 +204,8 @@
"tracelinks": "SyRS-15, SwRS-16",
"konsolidierung": "nein",
"pruefidee": "Belegposition mit Belegdatum vor einer historischen Steuersatzänderung liefert den alten",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-13",
@@ -209,7 +221,8 @@
"tracelinks": "SyRS-16, SwRS-17",
"konsolidierung": "nein",
"pruefidee": "Ein Account-Datensatz mit gesetzter CustomerNumber UND SupplierNumber lässt sich anlegen und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-14",
@@ -226,7 +239,8 @@
"tracelinks": "SyRS-17, SwRS-18",
"konsolidierung": "Kandidat: StRS-1 (gleiches zugrundeliegendes Rechtesystem, hier auf ein einzelnes Feld",
"pruefidee": "Benutzer ohne CAN_CHANGE_DATE-Recht öffnet Timer-Billing-Einstellungen: Datumsfeld ist",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-15",
@@ -242,7 +256,8 @@
"tracelinks": "SyRS-18, SwRS-19",
"konsolidierung": "nein",
"pruefidee": "Anlegen eines neuen HelpdeskState-Datensatzes mit IsInternalCompanyBillingActive=false; Tickets",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "StRS-16",
@@ -258,7 +273,8 @@
"tracelinks": "SyRS-19, SwRS-20",
"konsolidierung": "nein",
"pruefidee": "`docker compose up` im Verzeichnis docker/compose startet alle vier Dienste; der Webservice",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-1",
@@ -275,7 +291,8 @@
"tracelinks": "StRS-1, SwRS-1, SwRS-2",
"konsolidierung": "nein",
"pruefidee": "Direkter (simulierter) Aufruf einer BL-Methode ohne vorherige UI-Prüfung mit einem Benutzer",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-2",
@@ -291,7 +308,8 @@
"tracelinks": "StRS-1, SwRS-1",
"konsolidierung": "nein",
"pruefidee": "Web-Account mit Recht X, aber ohne entsprechendes internes Sichtrus-Recht, wird bei HasWebAccountRight(X)",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-3",
@@ -307,7 +325,8 @@
"tracelinks": "StRS-2, SwRS-3",
"konsolidierung": "nein",
"pruefidee": "Löschversuch der Gruppe I3D=6 liefert Result.Error \"Die Adminstratoren Gruppe darf nicht",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-4",
@@ -323,7 +342,8 @@
"tracelinks": "StRS-3, SwRS-3",
"konsolidierung": "nein",
"pruefidee": "Für jede der acht Schreibmethoden existiert im Code ein zugehöriger, unbedingter WriteXxxLog-Aufruf",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-5",
@@ -339,7 +359,8 @@
"tracelinks": "StRS-4, SwRS-6",
"konsolidierung": "nein",
"pruefidee": "Login mit abgelaufener Lizenzversion liefert Result.Error; Login, der die maximale",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-6",
@@ -356,7 +377,8 @@
"tracelinks": "StRS-4, SwRS-6",
"konsolidierung": "nein",
"pruefidee": "Webservice-Start ohne gültige Centron-Lizenz: Startvorgang bricht ab, bevor Migrationsskripte",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-7",
@@ -372,7 +394,8 @@
"tracelinks": "StRS-5, StRS-7, SwRS-9",
"konsolidierung": "nein",
"pruefidee": "Benutzer ohne Bearbeitungsrecht für Rechnungen versucht, eine Rechnung zu speichern; Result",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-8",
@@ -388,7 +411,8 @@
"tracelinks": "StRS-7, SwRS-9",
"konsolidierung": "Kandidat: SyRS-9 (verwandter Zustands-Schutzmechanismus)",
"pruefidee": "Zwei parallele Ladevorgänge desselben Belegs, sequentielle Speicherversuche: der zweite",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-9",
@@ -404,7 +428,8 @@
"tracelinks": "StRS-5, SwRS-8, SwRS-10",
"konsolidierung": "nein",
"pruefidee": "UpdateReceiptIsPaid auf einem Beleg mit State=Canceled liefert Result.Error unabhängig vom",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-10",
@@ -420,7 +445,8 @@
"tracelinks": "StRS-6, SwRS-11, SwRS-12",
"konsolidierung": "nein",
"pruefidee": "Für jeden der sieben Belegtypen: Speichern einer Änderung erzeugt einen neuen Versionsdatensatz",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-11",
@@ -436,7 +462,8 @@
"tracelinks": "StRS-8",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit ausschließlich INCOMING_PAYMENT_TRANSACTIONS (kein allgemeines Bearbeitungsrecht):",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-12",
@@ -452,7 +479,8 @@
"tracelinks": "StRS-9, SwRS-13, SwRS-14",
"konsolidierung": "nein",
"pruefidee": "Aktiver Vertrag ohne Vertragspositionen wird trotz fälligem Intervall NICHT in die finale",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-13",
@@ -468,7 +496,8 @@
"tracelinks": "StRS-9, StRS-10",
"konsolidierung": "nein",
"pruefidee": "Dynamischer Bedarfsvertrag ohne Sonderartikel-Stichtag im Abrechnungszeitraum wird aus der",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-14",
@@ -484,7 +513,8 @@
"tracelinks": "StRS-11, SwRS-15",
"konsolidierung": "nein",
"pruefidee": "Setzen einer Mahnsperre mit dunningStopEnd in der Zukunft: das Objekt wird im nächsten",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-15",
@@ -500,7 +530,8 @@
"tracelinks": "StRS-12, SwRS-16",
"konsolidierung": "nein",
"pruefidee": "Kette mit Steuersatz A (gültig bis 30.06.), Nachfolger B (ab 01.07.): receiptDate=15.06.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-16",
@@ -517,7 +548,8 @@
"tracelinks": "StRS-13, SwRS-17",
"konsolidierung": "Kandidat: SyRS-1 (gleiches zugrundeliegendes Rechteprüfungsmuster CheckRightsFromUser,",
"pruefidee": "Benutzer mit ausschließlich EDIT_CUSTOMER: Bearbeiten eines bestehenden Kunden gelingt,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-17",
@@ -533,7 +565,8 @@
"tracelinks": "StRS-14, SwRS-18",
"konsolidierung": "nein",
"pruefidee": "Benutzer mit DeliveryList.CAN_CHANGE_DATE, aber ohne Invoice.CAN_CHANGE_DATE:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-18",
@@ -549,7 +582,8 @@
"tracelinks": "StRS-15, SwRS-19",
"konsolidierung": "Kandidat: SwRS-8 (gegensätzliches Muster: Belegstatus fest vs. Ticketstatus konfigurierbar –",
"pruefidee": "Ein neuer HelpdeskState-Datensatz ist über die Rechteverwaltungs-/Admin-UI anlegbar und",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SyRS-19",
@@ -566,7 +600,8 @@
"tracelinks": "StRS-16, SwRS-20",
"konsolidierung": "nein",
"pruefidee": "Webservice-Container basierend auf einem Linux-Basisimage startet erfolgreich und beantwortet",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-1",
@@ -582,7 +617,8 @@
"tracelinks": "SyRS-1",
"konsolidierung": "Kandidat: SwRS-2 (ähnlicher Cache-Mechanismus für Web-Account-Rechte, HasWebAccountRight)",
"pruefidee": "Zwei aufeinanderfolgende HasUserRight-Aufrufe für denselben Benutzer in derselben Session:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-2",
@@ -599,7 +635,8 @@
"tracelinks": "SyRS-1",
"konsolidierung": "Kandidat: SwRS-1",
"pruefidee": "Aufruf mit 5 Recht-IDs, von denen der Benutzer 3 besitzt, liefert eine Liste mit genau",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-3",
@@ -615,7 +652,8 @@
"tracelinks": "SyRS-3, SyRS-4",
"konsolidierung": "nein",
"pruefidee": "Zuweisungsversuch eines Rechts mit I3D, das nicht in der Liste enthalten ist, an die",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-4",
@@ -632,7 +670,8 @@
"tracelinks": "SyRS-1",
"konsolidierung": "nein",
"pruefidee": "Ausführen eines Migrationsskripts mit AddRightIfNotExists erzeugt einen neuen Sichrech-Datensatz",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-5",
@@ -648,7 +687,8 @@
"tracelinks": "(kein direkter StRS/SyRS-Bezug – reine Entwicklungssicherheitsmaßnahme, kein Fachprozess)",
"konsolidierung": "nein",
"pruefidee": "Debug-Build, Versand an \"kunde@fremdefirma.de\": tatsächlicher SMTP-Empfänger ist",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-6",
@@ -664,7 +704,8 @@
"tracelinks": "SyRS-5, SyRS-6",
"konsolidierung": "nein",
"pruefidee": "Zweiter Aufruf von Initialize() in derselben Prozessinstanz löst eine Exception aus;",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-7",
@@ -680,7 +721,8 @@
"tracelinks": "SyRS-5",
"konsolidierung": "nein",
"pruefidee": "Login mit Version \"9.3.40.2\" und Centron-Lizenz-GUID wird nicht wegen Versionsüberschreitung",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-8",
@@ -696,7 +738,8 @@
"tracelinks": "StRS-5, SyRS-9",
"konsolidierung": "nein",
"pruefidee": "Kompilierzeitprüfung/Reflection: ReceiptState besitzt genau die drei genannten Werte.",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-9",
@@ -712,7 +755,8 @@
"tracelinks": "SyRS-7, StRS-7",
"konsolidierung": "nein",
"pruefidee": "Für zwei verschiedene Belegtypen mit unterschiedlichen HasRightToEditReceipt-Implementierungen",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-10",
@@ -728,7 +772,8 @@
"tracelinks": "StRS-8, SyRS-9",
"konsolidierung": "nein",
"pruefidee": "isPaid=true auf einem Active-Beleg: State wird Completed; isPaid=false auf einem",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-11",
@@ -744,7 +789,8 @@
"tracelinks": "StRS-6, SyRS-10",
"konsolidierung": "nein",
"pruefidee": "Versuch, aus einer historischen Version mit aktiven Barcodes eine neue Version zu erzeugen,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-12",
@@ -761,7 +807,8 @@
"tracelinks": "StRS-6, SyRS-10",
"konsolidierung": "nein",
"pruefidee": "Neues Feld wird nur der modernen Entity/Mapping hinzugefügt, nicht dem Repository: Wert wird",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-13",
@@ -777,7 +824,8 @@
"tracelinks": "SyRS-12, StRS-10",
"konsolidierung": "nein",
"pruefidee": "Vertrag mit LastPaidDate >= ContractEnd und CalculationKind=Auto wird NICHT selektiert",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-14",
@@ -793,7 +841,8 @@
"tracelinks": "SyRS-12",
"konsolidierung": "nein",
"pruefidee": "Abrechnungslauf mit > 2000 abrechnungsfähigen Verträgen schlägt nicht mit einem",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-15",
@@ -809,7 +858,8 @@
"tracelinks": "StRS-11, SyRS-14",
"konsolidierung": "nein",
"pruefidee": "Rechnung mit GrossPriceComplete=1000, PayedGrossAmount=300, CreditVoucherGrossAmount=100:",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-16",
@@ -825,7 +875,8 @@
"tracelinks": "StRS-12, SyRS-15",
"konsolidierung": "nein",
"pruefidee": "Aufruf mit einer nicht existierenden taxRateI3D liefert nicht null, sondern den",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-17",
@@ -841,7 +892,8 @@
"tracelinks": "StRS-13, SyRS-16",
"konsolidierung": "nein",
"pruefidee": "Mit aktivierter Einstellung: neu angelegter Kunde mit Nummer 4711 erhält BookKeepingNumber",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-18",
@@ -857,7 +909,8 @@
"tracelinks": "StRS-14, SyRS-17",
"konsolidierung": "nein",
"pruefidee": "ReceiptKind=InvoiceClass, CanChangeDateInInvoices=false: BillingDateIsEnabled=false,",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-19",
@@ -873,7 +926,8 @@
"tracelinks": "StRS-15, SyRS-18",
"konsolidierung": "nein",
"pruefidee": "Zwei HelpdeskState-Datensätze mit unterschiedlichem ServiceBoardWebColor erscheinen im",
"qm": ""
"qm": "",
"uebernahme": ""
},
{
"id": "SwRS-20",
@@ -889,6 +943,7 @@
"tracelinks": "StRS-16, SyRS-19",
"konsolidierung": "nein",
"pruefidee": "Manuelles Beenden des webservice-Containers: Compose startet ihn automatisch neu, ohne dass",
"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 |
@@ -34,6 +36,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 54 (98,2 %) |
### Ü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 |
@@ -51,5 +57,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** (37 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 | 55 von 55 mit Tracelinks (100,0 %) |
@@ -102,6 +102,8 @@ Faktor 21,6 die größte aller Läufe – nahezu die gesamte Arbeit fand in den
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 |
@@ -138,6 +140,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 311 (95,7 %) |
### Ü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 |
@@ -155,6 +161,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** (100 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 | 325 von 325 mit Tracelinks (100,0 %) |
## Vergleich aller Läufe (identischer Prompt, SHA-256 unverändert)
@@ -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) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 311 (95,7 %) |
### Ü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** (100 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 | 325 von 325 mit Tracelinks (100,0 %) |
@@ -93,6 +93,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 |
@@ -129,6 +131,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 175 (92,6 %) |
### Ü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 |
@@ -146,6 +152,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** (62 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 | 189 von 189 mit Tracelinks (100,0 %) |
## Vergleich aller Läufe (identischer Prompt, SHA-256 unverändert)
@@ -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) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 175 (92,6 %) |
### Ü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** (62 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 | 189 von 189 mit Tracelinks (100,0 %) |
@@ -97,6 +97,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 |
@@ -127,6 +129,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 2,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 234 (95,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 |
@@ -144,6 +150,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]` | **verletzt** – 1 von 85 ungedeckt: SyRS-SYS-02 |
| **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 | 246 von 246 mit Tracelinks (100,0 %) |
## V1b-Block F–J, 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 |
@@ -32,6 +34,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 2,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 234 (95,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 |
@@ -49,5 +55,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]` | **verletzt** – 1 von 85 ungedeckt: SyRS-SYS-02 |
| **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 | 246 von 246 mit Tracelinks (100,0 %) |
@@ -97,6 +97,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 |
@@ -127,6 +129,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 215 (90,3 %) |
### Ü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 |
@@ -144,6 +150,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** (112 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 | 238 von 238 mit Tracelinks (100,0 %) |
## V1b-Block F–J, 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 |
@@ -32,6 +34,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1,0 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 215 (90,3 %) |
### Ü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 |
@@ -49,5 +55,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** (112 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 | 238 von 238 mit Tracelinks (100,0 %) |
@@ -97,6 +97,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 |
@@ -133,6 +135,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 2 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 109 (96,5 %) |
### Ü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 |
@@ -150,6 +156,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** (43 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 | 110 von 113 mit Tracelinks (97,3 %) |
## V1b-Block F–J, 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) | 2 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 109 (96,5 %) |
### Ü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** (43 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 | 110 von 113 mit Tracelinks (97,3 %) |
@@ -97,6 +97,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 |
@@ -133,6 +135,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 2 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 145 (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 |
@@ -150,6 +156,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** (73 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 | 145 von 145 mit Tracelinks (100,0 %) |
## V1b-Block F–J, 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) | 2 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 145 (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** (73 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 | 145 von 145 mit Tracelinks (100,0 %) |
@@ -97,6 +97,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 |
@@ -127,6 +129,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 238 (99,6 %) |
### Ü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 |
@@ -144,6 +150,7 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **verletzt** – 1 ohne Beleg: SwRS-012 |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (84 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 | 239 von 239 mit Tracelinks (100,0 %) |
## V1b-Block F–J, 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 |
@@ -32,6 +34,10 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| Belege je Anforderung (Median) | 1 |
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 238 (99,6 %) |
### Ü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 |
@@ -49,5 +55,6 @@ Maschinell aus `Ergebnisse\StRS.md`, `SyRS.md` und `SwRS.md` ausgewertet (Blockf
| **Belegpflicht** – jede Anforderung mindestens ein Artefaktbeleg | **verletzt** – 1 ohne Beleg: SwRS-012 |
| **Risikobasierte Priorisierung** – Sicherheit, Abrechnung, Berechtigungen brauchen einen `PRIMÄR`-Beleg oder die Kennzeichnung `[HYPOTHESE]` | **erfüllt** (84 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 | 239 von 239 mit Tracelinks (100,0 %) |