Iteration 3: Modell- und Modusraster erweitert, Skill 7.0.0, V2/V3 vorbereitet
Neue gueltige Zellen in Iteration 3 - claude-opus-5/solo/high: 363 Anforderungen, 99,7 % mit Primaerbeleg, Belege je Anforderung Median 2,0, 38,1 Mio. Tokens - claude-fable-5/solo/high: 241 Anforderungen, 98,3 % mit Primaerbeleg, 89,0 % PRIMAER-Anteil, vollstaendig regelkonform, 30,6 Mio. Tokens Damit sind 6 von 12 Zellen des Rasters belegt. Zwei Befunde daraus: Die Belegdichte folgt dem Modell, nicht dem Effort. Opus erreicht Median 2,0 auch auf high; alle 44 Sonnet-Laeufe lagen bei 1,0. max hebt Opus auf 3,0. Die frueher dem Effort zugeschriebene Verdopplung ist damit eingegrenzt. Die Fable-Modellverletzung ist reproduziert und abgegrenzt. Bei builtin laufen die Subagenten auf claude-opus-5[1m] statt Fable (zweiter Fall nach Iteration 1), bei solo dagegen sauber. Nicht das Modell ist die Ursache, sondern Fable in Kombination mit Delegation. Fehlmessungen, vollstaendig protokolliert - vier 429-Abbrueche (Session-Kontingent) aus dem Parallelblock 19:59; drei davon mit Teilbestand, einer ohne Ergebnis - opus-5/builtin/high zum dritten Mal gescheitert: 790,7 Mio. Tokens ueber drei Anlaeufe ohne Artefakt. Zelle mit dieser Prompt-Version nicht messbar. Skill 7.0.0 (MAJOR) - Isolationsmechanismus modusabhaengig: --safe-mode schaltet MCP-Server und Custom-Agenten ab und ist mit V2/V3 unvereinbar. Smoke-Test verifiziert: mit Flag spawned=0, ohne Flag spawned=2. Ersatz fuer custom/MCP: --strict-mcp-config plus --disallowedTools Skill WebSearch WebFetch SlashCommand. - 6.1.0: Pflichtpruefung leeres Ergebnisverzeichnis = Fehlmessung unabhaengig von is_error; CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0; Protokollfeld Gueltigkeit - extract-subagenten.py: Start-Quittung wird nicht mehr als Ertragsmass ausgewiesen Versuch 2 und 3 vorbereitet - Prompt-Kette V1 -> V2 (02-A, angepasst an Agentendateien) -> V3 (02-B, MCP) - V2: acht Rollen inkl. nicht delegierendem ISO-29148-Orchestrator - V3: elf Rollen, fuenf Werkzeugserver, neue Belegklasse LAUFZEIT Ablaufprotokoll um Phase 6 und 7 sowie die Vorbereitung von V2/V3 ergaenzt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
affde3a45f
commit
3d5b691bfa
+203
-4
@@ -30,7 +30,7 @@ gleichen Bedingungen streuen.
|
||||
|
||||
---
|
||||
|
||||
## 2. Chronologie in sechs Phasen
|
||||
## 2. Chronologie in sieben Phasen
|
||||
|
||||
### Phase 1 – Erster Lauf und die Entdeckung der Werkzeugkonfiguration (12:29–13:00)
|
||||
|
||||
@@ -287,6 +287,192 @@ und Iteration 3 entstanden am selben Tag. Weil „Iteration" mit der Fassung der
|
||||
kollidierte, heißt diese seither **Prompt-Version**. Die Prompt-Dateien selbst blieben unverändert:
|
||||
Ihre SHA-256 sind in 33 Protokollen dokumentiert.
|
||||
|
||||
### Phase 7 – Delegation, Effort und zwei Totalausfälle (26.08., ab 12:50)
|
||||
|
||||
Nach den zehn `solo`-Läufen folgten drei Zellen, die die verbliebenen Stellschrauben trennen
|
||||
sollten: `builtin` mit Sonnet, `max`-Effort mit Opus, und `builtin` mit Opus.
|
||||
|
||||
**Der Effort ist die wirksamste Einzelvariable der gesamten Reihe.** Über alle 44 Läufe auf
|
||||
`high` lag der Median konstant bei **einem** Beleg je Anforderung – genau der Befund, wegen dem
|
||||
Prompt-Version 02 geschrieben wurde und der sich unter Version 02 auf `high` sogar verschärft
|
||||
hatte. Die drei `max`-Läufe liegen bei 2,0 / 2,0 / 3,0:
|
||||
|
||||
| Lauf | Anf. | Belege/Anf. | mit Primärbeleg | Risiko offen | Tokens |
|
||||
|---|---:|---:|---:|---:|---:|
|
||||
| `a8f5` | 380 | 2,0 | 95,5 % | 0 von 112 | 67,5 Mio. |
|
||||
| `37c5` | 434 | 2,0 | **100 %** | 0 von 100+ | 77,3 Mio. |
|
||||
| `fcdf` | 446 | **3,0** | 98,2 % | 0 von 139 | 116,2 Mio. |
|
||||
|
||||
Alle drei erfüllen sämtliche fünf Regelkriterien. **Damit kippt auch die Anti-Korrelation:** Über
|
||||
die zehn `solo`/`high`-Läufe liefen Anforderungszahl und Belegqualität gegeneinander
|
||||
(Pearson −0,63, Spearman −0,70); auf `max` treten beide zusammen auf. Der Zielkonflikt war kein
|
||||
Gesetz, sondern Folge zu knappen Aufwands. Das beantwortet zugleich die in Abschnitt 8 offene
|
||||
Frage nach dem Fable-Block teilweise: Der Verbrauchssprung dort kam **nicht** allein vom Modell.
|
||||
|
||||
**`max` zeigt sich nicht in Thinking-Tokens.** `a8f5` liegt mit 51.019 im Bereich der
|
||||
`high`-Läufe (33.051–55.760). Der Mehraufwand steckt in Turns und Laufzeit: 210 bis 371 Turns,
|
||||
1:34 bis 2:33 Stunden. Die Vermutung aus Iteration 1, `max` sei an den Thinking-Token-Werten
|
||||
erkennbar, trägt nicht.
|
||||
|
||||
**Bei `builtin` entscheidet die Beauftragung der Subagenten, nicht deren Anzahl.** Drei Läufe,
|
||||
gleicher Prompt, gleiches Modell:
|
||||
|
||||
| Lauf | Subagenten | Auftragsart | Anf. | mit Primärbeleg |
|
||||
|---|---:|---|---:|---:|
|
||||
| `4048` | 6 | „concrete, citable **FACTS only** … find the **EXACT enforcing location**" | 185 | **97,8 %** |
|
||||
| `fb24` | 31 (2 Ebenen) | „Research … M01–M20" mit Faktenpflicht | 383 | **96,9 %** |
|
||||
| `f8b4` | 8 | „**quickly inspect** … open **1-3 representative files**" | 276 | **46,4 %** |
|
||||
|
||||
Aus einer Stichprobe von ein bis drei Dateien lässt sich kein Primärbeleg gewinnen – die
|
||||
durchsetzende Stelle liegt fast nie in der Datei, die repräsentativ aussieht. Damit hat
|
||||
Befund 6.3 erstmals eine **inhaltliche** Erklärung statt nur einer Zahl. Genau dafür wurde die
|
||||
Erfassung der Subagenten-Prompts in Skill 3.3.0 eingeführt.
|
||||
|
||||
Nebenbefund: `fb24` verlagerte 63,5 % seines Verbrauchs auf die Subagenten, `4048` sogar 78,4 %,
|
||||
bei nur 26 Turns im Hauptagenten. Delegation verschiebt den Verbrauch, ohne ihn zwangsläufig zu
|
||||
erhöhen – anders als in Iteration 1, wo `builtin` deutlich über `solo` lag.
|
||||
|
||||
**Zwei Totalausfälle in der Zelle Opus + `builtin`.** Beide Läufe scheiterten, auf verschiedene
|
||||
Weise, und verbrauchten zusammen **586 Mio. Tokens ohne verwertbares Ergebnis**:
|
||||
|
||||
- `116d` – **stiller Fehlschlag.** `is_error: false`, `subtype: success`,
|
||||
`terminal_reason: completed` – und **null Ergebnisdateien**. Der Hauptagent hatte zehn
|
||||
Subagenten im Hintergrund gestartet und seinen Turn beendet; der Headless-Modus wartete 600 s
|
||||
und brach ab. Der einzige Hinweis stand in `Stderr.log`. Verbraucht: 193,4 Mio. Tokens.
|
||||
- `9d9e` – **API-Abbruch**, HTTP 429, „You've hit your session limit". 34 Subagenten, davon 24
|
||||
von Subagenten gestartet, 22 weitere am Nebenläufigkeitslimit abgewiesen. Verbraucht:
|
||||
392,9 Mio. Tokens, eine Ergebnisdatei von sieben.
|
||||
|
||||
Der stille Fehlschlag ist der methodisch wichtigere: **`is_error` erkennt ihn nicht.** Ohne den
|
||||
Blick ins Ergebnisverzeichnis wäre der Lauf als gültiger Messpunkt mit „0 Anforderungen" in den
|
||||
Modellvergleich eingegangen.
|
||||
|
||||
**Die Modellbedingung ist bei Delegation nicht über `--model` herstellbar.** `9d9e` weist neben
|
||||
`claude-opus-5` auch `claude-sonnet-5` mit 18,5 Mio. Tokens (4,72 %) aus – der zweite
|
||||
dokumentierte Fall nach Fable in Iteration 1. Beide betreffen ausschließlich den Modus `builtin`.
|
||||
Für saubere Modellvergleiche ist `solo` zu verwenden oder die Modellbindung der Subagenten
|
||||
gesondert zu belegen. Das betrifft Versuch 2 und 3 unmittelbar, die beide auf Delegation setzen.
|
||||
|
||||
**Vier weitere Messinstrument-Defekte gefunden und behoben:**
|
||||
|
||||
- *Abgewiesene Subagenten wurden als Subagenten gezählt* (Skill 4.5.0 / heute 6.1.0-Zweig).
|
||||
`fb24` meldete 21 gefundene gegenüber 13 erwarteten Aufrufen; die Differenz waren 8 Absagen am
|
||||
Nebenläufigkeitslimit, die im Transkript wie Starts aussehen. Nach der Trennung stimmen alle
|
||||
drei Läufe exakt. Die Zahl der Absagen ist selbst eine Messgröße für die *beabsichtigte*
|
||||
Parallelität.
|
||||
- *Die Rückgabe eines Hintergrund-Subagenten ist eine Start-Quittung*, keine Befunde. Die
|
||||
einheitlichen 1.093 Zeichen, die als „Ergebnis" protokolliert wurden, sind der Text „Async
|
||||
agent launched successfully …". Als Ertragsmaß war das wertlos.
|
||||
- *Subagenten-Transkripte* werden unter `<temp>\<session>\tasks\<agentId>.output` angelegt,
|
||||
bleiben aber **leer** – geprüft an 33 Dateien aus zwei Läufen. Die bisherige Aussage, sie seien
|
||||
nicht auswertbar persistiert, gilt damit unverändert.
|
||||
- *Gültigkeitsprüfung ergänzt:* leeres Ergebnisverzeichnis oder Abbruchmeldung in `Stderr.log`
|
||||
bedeutet Fehlmessung, unabhängig von `is_error`. Vorbeugend setzt der Ausführungsabschnitt
|
||||
jetzt `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0`.
|
||||
|
||||
**Ein Befund zur Belegquelle, den ein Agent selbst entdeckte.** `116d` hielt im Abschlusstext
|
||||
fest, die Codebasis enthalte „keine `.git`-Historie und keine SQL-Migrationsskripte". Das trifft
|
||||
zu und gilt für **alle** Läufe der Reihe: Seit die Codebasis als Dateien ins Arbeitsrepo
|
||||
übernommen wurde, ist die Entwicklungshistorie der ERP-Suite nicht mehr erreichbar. Der Prompt
|
||||
fordert Commit-Messages, Tickets und Release Notes in Schritt 2 ausdrücklich als Artefaktquelle –
|
||||
diese Quelle steht der gesamten Versuchsreihe nicht zur Verfügung.
|
||||
|
||||
### Vorbereitung von Versuch 2 und 3
|
||||
|
||||
Beide Versuchsverzeichnisse wurden angelegt und nach den Vorgaben aus @tab_versuchskonfiguration
|
||||
konfiguriert. Die Prompt-Kette folgt der dort festgelegten Ableitung **V1 → V2 → V3**.
|
||||
|
||||
| Artefakt | SHA-256 | Ableitung |
|
||||
|---|---|---|
|
||||
| `Versuch_02/01_Prompt.md` | `DCDC0E3F…B71BCF` | Prompt-Version 02-A: aus V1, angepasst an Agentendateien |
|
||||
| `Versuch_02/01_Agents.json` | `6943EECD…AF1696` | acht Rollen |
|
||||
| `Versuch_03/01_Prompt.md` | `E65A696C…6A06E1` | Prompt-Version 02-B: aus V2, angepasst an MCP-Server |
|
||||
| `Versuch_03/01_Agents.json` | `EDCB8001…C49B55` | elf Rollen |
|
||||
| `Versuch_03/01_MCP.json` | `F08840F7…5EE2DB` | fünf Werkzeugserver |
|
||||
|
||||
**Die Anpassung „an Agentendateien" ist ein einziger neuer Abschnitt: Arbeitsteilung.** Er nennt
|
||||
keine Rolle und schreibt keinen Zuschnitt vor. Er schließt die Lücken, die entstehen, wenn nicht
|
||||
mehr ein Bearbeiter die ganze Kette durchläuft: Prompt-Version 02 ordnet Schritte zeitlich,
|
||||
vergibt fortlaufende IDs und verlangt am Ende einen Konsistenzcheck – bei verteilter Bearbeitung
|
||||
ist nichts davon von selbst erfüllt. Die vier Kernsätze: ID-Bereiche vorab und
|
||||
überschneidungsfrei; die Ebene ergibt sich aus dem Inhalt, nicht aus dem Bearbeiter; die
|
||||
Mindestabdeckung gilt für das **gemeinsame** Inventar, nicht je Ausschnitt; der Konsistenzcheck
|
||||
gilt dem zusammengeführten Ergebnis. Der Abschnitt ist bei einem einzelnen Bearbeiter
|
||||
wirkungslos, sodass der Prompt auch für einen `solo`-Lauf gültig bleibt.
|
||||
|
||||
**Die Rollen sind aus den Messungen abgeleitet.** Drei getrennte Autoren je Ebene gegen die
|
||||
Verteilungsstreuung (92,7 % StRS bis 89,4 % SwRS bei identischem Prompt); ein `faktenermittler`
|
||||
nach dem Muster des erfolgreichsten `builtin`-Laufs samt Stichprobenverbot; ein neuer
|
||||
`belegpruefer`, der zitierte Primärbelege öffnet und prüft, ob die Einstufung trägt; ein
|
||||
`konsistenzpruefer`, der seinen Risikobegriff offenlegen muss, weil ein Lauf „alle 36 gedeckt"
|
||||
meldete, während die maschinelle Prüfung 51 risikorelevante Anforderungen fand.
|
||||
|
||||
**Der ISO-29148-Orchestrator ist als konsolidierende, nicht delegierende Rolle umgesetzt.** Er
|
||||
startet keine Subagenten und schreibt keine Anforderungen, sondern stellt her, was erst am
|
||||
zusammengeführten Bestand entsteht: durchgängige Nummerierung samt mitgezogener Verweise,
|
||||
beidseitig geschlossene Traceability, eine aus dem Gesamtbestand erzeugte Hypothesenliste und die
|
||||
Abdeckungstabelle über das gemeinsame Inventar. Sein Schwerpunkt liegt auf den Nahtstellen
|
||||
zwischen den Ausschnitten – dort sitzen die Fehler verteilter Bearbeitung. Ein **delegierender**
|
||||
Orchestrator wäre die naheliegende, aber messtechnisch schlechtere Lösung gewesen: Er erzeugte
|
||||
eine zweite Delegationsebene, deren Subagenten-Prompts nicht protokollierbar sind – bei `fb24`
|
||||
blieben so 18 von 31 Aufrufen unerfassbar.
|
||||
|
||||
**Versuch 3 erhielt eine eigene Prompt-Version.** Prompt-Version 02-A schreibt „statische
|
||||
Analyse, keine Ausführung" vor und begrenzt die Quellen auf das Arbeitsverzeichnis; ein live
|
||||
gestartetes ERP verletzt beides. Geändert wurde nur das Nötige: Quellenbeschränkung erweitert,
|
||||
Schritt 2b „Beobachtung am laufenden System" (ausdrücklich lesend), neue Belegklasse `LAUFZEIT`
|
||||
als **nachrangig** gegenüber `PRIMÄR`, und Kennzeichnung fremden Wissens. Der Abschnitt
|
||||
Arbeitsteilung wird aus V2 unverändert geerbt.
|
||||
|
||||
Fünf Werkzeugserver sind vorgesehen: `serena` (Symbol-Navigation), `mssql` (Datenbank-Inspektion,
|
||||
read-only), `windows-mcp` und `playwright` (GUI-Beobachtung für Desktop-Client und Blazor-Portal)
|
||||
sowie `context7`. Letzterer steht nicht in der Aufzählung der Arbeit und ist eine bewusst
|
||||
hinzugenommene Erweiterung; er ist zugleich der einzige der fünf, der nicht lokal betrieben wird.
|
||||
|
||||
Zwei Server wurden **ausgeschlossen**: `memory`, weil er Zustand zwischen Läufen trägt und damit
|
||||
die Unabhängigkeit der Wiederholungsmessungen zerstört, und `sequential-thinking`, weil er den
|
||||
`--effort`-Parameter dupliziert – zwei Variablen gleichzeitig zu verändern war schon beim
|
||||
Fable-Block der Fehler.
|
||||
|
||||
**Ein Blocker, gefunden bevor er einen Messlauf gekostet hat: `--safe-mode` ist mit V2 und V3
|
||||
unvereinbar.** Das Flag schaltet ausweislich der CLI-Hilfe „MCP servers, custom commands and
|
||||
agents" ab – also genau das, was beide Versuche untersuchen. Smoke-Test am 2026-08-26 (CLI
|
||||
2.1.246, identischer Aufruf, nur das Flag variiert):
|
||||
|
||||
| Konfiguration | `spawned` | `by_type` |
|
||||
|---|---:|---|
|
||||
| mit `--safe-mode` | **0** | leer – „die Rollen sind nicht in der Agent-Registry registriert" |
|
||||
| ohne `--safe-mode` | **2** | `{"modulinventar": 1, "konsistenzpruefer": 1}` |
|
||||
|
||||
Der Fehler wäre **still** geblieben: `--agents` hätte keine Wirkung gehabt, der Lauf wäre
|
||||
fehlerfrei durchgelaufen und hätte Anforderungen erzeugt – nur ohne die Rollen, die den Versuch
|
||||
ausmachen. Er wäre als V2-Lauf protokolliert worden und wäre in Wahrheit ein V1-Lauf gewesen.
|
||||
|
||||
Der Ersatz (Skill 7.0.0, MAJOR): kein `--safe-mode` in den Modi `custom` und bei MCP-Einsatz,
|
||||
stattdessen `--strict-mcp-config` plus `--disallowedTools Skill WebSearch WebFetch SlashCommand`.
|
||||
Gegengeprüft mit derselben Werkzeugabfrage: nichts vorgeladen, keine Skills, kein Webzugriff,
|
||||
alle Rollen verfügbar. Bemerkenswert dabei: Ohne die Sperre lädt die CLI **16 global installierte
|
||||
Skills** – darunter `code-review`, `security-review`, `run` und `init`. `--setting-sources ''`
|
||||
unterdrückt sie nicht.
|
||||
|
||||
Der Ersatz deckt Plugins, Hooks und Output-Styles nicht ab. Auf der Versuchsmaschine ist davon
|
||||
nichts konfiguriert – geprüft: `~/.claude/settings.json` enthält nur `model` und
|
||||
`agentPushNotifEnabled`, kein `hooks`; kein `plugins`- und kein `output-styles`-Verzeichnis. Das
|
||||
ist eine Eigenschaft der Umgebung, keine Garantie, weshalb der Skill vor jedem `custom`-Lauf eine
|
||||
Umgebungsprüfung verlangt. **Läufe im Modus `custom` sind hinsichtlich der Isolation damit nicht
|
||||
unmittelbar mit den `solo`- und `builtin`-Läufen vergleichbar**; der Unterschied ist benannt und
|
||||
auf Plugins, Hooks und Output-Styles begrenzt.
|
||||
|
||||
Nebenbefund derselben Prüfung: In den User-Settings steht `model: opus[1m]`. Das ist die Quelle
|
||||
der zwei dokumentierten Modellabweichungen bei Delegation – und `--safe-mode` hat sie nie
|
||||
verhindert, wirkt hier also weder positiv noch negativ.
|
||||
|
||||
**Offene Punkte vor dem ersten Lauf beider Versuche:** `extract-subagenten.py` ist nicht gegen
|
||||
`custom`-Agententypen geprüft; die Modellbedingung ist bei Delegation über `--model` allein nicht
|
||||
herstellbar; für V3 sind die Serverversionen nicht gepinnt, und der Zustand des laufenden Systems
|
||||
– Datenbankstand, Mandant, Datenart – ist als Teil des Untersuchungsgegenstands je Lauf zu
|
||||
erfassen.
|
||||
|
||||
---
|
||||
|
||||
## 3. Entwicklung des Prompts
|
||||
@@ -548,9 +734,22 @@ Belegqualität zu halten – dann wäre die Änderung zurückzunehmen.
|
||||
|
||||
## 8. Grenzen und offene Punkte
|
||||
|
||||
**Nicht geklärt:** Ob der Verbrauchssprung im Fable-Block vom Modell oder vom Effort kommt –
|
||||
beide Variablen wechselten gleichzeitig. Ein Fable-Block auf `high` oder ein Sonnet-Block auf
|
||||
`max` würde die Frage entscheiden.
|
||||
**Teilweise geklärt:** Ob der Verbrauchssprung im Fable-Block vom Modell oder vom Effort kommt –
|
||||
beide Variablen wechselten gleichzeitig. Die Zelle `claude-opus-5 / solo / max` (Iteration 3)
|
||||
zeigt, dass der Effort allein Verbrauch **und** Belegdichte erheblich anhebt. Vollständig
|
||||
isoliert wäre die Frage erst durch einen Opus-`high`-Block unter denselben Bedingungen –
|
||||
gleicher Snapshot, gleiche Prompt-Version.
|
||||
|
||||
**Nicht messbar in der bisherigen Anlage:** Die Zelle `claude-opus-5 / builtin / high` ist
|
||||
zweimal gescheitert (Zeitlimit, Session-Kontingent) und hat dabei 586 Mio. Tokens ohne Ergebnis
|
||||
verbraucht. Vor einer Wiederholung ist zu entscheiden, ob die Kombination Opus + Delegation +
|
||||
Prompt-Version 02 überhaupt sinnvoll messbar ist.
|
||||
|
||||
**Offen für Versuch 2 und 3:** Bei Delegation ist die Modellbedingung über `--model` allein nicht
|
||||
herstellbar (zwei dokumentierte Fälle). `extract-subagenten.py` ist noch nicht gegen
|
||||
`custom`-Agententypen geprüft. Für V3 fehlt im Skill ein Protokollfeld für die
|
||||
MCP-Konfiguration, und der Zustand des laufenden Systems – Datenbankstand, Mandant, Datenart –
|
||||
ist als Teil des Untersuchungsgegenstands je Lauf zu erfassen.
|
||||
|
||||
**Nicht durchgeführt:** Die Stakeholder-Validierung nach Kapitel 4.3. Alle Aussagen dieses
|
||||
Protokolls beruhen auf maschinell erhebbaren Größen. Ob die erzeugten Anforderungen sachlich
|
||||
|
||||
+252
@@ -0,0 +1,252 @@
|
||||
# Analysebericht — Reverse Requirements Engineering c-entron ERP-Suite
|
||||
|
||||
**Lauf:** V1 Baseline (Prompt-only), Iteration 02 — 2026-08-26
|
||||
**Untersuchungsgegenstand:** Gesamte Codebasis unter `C:\DEV\MasterArbeit\QuellCode\CentronERP` (nur lesend analysiert)
|
||||
**Methode:** Statische Analyse entlang der RRE-Methodenkette (Schritte 0, 0b, 0c, 2–6); keine Ausführung des Systems.
|
||||
|
||||
## Überblick über den Untersuchungsgegenstand
|
||||
|
||||
Die c-entron ERP-Suite ist ein ERP-/Servicemanagement-System für IT-Systemhäuser (deutschsprachiger Markt) mit:
|
||||
|
||||
- **WPF-Desktop-Client** (`src\centron\Centron.WPF.UI`, ~29 Fachmodule) — „c-entron.NET"
|
||||
- **Backend-Geschäftslogik** (`src\backend\Centron.BL`, >80 Fachbereiche) mit NHibernate-Datenzugriff (`Centron.DAO`, `Centron.Entities`)
|
||||
- **REST-Webservice** (`src\webservice\Centron.Host`, `Centron.Controllers`, `Centron.WebServices.Core`) — der WPF-Client arbeitet wahlweise direkt gegen SQL Server oder über den Webservice (Dual-Architektur `BLLogic`/`WSLogic`, siehe `docs\getting-started\general-structure.md`)
|
||||
- **Blazor-Web-App „c-entron Nexus"** (`src\nexus\CentronNexus`) mit ServiceBoard (Ticket-Arbeitsplatz), WebCart-Kundenportal, WebOffer, Office, DocumentSigning, ProductionOrderManagement sowie ein **Outlook-Add-In**
|
||||
- **Externe API-Integrationen** (`src\apis`, `Centron.Api.docuFORM`): ITscope, COP, EGIS, Icecat, finAPI, GLS, Shipcloud, ebInterface, docuFORM
|
||||
- **MSSQL-Datenbank**: Schema-Dump `SSMS_DB_SCHEMA.sql` mit 1.535 `CREATE TABLE`-Anweisungen (Legacy-Tabellen mit deutschen Namen, z. B. `AngKopf`/`AufKopf`/`RechKopf`, plus englischsprachige Views)
|
||||
- **Entwicklerdokumentation** (`docs\`) — dient als KONTEXT-Beleg (u. a. `CentronRights.md`, `docs\reference\receipts\*`, `docs\reference\security\*`)
|
||||
- **Deployment**: WiX-Installer (`deployment\`), Docker/Linux-Betrieb des Webservice (`docker\`), Azure-Pipelines (`azure\`)
|
||||
- **Tests**: `tests\` (End-to-End, Integration, Playwright, Unit)
|
||||
|
||||
Umfang: ca. 15.554 C#-Dateien. Eine Original-Commit-Historie des ERP-Produkts liegt nicht vor (die Codebasis wurde als Snapshot in das Arbeitsrepository übernommen); Change-Historie stand daher als Artefaktquelle nicht zur Verfügung.
|
||||
|
||||
## Schritt 0 — Modulinventar
|
||||
|
||||
Bezugsgröße für Abdeckung und Mindestabdeckung. Pfade relativ zu `C:\DEV\MasterArbeit\QuellCode\CentronERP`. Kürzel: `UI` = `src\centron\Centron.WPF.UI\Modules`, `BL` = `src\backend\Centron.BL`. Spalte AP = Arbeitspaket der Analyse.
|
||||
|
||||
### A — Vertrieb & Belegwesen
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M01 | Belegwesen Verkauf (Angebot, Auftrag, Lieferschein, Rechnung, Gutschrift, Abholliste) | `BL\Sales\Receipts` (Offers, Orders, DeliveryLists, Invoices, CreditVouchers, PickupLists, DownPayment), `UI\Sales` | Kern-Belegkette des Verkaufs von Angebot bis Gutschrift inkl. Versionierung und Statusführung. | AP1 |
|
||||
| M02 | Sonderpreise / Aktionspreise | `docs\reference\receipts\actionprice-system.md`, BL `Accounts` (Sonderpreise), `UI\Sales\SpecialArticleImport` | Kunden-/aktionsbezogene Preisfindung und Import von Sonderpreisen. | AP1 |
|
||||
| M03 | Belegkonditionen | `UI\Administration\ReceiptConditions` | Verwaltung von Zahlungs-/Lieferkonditionen für Belege. | AP1 |
|
||||
| M04 | Kassenbuch | `BL\Sales\CashBooks` | Führen von Kassenbüchern mit Ein-/Auszahlungen. | AP1 |
|
||||
| M05 | Schweiz-Sonderlogik Belege | `BL\Sales\Receipts\Switzerland` | Länderspezifische Sonderbehandlung von Belegen für die Schweiz. | AP1 |
|
||||
| M06 | Stundenzuschlagssätze | `BL\Sales\HourlySurchargeRatesBL`, `UI\Administration\HourlySurchargeRates` | Zuschlagssätze auf Stundenleistungen. | AP1 |
|
||||
| M07 | Serienmails/Mailing-Aktionen | `UI\Sales\Mailing`, `BL\Mailings` | Serienmail-Kampagnen mit Vorlagen und Empfängerlisten. | AP9 |
|
||||
|
||||
### B — Verträge & wiederkehrende Abrechnung
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M08 | Vertragsverwaltung | `UI\Finances\Contracts`, `BL\Sales\Receipts\ContractLists`, `docs\reference\receipts\contracts-backend.md` | Verwaltung von Service-/Wartungsverträgen als Belegart (VertragKopf/VertragPos). | AP2 |
|
||||
| M09 | Automatische Vertragsabrechnung | `UI\Finances\AutomatedBilling`, `docs\reference\receipts\Contract-Billing-RMM-Article-Logic.md` | Periodische Fakturierung von Verträgen inkl. RMM-Mengenlogik. | AP2 |
|
||||
| M10 | Flatrate-Abrechnung | `UI\Finances\FlatrateBilling` | Pauschal-Abrechnung von Leistungen. | AP2 |
|
||||
| M11 | Timer-/Zeitabrechnung | `UI\Finances\TimerBilling`, `UI\Helpdesk` (HelpdeskTimers) | Abrechnung erfasster Arbeitszeiten aus Tickets. | AP2 |
|
||||
| M12 | Geräte-Klickabrechnung | `UI\Finances\DeviceClickCounter` | Abrechnung von Druck-/Kopierklicks je Gerät (Zählerstände). | AP2 |
|
||||
| M13 | Vertragsauswertung | `UI\Finances\ContractEvaluation2`, `UI\Finances\ContractEvaluationOld` | Wirtschaftlichkeitsauswertung von Verträgen (neue und alte Implementierung). | AP2 |
|
||||
| M14 | SEPA-Vertragsdaten | `UI\Administration\SepaContract` | Verwaltung von SEPA-Mandaten/Bankdaten für Vertragsabrechnung. | AP2 |
|
||||
| M15 | Telekom-DIVE-Export | `UI\Modules\TelekomDive` | Export von Vertrags-/Abrechnungsdaten im Telekom-DIVE-Format. | AP2 |
|
||||
|
||||
### C — Finanzen & Buchhaltung
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M16 | Offene Posten (OPOS) | `UI\Finances\Opos` | Überwachung offener Forderungen/Verbindlichkeiten. | AP3 |
|
||||
| M17 | Zahlungsverkehr (Ein-/Ausgangszahlungen) | `UI\Finances\Payments`, `BL\Finances\IncomingPayments`, `BL\Finances\Payments`, `UI\Warehousing\OutcomingPayments` | Erfassen und Zuordnen von Zahlungen zu Belegen. | AP3 |
|
||||
| M18 | Mahnwesen | `UI\Finances\Dunning` | Mahnläufe über fällige offene Posten. | AP3 |
|
||||
| M19 | Online-Banking | `UI\Modules\OnlineBanking`, `BL\Finances\OnlineBanking`, `src\apis\Centron.APIs.FinAPI` | Bankkonten-Anbindung, Umsatzabruf und Zahlungen über finAPI. | AP3 |
|
||||
| M20 | Buchhaltungsexport / DATEV | `UI\DataExchange\BookKeeping`, `UI\DataExchange\DatevOnline2020` | Export von Buchungsdaten an Finanzbuchhaltung/DATEV. | AP3 |
|
||||
| M21 | E-Rechnung (ZUGFeRD/XRechnung/ebInterface) | `docs\guides\development\xrechnung.md`, `docs\reference\zugferd-field-mapping.md`, `src\apis\Centron.Api.EbInterface`, Controller `ZugferdImportController.cs`, `BL\ReportEngine` (ZUGFeRD-PDF) | Erzeugung und Import elektronischer Rechnungen. | AP3 |
|
||||
| M22 | Bankverbindungen (Stammdaten) | `BL\Accounting` | Verwaltung der Bankkonten von Kunden und eigener Firma. | AP3 |
|
||||
| M23 | Zahler & Kostenstellen | `UI\Modules\PayersAndCostCenter` | Verwaltung abweichender Zahler und Kostenstellen. | AP3 |
|
||||
| M24 | Gutschein-Verwaltung | `BL\VoucherManagement` | Gutscheine mit Barcode und Einlösestatus. | AP3 |
|
||||
|
||||
### D — Einkauf & Beschaffung
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M25 | Einkaufsbelege (Bestellung, Wareneingang, Eingangsrechnung, Lieferanten-Gutschrift) | `BL\Sales\Receipts\SupplierOrders`, `...\SupplierDeliveryLists`, `...\SupplierInvoices`, `...\SupplierCreditVouchers`, `UI\Purchasing` | Einkaufsseitige Belegkette gegenüber Lieferanten. | AP4 |
|
||||
| M26 | EDI-Anbindung Distributoren | `BL\EDI`, `UI\Purchasing\EDIManagement`, `docs\reference\edi\*` | Elektronischer Belegaustausch mit Distributoren (ALSO, Alltron, Komsa, EGIS, Concerto, OpenTrans). | AP4 |
|
||||
| M27 | Bestellvorschläge | `UI\Purchasing\OrderSuggestionList` | Ermittlung von Bestellvorschlägen aus Bedarf/Beständen. | AP4 |
|
||||
| M28 | Reisekosten | `UI\Purchasing\TravelExpense` | Erfassung und Abrechnung von Reisekosten. | AP4 |
|
||||
| M29 | Distributoren-Stammdaten | `BL\Buying` | Stammdaten der Großhändler/Distributoren. | AP4 |
|
||||
| M30 | ITscope-Marktplatz | `src\apis\Centron.APIs.ITscopeDataAccess` | Produkt-/Preis-/Bestellzugriff auf den ITscope-Marktplatz. | AP4 |
|
||||
| M31 | COP-Produktdatendienst | `src\apis\Centron.APIs.CopDataAccess` | SOAP-Zugriff auf Produkt-, Preis- und Lieferantendaten (COP). | AP4 |
|
||||
| M32 | EGIS-Distributionsdienst | `src\apis\Centron.APIs.EgisDataAccess` | Artikelsuche, Preise/Verfügbarkeiten, Produktspezifikationen (EGIS). | AP4 |
|
||||
| M33 | Icecat-Produktkatalog | `src\apis\Centron.APIs.IcecatDataAccess` | Anreicherung von Artikeln mit Icecat-Katalogdaten. | AP4 |
|
||||
| M34 | TradePool-Import | `BL\TradePool` | XML-Import von Handels-/Marktplatzdaten. | AP4 |
|
||||
|
||||
### E — Artikel, Lager & Logistik
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M35 | Artikelstamm | `UI\Warehousing\ArticleManagement`, `UI\Warehousing\SearchArticle` | Verwaltung des Artikelstamms inkl. Suche. | AP5 |
|
||||
| M36 | Artikelimport | `UI\Warehousing\ArticleImport` | Dateibasierter Import von Artikeldaten. | AP5 |
|
||||
| M37 | Artikel-Nebenstammdaten (Einheiten, Warengruppen, Kontenrahmen) | `UI\Warehousing\ArticleUnitManagement`, `...\MaterialGroupManagement`, `...\AccountSystems` | Pflege von Einheiten, Warengruppen und Kontenzuordnungen. | AP5 |
|
||||
| M38 | Lager & Inventur | `BL\Storage`, `UI\Warehousing\Inventory` | Lagerverwaltung und Inventurdurchführung. | AP5 |
|
||||
| M39 | Kommissionierung | `UI\Warehousing\Commissioning`, `UI\Warehousing\Commissions` | Kommissionieren von Aufträgen. | AP5 |
|
||||
| M40 | Barcode-Verwaltung | `UI\Warehousing\BarcodeManagement` | Barcodes für Artikel/Lagerprozesse. | AP5 |
|
||||
| M41 | Versand/Logistik | `UI\Modules\Logistic`, `BL\Logistics` | Versandabwicklung und Versandarten-Konfiguration. | AP5 |
|
||||
| M42 | GLS-Versand | `src\apis\Centron.Api.Gls` | Paketerstellung und Labeldruck über GLS. | AP5 |
|
||||
| M43 | Shipcloud-Versand | `src\apis\Centron.Api.Shipcloud` | Multi-Carrier-Versand über Shipcloud inkl. Zolldaten. | AP5 |
|
||||
| M44 | Lieferantensuche | `UI\Warehousing\SupplierSearch`, `BL\BusinessPartner` | Suche von Lieferanten zu Artikeln. | AP5 |
|
||||
|
||||
### F — Helpdesk & Service
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M45 | Helpdesk/Ticketsystem (Kern) | `UI\Helpdesk` (TicketList, TicketDetails, Dashboard), `BL\Modules`-übergreifende Helpdesk-BLs, `CentronRights.md` | Zentrales Ticketsystem für Servicefälle inkl. Rechten, Timern, Dashboard. | AP6 |
|
||||
| M46 | Checklisten | `BL\CheckListArea`, `UI\Helpdesk\CentronChecklist` | Checklisten mit Positionen und Änderungsprotokoll. | AP6 |
|
||||
| M47 | Erwartete Ereignisse | `BL\ExpectedEvents`, `UI\Helpdesk\ExpectedEvents`, `...\ExpectedEventsReporting` | Überwachung erwarteter Ereignisse/Fälligkeiten mit Auswertung. | AP6 |
|
||||
| M48 | Aufgabenverwaltung (TaskManager) | `BL\TaskManager`, `UI\Helpdesk\TaskManagement`, `UI\Administration\TaskManagmentSettings` | Aufgaben mit konfigurierbaren Aktions-Handlern. | AP6 |
|
||||
| M49 | Ticket-Projekte | `BL\TicketProjects` | Bündelung von Tickets zu Projekten inkl. Abhängigkeiten. | AP6 |
|
||||
| M50 | Ticket-Prozessvorlagen / Ticket-Muster | `UI\Helpdesk\TicketProcessTemplates`, Controller `TicketPatternsController.cs` | Vorlagen für wiederkehrende Ticketprozesse. | AP6 |
|
||||
| M51 | SelfCare-Formulare | `BL\SelfCare`, `UI\Helpdesk\SendSelfCareForm`, Controller `SelfCareFormsController.cs` | Self-Service-Formulare für Endkunden. | AP6 |
|
||||
| M52 | Externes Helpdesk | `BL\ExternalHelpdesk` | Anbindung externer Ticketsysteme. | AP6 |
|
||||
| M53 | Zeitregeln/Fristen | `BL\Time` | Konfigurierbare Zeitregeln (z. B. für Fristen und Jobs). | AP6 |
|
||||
| M54 | Eskalationen | `UI\Administration\EscalationsSettings`, `src\webservice\Centron.Host` (Eskalationsdienst) | Eskalationsregeln für Tickets/Fristen. | AP6 |
|
||||
| M55 | Umfragen | `UI\Modules\Survey` | Erstellen, Ausführen und Auswerten von Umfragen. | AP6 |
|
||||
| M56 | RMA-Abwicklung | `UI\Modules\Rma`, `BL\CustomerArea\RmaBL.cs` | Rücksendeabwicklung an Lieferanten und Rückgabe an Kunden. | AP6 |
|
||||
| M57 | IT-Planner | `BL\ItPlanner` | Kategorien virtueller Objekte für IT-Planungs-/Checklistenstruktur. | AP6 |
|
||||
| M58 | DocuBoard / Asset-Management-Board | `BL\DocuBoard` | Board mit Partner-, Artikelzuordnungs- und AD-Benutzerausschlussverwaltung. | AP6 |
|
||||
|
||||
### G — CRM & Stammdaten
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M59 | Adress-/Kundenstamm | `BL\Accounts`, `BL\CustomerArea`, `BL\Sales\Customers` | Zentraler Kunden-/Adressstamm mit Ansprechpartnern, Branchen, Interessen. | AP8 |
|
||||
| M60 | Kontaktaktivitäten / CRM | `UI\Finances\Crm`, `BL\CustomerArea` (Aktivitäten) | Dokumentation von Kundenkontakten und Aktivitäten. | AP8 |
|
||||
| M61 | Kampagnen | `UI\Finances\Campaigns`, `BL\Accounts\Campaigns`, `BL\Sales\Marketing` | Marketing-Kampagnen mit Kundenzuordnung. | AP8 |
|
||||
| M62 | Geräte/Assets beim Kunden | `BL\Devices`, `BL\Sales\CustomerAssets`, `BL\BusinessPartner\SupplierAssetBL.cs` | Verwaltung von Kundengeräten/Assets (inkl. getrennter Druckerstammblätter — Konsolidierungskandidat). | AP8 |
|
||||
| M63 | Projekte | `BL\Projects`, `UI\Modules\ProjectManagement`, `UI\Finances\Projects` | Projektstammdaten und Projektsichten. | AP8 |
|
||||
| M64 | Projektpreis-/Sonderpreisimport & Custom Gateways | `UI\Modules\ProjectPriceImport`, `BL\Gateway`, `UI\Sales\SpecialArticleToContractImport` | Import kundenspezifischer Preis-/Vertragsdaten über konfigurierbare Gateways. | AP11 |
|
||||
| M65 | Länder & Bundesländer | `BL\CountryArea`, `UI\Administration\CountryManagement` | Stammdaten Länder/Bundesländer. | AP8 |
|
||||
| M66 | Tags/Schlagwörter | `BL\Tags` | Schlagwortverwaltung und Zuordnung zu Objekten. | AP8 |
|
||||
| M67 | Textbausteine | `BL\TextModuleArea`, `UI\Administration\TextBlockManagement` | Textbausteine inkl. Anrede-/Grußformel-Ersetzung. | AP8 |
|
||||
| M68 | Mitarbeiterverwaltung | `BL\EmployeeArea`, `UI\Administration\EmployeeManagement` | Mitarbeiterstamm, App-Benutzer, Abteilungen, Urlaub, RFID, Teams. | AP8 |
|
||||
| M69 | Stammdatenlisten | `UI\Finances\MasterDataLists`, Controller `MasterDataListsController.cs` | Pflege einfacher Auswahl-/Stammdatenlisten. | AP8 |
|
||||
| M70 | Massenupdates | `BL\MassUpdate`, `UI\Modules\Massenupdates` | Massenänderungen über konfigurierbare Update-Jobs. | AP8 |
|
||||
| M71 | Kundenindividuelle Zusatztabellen | `BL\Customizations` | Custom Tables mit Variablenersetzung. | AP8 |
|
||||
| M72 | Externe Objektreferenzen | `BL\ObjectExternalReferences`, Controller `ObjectExternalReferencesController.cs` | Verknüpfung von c-entron-Objekten mit Fremdsystem-IDs. | AP8 |
|
||||
| M73 | Produktmatrix | `BL\ProductMatrix`, `UI\Sales\ProductMatrix` | Produktkategorien-Matrix je Kunde. | AP8 |
|
||||
| M74 | DSGVO | `UI\Administration\DSGVO` | Datenschutzfunktionen (Auskunft/Löschung). | AP7 |
|
||||
|
||||
### H — Kommunikation & Zusammenarbeit
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M75 | E-Mail-Versand/-Zugriff | `BL\Mail` (SMTP, Exchange/EWS, MS Graph), `UI\Administration\MailTemplates`, `docs\guides\development\create-mail-templates.md` | Mailversand über mehrere Protokolle inkl. Vorlagen und Signaturen. | AP9 |
|
||||
| M76 | MailScanner | `BL\MailScanner` | Automatisches Auslesen von Postfächern zur Weiterverarbeitung (Ticket-/Belegerzeugung). | AP9 |
|
||||
| M77 | Kalender & Exchange-Sync | `UI\Modules\Calendar`, `BL\Calendar`, `UI\Administration\MailAndCalender`, `docs\features\exchange-sync-bugprotokoll.md` | Terminverwaltung und Synchronisation mit Exchange. | AP9 |
|
||||
| M78 | Terminanfragen | `BL\AppointmentRequests` | Terminanfragen mit Zu-/Absagen. | AP9 |
|
||||
| M79 | Outlook-Add-In | `src\nexus\CentronNexus.OutlookAddIn`, `BL\Outlook` | Kontextanzeige von Kunde/Belegen/Aktivitäten zur aktuellen Mail. | AP9 |
|
||||
| M80 | Telefonie (TAPI) | `BL\Tapi`, `docs\reference\architecture\tapi.md`, `UI\Administration\PhoneSettings` | Anruferfassung und -auswertung über TAPI. | AP9 |
|
||||
| M81 | Interner Chat | `BL\Chats` | Interner Chat mit Objektbezug. | AP9 |
|
||||
| M82 | Benachrichtigungen | `BL\Notifications`, `BL\NexusNotifications` | Systemweite und Realtime-Benachrichtigungen (SignalR). | AP9 |
|
||||
| M83 | Soziale Netzwerke | `BL\SocialMedia` | Zuordnung sozialer Netzwerke zu Personen. | AP9 |
|
||||
| M84 | Videoportal | `BL\VideoPortal` | Zuordnung von Videoinhalten zu Objekten. | AP9 |
|
||||
| M85 | Signierte Web-Links | `BL\WebLinks` | Signierte Links mit hinterlegten Aktionen. | AP9 |
|
||||
| M86 | Kurz-URLs | `BL\Urls` | Einfache Objekt-/Kurz-URLs. | AP9 |
|
||||
|
||||
### I — Auswertung & persönlicher Arbeitsbereich
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M87 | Statistiken | `UI\Modules\Statistics`, `BL\Statistics` | Umsatz-/Kennzahlenauswertungen. | AP12 |
|
||||
| M88 | Reports/Formulardruck | `BL\ReportEngine` (FastReport), `BL\Reporting`, `UI\Modules\Reports`, `UI\Administration\ReportServer` | Formular-/Reporterzeugung inkl. PDF und ReportServer. | AP11 |
|
||||
| M89 | Dashboard | `UI\Modules\Dashboard` | Übergreifendes Kennzahlen-Dashboard. | AP12 |
|
||||
| M90 | Volltextsuche | `BL\IndexSearch` (Lucene) | Volltextindizierung und -suche über Geschäftsobjekte. | AP11 |
|
||||
| M91 | KI-Funktionen | `UI\Modules\ArtificialIntelligence`, `BL\ArtificialIntelligence`, Controller `ArtificialIntelligenceChatsController.cs` | KI-gestützte Chats/Assistenz. | AP12 |
|
||||
| M92 | MyCentron/MyDay/ToDo/QuickNotes | `BL\MyCentron`, `BL\MyDay`, `BL\ToDoArea`, `UI\Modules\MyCentron` | Persönlicher Arbeitsbereich: Dashboard, Tagesübersicht, To-dos, Notizen. | AP12 |
|
||||
|
||||
### J — Sicherheit & Administration
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M93 | Benutzerrechte | `CentronRights.md`, `docs\guides\development\check-userrights.md`, `UI\Administration\RightsManagement`, UserRightsConst | Feingranulare Rechteverwaltung inkl. einschränkender Rechte (nur eigene / eigene Filiale). | AP7 |
|
||||
| M94 | Authentifizierung & Login | `docs\reference\security\anmelden-mit-microsoft-technische-anleitung.md`, `src\webservice\Centron.Controllers\Controllers\...\JwtAuthController.cs`, `AuthConfigurationController.cs`, AccessTokens | Anmeldung am Client/Webservice inkl. „Anmelden mit Microsoft", JWT, Access-Tokens. | AP7 |
|
||||
| M95 | Zwei-Faktor-Authentifizierung | `BL\TwoFactorAuthenticator`, Controller `TwoFactorAuthController.cs` | TOTP-Registrierung und -Prüfung. | AP7 |
|
||||
| M96 | Passwortmanager | `BL\PasswordManagementArea`, `BL\PasswordManager`, `UI\Modules\PasswordManager` | Verwaltung von Kundenpasswörtern inkl. Zugriffs-/Änderungsprotokoll. | AP7 |
|
||||
| M97 | Lizenzierung | `docs\reference\security\licensing-system.md`, `LicenseGuids.cs`, `ApplicationKind.cs`, Controller `LicenseController.cs` | GUID-basierte Lizenzen mit Anzahl/Gültigkeit je Feature und Applikation. | AP7 |
|
||||
| M98 | Mandanten & Filialen | `UI\Administration\MandatorManagement`, Branch-Logik | Mandanten- und Filialverwaltung. | AP7 |
|
||||
| M99 | PDF-Signatur | `BL\Security\PdfSigningBL.cs`, `UI\Administration\PdfSigning` | Digitale Signatur von PDF-Dokumenten mit Zertifikaten. | AP7 |
|
||||
| M100 | Einstellungsverwaltung | `docs\guides\development\settings-management.md`, `UI\Administration\Settings` | Zentrale, hierarchische Verwaltung von System-/Benutzereinstellungen. | AP7 |
|
||||
| M101 | Änderungsverfolgung/Audit | `BL\ChangeTracking` | Historisierung von Importen und Datenänderungen. | AP7 |
|
||||
| M102 | Telemetrie | `BL\Telemetry` | Erfassung von Nutzungsdaten. | AP7 |
|
||||
| M103 | Log-Viewer/Protokollierung | `UI\Administration\LogViewer` | Einsehen von Anwendungsprotokollen. | AP7 |
|
||||
| M104 | Admin-Werkzeuge (Cache, Profiling, SqlManagers, CentronConfigDb, Connections) | `UI\Administration\Cache`, `...\Profiling`, `...\SqlManagers`, `...\CentronConfigDb`, `...\Connections` | Technische Administrationswerkzeuge des Clients. | AP7 |
|
||||
| M105 | Modul-Registry & Favoriten | `BL\Modules` | Registrierung der Anwendungsmodule, Kategorien, Favoriten. | AP7 |
|
||||
| M106 | Systemtabelle/ID-Vergabe | `BL\SystemArea\SystemTableI3DBL.cs` | Zentrale Systemtabelle mit ID-Vergabe (I3D). | AP11 |
|
||||
|
||||
### K — Web-Plattform & Schnittstellen
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M107 | Webservice-Server | `src\webservice\Centron.Host`, `src\webservice\Centron.Controllers`, `BL\WebServices` (Fassade, 464 Dateien), `docs\guides\services\add-webservice-methods.md` | REST-/Webservice-Schicht über der Geschäftslogik inkl. Hintergrunddienste. | AP10 |
|
||||
| M108 | Webservice-Client-Kern | `src\webservice\Centron.WebServices.Core` | Transport, Serialisierung, JWT-Auth, HTTP-Clients für Client-Zugriffe. | AP10 |
|
||||
| M109 | ConnectionManager | `src\webservice\c-entron.misc.ConnectionManager` | Admin-Tool für Verbindungen, Lizenzen, Hardware-ID, 2FA-Test. | AP10 |
|
||||
| M110 | Nexus ServiceBoard | `src\nexus\CentronNexus\ServiceBoard`, `BL\NexusTicketViews`, `BL\CentronNexus` | Web-Ticket-Arbeitsplatz (Kanban, Scheduler, MyDay, Statistiken). | AP10 |
|
||||
| M111 | Nexus WebCart/Kundenportal | `src\nexus\CentronNexus\WebCart`, `README.md` (WebCart), `UI\Administration\WebCart` | Webshop für Endkunden auf Basis von Web-Accounts und Sonderpreisen. | AP10 |
|
||||
| M112 | Nexus WebOffer/Belegansicht | `src\nexus\CentronNexus\WebOffer` | Web-Ansicht von Belegen mit PDF-Vorschau. | AP10 |
|
||||
| M113 | Nexus Office & DocumentSigning | `src\nexus\CentronNexus\Office`, `...\DocumentSigning` | Geteilte Dokumente, Freigaben und digitale Unterschrift. | AP10 |
|
||||
| M114 | Nexus ProductionOrderManagement | `src\nexus\CentronNexus\ProductionOrderManagement` | Web-Verwaltung von Fertigungsaufträgen. | AP10 |
|
||||
| M115 | Nexus Management/Settings/Shared | `src\nexus\CentronNexus\Management`, `...\Settings`, `...\Shared` | Web-Administration (TaskManagement, TicketPatterns, WebAccounts), Auth, Layout. | AP10 |
|
||||
| M116 | Mobile-App-Backend | `BL\Mobile` | Datenversorgung der mobilen App. | AP10 |
|
||||
| M117 | WebSuite (Alt-Web) | `BL\WebSuite` | Konfiguration der älteren Web-Suite. | AP10 |
|
||||
| M118 | Webservice-Versionsabgleich | `BL\WebVersion` | Versionsermittlung/-abgleich zwischen Client und Webservice. | AP10 |
|
||||
| M119 | RMM-/DocBee-Integrationen | `BL\Integrations`, Controller `RmmController.cs`, `DocBeeConnectorConfigurationController.cs`, `RmmConnectionSettingsController.cs`, `UI\DataExchange` (RMM) | Anbindung von RMM-Systemen und DocBee. | AP12 |
|
||||
| M120 | RiverDivo-Schnittstelle | `BL\RiverDivo` | Webservice-Schnittstelle zum Riverbird/Divo-System. | AP12 |
|
||||
| M121 | cPra-Anbindung | `BL\CPra` | Login/Konfiguration für das externe System „cPra". | AP12 |
|
||||
| M122 | docuFORM-Anbindung | `Centron.Api.docuFORM`, Controller `DocuFormApiSettingsController.cs`, `UI\DataExchange` (DocSync) | REST-Anbindung docuFORM (OAuth, Kundenanlage, Deployments). | AP12 |
|
||||
| M123 | Externe Tools | `BL\ExternalToolsBL`, `UI\Modules\ExternalTool`, `UI\Administration\ExternalTools` | Konfigurierbarer Aufruf externer Programme mit Variablenersetzung. | AP12 |
|
||||
| M124 | Import-/Export-Framework (DataExchange) | `UI\Modules\DataExchange` (Assistenten, Konnektoren) | Generische Import-/Export-Assistenten und Konnektoren. | AP11 |
|
||||
| M125 | Prozesse (generisch) | `BL\Processes` | Generische Vorgangs-/Prozessobjekte an beliebigen Objekten. | AP11 |
|
||||
| M126 | Transaktionen | `BL\Transactions` | Verwaltung/Abfrage von Transaktionen. | AP11 |
|
||||
|
||||
### L — Produktion & Sonstige Fachmodule
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M127 | Produktion/Fertigungsaufträge | `UI\Modules\Production` (ProductionOrder, MachineManagement, Settings), `BL\Production` | Fertigungsaufträge und Maschinenverwaltung. | AP12 |
|
||||
| M128 | Produkt-Lifecycle-Management | `UI\Modules\PLM`, `UI\Finances\ProductLifecycleManagement` | Produktfamilien/-gruppen mit Lebenszyklusinformationen. | AP12 |
|
||||
| M129 | Qualitätsmanagement | `UI\Modules\QM` | QM-Einstellungen (Beleg-/Asset-Gründe). | AP12 |
|
||||
| M130 | Dokumentation an Objekten | `BL\DocumentationArea`, `BL\Sales\DocumentationWizardArea` | Dokumentationseinträge zu Objekten inkl. Rechteprüfung. | AP12 |
|
||||
|
||||
### M — Plattform, Infrastruktur & Betrieb
|
||||
|
||||
| Nr | Modul | Pfad(e) | Fachliche Aufgabe | AP |
|
||||
|---|---|---|---|---|
|
||||
| M131 | WPF-Client-Rahmen | `src\centron\Centron.WPF.UI` (Start, Layout, Dialogs, Wizards), `src\centron\Centron.WPF.UI.Extension`, `src\shared\Centron.Controls` | Anwendungsrahmen: Start/Login, Modul-Hosting, MVVM, Steuerelemente. | AP11 |
|
||||
| M132 | Lokalisierung | `docs\guides\ui\localization.md`, `LocalizedStrings.resx`/`.en.resx` | Zweisprachigkeit Deutsch (Standard)/Englisch. | AP11 |
|
||||
| M133 | Datenzugriff & O/R-Mapping | `src\backend\Centron.DAO`, `src\backend\Centron.Entities`, `BL\Start` | NHibernate-basierter Datenzugriff, Entities, Mapping. | AP11 |
|
||||
| M134 | Datenbankschema & Skript-System | `SSMS_DB_SCHEMA.sql`, `docs\guides\database\create-scripts.md`, `docs\reference\database\script-rules.md`, `scripts\` | 1.535 Tabellen, Views, Constraints; versionierte Migrationsskripte. | AP11 |
|
||||
| M135 | Hintergrunddienste | `src\webservice\Centron.Host` (HostedServices), `docs\Background Service\DataQualityService.md` | Geplante Dienste: EDI-Download, Exchange-Sync, Indexierung, Eskalation, Preisupdates, Datenqualität. | AP10 |
|
||||
| M136 | Deployment/Installer | `deployment\` (WiX), `azure\`, `version.json` | MSI-Installer für Client und Webservice, Build-Pipelines. | AP11 |
|
||||
| M137 | Docker-/Linux-Betrieb | `docker\`, `docs\guides\services\web-service-on-linux.md` | Containerisierter Betrieb des Webservice. | AP11 |
|
||||
| M138 | Teststrategie | `tests\` (EndToEnd, Integration, Playwright), `docs\guides\development\end-to-end-testing.md` | Automatisierte Regressions-/E2E-Tests. | AP11 |
|
||||
| M139 | Gemeinsame Basisbibliothek | `src\shared\Centron.Core`, `src\backend\Centron.Common`, `src\backend\Centron.Interfaces`, `src\backend\Centron.Gateway` | Technische Querschnittsfunktionen (Guard, TOTP, Result-Pattern, DTOs). | AP11 |
|
||||
|
||||
**Inventarstand:** 139 Module/Komponenten. Das Inventar darf ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
## Arbeitspakete der Analyse (Schritt 0b/0c)
|
||||
|
||||
| AP | Themenfeld | ID-Bereich (je Ebene) | Risikofokus |
|
||||
|---|---|---|---|
|
||||
| AP1 | Belegwesen Verkauf | 100–299 | Fakturierung ✔ |
|
||||
| AP2 | Verträge & wiederkehrende Abrechnung | 300–499 | Fakturierung ✔ |
|
||||
| AP3 | Finanzen & Buchhaltung | 500–699 | Abrechnung/Zahlung ✔ |
|
||||
| AP4 | Einkauf & Beschaffung | 700–899 | — |
|
||||
| AP5 | Artikel/Lager/Logistik | 900–1099 | — |
|
||||
| AP6 | Helpdesk & Service | 1100–1299 | Berechtigungen (Ticketrechte) ✔ |
|
||||
| AP7 | Sicherheit & Administration | 1300–1499 | Sicherheit/Berechtigungen ✔ |
|
||||
| AP8 | CRM & Stammdaten | 1500–1699 | — |
|
||||
| AP9 | Kommunikation | 1700–1899 | — |
|
||||
| AP10 | Web-Plattform & Webservice | 1900–2099 | Auth am Webservice ✔ |
|
||||
| AP11 | Plattform & Infrastruktur | 2100–2299 | — |
|
||||
| AP12 | Übrige Fachmodule & Integrationen | 2300–2499 | — |
|
||||
|
||||
Mindestabdeckung (Schritt 0b): Jedes der 139 Module erhält mindestens eine Anforderung oder wird mit Begründung als `nicht analysiert` geführt. Vertiefung (Schritt 0c) erfolgt in AP1–AP3, AP6, AP7 und AP10 (Sicherheits-, Abrechnungs- und Berechtigungslogik).
|
||||
|
||||
*Die Abschnitte Abdeckungstabelle, Konsistenzcheck und Selbstbewertung werden nach Abschluss der Analyse ergänzt (siehe unten).*
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
# Messprotokoll – Versuch 01 (V1b Baseline mit werkzeugeigenen Agenten) – Prompt-Version 02
|
||||
|
||||
> ## ⚠ FEHLMESSUNG – nicht für Auswertungen verwenden
|
||||
>
|
||||
> Der Lauf brach mit `is_error: true` und HTTP 429 ab: „You've hit your session limit ·
|
||||
> resets 10:50pm (Europe/Berlin)". Erzeugt wurden **1 von sieben** geforderten Ergebnisdateien; der Lauf brach mitten in der Bearbeitung ab. Verbraucht wurden
|
||||
> bis zum Abbruch **77.815.316 Tokens**.
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Prompt-Version:** 02
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-26T20:00:11.2795634+02:00
|
||||
- **Endzeit:** 2026-08-26T20:30:04.2067421+02:00
|
||||
- **Dauer gesamt:** 00:07:4x — bis zum Kontingentabbruch
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
- **Codebasis-Commit:** `f349d189c735a87f5829bc93f67991320061a2c0` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja; enthält `SSMS_DB_SCHEMA.sql`
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 7.0.0
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **Modell (angefordert):** `claude-fable-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-fable-5` 77.433.773 (99.51 %), `claude-opus-5[1m]` 374.562 (0.48 %), `claude-haiku-4-5-20251001` 6.981 (0.01 %)
|
||||
- **Kontrolle Modell:** **verletzt** – nicht angefordertes Modell `claude-opus-5[1m]` mit 374.562 Tokens (0.48 %)
|
||||
- **Effort:** `high`
|
||||
- **Agentenmodus:** `builtin` (V1b)
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **Hintergrund-Wartezeit:** `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0`
|
||||
- **Parallele Läufe:** **ja** – alle vier Läufe der Welle liefen gleichzeitig
|
||||
- **Subagenten:** 13 gestartet (1 × `Explore`, 12 × `general-purpose`), `max_depth` = 1
|
||||
|
||||
## Verbrauch
|
||||
|
||||
| Messgröße | `claude-fable-5` | `claude-opus-5[1m]` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|---:|
|
||||
| Input-Tokens | 1.426 | 20 | 6.961 | 8.407 |
|
||||
| Output-Tokens | 1.037.386 | 15.803 | 20 | 1.053.209 |
|
||||
| Cache-Write-Tokens | 4.150.505 | 52.132 | 0 | 4.202.637 |
|
||||
| Cache-Read-Tokens | 72.244.456 | 306.607 | 0 | 72.551.063 |
|
||||
| **Tokens gesamt** | **77.433.773** | **374.562** | **6.981** | **77.815.316** |
|
||||
|
||||
|
||||
**Tokens gesamt: 77.815.316** — real angefallen und deshalb ausgewiesen, obwohl der Lauf ungültig ist.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
Der Lauf brach vor Abschluss ab. Die vorhandenen Dateien sind ein **Teilbestand** und mit vollständigen Läufen nicht vergleichbar; eine Auswertung unterbleibt deshalb.
|
||||
|
||||
## Ergebnis
|
||||
- **Gültigkeit:** **Fehlmessung** – API-Abbruch (HTTP 429, Session-Kontingent); nur 1 von sieben Artefakten erzeugt
|
||||
- **Status:** `is_error` = true, `terminal_reason` = `api_error`, `api_error_status` = 429
|
||||
- **Session-ID:** `d77bf9b3-7a4d-4620-861f-28861a420996`
|
||||
- **Turns:** 44
|
||||
- **Permission-Denials:** 14
|
||||
- **Erzeugte Dateien:** 1 von sieben geforderten Artefakten:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
| `Analysebericht.md` | 26.963 B |
|
||||
|
||||
Es fehlen: `StRS.md`, `SyRS.md`, `SwRS.md`, `Traceability.md`, `Hypothesen.md`, `Glossar.md`
|
||||
- **Root unverändert:** ja
|
||||
- **Abschlusstext des Agenten:** „You've hit your session limit · resets 10:50pm (Europe/Berlin)"
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Kontingentabbruch, nicht Laufversagen.** Vier Läufe wurden am 26.08. um 19:59 gleichzeitig
|
||||
gestartet; alle vier liefen in dieselbe Grenze. Zusammen hatten sie zu diesem Zeitpunkt
|
||||
297,4 Mio. Tokens verbraucht, davon allein 204,4 Mio. im Lauf `45dd`. Die Parallelität von vier
|
||||
Läufen – darunter einer mit extremer Delegation – hat das Kontingent gerissen.
|
||||
|
||||
**2. Konsequenz für den Versuchsaufbau:** Die verbleibenden Zellen werden **seriell** gefahren.
|
||||
Der erste serielle Lauf danach (`opus-5/solo/high`, `2269`) lief mit 38,1 Mio. Tokens sauber durch.
|
||||
|
||||
**3. Die Modellverletzung aus Iteration 1 ist reproduziert.** `modelUsage` weist neben
|
||||
`claude-fable-5` auch **`claude-opus-5[1m]`** aus. Derselbe Befund war in Iteration 1 unter
|
||||
Prompt-Version 01 und ohne DB-Schema aufgetreten; damit ist aus einem Einzelfall ein belegtes
|
||||
Muster geworden: **Fable wird bei Delegation nicht an die Subagenten durchgereicht**, Sonnet und
|
||||
Opus dagegen schon. Ursache ist die Sitzungsvorgabe `model: opus[1m]` in
|
||||
`~/.claude/settings.json`; `--safe-mode` verhindert das nicht.
|
||||
|
||||
Die Gegenprobe im selben Block bestätigt die Abgrenzung: Der Lauf `77a1` mit Fable im Modus
|
||||
`solo` weist ausschließlich `claude-fable-5` plus Haiku aus. **Nicht das Modell ist das Problem,
|
||||
sondern Fable in Kombination mit Delegation.**
|
||||
|
||||
**4. Die Zelle bleibt unbelegt.** Ein gültiger Lauf für `fable-5/builtin/high` steht aus. Er wäre
|
||||
allerdings von vornherein als bedingungsverletzt zu führen, solange die Subagenten auf einem
|
||||
nicht angeforderten Modell laufen.
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
|
||||
+178
@@ -0,0 +1,178 @@
|
||||
# Versuch 01 - Baseline (Prompt-only) - Iteration 02
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V1 Baseline (Prompt-only)
|
||||
- **Iteration:** 02 (erste Überarbeitung nach Auswertung von Iteration 01)
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Auswertung der 24 Läufe von Tag 1 über 3.287 erzeugte Anforderungen. Jede Änderung ist an einen gemessenen Befund gekoppelt:
|
||||
|
||||
| Änderung | Auslösender Befund |
|
||||
|---|---|
|
||||
| Modulinventar als Pflicht-Vorstufe, Mindestabdeckung je Modul, Vertiefung erst danach | Anforderungszahl schwankte je Lauf zwischen 42 und 325 (Faktor 5,9); 55 bis 60 von rund 85 Modulen blieben unanalysiert; die Modultabellen der Analyseberichte reichten von 0 bis 51 Zeilen |
|
||||
| Hypothesenpflicht kalibriert, `Hypothesen.md` deckungsgleich mit den Inline-Markierungen | Zwei Läufe meldeten null Hypothesen bei 71 bzw. 148 Anforderungen; der Anteil schwankte zwischen 0 % und 26,2 %; mehrfach wichen Sammeldatei und Inline-Markierungen voneinander ab |
|
||||
| Primärbeleg muss die durchsetzende Stelle benennen | 45,9 % aller Anforderungen trugen genau einen Beleg; in einem Lauf waren 5 von 31 risikorelevanten Anforderungen weder mit `PRIMÄR` noch als `[HYPOTHESE]` gedeckt |
|
||||
| Belegpflicht verschärft: ohne Beleg keine Anforderung | Eine Anforderung wurde ohne jeden Beleg geschrieben |
|
||||
| Konsolidierungsbegriff an einem Beispiel kalibriert | Anteil der Konsolidierungskandidaten schwankte je Lauf zwischen 2,4 % und 35,2 % |
|
||||
| Eigenes Feld `Qualitätsmerkmal` für die ISO-25010-Zuordnung | Die Zuordnung war gefordert, hatte aber keinen Ablageort: nur 33 von 313 nicht-funktionalen Anforderungen führten sie als eigene Angabe |
|
||||
| Risikoanforderungen im Konsistenzcheck auflisten | Verstöße gegen die risikobasierte Priorisierung fielen erst in der nachgelagerten Auswertung auf, nicht im Lauf selbst |
|
||||
|
||||
Unverändert bleiben Prüfidee, Tracelinks, Belegklassifikation und das Blockformat: Prüfidee und Tracelinks waren in **allen** 3.287 Anforderungen gesetzt, 78,6 % der Belege waren `PRIMÄR`.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite ausschließlich auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, ggf. DB-Skripte). Nutze nur Informationen, die du aus diesen Artefakten gewinnen kannst.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, keine Ausführung)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz).
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
|
||||
---
|
||||
|
||||
### Werkzeugkontext (vom Versuchsaufbau vorgegeben)
|
||||
Für diesen Lauf stehen zur Verfügung: Lesen und Suchen von Dateien, das Ausführen von
|
||||
Kommandozeilenbefehlen im Arbeitsverzeichnis sowie die werkzeugeigenen Subagenten.
|
||||
Nicht verfügbar sind: spezialisierte Agentenrollen aus Konfigurationsdateien, externe
|
||||
Werkzeugserver.
|
||||
Triff keine Annahmen über weitere Werkzeuge und versuche nicht, nicht verfügbare
|
||||
Werkzeuge zu ersetzen.
|
||||
### Ausgabeverzeichnis (überschreibt anderslautende Pfadangaben oben)
|
||||
Schreibe ALLE zu erzeugenden Ergebnisdateien in das Verzeichnis
|
||||
`c:\DEV\MasterArbeit\Versuche\Versuch_01\Iteration 3\claude-fable-5\builtin\high\02_Lauf_2026-08-26_195958_v7.0.0-d694\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:30:04.2067421+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:00:11.2795634+02:00
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
# Analysebericht – Reverse Requirements Engineering c-entron ERP-Suite
|
||||
|
||||
Lauf: 02_Lauf_2026-08-26_195958_v7.0.0-77a1 (Baseline Prompt-only, Iteration 02)
|
||||
Untersuchungsgegenstand: gesamte Codebasis `C:\DEV\MasterArbeit\QuellCode\CentronERP` (nur lesend).
|
||||
|
||||
Dieser Bericht enthält:
|
||||
1. Modulinventar (Schritt 0 – erstellt **vor** der ersten Anforderung)
|
||||
2. Abdeckungstabelle (wird nach Abschluss der Anforderungserhebung gefüllt)
|
||||
3. Konsistenzcheck
|
||||
4. Liste der risikorelevanten Anforderungen mit Belegsituation
|
||||
5. Selbstbewertung
|
||||
|
||||
---
|
||||
|
||||
## 1. Modulinventar (Schritt 0)
|
||||
|
||||
Grundlage: Verzeichnisstruktur `src/` (backend/centron/nexus/shared/webservice/apis), `docs/`,
|
||||
`deployment/`, `docker/`, `scripts/`, `tests/` sowie Wurzeldateien (`SSMS_DB_SCHEMA.sql`,
|
||||
`CentronRights.md`). Die fachlichen Module wurden primär aus den Fachordnern von
|
||||
`src/backend/Centron.BL` (Geschäftslogik), den UI-Modulen `src/centron/Centron.WPF.UI/Modules`
|
||||
und den Web-Bereichen `src/nexus/CentronNexus` abgeleitet. Pfade sind relativ zum
|
||||
Arbeitsverzeichnis. Das Inventar darf ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
| Nr. | Modul / Komponente | Pfad | Fachliche Aufgabe (1 Satz) |
|
||||
|---|---|---|---|
|
||||
| M001 | Belegwesen-Kern | src/backend/Centron.BL/Sales/Receipts (ReceiptBL.cs, SpecificLogics.cs) | Gemeinsame Logik aller Belegarten: Laden, Speichern, Statusführung, Nummernvergabe, Preisberechnung, Versionierung. |
|
||||
| M002 | Angebote | src/backend/Centron.BL/Sales/Receipts/Offers | Erstellung und Verwaltung von Kundenangeboten (AngKopf/AngPos). |
|
||||
| M003 | Aufträge | src/backend/Centron.BL/Sales/Receipts/Orders | Verwaltung von Kundenaufträgen (AufKopf/AufPos) inkl. Überführung in Folgebelege. |
|
||||
| M004 | Lieferscheine | src/backend/Centron.BL/Sales/Receipts/DeliveryLists | Verwaltung von Lieferscheinen (LiefKopf/LiefPos). |
|
||||
| M005 | Rechnungen | src/backend/Centron.BL/Sales/Receipts/Invoices | Verwaltung von Ausgangsrechnungen (RechKopf/RechPos). |
|
||||
| M006 | Gutschriften | src/backend/Centron.BL/Sales/Receipts/CreditVouchers | Verwaltung von Gutschriften (GutKopf/GutPos). |
|
||||
| M007 | Abholscheine | src/backend/Centron.BL/Sales/Receipts/PickupLists, .../PickUps | Verwaltung von Abholscheinen (AbholKopf/AbholPos). |
|
||||
| M008 | Verträge | src/backend/Centron.BL/Sales/Receipts/ContractLists, .../LeasingAndService | Verwaltung von Service-/Wartungsverträgen (VertragKopf/VertragPos) mit Laufzeiten, Kontingenten und Gerätelisten. |
|
||||
| M009 | Vertragsabrechnung | src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura | Automatische Fakturierung von Verträgen, Aufträgen, Lieferscheinen und Tickets (Intervalle, Kontingente, Klickzähler). |
|
||||
| M010 | Mahnwesen | src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning | Mahnläufe über offene Rechnungen mit Mahnstufen, Mahnstopp und Mahnreports. |
|
||||
| M011 | Offene Posten (OPOS) | src/backend/Centron.BL/Sales/Receipts/Invoices/Opos | Verwaltung und Auswertung offener Posten. |
|
||||
| M012 | Anzahlungen | src/backend/Centron.BL/Sales/Receipts/DownPayment | Abbildung von Anzahlungen im Belegfluss. |
|
||||
| M013 | Warenkorb & Freigabewesen | src/backend/Centron.BL/Sales/Receipts/ReceiptCartBL.cs, ReceiptCartReleaseSystemBL.cs | Warenkörbe von Web-Accounts mit mehrstufigem Prüf-/Freigabe-/Bestellprozess. |
|
||||
| M014 | Lieferantenbelege | src/backend/Centron.BL/Sales/Receipts/Supplier* | Bestellungen, Wareneingänge, Eingangsrechnungen und Lieferantengutschriften. |
|
||||
| M015 | Provisionen | src/backend/Centron.BL/Sales/Receipts/ReceiptProvision*.cs | Provisionsschemata, -ziele und -stufen für Vertriebsmitarbeiter. |
|
||||
| M016 | Kassenbuch | src/backend/Centron.BL/Sales/CashBooks | Kassenbücher mit Buchungen und Belegen je Filiale. |
|
||||
| M017 | Preisfindung & Kalkulation | src/backend/Centron.BL/Sales/Receipts/ReceiptPriceHelperBL.cs; Centron.BL/Warehousing/ActionPriceBL.cs, ArticleVolumePricesBL.cs; Sales/Support/CustomerSpecialArticleBL.cs | Berechnung von Positions-/Belegpreisen, MwSt., Rabatten, Aktions-, Staffel- und Sonderpreisen. |
|
||||
| M018 | Schweiz-Sonderlogik | src/backend/Centron.BL/Sales/Receipts/Switzerland | Landesspezifische Sonderbehandlung für Schweizer Belege. |
|
||||
| M019 | Belegvorlagen | src/backend/Centron.BL/Sales/Receipts/ReceiptTemplateBL.cs | Belegvorlagen über einen definierten Vorlagen-Kunden. |
|
||||
| M020 | Marketing | src/backend/Centron.BL/Sales/Marketing | Marketingaktionen/-kampagnen im Vertriebsumfeld. |
|
||||
| M021 | CRM-Projekte | src/backend/Centron.BL/Sales/Customers/CrmProjects | Vertriebschancen/CRM-Projekte zu Kunden. |
|
||||
| M022 | Kundenstamm (Alt-Struktur) | src/backend/Centron.BL/Sales/Customers | Verwaltung der Kunden (Tabelle Kunden) mit Kreditlimit, Sperren und Zuordnungen. |
|
||||
| M023 | Stundensatz-Zuschläge | src/backend/Centron.BL/Sales/HourlySurchargeRatesBL | Zuschlagsätze auf Stundensätze (z. B. nach Zeit/Art). |
|
||||
| M024 | Dokumentations-Assistent | src/backend/Centron.BL/Sales/DocumentationWizardArea | Geführte Erstellung von Dokumentationen. |
|
||||
| M025 | Helpdesk/Ticketsystem | src/backend/Centron.BL/Sales/Support (HelpdeskBL.cs u. a.) | Störungs-/Serviceticketverwaltung mit Status, Typen, Kategorien, Prioritäten, Historie und Mailversand. |
|
||||
| M026 | Ticket-Zeiterfassung | src/backend/Centron.BL/Sales/Support/HelpdeskTimer*.cs | Erfassung, Signatur, Verschiebung und Abrechnung von Arbeitszeiten auf Tickets. |
|
||||
| M027 | Ticket-Eskalation | src/backend/Centron.BL/Sales/Support/Escalation | Eskalationsregeln und -überwachung für Tickets. |
|
||||
| M028 | Ticketvorlagen/Prozesse (C-FLOW) | src/backend/Centron.BL/Sales/Support/TicketProcess, HelpdeskPatternBL.cs, HelpdeskCreationTemplateBL.cs | Ticketvorlagen und automatische Tickerzeugung nach Vorlagen/Prozessen. |
|
||||
| M029 | Ticketprojekte | src/backend/Centron.BL/TicketProjects; Sales/Support/TicketProject*.cs | Bündelung von Tickets zu Projekten mit Aufgaben und Abhängigkeiten. |
|
||||
| M030 | Externe Helpdesks | src/backend/Centron.BL/ExternalHelpdesk | Konfiguration der Kopplung zu Fremd-Ticketsystemen. |
|
||||
| M031 | Support-Level | src/backend/Centron.BL/Sales/Support/SupportLevelBL.cs | Verwaltung von Support-Leveln (z. B. SLA-Stufen) für Kunden/Tickets. |
|
||||
| M032 | Kundengeräte/Assets | src/backend/Centron.BL/Sales/CustomerAssets; Centron.BL/Devices | Verwaltung der beim Kunden befindlichen Geräte/Assets inkl. Stammdatenlisten und Historie. |
|
||||
| M033 | RMA | src/backend/Centron.BL/CustomerArea/RmaBL.cs; UI: Modules/Rma | Reklamations-/Rücksendeabwicklung mit Artikeln und Historie. |
|
||||
| M034 | Checklisten | src/backend/Centron.BL/CheckListArea | Checklistenvorlagen und Checklisten an Objekten (v. a. Tickets). |
|
||||
| M035 | Umfragen | src/centron/Centron.WPF.UI/Modules/Survey; BL: HelpdeskSurveyProcess (Sales/Support) | Erstellung und Versand von Kundenumfragen, u. a. beim Ticketabschluss. |
|
||||
| M036 | TaskManager | src/backend/Centron.BL/TaskManager | Zeit-/ereignisgesteuerte Aufgaben (Tasks) mit Aktionen und Ausführungsprotokoll. |
|
||||
| M037 | Nexus-Ticketansichten | src/backend/Centron.BL/NexusTicketViews | Konfigurierbare Ticket-Listenansichten für den Webclient. |
|
||||
| M038 | Einkauf/Bestellwesen | src/backend/Centron.BL/Purchasing, Centron.BL/Buying | Lieferantenbestellungen je Filiale und Einkaufsunterstützung. |
|
||||
| M039 | Lager/Bestandsführung | src/backend/Centron.BL/Logistics/Warehousing/StockBL.cs; Logistics/LogisticSettings | Verwaltung von Lagern, Lagerorten, Umbuchungen und Bestandslogik. |
|
||||
| M040 | Inventur | src/backend/Centron.BL/Storage (StorageBL.cs, InventoryArticlePool.cs) | Inventurdurchführung mit Zähllisten und Bestandsabgleich. |
|
||||
| M041 | Artikelstamm | src/backend/Centron.BL/Warehousing (ArticleBL.cs u. a.) | Verwaltung der Artikel (ARTIK) mit Einheiten, Varianten, Logs und Sonderartikeln. |
|
||||
| M042 | Barcode | src/backend/Centron.BL/Warehousing/Barcode*.cs | Barcodeverwaltung inkl. Historie und Bedingungen. |
|
||||
| M043 | Produktion | src/backend/Centron.BL/Production | Fertigungsaufträge mit Positionen und Protokoll. |
|
||||
| M044 | TradePool | src/backend/Centron.BL/TradePool | Import/Verwaltung von Handelsware-Pools (Distributorenartikel) und Kundenzuordnung. |
|
||||
| M045 | Produktmatrix | src/backend/Centron.BL/ProductMatrix | Bewertungsmatrix Kunde × Produktkategorie (IT-Portfolio-Beratung). |
|
||||
| M046 | Produktlebenszyklus | src/backend/Centron.BL/Finances/ProductLifecycleBL.cs | Lebenszyklusdaten zu Produkten (z. B. EOL) für Beratung/Planung. |
|
||||
| M047 | Konten-/Adressstamm (Accounts) | src/backend/Centron.BL/Accounts | Neuer vereinheitlichter Konten-/Adress-/Kontaktstamm (Accounts) mit Kunden-/Lieferantenrollen. |
|
||||
| M048 | Lieferantenstamm | src/backend/Centron.BL/BusinessPartner | Suche/Verwaltung von Lieferanten und Lieferanten-Assets. |
|
||||
| M049 | Mitarbeiter/Personal | src/backend/Centron.BL/EmployeeArea | Mitarbeiterstamm mit Abteilungen, Urlaub, RFID-Token, Benutzerzuordnung. |
|
||||
| M050 | Länder/Bundesländer | src/backend/Centron.BL/CountryArea | Länder- und Bundeslandstamm inkl. Währungsangaben. |
|
||||
| M051 | Kostenstellen/Kostenträger | src/centron/Centron.WPF.UI/Modules/PayersAndCostCenter; DB: Kostenstellen, Kostentraeger | Verwaltung von Kostenstellen und Kostenträgern. |
|
||||
| M052 | CRM-Kataloge | src/backend/Centron.BL/CustomerArea (BusinessLineBL, InterestBL, ProductBL, ContactActivityBL, ContactDepartmentBL) | Katalogdaten für CRM: Branchen, Interessen, Produkte, Kontaktaktivitäten. |
|
||||
| M053 | Textmodule/Anreden | src/backend/Centron.BL/TextModuleArea | Textbausteine sowie Anrede-/Grußformel-Ersetzung. |
|
||||
| M054 | Tags | src/backend/Centron.BL/Tags | Freie Verschlagwortung (v. a. Tickets). |
|
||||
| M055 | FiBu-Export/-Import | src/backend/Centron.BL/DataExchange/BookKeeping; Administration/BookKeepingAccountSystems | Übergabe von Stammdaten, Belegen und Kassenbuch an Finanzbuchhaltungen (u. a. DATEV, Abacus) und Rückimport. |
|
||||
| M056 | Zahlungsverkehr (SEPA) | src/backend/Centron.BL/DataExchange/PaymentTransactions | Export von Lastschriften/Zahlungen als SEPA-XML (pain.008-Varianten). |
|
||||
| M057 | Zahlungseingänge | src/backend/Centron.BL/Finances/IncomingPayments | Erfassung/Protokollierung von Zahlungseingängen auf Rechnungen. |
|
||||
| M058 | OnlineBanking (finAPI) | src/backend/Centron.BL/Finances/OnlineBanking; src/apis/Centron.APIs.FinAPI | Abruf von Kontoumsätzen über finAPI und Zuordnung zu Belegen. |
|
||||
| M059 | Bankkonten | src/backend/Centron.BL/Accounting/BankAccountBL.cs | Verwaltung von Bankverbindungen von Kunden/Firmen. |
|
||||
| M060 | E-Rechnung | docs/reference/zugferd-field-mapping.md; docs/guides/development/xrechnung.md; src/apis/Centron.Api.EbInterface | Erzeugung elektronischer Rechnungen (ZUGFeRD/XRechnung, ebInterface AT). |
|
||||
| M061 | Gutschein-/Voucherverwaltung | src/backend/Centron.BL/VoucherManagement | Verwaltung von Gutschein-Barcodes. |
|
||||
| M062 | Finanzen Sonstiges | src/backend/Centron.BL/Finances/Payments, Finances/ActivitySettings | Zahlungsarten/Aktivitätseinstellungen im Finanzumfeld. |
|
||||
| M063 | Authentifizierung | src/backend/Centron.BL/Administration/Logins/Auth | Anmeldung per Benutzername/Passwort, Active Directory, OpenID Connect (Entra ID) und Web-Account. |
|
||||
| M064 | Zwei-Faktor-Authentifizierung | src/backend/Centron.BL/Administration/Logins/TwoFactor; Centron.BL/TwoFactorAuthenticator | Zweiter Faktor per RADIUS oder E-Mail-Link mit Gültigkeitsdauer je Gerät. |
|
||||
| M065 | Benutzerverwaltung | src/backend/Centron.BL/Administration/Logins/UsersBL.cs; EmployeeArea/AppUserBL.cs | Verwaltung der Anwendungsbenutzer (Sichbenu) inkl. Deaktivierungszeiträumen. |
|
||||
| M066 | Web-Accounts | src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs | Logins für Endkunden-Kontakte (Portal/Shop) mit Statusprüfung. |
|
||||
| M067 | Rechteverwaltung | src/backend/Centron.BL/Administration/Rights; CentronRights.md; webservice/.../UserRightsConst.cs | Rechte/Gruppen (Sichtrus/Sichmemb/Sichbenu) inkl. einschränkender Rechte (nur eigene / eigene Filiale). |
|
||||
| M068 | Lizenzierung | src/backend/Centron.BL/Administration/Licensing | Prüfung von Produktlizenzen, Versionsbeschränkung und paralleler Nutzeranzahl. |
|
||||
| M069 | Sitzungs-/Ticketverwaltung | src/backend/Centron.BL/Administration/Logins/TicketBL.cs, AuthenticationTicketBL.cs | Vergabe/Wiederverwendung von Anmelde-Tickets je Anwendung/Maschine. |
|
||||
| M070 | Anwendungseinstellungen | src/backend/Centron.BL/Administration/Settings; Centron.Interfaces/Administration/Settings | Zentrale, typisierte Konfiguration (ApplicationSettings) mit Definitionen und Gruppen. |
|
||||
| M071 | Mandanten | src/backend/Centron.BL/Administration/Company/MandatorBL.cs | Mandantenverwaltung. |
|
||||
| M072 | Filialen | src/backend/Centron.BL/Administration/Company/BranchBL.cs | Filialverwaltung inkl. filialbezogener Konten und Läger. |
|
||||
| M073 | Nummernkreise | src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs; Administration/Mandatory | Vergabe fortlaufender Nummern je Objektart (und Filiale) mit Kollisionsschutz. |
|
||||
| M074 | DB-Migrationsskripte | src/backend/Centron.BL/Administration/Scripts (ScriptMethods) | Versionierte Datenbank-Migrations-/Wartungsskripte. |
|
||||
| M075 | DSGVO/Datensicherheit | src/backend/Centron.BL/Administration/DataSecurity; WebServices/Administration/Documents/Dsgvo | Datenschutzfunktionen (DSGVO-Dokumente, Datensicherheit). |
|
||||
| M076 | Dokumente/Dateiverwaltung | src/backend/Centron.BL/Administration/Documents, FileManagement; WPF: CentronFileSystem | Ablage und Verwaltung von Dokumenten/Dateien zu Objekten. |
|
||||
| M077 | Hintergrunddienste | src/backend/Centron.BL/Administration/BackgroundServices; docs/Background Service | Serverseitige Hintergrundverarbeitung (z. B. Datenqualitätsdienst). |
|
||||
| M078 | AccessTokens | src/backend/Centron.BL/Administration/AccessTokens | Verwaltung von API-/Zugriffstokens. |
|
||||
| M079 | Telemetrie | src/backend/Centron.BL/Telemetry | Erfassung von Nutzungsdaten (API-Aufrufe, KI-/MCP-Toolnutzung). |
|
||||
| M080 | Themes/Customizing | src/backend/Centron.BL/Administration/Themes, Customization; Centron.BL/Customizations/CustomTables | Oberflächen-Themes und kundenspezifische Erweiterungen/Zusatztabellen. |
|
||||
| M081 | SQL-/Systemdiagnose | src/backend/Centron.BL/Administration/SQLManagement, NetworkDiagnostics, Profiling, PerformanceTests | Administrative Diagnose- und Wartungswerkzeuge. |
|
||||
| M082 | Passwortverwaltung (Kundenzugänge) | src/backend/Centron.BL/PasswordManagementArea, PasswordManager | Verschlüsselte Ablage von Zugangsdaten mit Zugriffs-/Änderungsprotokoll. |
|
||||
| M083 | Mail | src/backend/Centron.BL/Mail | Mailkonten, -einstellungen, -signaturen und Mailversand. |
|
||||
| M084 | MailScanner | src/backend/Centron.BL/MailScanner | Überwachung von Postfächern und regelbasierte Verarbeitung (z. B. Ticketerzeugung). |
|
||||
| M085 | Mailings/Newsletter | src/backend/Centron.BL/Mailings | Serienmails/Newsletter mit Vorlagen. |
|
||||
| M086 | Kalender/Termine | src/backend/Centron.BL/Calendar, AppointmentRequests; Sales/Calendar | Terminkalender inkl. Terminwünschen und Synchronisationseinstellungen. |
|
||||
| M087 | Chats | src/backend/Centron.BL/Chats | Interner Chat mit Gruppen, Nachrichten, Bearbeiten/Löschen. |
|
||||
| M088 | SocialMedia-Feed | src/backend/Centron.BL/SocialMedia | Interner Aktivitäten-Feed mit Kommentaren, Likes und Abos auf Objekte. |
|
||||
| M089 | TAPI-Telefonie | src/backend/Centron.BL/Tapi; assemblies/tapi | Telefonie-Integration: Anruferkennung, Anrufprotokolle, Kontaktsuche per Rufnummer. |
|
||||
| M090 | ToDo | src/backend/Centron.BL/ToDoArea | Aufgaben-/Wiedervorlagenverwaltung an Objekten. |
|
||||
| M091 | MyDay/MyCentron | src/backend/Centron.BL/MyDay, MyCentron | Persönliche Tagesübersicht (Arbeitsvorrat) und zuletzt verwendete Objekte. |
|
||||
| M092 | Benachrichtigungen | src/backend/Centron.BL/Notifications, NexusNotifications | Benutzerbenachrichtigungen im Client und Web (SignalR-Hub). |
|
||||
| M093 | Outlook-Integration | src/nexus/CentronNexus.OutlookAddIn; Centron.BL/Outlook; assemblies/outlook | Outlook-AddIn zur Verbindung von E-Mails mit c-entron-Objekten. |
|
||||
| M094 | WebLinks/Kurz-URLs | src/backend/Centron.BL/WebLinks, Urls | Verwaltete Weblinks mit Aktionen und Klick-Protokoll sowie einfache URL-Verwaltung. |
|
||||
| M095 | Mobile | src/backend/Centron.BL/Mobile | Datenbereitstellung für die mobile Nutzung (mobile Mitarbeiter). |
|
||||
| M096 | ReportEngine (FastReport) | src/backend/Centron.BL/ReportEngine | Berichtsdefinitionen, -gruppen, -abfragen und Standardberichte je Ausgabekanal. |
|
||||
| M097 | Berichte (Alt) | src/backend/Centron.BL/Reporting; UI: Modules/Reports | Verwaltung/Rendern klassischer Berichte. |
|
||||
| M098 | Statistiken | src/backend/Centron.BL/Statistics | Umsatz-, Auftrags-, Ticket-, Vertrags- und MSP-Statistiken. |
|
||||
| M099 | Volltextsuche | src/backend/Centron.BL/IndexSearch | Lucene-basierter Volltextindex mit deutschem Analyzer über Fachobjekte. |
|
||||
| M100 | Massenupdates | src/backend/Centron.BL/MassUpdate; UI: Modules/Massenupdates | Massenänderungen an Belegen, Artikeln und Kontodaten über Vorlagen. |
|
||||
| M101 | Änderungsverfolgung | src/backend/Centron.DAO/ChangeTracking; Centron.BL/ChangeTracking | Feldgenaue Änderungsprotokolle (ChangeLog) über NHibernate-Events. |
|
||||
| M102 | Import-Historie | src/backend/Centron.BL/ChangeTracking/History (ImportHistoryBL.cs) | Protokollierung durchgeführter Datenimporte. |
|
||||
| M103 | Erwartete Ereignisse | src/backend/Centron.BL/ExpectedEvents | Überwachung erwarteter Ereignisse (Log je Konto) mit Fehlverhaltensanzeige. |
|
||||
| M104 | Prozesse (Langläufer) | src/backend/Centron.BL/Processes | Verwaltung langlaufender Verarbeitungsprozesse. |
|
||||
| M105 | Fachliche Transaktionen | src/backend/Centron.BL/Transactions | Protokollierung fachlicher Transaktionen mit Details je Benutzer. |
|
||||
| M106 | KI-Funktionen | src/backend/Centron.BL/ArtificialIntelligence; Administration/ArtificialIntelligence | Anbindung von KI-Modellen (u. a. OpenAI-kompatibel) für Ticket-Kategorisierung, Textbewertung, Zusammenfassungen. |
|
||||
| M107 | EDI | src/backend/Centron.BL/EDI; DataExchange/EDI; src/backend/Centron.Gateway | Elektronischer Belegaustausch mit Distributoren (ALSO, Alltron, Herweck, Komsa, OpenTrans 2.1 u. a.). |
|
||||
| M108 | docuFORM | Centron.Api.docuFORM; Centron.BL/DataExchange/DocuForm | Anbindung docuFORM (Druckerzähler/Verbrauchsdaten). |
|
||||
| M109 | RMM-/AssetManagement-Connector | src/backend/Centron.BL/DataExchange/Rmm; Centron.BL/DocuBoard (AssetManagement*) | Anbindung von Remote-Monitoring-Systemen und Übernahme erkannter Geräte. |
|
||||
| M110 | TANSS-Schnittstelle | src/backend/Centron.BL/DataExchange/TanssInterfaces | Datenaustausch mit TANSS. |
|
||||
| M111 | Telekom DIVE | src/backend/Centron.BL/DataExchange/TelekomDive; UI: Modules/TelekomDive | Export von Artikel-/Kategoriedaten an Telekom DIVE. |
|
||||
| M112 | GfK-Export | src/backend/Centron.BL/DataExchange/GfkExport | Meldung von Abverkaufsdaten an GfK. |
|
||||
| M113 | Datenimport | src/backend/Centron.BL/DataExchange/Import, Connectors | Generische Importe und Konnektoren. |
|
||||
| M114 | ITscope | src/apis/Centron.APIs.ITscopeDataAccess | Anbindung ITscope (Distributorenkatalog/Bestellung). |
|
||||
| M115 | Icecat | src/apis/Centron.APIs.IcecatDataAccess | Übernahme von Artikelstammdaten aus Icecat. |
|
||||
| M116 | COP | src/apis/Centron.APIs.CopDataAccess | SOAP-Anbindung COP (Distributor). |
|
||||
| M117 | EGIS | src/apis/Centron.APIs.EgisDataAccess; Centron.BL/EDI/EGIS | Anbindung EGIS (Warenkorb/Bestellungen). |
|
||||
| M118 | GLS-Versand | src/apis/Centron.Api.Gls | Erzeugung von GLS-Versandaufträgen/Labels. |
|
||||
| M119 | Shipcloud-Versand | src/apis/Centron.Api.Shipcloud; Sales/Receipts/ShipcloudPackageTemplateBL.cs | Versandabwicklung über Shipcloud inkl. Pakettemplates. |
|
||||
| M120 | RiverDivo/Riverbird | src/backend/Centron.BL/RiverDivo; deployment/riverbird | Kopplung an Riverbird/RiverDivo (Remote-Zugriff/Servicedaten). |
|
||||
| M121 | C-Pra | src/backend/Centron.BL/CPra | Anbindung C-Pra (WebHooks). |
|
||||
| M122 | ES-Integrationen | src/backend/Centron.BL/Integrations (EsCustomerGroupBL, EsRoleBL) | Rollen-/Kundengruppenabgleich mit einem externen System (ES). |
|
||||
| M123 | Custom Gateway | src/backend/Centron.BL/Gateway; WebServices/Gateway | Konfigurierbares Gateway für kundenspezifische externe Aufrufe. |
|
||||
| M124 | Objekt-Fremdreferenzen | src/backend/Centron.BL/ObjectExternalReferences | Zuordnung externer IDs zu c-entron-Objekten. |
|
||||
| M125 | SelfCare-Formulare | src/backend/Centron.BL/SelfCare | Konfigurierbare Web-Formulare (Self-Service) mit Status. |
|
||||
| M126 | Externe Tools | src/backend/Centron.BL/ExternalToolsBL, Tools; UI: Modules/ExternalTool | Einbindung externer Programme mit Variablenübergabe. |
|
||||
| M127 | VideoPortal | src/backend/Centron.BL/VideoPortal | Zuordnung von Schulungs-/Videoinhalten. |
|
||||
| M128 | IT-Planner | src/backend/Centron.BL/ItPlanner | Checklisten-/Planungsobjekte für IT-Planungen. |
|
||||
| M129 | DocuBoard | src/backend/Centron.BL/DocuBoard | Verwaltung AssetManagement-Partner/Artikelzuordnungen (Dokumentationsboard). |
|
||||
| M130 | WPF-Client (Shell) | src/centron/Centron.WPF.UI | Windows-Desktop-Client: Modulrahmen, Navigation, Layouts, Dialoge, Lokalisierung. |
|
||||
| M131 | Webservice/Backend-Host | src/webservice (Centron.Host, Centron.WebServices.Core, Centron.Host.WindowsService, Centron.Host.Console) | Zentraler Anwendungsserver (SOAP/REST) als Windows-Dienst, Konsole oder Container. |
|
||||
| M132 | REST-API v1 | src/webservice/Centron.Controllers | Versionierte REST-Schnittstelle mit JWT-Authentifizierung und Rechte-Attributen. |
|
||||
| M133 | Nexus-Webclient | src/nexus/CentronNexus, CentronNexus.Host | Blazor-Webclient (ServiceBoard, Management, Office, WebCart, WebOffer, Produktionsaufträge, Dokumentensignatur). |
|
||||
| M134 | DAO/Persistenz | src/backend/Centron.DAO | NHibernate-Datenzugriff mit Repositories, Named Queries, RawSQL und Mappings. |
|
||||
| M135 | Entities/Datenmodell | src/backend/Centron.Entities; SSMS_DB_SCHEMA.sql | Entitätsmodell und MSSQL-Schema (1.558 Tabellen, Legacy-Tabellen + englische Views). |
|
||||
| M136 | Basisbibliotheken | src/backend/Centron.Common, Centron.Interfaces; src/shared/Centron.Core, Centron.Controls | Querschnittsfunktionen, Interfaces/DTO-Verträge, WPF-Controls. |
|
||||
| M137 | ConnectionManager | src/webservice/c-entron.misc.ConnectionManager | Werkzeug zur Verwaltung von Verbindungsprofilen. |
|
||||
| M138 | Deployment/Installer | deployment (centron, WixSharpInstaller, riverbird) | Erstellung der Installationspakete. |
|
||||
| M139 | Docker/Linux-Betrieb | docker/; docs/guides/services/web-service-on-linux.md | Containerisierter Betrieb von Webservice, Demo, Mailcatcher, Regressionstest-DB. |
|
||||
| M140 | CI/CD | azure/, .github/workflows | Automatisierte Builds/Pipelines. |
|
||||
| M141 | Tests | tests/ (Integration, EndToEnd, Playwright, Unit) | Automatisierte Test-Suiten. |
|
||||
| M142 | Modulverwaltung | src/backend/Centron.BL/Modules; WPF: Modules/ModuleRegistration.cs | Registrierung/Kategorisierung der Anwendungsmodule inkl. Rechtebindung. |
|
||||
| M143 | Start/Versionsprüfung | src/backend/Centron.BL/Start, WebVersion, WebSuite | Startlogik des Clients inkl. Versionsabgleich mit dem Webservice. |
|
||||
| M144 | GUI-Personalisierung | src/backend/Centron.BL/GUI (UserGridBL.cs); Administration/Themes | Speicherung benutzerspezifischer Grid-/Oberflächeneinstellungen. |
|
||||
| M145 | Caching-Dienste | src/backend/Centron.BL/Services (CachedTableBL.cs) | Serverseitiges Tabellen-Caching. |
|
||||
| M146 | Icons | src/backend/Centron.BL/CentronIcons | Verwaltung der Anwendungs-Icons. |
|
||||
| M147 | Zeitsteuerung | src/backend/Centron.BL/Time (TimingSettingsBL.cs) | Timing-/Zeiterfassungseinstellungen. |
|
||||
| M148 | SystemArea | src/backend/Centron.BL/SystemArea (SystemTableI3DBL.cs) | Systemtabellen-/ID-Verwaltung. |
|
||||
| M149 | Helpers | src/backend/Centron.BL/Helpers | Hilfsfunktionen (PDF, Word-Bilder, Graph-Client, Logging). |
|
||||
| M150 | Kern-Krypto | src/backend/Centron.BL/Core (CryptoUtils.cs, ReplacementBL.cs) | Salz-/Hash-Erzeugung und Platzhalter-Ersetzung. |
|
||||
|
||||
Nachträgliche Ergänzungen des Inventars sind unter „1a. Inventar-Ergänzungen" zu führen (keine vorhanden).
|
||||
|
||||
---
|
||||
|
||||
## 2. Abdeckungstabelle
|
||||
|
||||
*(wird nach Abschluss der Anforderungserhebung gefüllt – siehe Abschnitt am Ende dieses Dokuments)*
|
||||
|
||||
## 3. Konsistenzcheck
|
||||
|
||||
*(wird nach Abschluss der Anforderungserhebung gefüllt)*
|
||||
|
||||
## 4. Risikorelevante Anforderungen
|
||||
|
||||
*(wird nach Abschluss der Anforderungserhebung gefüllt)*
|
||||
|
||||
## 5. Selbstbewertung
|
||||
|
||||
*(wird nach Abschluss der Anforderungserhebung gefüllt)*
|
||||
+600
@@ -0,0 +1,600 @@
|
||||
# StRS – Stakeholder Requirements Specification
|
||||
|
||||
c-entron ERP-Suite (Reverse Requirements Engineering, statische Analyse).
|
||||
Referenzrahmen: ISO/IEC/IEEE 29148:2018. Sprache: Deutsch; technische Bezeichner original.
|
||||
|
||||
**Identifizierte Akteure (aus Code, Rechte-Doku und UI-Ressourcen abgeleitet):**
|
||||
Innendienst/Vertrieb, Servicetechniker, Helpdesk-Mitarbeiter, Buchhaltung, Einkäufer,
|
||||
Lagermitarbeiter, Administrator, Geschäftsführung/Controlling, Endkunde (Web-Account),
|
||||
Mandant/Filiale als Organisationseinheiten, externe Systeme (Distributoren, FiBu, Banken).
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
ID: StRS-001
|
||||
Titel: Durchgängige Auftragsabwicklung über Belegkette
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Innendienst/Vertrieb
|
||||
Vorbedingung: Kunde und Artikel sind als Stammdaten angelegt.
|
||||
Fakt: Die Codebasis führt die Belegarten Angebot, Auftrag, Lieferschein, Rechnung, Gutschrift, Abholschein und Vertrag als eigenständige, gemeinsam verankerte Belegtypen (ReceiptBase-Hierarchie, Tabellen AngKopf/AufKopf/LiefKopf/RechKopf/GutKopf/AbholKopf/VertragKopf).
|
||||
Aussage: Das System soll den Vertriebsprozess vom Angebot über Auftrag und Lieferung bis zur Rechnung/Gutschrift als zusammenhängende Belegkette unterstützen.
|
||||
Ergebnis: Ein Geschäftsvorfall ist über alle Belegstufen dokumentiert und nachvollziehbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs (abstrakte Basisklasse, abstrakte Methode ReceiptKind) – Begründung: gemeinsame Belegbasis aller Belegarten ist im Code verankert.
|
||||
- [SEKUNDÄR] docs/reference/receipts/receipts-backend-architecture.md (Tabelle „Receipt Types Hierarchy") – Begründung: Entwicklerdokumentation benennt alle Belegarten und ihre DB-Tabellen.
|
||||
Prüfidee: Für einen Testkunden Angebot→Auftrag→Lieferschein→Rechnung erzeugen; jede Stufe referenziert die Vorstufe.
|
||||
Tracelinks: SyRS-010, SyRS-011, SyRS-012
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Kernprozess jedes ERP-Systems.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-002
|
||||
Titel: Automatisierte wiederkehrende Vertragsabrechnung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Buchhaltung
|
||||
Vorbedingung: Verträge mit Abrechnungsintervall und Positionen existieren.
|
||||
Fakt: AutomaticFacturaBL/AutomaticFacturaBL.Contracts.cs implementieren Suche abrechenbarer Verträge (SearchBillingContracts), Intervallfortschreibung (SetNextBillingDate, NextDate) und Rechnungszuordnung (StoreInvoiceToContract) inkl. Normalisierungskoeffizienten (MonthNormalizeCoefficient u. a.).
|
||||
Aussage: Das System soll wiederkehrende Leistungen (Wartung, Miete, Kontingente, Klickzähler) aus Verträgen automatisiert und periodengerecht in Rechnungen überführen.
|
||||
Ergebnis: Zum Stichtag fällige Verträge sind fakturiert; das nächste Abrechnungsdatum ist fortgeschrieben.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs, Methoden SearchBillingContracts / SetNextBillingDate / StoreInvoiceToContract – Begründung: durchsetzende Abrechnungslogik (Auswahl fälliger Verträge, Fortschreibung, Rechnungszuordnung).
|
||||
- [SEKUNDÄR] docs/reference/receipts/contracts-backend.md (Billing Configuration: BillingIntervalKind, AutomatedBilling) – Begründung: dokumentiert die fachlichen Abrechnungsparameter am Vertrag.
|
||||
Prüfidee: Vertrag mit Monatsintervall anlegen, Abrechnungslauf zum Stichtag ausführen; genau eine Rechnung entsteht, LastInvoiceDate/nächstes Datum korrekt fortgeschrieben.
|
||||
Tracelinks: SyRS-020
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – zentrales Umsatzmodell (MSP/Servicevertrieb) der Zielgruppe.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-003
|
||||
Titel: Forderungsmanagement mit Mahnwesen und offenen Posten
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Buchhaltung
|
||||
Vorbedingung: Rechnungen mit Fälligkeit sind gebucht.
|
||||
Fakt: DunningRunBL führt Mahnläufe mit drei Mahnstufen (DunningLevel.Level1–Level3) und fortlaufender Mahnlaufnummer aus; DunningBL kennt Mahnstopp (DunningStop, DunningStopBegin/End); OposBL/OposRunBL verwalten offene Posten.
|
||||
Aussage: Das System soll überfällige Forderungen erkennen, in bis zu drei Mahnstufen anmahnen (Druck oder E-Mail) und offene Posten auswerten; einzelne Kunden/Rechnungen sollen vom Mahnlauf ausgenommen werden können (Mahnstopp).
|
||||
Ergebnis: Mahnungen sind erzeugt und dokumentiert; Mahnstufen der Rechnungen sind fortgeschrieben.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs, Methode UpdateInvoice (switch über DunningLevel None→1→2→3) – Begründung: durchgesetzte Mahnstufenlogik.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs, Methode SetDunningStop (setzt DunningStop/Begin/End am AccountCustomer) – Begründung: durchgesetzter Mahnstopp.
|
||||
Prüfidee: Überfällige Rechnung dreimal anmahnen; vierte Mahnung wird abgelehnt (ArgumentOutOfRangeException-Pfad), Mahnstopp verhindert Aufnahme in den Lauf.
|
||||
Tracelinks: SyRS-021, SyRS-022
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – gesetzlich/kaufmännisch erforderliches Forderungsmanagement.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-004
|
||||
Titel: SEPA-Zahlungsverkehr für Lastschriften
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Buchhaltung
|
||||
Vorbedingung: Rechnungen mit Lastschrift-Zahlungsart und Bankverbindung/Mandat liegen vor.
|
||||
Fakt: PaymentTransactionBL exportiert Rechnungen als SEPA-Lastschriftdateien in den Formatvarianten Sepa0080101/0080302/0080102/00800102GBIC3/00800108GBIC4 (enum PaymentTransactionInterface) und markiert exportierte Rechnungen (SetInvoicesAsExported).
|
||||
Aussage: Das System soll fällige Lastschriften als bankfähige SEPA-XML-Dateien exportieren und den Exportstatus je Rechnung nachhalten.
|
||||
Ergebnis: Eine SEPA-Datei je Lauf; exportierte Rechnungen sind gekennzeichnet und können zurückgesetzt werden.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs, Methoden ExportInvoices / SetInvoicesAsExported / ResetInvoiceExportedFlag – Begründung: durchsetzende Exportlogik inkl. Statusführung.
|
||||
- [PRIMÄR] src/backend/Centron.Interfaces/DataExchange/PaymentTransactions/PaymentTransactionInterface.cs (enum mit pain.008-Varianten) – Begründung: implementierte Formatvarianten.
|
||||
Prüfidee: Export mit zwei Testrechnungen ausführen; XML validiert gegen pain.008-Schema, erneuter Lauf enthält die Rechnungen nicht mehr.
|
||||
Tracelinks: SyRS-023
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Zahlungsabwicklung ist Pflicht; Formatversionen im Zielsystem aktualisieren.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-005
|
||||
Titel: Übergabe an die Finanzbuchhaltung
|
||||
Ebene: StRS
|
||||
Typ: Schnittstelle
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Buchhaltung; externes FiBu-System (u. a. DATEV, Abacus)
|
||||
Vorbedingung: Belege bzw. Stammdaten sind freigegeben/abgeschlossen.
|
||||
Fakt: BookKeepingExportBL exportiert Kunden-/Lieferantenstammdaten, Kunden-/Lieferantenbelege und Kassenbuch (enum BookKeepingExportKind) mit Übergabehistorie (GetBookKeepingExport*History) und Doppel-Export-Schutz (IsReceiptExported); zahlreiche DATEV-Einstellungen existieren (ApplicationSettingID.Datev*).
|
||||
Aussage: Das System soll Debitoren/Kreditoren, Buchungsdaten der Belege und Kassenbuchdaten an Finanzbuchhaltungssysteme übergeben, Übergaben protokollieren und Doppelübergaben verhindern.
|
||||
Ergebnis: Exportdateien im Zielformat; Historie der Übergaben ist einsehbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/DataExchange/BookKeeping/BookKeepingExportBL.cs, Methoden IsReceiptExported / GetReceiptsBookingdataExportFile / GetCustomerDataExportFile – Begründung: durchsetzende Export- und Schutzlogik.
|
||||
- [SEKUNDÄR] src/backend/Centron.Interfaces/Administration/Settings/ApplicationSettingID.cs (DatevOnlineSavePath, DatevFolderForInvoice u. a.) – Begründung: Konfigurationsschalter belegen DATEV-Integration.
|
||||
Prüfidee: Abgeschlossene Rechnung exportieren; zweiter Exportversuch wird als bereits exportiert erkannt.
|
||||
Tracelinks: SyRS-024
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Kernanforderung im deutschen Markt (DATEV-Anbindung).
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-006
|
||||
Titel: Kassenführung in Filialen
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Filialmitarbeiter, Buchhaltung
|
||||
Vorbedingung: Kassenbuch je Filiale eingerichtet.
|
||||
Fakt: Sales/CashBooks enthält CashBookBL, CashBookBookingBL, CashBookRecordBL mit Buchungen, Löschregeln und Verknüpfung zu Belegen; Kassenbuchdaten sind Teil des FiBu-Exports (BookKeepingExportKind.Cashbook).
|
||||
Aussage: Das System soll Barbewegungen je Kasse als Kassenbuch führen und in die Buchhaltung überleiten.
|
||||
Ergebnis: Kassenbuchungen sind erfasst, mit Belegen verknüpft und exportierbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/CashBooks/CashBookBookingBL.cs, Methoden DeleteCashBookBooking / GetCashBookBookingsFromAsset – Begründung: implementierte Kassenbuchlogik mit Belegbezug.
|
||||
Prüfidee: Kassenbuchung zu einem Beleg anlegen und im FiBu-Export „Cashbook" wiederfinden.
|
||||
Tracelinks: SyRS-024
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – für Filialbetriebe mit Barverkauf erforderlich.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-007
|
||||
Titel: Serviceticket-Management mit abrechenbarer Zeiterfassung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Helpdesk-Mitarbeiter, Servicetechniker, Serviceleitung
|
||||
Vorbedingung: Kunde existiert; Ticketstammdaten (Typen, Status, Prioritäten, Kategorien) sind gepflegt.
|
||||
Fakt: Sales/Support enthält >50 BL-Klassen für Tickets (HelpdeskBL, HelpdeskStatusBL, HelpdeskCloseBL, HelpdeskHistoryBL, Escalation, HelpdeskTimer*); Zeiten können signiert (HelpdeskTimerSignatureBL) und Artikeln/Belegen zugeordnet werden (HelpdeskTimerArticleBookingBL); Rechte-Doku CentronRights.md beschreibt Zeiten-Verschiebung nur, solange das Ticket nicht Teil eines Belegs ist.
|
||||
Aussage: Das System soll Kundenanfragen als Tickets mit Status, Kategorien, Prioritäten, Historie und Eskalation verwalten; erfasste Arbeitszeiten sollen vom Kunden signierbar und in die Fakturierung überführbar sein.
|
||||
Ergebnis: Tickets sind lückenlos dokumentiert; geleistete Zeiten fließen in Belege ein.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs, Methode CloseHelpdesk (setzt HelpdeskState=closed, ClosedAt, erzeugt Historie/Aktivität) – Begründung: durchgesetzter Ticket-Abschlussprozess.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Support/HelpdeskTimerSignatureBL.cs, Methoden AddSignature / SignMultipleTimers / RemoveSignatureFromTime – Begründung: implementierte Signaturfunktion auf Zeiteinträgen.
|
||||
- [KONTEXT] CentronRights.md Abschnitt 8/9 („nur wenn das Ticket nicht Teil eines Belegs ist") – Begründung: bestätigt die Kopplung Zeiterfassung↔Beleg.
|
||||
Prüfidee: Ticket mit Zeiteintrag anlegen, signieren, abrechnen; danach ist Verschieben/Löschen des Zeiteintrags gesperrt.
|
||||
Tracelinks: SyRS-030, SyRS-031, SyRS-032
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Kern des Servicegeschäfts (Systemhaus/MSP).
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-008
|
||||
Titel: Zentrale Kunden- und Kontaktverwaltung (CRM)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Vertrieb, Innendienst, Service
|
||||
Vorbedingung: –
|
||||
Fakt: Parallel existieren der Alt-Kundenstamm (Tabellen Kunden/Anschrif/Personen, Sales/Customers) und der neue Konten-/Adressstamm (Accounts, AccountAddress, AccountAddressContact in Centron.BL/Accounts) mit Kunden-/Lieferantenrollen (AccountCustomers/AccountSuppliers).
|
||||
Aussage: Das System soll Geschäftspartner mit Adressen, Ansprechpartnern, Rollen (Kunde/Lieferant), Branchen, Interessen und Aktivitäten zentral verwalten.
|
||||
Ergebnis: Ein Geschäftspartner ist einheitlich auffindbar und in allen Prozessen referenzierbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Accounts/AccountBL.cs, Methoden GetAccount / CreateNewAccountTypeForAccount – Begründung: implementierter vereinheitlichter Kontenstamm.
|
||||
- [PRIMÄR] SSMS_DB_SCHEMA.sql, CREATE TABLE Accounts / AccountCustomers / AccountSuppliers / Kunden – Begründung: beide Datenhaltungen existieren im Schema.
|
||||
Prüfidee: Konto mit Kunden- und Lieferantenrolle anlegen; beide Rollen in Verkauf und Einkauf nutzbar.
|
||||
Tracelinks: SyRS-040
|
||||
Konsolidierung: Kandidat: Alt-Kundenstamm (Kunden/Anschrif/Personen) und Accounts-Stamm bilden denselben fachlichen Gegenstand ab und sollen im Zielsystem zu einem Partnerstamm zusammengeführt werden.
|
||||
Übernahmewürdigkeit: übernehmen – Stammdatenbasis aller Prozesse; Zusammenführung der Doppelstruktur nötig.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-009
|
||||
Titel: Einkauf mit elektronischer Distributorenanbindung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Einkäufer; Distributoren (ALSO, Alltron, Herweck, Komsa, ITscope, EGIS u. a.)
|
||||
Vorbedingung: Lieferant mit EDI-Konfiguration vorhanden.
|
||||
Fakt: EDIDispatcherBL erzeugt/überträgt Bestellungen elektronisch (CreateEDISuggestionOrderAsync, EdiEgisOrderUploadAsync, EdiItScopeOrderUploadAsync, EdiConcertoOrderUploadAsync); docs/reference/edi beschreibt Verarbeitung von Bestellantworten, Lieferavisen und Rechnungen je Lieferant.
|
||||
Aussage: Das System soll Bestellungen elektronisch an Distributoren übertragen und deren Rückmeldungen (Auftragsbestätigung, Lieferavis, Rechnung) automatisiert verarbeiten.
|
||||
Ergebnis: Bestellprozesse laufen ohne manuelle Doppelerfassung; EDI-Vorgänge sind protokolliert (EDILogBL).
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/EDI/EDIDispatcherBL.cs, Methoden EdiEgisOrderUploadAsync / EdiItScopeOrderUploadAsync – Begründung: durchsetzende Übertragungslogik.
|
||||
- [SEKUNDÄR] docs/reference/edi/edi-architecture.md (SupplierEdiBL-Partialklassen je Distributor) – Begründung: dokumentiert die unterstützten Distributoren und Belegflüsse.
|
||||
Prüfidee: Testbestellung im OpenTrans-2.1-Format erzeugen und gegen Schema prüfen.
|
||||
Tracelinks: SyRS-050
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – zentrale Effizienzfunktion für IT-Handel.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-010
|
||||
Titel: Lager- und Bestandsführung mit Inventur
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Lagermitarbeiter
|
||||
Vorbedingung: Läger und Artikel sind angelegt.
|
||||
Fakt: StockBL verwaltet Läger inkl. Filialzuordnung und Umbuchungsprotokoll (WriteStockRebookLog); StorageBL/InventoryArticlePool implementieren Inventur (AddInventory, RefreshInv) mit Transaktionssteuerung.
|
||||
Aussage: Das System soll Bestände je Lager führen, Umbuchungen protokollieren und Inventuren mit Bestandsabgleich unterstützen.
|
||||
Ergebnis: Bestände sind je Lager korrekt; Umbuchungen und Inventuren sind nachvollziehbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Logistics/Warehousing/StockBL.cs, Methode WriteStockRebookLog – Begründung: durchgesetzte Protokollierung von Lagerumbuchungen.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Storage/StorageBL.cs, Methoden AddInventory / StartTransaction / CommitTransaction – Begründung: implementierte Inventurlogik.
|
||||
Prüfidee: Umbuchung zwischen zwei Lägern erzeugen; RebookLog-Eintrag vorhanden; Inventur ändert Bestand nachvollziehbar.
|
||||
Tracelinks: SyRS-051, SyRS-052
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Grundfunktion Warenwirtschaft.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-011
|
||||
Titel: Artikelstamm mit differenzierter Preisfindung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Produktmanagement, Vertrieb
|
||||
Vorbedingung: –
|
||||
Fakt: Warehousing enthält ArticleBL mit Spezialartikeln (Fracht-, Kundenrabatt-, Kontingentausgleichsartikel), ActionPriceBL (Aktionspreise), ArticleVolumePricesBL (Staffelpreise), CustomerSpecialArticleBL (kundenspezifische Sonderpreise); ReceiptPriceHelperBL berechnet Positions- und Belegpreise inkl. MwSt., Rabatt und Währungsfaktor.
|
||||
Aussage: Das System soll Artikel mit Einkaufs-/Verkaufspreisen führen und bei der Belegerstellung die Preisfindung aus Listenpreis, Aktionspreis, Staffelpreis und kundenindividuellem Sonderpreis anwenden.
|
||||
Ergebnis: Belegpositionen erhalten nachvollziehbar den korrekten Preis inkl. Steuer.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/ReceiptPriceHelperBL.cs, Methoden CalculateReceiptItemPrices / CalculateReceiptVatPrices – Begründung: durchsetzende Preis-/Steuerberechnung.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Warehousing/ActionPriceBL.cs, ArticleVolumePricesBL.cs – Begründung: implementierte Preisarten.
|
||||
Prüfidee: Artikel mit Listen-, Aktions- und Sonderpreis anlegen; Belegposition zieht die dokumentierte Priorität.
|
||||
Tracelinks: SyRS-014, SyRS-053
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Kern der Warenwirtschaft.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-012
|
||||
Titel: Rollen- und rechtebasierter Zugriffsschutz
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Administrator, Geschäftsführung/Compliance
|
||||
Vorbedingung: Benutzer, Gruppen und Rechte sind gepflegt.
|
||||
Fakt: Rechte werden über Gruppen zugewiesen (SQL-Join Sichtrus→Sichmemb in AppRightsBL.CheckRightsFromUser); es existieren einschränkende Rechte („nur eigene", „nur eigene Filiale") laut CentronRights.md und deren Durchsetzung z. B. in HelpdeskBL (ShowHelpdeskRight.OnlyOwn/OnlyOwnBranch).
|
||||
Aussage: Das System soll jede fachliche Funktion über ein feingranulares Rechtesystem (Benutzer→Gruppen→Rechte) schützen, einschließlich einschränkender Rechte auf eigene Datensätze bzw. die eigene Filiale.
|
||||
Ergebnis: Benutzer sehen und bearbeiten nur Daten, für die ihnen Rechte zugewiesen sind.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs, Methode CheckRightsFromUser (SQL über dbo.Sichtrus/dbo.Sichmemb) – Begründung: durchsetzende Rechteprüfung.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Zeilen 269–291 (Auswertung SHOW_HELPDESK_ONLY_OWN / _ONLY_OWN_BRANCH) – Begründung: durchgesetzte einschränkende Rechte.
|
||||
- [SEKUNDÄR] CentronRights.md – Begründung: fachliche Beschreibung der Rechte inkl. Restriktionssemantik.
|
||||
Prüfidee: Benutzer nur mit SHOW_HELPDESK_ONLY_OWN sieht ausschließlich Tickets, bei denen er Bearbeiter/Verantwortlicher ist.
|
||||
Tracelinks: SyRS-001, SyRS-004, SyRS-005
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Compliance-Grundanforderung.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-013
|
||||
Titel: Kontrollierte Benutzeranmeldung mit Mehrfaktor-Option
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Benutzer; Administrator
|
||||
Vorbedingung: Benutzerkonto existiert und ist aktiv.
|
||||
Fakt: Authentifizierung erfolgt wahlweise per Benutzername/Passwort (BasicAuthenticator), Active Directory, OpenID Connect/Entra ID oder Web-Account (AuthenticatorFactory-Varianten); deaktivierte Konten und Austrittsdaten verhindern die Anmeldung (Authenticator.ValidateAppUser); optional wird ein zweiter Faktor per RADIUS oder E-Mail-Link verlangt (TwoFactorAuthBL).
|
||||
Aussage: Das System soll Benutzer sicher authentifizieren, deaktivierte oder ausgeschiedene Mitarbeiter abweisen und optional eine Zwei-Faktor-Authentifizierung mit konfigurierbarer Gültigkeitsdauer je Gerät erzwingen.
|
||||
Ergebnis: Nur berechtigte, aktive Benutzer erhalten eine Sitzung.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs, Methode ValidateAppUser (Prüfung IsAccountDisabled, AccountDisabledFrom/ToDate, IsActiveEmployeeCompact) – Begründung: durchsetzende Kontoprüfung.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs, Methode HasToValidateTwoFactor – Begründung: durchgesetzte 2FA-Pflichtlogik.
|
||||
Prüfidee: Anmeldeversuch mit deaktiviertem Konto → Fehlermeldung „Mitarbeiterkonto wurde deaktiviert"; 2FA-Pflicht nach Ablauf der Gültigkeitsdauer.
|
||||
Tracelinks: SyRS-001, SyRS-002, SyRS-003
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Sicherheitsgrundanforderung; Passwort-Hashing im Zielsystem modernisieren (siehe SwRS-Sicherheit).
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-014
|
||||
Titel: Lizenzbasierte Nutzungssteuerung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Hersteller (c-entron Software), Administrator
|
||||
Vorbedingung: Lizenzdatei/Lizenzserver verfügbar.
|
||||
Fakt: LicenseManager.CheckLicense prüft je Anwendung Lizenz-GUID, Versionsbeschränkung und maximale gleichzeitige Nutzung (Ticketanzahl >= Lizenzanzahl → „Die maximale Anzahl an Lizenzen wurde erreicht.").
|
||||
Aussage: Das System soll den Zugang je Anwendung/Modul an Lizenzen binden und die Anzahl gleichzeitiger Anmeldungen auf die lizenzierte Menge begrenzen.
|
||||
Ergebnis: Anmeldung über Lizenzgrenze hinaus wird abgewiesen.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs, Methode CheckLicense (Vergleich currentlyUsedLicenses >= maxNumberOfLicenses) – Begründung: durchsetzende Lizenzprüfung.
|
||||
Prüfidee: Bei Lizenzanzahl n meldet sich Benutzer n+1 an → Fehlermeldung Lizenzmaximum.
|
||||
Tracelinks: SyRS-006
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: Sonderfall – herstellerseitiges Geschäftsmodell; im SaaS-Zielsystem durch Abo-/Mandantenmodell zu ersetzen.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-015
|
||||
Titel: Kundenselbstbedienung über Webportal
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Endkunde (Web-Account)
|
||||
Vorbedingung: Web-Account für Kundenkontakt existiert und ist aktiv.
|
||||
Fakt: CentronNexus enthält WebCart (Shop auf Basis Kunden-Sonderpreisen laut README), WebOffer, SelfCare-Formulare und Ticketfunktionen; Warenkörbe durchlaufen ein Freigabewesen (ReceiptCartReleaseSystemBL, nur Web-Account-Logins: Guard „Only web-account logins ready carts for check").
|
||||
Aussage: Das System soll Endkunden ein Webportal bieten, in dem sie Artikel zu vereinbarten Preisen bestellen, Angebote einsehen, Formulare ausfüllen und Tickets verfolgen können; Bestellungen sollen kundenseitig einem Prüf-/Freigabeprozess unterliegen können.
|
||||
Ergebnis: Kundenbestellungen erreichen den Innendienst strukturiert und freigegeben.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/ReceiptCartReleaseSystemBL.cs, Methode ReadyCartForCheck – Begründung: durchgesetzter Freigabeprozess für Web-Warenkörbe.
|
||||
- [KONTEXT] README.md Abschnitt „WebCart" – Begründung: beschreibt Zweck (Kunden der Kunden) und Preisquelle Sonderpreise.
|
||||
Prüfidee: Web-Account legt Warenkorb an, Prüfer lehnt ab → Status DeclinedByChecker; nach Freigabe entsteht Bestellung.
|
||||
Tracelinks: SyRS-060, SyRS-061
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – strategisch für SaaS-Ziel (Self-Service).
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-016
|
||||
Titel: Auswertungen, Statistiken und Berichte
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Geschäftsführung/Controlling, Vertrieb, Serviceleitung
|
||||
Vorbedingung: Bewegungsdaten vorhanden.
|
||||
Fakt: Statistics enthält Umsatz-/Auftrags-/Ticket-/Vertrags-/MSP-Statistiken; ReportEngine verwaltet FastReport-Berichte in Gruppen mit Standardberichten je Ausgabeart (ReportGroupBL, ReportDataDefault Type Mail/Print, z. B. Gruppe MAHNUNG).
|
||||
Aussage: Das System soll betriebliche Kennzahlen (Umsätze, Aufträge, Tickets, Verträge) auswerten und Druck-/Mailberichte über konfigurierbare Berichtsvorlagen erzeugen.
|
||||
Ergebnis: Auswertungen und Belegdrucke stehen rollengerecht zur Verfügung.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs, Methode GenerateReport (ReportGroupConstants.MAHNUNG, Defaults je SendType) – Begründung: durchgesetzte Berichtsauswahl je Ausgabekanal.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Statistics (Ordnerstruktur mit SaleStatistics, TicketStatistics, ContractStatistics, MspStatistics) – Begründung: implementierte Statistikbereiche.
|
||||
Prüfidee: Mahnlauf mit SendType Mail nutzt den Mail-Standardbericht der Gruppe „Mahnung".
|
||||
Tracelinks: SyRS-070, SyRS-071
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Steuerungsrelevanz; Berichtstechnologie im Ziel neu wählbar.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-017
|
||||
Titel: Interne Zusammenarbeit und Selbstorganisation
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Mitarbeiter
|
||||
Vorbedingung: –
|
||||
Fakt: Es existieren Kalender (CalendarBL, AppointmentRequests), ToDo (ToDoBL), Chat (ChatBL mit Gruppen/Nachrichten), MyDay-Arbeitsvorrat (MyDayBL), Benachrichtigungen (UserNotificationBL, NotificationsHubHelper) und ein interner SocialMedia-Feed (SocialMediaBL mit Kommentaren/Likes/Abos).
|
||||
Aussage: Das System soll Mitarbeitern Kalender, Aufgaben, Chat, persönliche Tagesübersicht und Benachrichtigungen als integrierte Werkzeuge der Zusammenarbeit bereitstellen.
|
||||
Ergebnis: Termine, Aufgaben und Informationen sind ohne Systemwechsel verfügbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Chats/ChatBL.cs (CreateChat, SendChatMessage, EditChatMessage) – Begründung: implementierte Chat-Funktionen.
|
||||
- [PRIMÄR] src/backend/Centron.BL/MyDay/MyDayBL.cs (SaveOrUpdateWorkItem, GetEmployeeSelection) – Begründung: implementierter Arbeitsvorrat.
|
||||
Prüfidee: Chatnachricht senden/ändern/löschen; MyDay-Eintrag anlegen und in der Tagesansicht sehen.
|
||||
Tracelinks: SyRS-080
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Kollaborationsfunktionen; Chat ggf. durch Standardtools ersetzbar (Bewertung im Ziel).
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-018
|
||||
Titel: Integrierte E-Mail-Verarbeitung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Innendienst, Helpdesk; E-Mail-Infrastruktur
|
||||
Vorbedingung: Mailkonten sind konfiguriert.
|
||||
Fakt: Mail-BL verwaltet Konten/Signaturen/Vorlagen; MailScannerBL verarbeitet Postfächer über Workflows/Profile mit Protokoll (MailScannerLog); Outlook-AddIn (CentronNexus.OutlookAddIn) koppelt Outlook an c-entron; Ticket-Mailversand über HelpdeskSendMailBL.
|
||||
Aussage: Das System soll E-Mails senden (mit Vorlagen/Signaturen), eingehende Postfächer regelbasiert verarbeiten (u. a. automatische Ticketerzeugung) und sich in Outlook integrieren.
|
||||
Ergebnis: Kundenkommunikation ist am Vorgang dokumentiert; eingehende Mails erzeugen Vorgänge.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/MailScanner/MailScannerBL.cs (GetWorkflows, SaveProfile, SaveMailScannerLog) – Begründung: implementierte regelbasierte Mailverarbeitung.
|
||||
- [SEKUNDÄR] docs/features/automatic-helpdesk-creation-templates.md – Begründung: dokumentiert automatische Ticketerzeugung aus Mails.
|
||||
Prüfidee: Eingehende Mail auf überwachtem Postfach erzeugt gemäß Workflow ein Ticket mit Protokolleintrag.
|
||||
Tracelinks: SyRS-081, SyRS-082
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – zentraler Kommunikationskanal.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-019
|
||||
Titel: Verwaltung von Kundengeräten und Managed Services
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Servicetechniker, MSP-Betrieb; RMM-Systeme, docuFORM
|
||||
Vorbedingung: Kundengeräte sind erfasst oder werden automatisch erkannt.
|
||||
Fakt: AccountDeviceBL verwaltet Kundengeräte mit Log; AssetManagement*-Tabellen (u. a. AssetManagementDevices, AssetManagementSnmp*) und RMM-/docuFORM-Anbindungen liefern Gerätedaten; Verträge führen Gerätelisten (MasterDataLists) mit Klickzählern (AutomaticFacturaBL.Contracts: Counter-Funktionen), MspCollectorsBL sammelt MSP-Mengen.
|
||||
Aussage: Das System soll die beim Kunden betriebenen Geräte inkl. automatisch erhobener Daten (RMM, Zählerstände) verwalten und als Abrechnungsgrundlage für Serviceverträge nutzen.
|
||||
Ergebnis: Gerätebestand aktuell; verbrauchsabhängige Abrechnung möglich.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Devices/AccountDeviceBL.cs (SaveAccountDevice, WriteAccountDeviceLog) – Begründung: implementierte Geräteverwaltung mit Protokoll.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs (StoreCounterState, GetCurrentCounterState, UpdClickCounterHistory) – Begründung: durchgesetzte Zähler-Abrechnungslogik.
|
||||
Prüfidee: Zählerstand importieren; Vertragsabrechnung berechnet Klicks über Freimenge korrekt.
|
||||
Tracelinks: SyRS-020, SyRS-090
|
||||
Konsolidierung: Kandidat: Gerätedaten liegen mehrfach vor (AccountDevices, AssetManagementDevices, Vertrags-Stammdatenlisten) – im Zielsystem zu einem Gerätekonzept zusammenführen.
|
||||
Übernahmewürdigkeit: übernehmen – MSP-Geschäftsmodell.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-020
|
||||
Titel: Projekte und Produktionsaufträge
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Projektleiter, Fertigung/Technik
|
||||
Vorbedingung: –
|
||||
Fakt: ProjectBL liefert Projektlisten; TicketProjects bündelt Tickets mit Aufgaben/Abhängigkeiten; ProductionOrderBL verwaltet Fertigungsaufträge mit Positionen und Log; CrmProjects bilden Vertriebsprojekte ab; Nexus enthält ProductionOrderManagement.
|
||||
Aussage: Das System soll projektbezogenes Arbeiten (Vertriebs-, Ticket- und Fertigungsprojekte) mit Aufgaben, Abhängigkeiten und Protokollen unterstützen.
|
||||
Ergebnis: Projektfortschritt und Fertigungsstatus sind nachvollziehbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Production/ProductionOrderBL.cs (SaveProductionOrder, SaveProductionOrderLog) – Begründung: implementierte Fertigungsauftragsverwaltung.
|
||||
- [PRIMÄR] src/backend/Centron.BL/TicketProjects/TicketProjectBL.cs (SaveOrUpdateTicketProject, SaveOrUpdateTicketProjectDependency) – Begründung: implementierte Ticketprojekte mit Abhängigkeiten.
|
||||
Prüfidee: Fertigungsauftrag mit zwei Positionen anlegen; Statuswechsel wird im Log protokolliert.
|
||||
Tracelinks: SyRS-091, SyRS-092
|
||||
Konsolidierung: Kandidat: Projektbegriffe (Project, CrmProject, TicketProject, ProjectNumber am Beleg) sind getrennt implementiert – im Zielsystem vereinheitlichen.
|
||||
Übernahmewürdigkeit: übernehmen – verbreitetes Arbeitsmodell der Zielkunden.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-021
|
||||
Titel: Reklamations-/RMA-Abwicklung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Service, Lager; Lieferant
|
||||
Vorbedingung: Gerät/Artikel mit Kaufbezug vorhanden.
|
||||
Fakt: RmaBL verwaltet RMA-Vorgänge mit Artikeln, Historie und Versandarten (RmaSendKindBL); RMA kann aus einem Ticket entstehen (GetRmaByHelpdeskI3D); UI-Modul Rma existiert.
|
||||
Aussage: Das System soll Rücksendungen/Reklamationen als RMA-Vorgänge mit Artikeln, Historie und Bezug zu Tickets abwickeln.
|
||||
Ergebnis: RMA-Vorgänge sind durchgängig dokumentiert.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/CustomerArea/RmaBL.cs (SaveRma, GetRmaByHelpdeskI3D, CreateNewRmaArticle) – Begründung: implementierte RMA-Verwaltung mit Ticketbezug.
|
||||
Prüfidee: RMA aus Ticket erzeugen; Artikelhistorie zeigt den Vorgang.
|
||||
Tracelinks: SyRS-093
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Standardprozess im Hardwaregeschäft.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-022
|
||||
Titel: Datenschutz und Datensicherheit (DSGVO)
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Datenschutzbeauftragter, Administrator
|
||||
Vorbedingung: –
|
||||
Fakt: Es existieren DsgvoWebServiceBL (Administration/Documents/Dsgvo), der Ordner Administration/DataSecurity sowie ein Zugriffs-/Änderungsprotokoll für gespeicherte Kundenpasswörter (PasswordManagementAccessLogBL, PasswordManagementLogBL).
|
||||
Aussage: Das System soll Datenschutzprozesse unterstützen (DSGVO-Dokumente) und Zugriffe auf besonders schützenswerte Daten protokollieren.
|
||||
Ergebnis: Nachweisbare Datenschutz-Dokumentation und Zugriffsprotokolle.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/PasswordManagementArea/PasswordManagementAccessLogBL.cs – Begründung: implementiertes Zugriffsprotokoll auf Passwörter.
|
||||
- [SEKUNDÄR] src/backend/Centron.BL/WebServices/Administration/Documents/Dsgvo/DsgvoWebServiceBL.cs (Dateiname/Klasse) – Begründung: DSGVO-Funktionsbereich existiert.
|
||||
Prüfidee: Abruf eines gespeicherten Passworts erzeugt einen AccessLog-Eintrag mit Benutzer und Zeit.
|
||||
Tracelinks: SyRS-100, SyRS-101
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – gesetzliche Anforderung.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-023
|
||||
Titel: Revisionsfähigkeit durch Historien und Belegversionen
|
||||
Ebene: StRS
|
||||
Typ: nicht-funktional
|
||||
Qualitätsmerkmal: Zuverlässigkeit (Nachvollziehbarkeit/Auditierbarkeit)
|
||||
Akteur: Geschäftsführung, Wirtschaftsprüfer
|
||||
Vorbedingung: –
|
||||
Fakt: Jede Belegänderung wird als vollständige Kopie in *KopfVersions/*PosVersions-Tabellen versioniert (docs receipts-backend-architecture, AssetHeadDAO.SaveAssetVersion); ChangeTrackingEventListener schreibt feldgenaue ChangeLog-Einträge; Belege tragen Audit-Felder (CreatedBy/ChangedBy/At); Tickets führen Historie (HelpdeskHistoryBL).
|
||||
Aussage: Das System soll Änderungen an Belegen und wesentlichen Objekten versioniert bzw. feldgenau protokollieren, sodass frühere Zustände nachvollziehbar sind.
|
||||
Ergebnis: Zu jedem Beleg sind alle historischen Versionen einsehbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.DAO/ChangeTracking/ChangeTrackingEventListener.cs, Methode OnPreUpdate (erzeugt ChangeLog bei Feldänderung) – Begründung: durchgesetztes feldgenaues Änderungsprotokoll.
|
||||
- [PRIMÄR] SSMS_DB_SCHEMA.sql, Tabellen RechKopfVersions/RechPosVersions u. a. – Begründung: Versionstabellen existieren im Schema.
|
||||
- [SEKUNDÄR] docs/reference/receipts/receipts-backend-architecture.md (Version Tables 1:1) – Begründung: dokumentierter Versionierungsmechanismus.
|
||||
Prüfidee: Rechnung zweimal ändern; zwei Versionssätze in RechKopfVersions, ChangeLog enthält Feldänderungen.
|
||||
Tracelinks: SyRS-015, SyRS-102
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – GoBD-/Audit-Anforderung.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-024
|
||||
Titel: Mandanten- und Filialfähigkeit
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Geschäftsführung, Administrator
|
||||
Vorbedingung: –
|
||||
Fakt: MandatorBL und BranchBL existieren; Belege tragen BranchI3D mit Herkunftslogik (ReceiptBL.GetBranchForNewReceipt nach BranchOrigin Creator/Adviser2); Nummernkreise, Läger, Rechte („nur eigene Filiale") und Erlöskonten (BranchRevenueAndExpenseAccountBL) sind filialbezogen.
|
||||
Aussage: Das System soll mehrere Mandanten und Filialen abbilden; Belege, Nummernkreise, Läger und Berechtigungen sollen filialbezogen steuerbar sein.
|
||||
Ergebnis: Filialen arbeiten getrennt mit eigenen Nummern/Lägern; übergreifende Auswertung bleibt möglich.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methoden GetBranchForNewReceipt / UpdateReceiptNumber (Nummernkreis je Branch) – Begründung: durchgesetzte Filialzuordnung.
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Company/BranchBL.cs, MandatorBL.cs – Begründung: implementierte Organisationsstämme.
|
||||
Prüfidee: Zwei Filialen mit eigenen Nummernkreisen; Belege erhalten filialspezifische Nummern.
|
||||
Tracelinks: SyRS-013, SyRS-110
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – im SaaS-Ziel als Mandanten-/Standortmodell.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-025
|
||||
Titel: Sichere Verwaltung von Kundenzugangsdaten
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Servicetechniker, Administrator
|
||||
Vorbedingung: Berechtigung auf den Passwortbereich.
|
||||
Fakt: PasswordManagementBL speichert Zugangsdaten mit Entschlüsselungsfunktion (GetDecryptedPassword) und getrennten Protokollen für Zugriffe (AccessLog) und Änderungen (Log); Typen/Schlagworte strukturieren die Einträge.
|
||||
Aussage: Das System soll Zugangsdaten zu Kundensystemen verschlüsselt speichern, den Zugriff berechtigungsabhängig gewähren und jeden Abruf protokollieren.
|
||||
Ergebnis: Zugangsdaten sind zentral, geschützt und auditierbar verfügbar.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/PasswordManagementArea/PasswordManagementBL.cs, Methode GetDecryptedPassword – Begründung: implementierte ver-/entschlüsselte Ablage.
|
||||
- [PRIMÄR] src/backend/Centron.BL/PasswordManagementArea/PasswordManagementAccessLogBL.cs – Begründung: durchgesetztes Zugriffsprotokoll.
|
||||
Prüfidee: Passwortabruf erzeugt AccessLog; Datenbankfeld enthält keinen Klartext.
|
||||
Tracelinks: SyRS-101
|
||||
Konsolidierung: Kandidat: PasswordManager (BL/PasswordManager) und PasswordManagementArea adressieren denselben Gegenstand – im Ziel ein Konzept.
|
||||
Übernahmewürdigkeit: übernehmen – sicherheitskritische Kernfunktion für Systemhäuser.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-026
|
||||
Titel: Telefonie-Integration am Arbeitsplatz
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Innendienst, Helpdesk; TK-Anlage (TAPI)
|
||||
Vorbedingung: TAPI-Treiber verfügbar und konfiguriert.
|
||||
Fakt: PhoneCallBL erzeugt/synchronisiert Anrufdatensätze und sucht Kontakte per Rufnummer (SearchContactPersonByPhoneNumberV2); assemblies/tapi und docs/reference/architecture/tapi.md existieren.
|
||||
Aussage: Das System soll ein- und ausgehende Telefonate erkennen, dem Anrufer Kunden/Kontakte zuordnen und Anrufe protokollieren.
|
||||
Ergebnis: Anrufbezogene Vorgangsbearbeitung ohne manuelle Suche.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Tapi/PhoneCallBL.cs (CreatePhoneCall, SearchContactPersonByPhoneNumberV2, SyncPhoneCalls) – Begründung: implementierte Telefonie-Logik.
|
||||
- [KONTEXT] docs/reference/architecture/tapi.md – Begründung: Architekturdokumentation der TAPI-Anbindung.
|
||||
Prüfidee: Simulierter Anruf mit bekannter Nummer öffnet den passenden Kontakt.
|
||||
Tracelinks: SyRS-083
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: Workaround – TAPI ist Windows-/Desktop-gebunden; im Web-Ziel durch CTI-/WebRTC-Ansatz zu ersetzen, fachliche Funktion bleibt.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-027
|
||||
Titel: Elektronische Rechnungsstellung (XRechnung/ZUGFeRD)
|
||||
Ebene: StRS
|
||||
Typ: Schnittstelle
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Buchhaltung; öffentliche/gewerbliche Rechnungsempfänger
|
||||
Vorbedingung: Rechnung ist fakturiert; Empfänger verlangt E-Rechnung.
|
||||
Fakt: Es existieren eine eigene ZUGFeRD-Implementierung (docs/guides/development/xrechnung.md: „instead of creating our own implementation"), Feldzuordnungsdokumente (docs/reference/zugferd-field-mapping.md, zugferd-feldzuordnung-anwender.md) und die österreichische ebInterface-API (src/apis/Centron.Api.EbInterface).
|
||||
Aussage: Das System soll Ausgangsrechnungen als strukturierte E-Rechnungen (ZUGFeRD/XRechnung, ebInterface für AT) erzeugen können.
|
||||
Ergebnis: Normkonforme E-Rechnungsdatei zur Rechnung.
|
||||
Belege:
|
||||
- [PRIMÄR] src/apis/Centron.Api.EbInterface (Projekt) – Begründung: implementierte E-Rechnungs-Schnittstelle ebInterface.
|
||||
- [SEKUNDÄR] docs/reference/zugferd-field-mapping.md – Begründung: dokumentierte Feldzuordnung der eigenen ZUGFeRD-Erzeugung.
|
||||
- [KONTEXT] docs/guides/development/xrechnung.md – Begründung: bestätigt eigene ZUGFeRD/XRechnung-Implementierung.
|
||||
Prüfidee: Erzeugte XRechnung mit KOSIT-Validator prüfen.
|
||||
Tracelinks: SyRS-025
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – gesetzliche Pflicht (B2G, ab 2025ff B2B-Empfangspflicht in DE).
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-028
|
||||
Titel: KI-gestützte Assistenzfunktionen
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Helpdesk-Mitarbeiter; KI-Dienste (OpenAI-kompatibel)
|
||||
Vorbedingung: KI-Anbindung konfiguriert und lizenziert.
|
||||
Fakt: ArtificialIntelligence enthält OpenAiApiClient, TicketCategoryApiClient, TextRatingApiClient, ChatModelApiClient; Nexus-ServiceBoard enthält TicketAiSummary; TelemetryBL erfasst KI-Toolnutzung.
|
||||
Aussage: Das System soll KI-Dienste für Ticket-Kategorisierung, Textbewertung und Ticket-Zusammenfassungen anbinden und deren Nutzung erfassen.
|
||||
Ergebnis: KI-Vorschläge in der Ticketbearbeitung; Nutzung ist ausgewertet.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/ArtificialIntelligence/TicketCategoryApiClient.cs, OpenAiApiClient.cs – Begründung: implementierte KI-Clients.
|
||||
- [PRIMÄR] src/nexus/CentronNexus/ServiceBoard/TicketAiSummary (Ordner) – Begründung: KI-Zusammenfassung im Webclient.
|
||||
Prüfidee: Ticket-Zusammenfassung im ServiceBoard abrufen; Telemetrie-Eintrag entsteht.
|
||||
Tracelinks: SyRS-120
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen – Differenzierungsmerkmal; Anbieterwahl im Ziel offen.
|
||||
Status: belegt
|
||||
```
|
||||
+1691
File diff suppressed because it is too large
Load Diff
+80
@@ -0,0 +1,80 @@
|
||||
# Messprotokoll – Versuch 01 (V1 Baseline) – Prompt-Version 02
|
||||
|
||||
> ## ⚠ FEHLMESSUNG – nicht für Auswertungen verwenden
|
||||
>
|
||||
> Der Lauf brach mit `is_error: true` und HTTP 429 ab: „You've hit your session limit ·
|
||||
> resets 10:50pm (Europe/Berlin)". Erzeugt wurden **3 von sieben** geforderten Ergebnisdateien; der Lauf brach mitten in der Bearbeitung ab. Verbraucht wurden
|
||||
> bis zum Abbruch **7.997.215 Tokens**.
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Prompt-Version:** 02
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-26T20:00:08.8552900+02:00
|
||||
- **Endzeit:** 2026-08-26T20:28:31.6394457+02:00
|
||||
- **Dauer gesamt:** 00:07:4x — bis zum Kontingentabbruch
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
- **Codebasis-Commit:** `f349d189c735a87f5829bc93f67991320061a2c0` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja; enthält `SSMS_DB_SCHEMA.sql`
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 7.0.0
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **Modell (angefordert):** `claude-fable-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-fable-5` 7.990.250 (99.91 %), `claude-haiku-4-5-20251001` 6.965 (0.09 %)
|
||||
- **Kontrolle Modell:** bestanden
|
||||
- **Effort:** `high`
|
||||
- **Agentenmodus:** `solo` (V1)
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **Hintergrund-Wartezeit:** `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0`
|
||||
- **Parallele Läufe:** **ja** – alle vier Läufe der Welle liefen gleichzeitig
|
||||
- **Subagenten:** keine (`spawned` = 0)
|
||||
|
||||
## Verbrauch
|
||||
|
||||
| Messgröße | `claude-fable-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 128 | 6.945 | 7.073 |
|
||||
| Output-Tokens | 127.802 | 20 | 127.822 |
|
||||
| Cache-Write-Tokens | 279.983 | 0 | 279.983 |
|
||||
| Cache-Read-Tokens | 7.582.337 | 0 | 7.582.337 |
|
||||
| **Tokens gesamt** | **7.990.250** | **6.965** | **7.997.215** |
|
||||
|
||||
|
||||
**Tokens gesamt: 7.997.215** — real angefallen und deshalb ausgewiesen, obwohl der Lauf ungültig ist.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
Der Lauf brach vor Abschluss ab. Im vorhandenen **Teilbestand** stehen **109 Anforderungen**. Die Zahl ist **nicht** mit vollständigen Läufen vergleichbar – es fehlen `SwRS.md`, `Traceability.md`, `Hypothesen.md`, `Glossar.md`. Die maschinelle Auswertung liegt zur Vollständigkeit unter `_meta/anforderungen.md`, geht aber nicht in Vergleiche ein.
|
||||
|
||||
## Ergebnis
|
||||
- **Gültigkeit:** **Fehlmessung** – API-Abbruch (HTTP 429, Session-Kontingent); nur 3 von sieben Artefakten erzeugt
|
||||
- **Status:** `is_error` = true, `terminal_reason` = `api_error`, `api_error_status` = 429
|
||||
- **Session-ID:** `1d368e93-cb25-434c-9365-b76eace2ee17`
|
||||
- **Turns:** 94
|
||||
- **Permission-Denials:** 0
|
||||
- **Erzeugte Dateien:** 3 von sieben geforderten Artefakten:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
| `Analysebericht.md` | 24.343 B |
|
||||
| `StRS.md` | 42.134 B |
|
||||
| `SyRS.md` | 105.262 B |
|
||||
|
||||
Es fehlen: `SwRS.md`, `Traceability.md`, `Hypothesen.md`, `Glossar.md`
|
||||
- **Root unverändert:** ja
|
||||
- **Abschlusstext des Agenten:** „You've hit your session limit · resets 10:50pm (Europe/Berlin)"
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Kontingentabbruch, nicht Laufversagen.** Vier Läufe wurden am 26.08. um 19:59 gleichzeitig
|
||||
gestartet; alle vier liefen in dieselbe Grenze. Zusammen hatten sie zu diesem Zeitpunkt
|
||||
297,4 Mio. Tokens verbraucht, davon allein 204,4 Mio. im Lauf `45dd`. Die Parallelität von vier
|
||||
Läufen – darunter einer mit extremer Delegation – hat das Kontingent gerissen.
|
||||
|
||||
**2. Konsequenz für den Versuchsaufbau:** Die verbleibenden Zellen werden **seriell** gefahren.
|
||||
Der erste serielle Lauf danach (`opus-5/solo/high`, `2269`) lief mit 38,1 Mio. Tokens sauber durch.
|
||||
|
||||
**3. Zelle inzwischen gültig belegt.** Der Wiederholungslauf `02_Lauf_2026-08-27_002430_v7.0.0-35a4`
|
||||
war erfolgreich: 241 Anforderungen, 98,3 % mit Primärbeleg, 30,6 Mio. Tokens – allerdings mit
|
||||
7:03 h Wanduhrzeit, weil er mehrfach stundenweise auf Kontingent-Reset-Fenster wartete.
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"is_error":true,"duration_api_ms":1549743,"num_turns":94,"stop_reason":"stop_sequence","session_id":"1d368e93-cb25-434c-9365-b76eace2ee17","total_cost_usd":19.580422,"usage":{"input_tokens":128,"cache_creation_input_tokens":279983,"cache_read_input_tokens":7582337,"output_tokens":127802,"output_tokens_details":{"thinking_tokens":21913},"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":279983,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":374,"cache_read_input_tokens":247654,"cache_creation_input_tokens":32329,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":32329},"type":"message"}],"speed":"standard"},"modelUsage":{"claude-haiku-4-5-20251001":{"inputTokens":6945,"outputTokens":20,"cacheReadInputTokens":0,"cacheCreationInputTokens":0,"webSearchRequests":0,"costUSD":0.007045,"contextWindow":200000,"maxOutputTokens":32000,"canonicalModel":"claude-haiku-4-5","provider":"firstParty","costBasis":"list"},"claude-fable-5":{"inputTokens":128,"outputTokens":127802,"cacheReadInputTokens":7582337,"cacheCreationInputTokens":279983,"webSearchRequests":0,"costUSD":19.573377,"contextWindow":1000000,"maxOutputTokens":64000,"canonicalModel":"claude-fable-5","provider":"firstParty","costBasis":"list"}},"permission_denials":[],"terminal_reason":"api_error","fast_mode_state":"off","fast_mode_disabled_reason":"extra_usage_disabled","subagent_stats":{"spawned":0,"requested":{"background":0,"foreground":0,"unset":0},"started_in_background":0,"max_depth":0,"spawned_by_subagents":0,"completed":0,"failed":0,"killed":{"parent":0,"user":0,"system":0},"refused":{"depth_limit":0,"concurrency_limit":0,"budget":0},"by_type":{}},"subtype":"success","api_error_status":429,"result":"You've hit your session limit · resets 10:50pm (Europe/Berlin)","type":"result","duration_ms":1701146,"uuid":"910fddce-feda-4375-862c-350dbb92f47b","queued_turn_count":0}
|
||||
+2144
File diff suppressed because it is too large
Load Diff
+65
@@ -0,0 +1,65 @@
|
||||
## Gefundene Anforderungen
|
||||
|
||||
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 |
|
||||
|---|---:|---:|
|
||||
| StRS | 28 | 25,7 % |
|
||||
| SyRS | 81 | 74,3 % |
|
||||
| SwRS | 0 | 0,0 % |
|
||||
| **Gesamt** | **109** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 60 | 55,0 % |
|
||||
| Schnittstelle | 15 | 13,8 % |
|
||||
| Sicherheit | 15 | 13,8 % |
|
||||
| nicht-funktional | 10 | 9,2 % |
|
||||
| Daten | 9 | 8,3 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 180 |
|
||||
| davon `PRIMÄR` | 145 (80,6 %) |
|
||||
| davon `SEKUNDÄR` | 28 (15,6 %) |
|
||||
| davon `KONTEXT` | 7 (3,9 %) |
|
||||
| Belege je Anforderung (Median) | 2 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 108 (99,1 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 102 | 93,6 % |
|
||||
| workaround | 4 | 3,7 % |
|
||||
| sonderfall | 1 | 0,9 % |
|
||||
| veraltet | 2 | 1,8 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 101 | 92,7 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 8 | 7,3 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 11 | 10,1 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 10 | 9,2 % |
|
||||
|
||||
### Regelkonformität (Prüfung gegen die Vorgaben des Prompts)
|
||||
|
||||
| Vorgabe | Ergebnis |
|
||||
|---|---|
|
||||
| **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 28 ungedeckt: SyRS-008 |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 109 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 109 von 109 mit Tracelinks (100,0 %) |
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
# Versuch 01 - Baseline (Prompt-only) - Iteration 02
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V1 Baseline (Prompt-only)
|
||||
- **Iteration:** 02 (erste Überarbeitung nach Auswertung von Iteration 01)
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Auswertung der 24 Läufe von Tag 1 über 3.287 erzeugte Anforderungen. Jede Änderung ist an einen gemessenen Befund gekoppelt:
|
||||
|
||||
| Änderung | Auslösender Befund |
|
||||
|---|---|
|
||||
| Modulinventar als Pflicht-Vorstufe, Mindestabdeckung je Modul, Vertiefung erst danach | Anforderungszahl schwankte je Lauf zwischen 42 und 325 (Faktor 5,9); 55 bis 60 von rund 85 Modulen blieben unanalysiert; die Modultabellen der Analyseberichte reichten von 0 bis 51 Zeilen |
|
||||
| Hypothesenpflicht kalibriert, `Hypothesen.md` deckungsgleich mit den Inline-Markierungen | Zwei Läufe meldeten null Hypothesen bei 71 bzw. 148 Anforderungen; der Anteil schwankte zwischen 0 % und 26,2 %; mehrfach wichen Sammeldatei und Inline-Markierungen voneinander ab |
|
||||
| Primärbeleg muss die durchsetzende Stelle benennen | 45,9 % aller Anforderungen trugen genau einen Beleg; in einem Lauf waren 5 von 31 risikorelevanten Anforderungen weder mit `PRIMÄR` noch als `[HYPOTHESE]` gedeckt |
|
||||
| Belegpflicht verschärft: ohne Beleg keine Anforderung | Eine Anforderung wurde ohne jeden Beleg geschrieben |
|
||||
| Konsolidierungsbegriff an einem Beispiel kalibriert | Anteil der Konsolidierungskandidaten schwankte je Lauf zwischen 2,4 % und 35,2 % |
|
||||
| Eigenes Feld `Qualitätsmerkmal` für die ISO-25010-Zuordnung | Die Zuordnung war gefordert, hatte aber keinen Ablageort: nur 33 von 313 nicht-funktionalen Anforderungen führten sie als eigene Angabe |
|
||||
| Risikoanforderungen im Konsistenzcheck auflisten | Verstöße gegen die risikobasierte Priorisierung fielen erst in der nachgelagerten Auswertung auf, nicht im Lauf selbst |
|
||||
|
||||
Unverändert bleiben Prüfidee, Tracelinks, Belegklassifikation und das Blockformat: Prüfidee und Tracelinks waren in **allen** 3.287 Anforderungen gesetzt, 78,6 % der Belege waren `PRIMÄR`.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite ausschließlich auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, ggf. DB-Skripte). Nutze nur Informationen, die du aus diesen Artefakten gewinnen kannst.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, keine Ausführung)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz).
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
|
||||
---
|
||||
|
||||
### Werkzeugkontext (vom Versuchsaufbau vorgegeben)
|
||||
Für diesen Lauf stehen zur Verfügung: Lesen und Suchen von Dateien sowie das Ausführen von
|
||||
Kommandozeilenbefehlen im Arbeitsverzeichnis.
|
||||
Nicht verfügbar sind: Subagenten, spezialisierte Agentenrollen, externe Werkzeugserver.
|
||||
Triff keine Annahmen über weitere Werkzeuge und versuche nicht, nicht verfügbare
|
||||
Werkzeuge zu ersetzen.
|
||||
### Ausgabeverzeichnis (überschreibt anderslautende Pfadangaben oben)
|
||||
Schreibe ALLE zu erzeugenden Ergebnisdateien in das Verzeichnis
|
||||
`c:\DEV\MasterArbeit\Versuche\Versuch_01\Iteration 3\claude-fable-5\solo\high\02_Lauf_2026-08-26_195958_v7.0.0-77a1\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:28:31.6394457+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:00:08.8552900+02:00
|
||||
+492
@@ -0,0 +1,492 @@
|
||||
# Analysebericht – Reverse Requirements Engineering c-entron ERP-Suite
|
||||
|
||||
**Lauf:** V1 Baseline (Prompt-only), Iteration 02, 2026-08-27
|
||||
**Untersuchungsgegenstand:** Gesamte Codebasis unter `C:\DEV\MasterArbeit\QuellCode\CentronERP` (statische Analyse, keine Ausführung)
|
||||
|
||||
---
|
||||
|
||||
## Schritt 0 – Modulinventar
|
||||
|
||||
Das Inventar wurde vor der ersten Anforderung erstellt. Es basiert auf der Verzeichnisstruktur der
|
||||
Solution (`Centron.sln`), insbesondere der fachlichen Modulordner in `src/backend/Centron.BL`
|
||||
(Geschäftslogikschicht), sowie den weiteren Schichten (DAO, Entities, Gateway, WPF-Client,
|
||||
Blazor-Web „Nexus", Webservice, API-Integrationsprojekte) und Begleitartefakten (DB-Schema,
|
||||
Deployment, Doku). Pfade sind relativ zum Arbeitsverzeichnis.
|
||||
|
||||
Legende Spalte „Modul": M-Nummer = Bezugsgröße für Abdeckungstabelle und Mindestabdeckung.
|
||||
|
||||
### A. Geschäftslogik (src/backend/Centron.BL)
|
||||
|
||||
| Nr. | Modul / Komponente | Pfad | Fachliche Aufgabe (1 Satz) |
|
||||
|---|---|---|---|
|
||||
| M-001 | Accounting (Bankkonten) | src/backend/Centron.BL/Accounting | Verwaltung der Bankkonten des Unternehmens (BankAccountBL). |
|
||||
| M-002 | Accounts (Konten-/Adressstamm) | src/backend/Centron.BL/Accounts | Verwaltung von Konten (Kunden/Adressen), Kontakten, Kontenverträgen, Kampagnen, Kontenmigration und Aktivitäten. |
|
||||
| M-003 | Administration: AccessTokens | src/backend/Centron.BL/Administration/AccessTokens | Verwaltung von API-/Zugriffstokens für externe Zugriffe. |
|
||||
| M-004 | Administration: Applications | src/backend/Centron.BL/Administration/Applications | Verwaltung registrierter (Client-)Anwendungen. |
|
||||
| M-005 | Administration: ArtificialIntelligence | src/backend/Centron.BL/Administration/ArtificialIntelligence | Administrative Konfiguration der KI-Funktionen (Modelle, API-Anbindung). |
|
||||
| M-006 | Administration: BackgroundServices | src/backend/Centron.BL/Administration/BackgroundServices | Konfiguration und Überwachung von Hintergrunddiensten (Jobs). |
|
||||
| M-007 | Administration: BookKeepingAccountSystems | src/backend/Centron.BL/Administration/BookKeepingAccountSystems | Verwaltung der Buchhaltungs-Kontenrahmen (z. B. SKR) für die FiBu-Übergabe. |
|
||||
| M-008 | Administration: CentronConfigDb | src/backend/Centron.BL/Administration/CentronConfigDb | Zugriff auf die zentrale Konfigurationsdatenbank (mandantenübergreifende Konfiguration). |
|
||||
| M-009 | Administration: Company/CompanyInformations | src/backend/Centron.BL/Administration/Company, .../CompanyInformations | Verwaltung der eigenen Firmenstammdaten (Firmen, Filialen, Firmeninformationen). |
|
||||
| M-010 | Administration: Connections | src/backend/Centron.BL/Administration/Connections | Verwaltung technischer Verbindungen (DB-/Dienstverbindungen). |
|
||||
| M-011 | Administration: Customization | src/backend/Centron.BL/Administration/Customization | Kundenspezifische Anpassungen der Anwendung (Custom-Verhalten). |
|
||||
| M-012 | Administration: DataSecurity | src/backend/Centron.BL/Administration/DataSecurity | Datensicherheits-/Datenschutzfunktionen (DataSecurityBL). |
|
||||
| M-013 | Administration: Documents/FileManagement | src/backend/Centron.BL/Administration/Documents, .../FileManagement | Dokumentenablage und Dateiverwaltung (Speicherorte, Dateioperationen). |
|
||||
| M-014 | Administration: Employees | src/backend/Centron.BL/Administration/Employees | Administrative Mitarbeiterverwaltung (Anlage, Einstellungen). |
|
||||
| M-015 | Administration: Environments | src/backend/Centron.BL/Administration/Environments | Verwaltung von Umgebungen (z. B. Test-/Produktivumgebung). |
|
||||
| M-016 | Administration: Licensing | src/backend/Centron.BL/Administration/Licensing | Lizenzverwaltung und Lizenzprüfung der ERP-Installation (LicenseManager). |
|
||||
| M-017 | Administration: Logins/Auth | src/backend/Centron.BL/Administration/Logins | Benutzer-Authentifizierung: Logins, Auth-Tickets, Zwei-Faktor, Web-Accounts, EntraID-Anbindung. |
|
||||
| M-018 | Administration: Mandatory | src/backend/Centron.BL/Administration/Mandatory | Verwaltung der Mandanten (Mandatoren) der Installation. |
|
||||
| M-019 | Administration: Masterdata | src/backend/Centron.BL/Administration/Masterdata | Zentrale Stammdaten der Administration (Basistabellen). |
|
||||
| M-020 | Administration: NetworkDiagnostics | src/backend/Centron.BL/Administration/NetworkDiagnostics | Netzwerk-Diagnosefunktionen für den Support. |
|
||||
| M-021 | Administration: PerformanceTests/Profiling | src/backend/Centron.BL/Administration/PerformanceTests, .../Profiling | Performancemessung und Profiling der Anwendung. |
|
||||
| M-022 | Administration: PhoneSettings | src/backend/Centron.BL/Administration/PhoneSettings | Telefonie-Einstellungen (TAPI-Konfiguration). |
|
||||
| M-023 | Administration: Portal | src/backend/Centron.BL/Administration/Portal | Anbindung/Verwaltung eines (Kunden-)Portals. |
|
||||
| M-024 | Administration: Rights | src/backend/Centron.BL/Administration/Rights | Benutzerrechte- und Benutzergruppenverwaltung (AppRights, Rechtebaum). |
|
||||
| M-025 | Administration: Scripts/SQLManagement | src/backend/Centron.BL/Administration/Scripts, .../SQLManagement | Verwaltung und Ausführung administrativer SQL-Skripte. |
|
||||
| M-026 | Administration: Settings | src/backend/Centron.BL/Administration/Settings | Systemweite und benutzerbezogene Einstellungen. |
|
||||
| M-027 | Administration: Themes | src/backend/Centron.BL/Administration/Themes | Verwaltung der UI-Themes. |
|
||||
| M-028 | Administration: WebServiceConfiguration | src/backend/Centron.BL/Administration/WebServiceConfiguration | Konfiguration des c-entron Webservice. |
|
||||
| M-029 | AppointmentRequests | src/backend/Centron.BL/AppointmentRequests | Terminanfragen (Vereinbarung von Terminen mit Externen). |
|
||||
| M-030 | ArtificialIntelligence | src/backend/Centron.BL/ArtificialIntelligence | KI-Funktionen: Chat-Anbindung an LLM-Anbieter, Modellkatalog, Tool-Aufrufe. |
|
||||
| M-031 | BusinessPartner | src/backend/Centron.BL/BusinessPartner | Lieferanten-Suche und Lieferanten-Assets (Geschäftspartnersicht). |
|
||||
| M-032 | Buying | src/backend/Centron.BL/Buying | Einkaufssicht auf Distributoren (externe Bezugsquellen). |
|
||||
| M-033 | Calendar | src/backend/Centron.BL/Calendar | Kalenderfunktionen (Termine der Mitarbeiter). |
|
||||
| M-034 | CentronIcons | src/backend/Centron.BL/CentronIcons | Verwaltung der in der Anwendung verwendeten Icons. |
|
||||
| M-035 | CentronNexus (BL) | src/backend/Centron.BL/CentronNexus | Geschäftslogik-Anteil für den Webclient „c-entron Nexus". |
|
||||
| M-036 | ChangeTracking | src/backend/Centron.BL/ChangeTracking | Import-Historie und Änderungsverfolgung. |
|
||||
| M-037 | Chats | src/backend/Centron.BL/Chats | Interne Chat-Funktion. |
|
||||
| M-038 | CheckListArea | src/backend/Centron.BL/CheckListArea | Checklisten inkl. Änderungsprotokoll. |
|
||||
| M-039 | Core (BL-Kern) | src/backend/Centron.BL/Core | Kernfunktionen der BL: Kryptographie-Hilfsfunktionen, Platzhalter-Ersetzung. |
|
||||
| M-040 | CountryArea | src/backend/Centron.BL/CountryArea | Länder- und Bundesland-Stammdaten. |
|
||||
| M-041 | CPra | src/backend/Centron.BL/CPra | Konnektor „CPra" (Konfiguration und Anbindung eines Externsystems). |
|
||||
| M-042 | CustomerArea | src/backend/Centron.BL/CustomerArea | Kundenbezogene Nebenstammdaten: Branchen, Interessen, Produkte, RMA-Abwicklung. |
|
||||
| M-043 | Customizations (CustomTables) | src/backend/Centron.BL/Customizations | Kundenindividuelle Zusatztabellen (Custom Tables). |
|
||||
| M-044 | DataExchange | src/backend/Centron.BL/DataExchange | Datenaustausch: FiBu-Export/-Import, DocBee-/DocuForm-Konnektoren, E-Rechnungs-Upload, WebHooks. |
|
||||
| M-045 | Devices | src/backend/Centron.BL/Devices | Geräteverwaltung je Konto (AccountDevice). |
|
||||
| M-046 | DocuBoard | src/backend/Centron.BL/DocuBoard | Asset-Management-Anbindung (AD-Systembenutzer, Artikelzuordnung, Partner). |
|
||||
| M-047 | DocumentationArea | src/backend/Centron.BL/DocumentationArea | Dokumentationen zu Objekten (Systemdokumentation). |
|
||||
| M-048 | EDI | src/backend/Centron.BL/EDI | Elektronischer Datenaustausch mit Distributoren (Alltron, ALSO, Concerto, EGIS, Komsa u. a.): Bestellungen, Auftragsbestätigungen. |
|
||||
| M-049 | EmployeeArea | src/backend/Centron.BL/EmployeeArea | Mitarbeiterstamm: App-Benutzer, Abteilungen, Urlaub, RFID-Token, Team-Management. |
|
||||
| M-050 | ExpectedEvents | src/backend/Centron.BL/ExpectedEvents | Erwartete Ereignisse (Überwachung ausbleibender Ereignisse). |
|
||||
| M-051 | ExternalHelpdesk | src/backend/Centron.BL/ExternalHelpdesk | Konfiguration externer Helpdesk-Anbindungen. |
|
||||
| M-052 | ExternalToolsBL | src/backend/Centron.BL/ExternalToolsBL | Einbindung externer Tools in die Anwendung. |
|
||||
| M-053 | Finances | src/backend/Centron.BL/Finances | Finanzen: Zahlungseingänge, Onlinebanking (FinAPI), Zahlungen, Produkt-Lebenszyklus. |
|
||||
| M-054 | Gateway (BL) | src/backend/Centron.BL/Gateway | Kundenspezifische Gateway-Logik (CustomGateway). |
|
||||
| M-055 | GUI (BL-Anteil) | src/backend/Centron.BL/GUI | UI-nahe BL: Bestellimport (EDI), UI-Profile, Benutzer-Grid-Layouts. |
|
||||
| M-056 | IndexSearch | src/backend/Centron.BL/IndexSearch | Volltextsuche über Konten und Tickets (Lucene-Index, GermanAnalyzer). |
|
||||
| M-057 | Integrations | src/backend/Centron.BL/Integrations | Integrationen (EsCustomerGroup, EsRole – externes Shopsystem). |
|
||||
| M-058 | ItPlanner | src/backend/Centron.BL/ItPlanner | IT-Planner (Checklisten-basierte Planung virtueller Objekte). |
|
||||
| M-059 | Logistics | src/backend/Centron.BL/Logistics | Logistikeinstellungen und Bestandsführung (StockBL). |
|
||||
| M-060 | Mail | src/backend/Centron.BL/Mail | E-Mail-Verarbeitung: Exchange/EWS-Anbindung, Mail-Erzeugung, Signaturen, Domain-Blacklist. |
|
||||
| M-061 | MailScanner | src/backend/Centron.BL/MailScanner | Automatisches Scannen von Mailpostfächern (z. B. zur Ticketerzeugung). |
|
||||
| M-062 | Mailings | src/backend/Centron.BL/Mailings | Serien-Mailings auf Basis von Vorlagen. |
|
||||
| M-063 | MassUpdate | src/backend/Centron.BL/MassUpdate | Massenänderungen an Datenobjekten. |
|
||||
| M-064 | Mobile | src/backend/Centron.BL/Mobile | Unterstützung mobiler Clients. |
|
||||
| M-065 | Modules | src/backend/Centron.BL/Modules | Verwaltung der freigeschalteten Programm-Module (Modul-/Kategorieverwaltung). |
|
||||
| M-066 | MyCentron | src/backend/Centron.BL/MyCentron | Persönlicher Bereich: Dashboards, Quick Notes, zuletzt verwendete Objekte, Schedulings. |
|
||||
| M-067 | MyDay | src/backend/Centron.BL/MyDay | „Mein Tag"-Übersicht (Tagesnotifications, Reports, Supremo-Fernwartung). |
|
||||
| M-068 | NexusNotifications | src/backend/Centron.BL/NexusNotifications | Benachrichtigungen im Webclient (SignalR-Hub). |
|
||||
| M-069 | NexusTicketViews | src/backend/Centron.BL/NexusTicketViews | Konfigurierbare Ticket-Ansichten im Webclient. |
|
||||
| M-070 | Notifications | src/backend/Centron.BL/Notifications | Benutzerbenachrichtigungen im Client. |
|
||||
| M-071 | ObjectExternalReferences | src/backend/Centron.BL/ObjectExternalReferences | Externe Referenzen auf c-entron-Objekte (Fremdschlüssel zu Drittsystemen). |
|
||||
| M-072 | Outlook | src/backend/Centron.BL/Outlook | Outlook-Integration (Asset-Suche aus Outlook). |
|
||||
| M-073 | PasswordManagementArea | src/backend/Centron.BL/PasswordManagementArea | Passwortverwaltung für Kunden-Zugangsdaten inkl. Zugriffs- und Änderungsprotokoll. |
|
||||
| M-074 | PasswordManager | src/backend/Centron.BL/PasswordManager | Anbindung externer Passwortmanager. |
|
||||
| M-075 | Processes | src/backend/Centron.BL/Processes | Prozessverwaltung (Geschäftsprozess-Objekte). |
|
||||
| M-076 | ProductMatrix | src/backend/Centron.BL/ProductMatrix | Produktmatrix (Zuordnung Produkte zu Konten). |
|
||||
| M-077 | Production | src/backend/Centron.BL/Production | Produktion/Fertigungsaufträge (ProductionOrder). |
|
||||
| M-078 | Projects | src/backend/Centron.BL/Projects | Projektverwaltung. |
|
||||
| M-079 | Purchasing | src/backend/Centron.BL/Purchasing | Einkauf: Bestellvorschläge, Lieferanten, Einkaufseinstellungen, filialbezogene Lieferantenbestellungen. |
|
||||
| M-080 | ReportEngine | src/backend/Centron.BL/ReportEngine | Reporterzeugung (FastReport), PDF-Export inkl. ZUGFeRD-PDF-Generierung. |
|
||||
| M-081 | Reporting | src/backend/Centron.BL/Reporting | Verwaltung der Reports (ReportsBL). |
|
||||
| M-082 | RiverDivo | src/backend/Centron.BL/RiverDivo | Anbindung „Riverbird/RiverDivo" (Vertragsartikel-Referenzen, River-Client). |
|
||||
| M-083 | Sales: Receipts (Belegwesen) | src/backend/Centron.BL/Sales/Receipts | Belegwesen: Angebote, Aufträge, Rechnungen, Lieferscheine, Gutschriften, Anzahlungen, Abhollisten sowie Lieferantenbelege (Bestellungen, Lieferanten-Rechnungen/-Gutschriften). |
|
||||
| M-084 | Sales: CustomerAssets (Verträge) | src/backend/Centron.BL/Sales/CustomerAssets | Kundenverträge und Vertragsabrechnung: Verträge, automatische Fakturierung, Timer-Billing, vertragsbezogene Belege. |
|
||||
| M-085 | Sales: Customers (CRM) | src/backend/Centron.BL/Sales/Customers | Kundenverwaltung/CRM: Adressen, Kontakte, CRM-Projekte, Kundendetails, Textbausteine. |
|
||||
| M-086 | Sales: Support (Helpdesk) | src/backend/Centron.BL/Sales/Support | Helpdesk/Ticketsystem inkl. Eskalationslogik und Ticketprozessen. |
|
||||
| M-087 | Sales: CashBooks | src/backend/Centron.BL/Sales/CashBooks | Kassenbuchführung. |
|
||||
| M-088 | Sales: Marketing | src/backend/Centron.BL/Sales/Marketing | Marketingfunktionen im Vertrieb. |
|
||||
| M-089 | Sales: Calendar | src/backend/Centron.BL/Sales/Calendar | Vertriebsbezogene Kalenderfunktionen. |
|
||||
| M-090 | Sales: DocumentationWizardArea | src/backend/Centron.BL/Sales/DocumentationWizardArea | Assistent zur Dokumentationserstellung im Vertriebskontext. |
|
||||
| M-091 | Sales: HourlySurchargeRatesBL | src/backend/Centron.BL/Sales/HourlySurchargeRatesBL | Stundenzuschlagssätze (z. B. für Servicezeiten). |
|
||||
| M-092 | Security (PdfSigning) | src/backend/Centron.BL/Security | Digitale Signatur von PDF-Dokumenten. |
|
||||
| M-093 | SelfCare | src/backend/Centron.BL/SelfCare | SelfCare-Portalfunktionen (Web-Anfrageseiten für Endkunden). |
|
||||
| M-094 | Services | src/backend/Centron.BL/Services | Dienste: Workflows (Prozess-Engine), CTime-Zeiterfassungs-Konnektor, Datenqualität, Tabellen-Cache. |
|
||||
| M-095 | SocialMedia | src/backend/Centron.BL/SocialMedia | Social-Media-Profile von Personen/Konten. |
|
||||
| M-096 | Start | src/backend/Centron.BL/Start | Anwendungsstart-Logik (StartBL). |
|
||||
| M-097 | Statistics | src/backend/Centron.BL/Statistics | Statistiken: Umsatz, Mitarbeiterauslastung, Vertragsauswertung, MSP-Auswertungen. |
|
||||
| M-098 | Storage | src/backend/Centron.BL/Storage | Inventur (InventoryArticlePool) und Lagerort-Logik. |
|
||||
| M-099 | SystemArea | src/backend/Centron.BL/SystemArea | Systemtabellen (I3D-Systemtabelle). |
|
||||
| M-100 | Tags | src/backend/Centron.BL/Tags | Verschlagwortung von Objekten (Tags). |
|
||||
| M-101 | Tapi | src/backend/Centron.BL/Tapi | Telefonie-Integration (Anrufe, PhoneCallBL). |
|
||||
| M-102 | TaskManager | src/backend/Centron.BL/TaskManager | Aufgabenverwaltung mit Aktions-Handlern (Helpdesk-/Report-Aktionen). |
|
||||
| M-103 | Telemetry | src/backend/Centron.BL/Telemetry | Telemetrie-Erfassung der Anwendungsnutzung. |
|
||||
| M-104 | TextModuleArea | src/backend/Centron.BL/TextModuleArea | Textbausteine und Anrede-/Grußformel-Ersetzung. |
|
||||
| M-105 | TicketProjects | src/backend/Centron.BL/TicketProjects | Ticket-Projekte (Bündelung von Tickets). |
|
||||
| M-106 | Time | src/backend/Centron.BL/Time | Zeitsteuerungs-Einstellungen (TimingSettings). |
|
||||
| M-107 | ToDoArea | src/backend/Centron.BL/ToDoArea | ToDo-Verwaltung über Objektarten hinweg. |
|
||||
| M-108 | Tools | src/backend/Centron.BL/Tools | Werkzeugverwaltung (ToolBL). |
|
||||
| M-109 | TradePool | src/backend/Centron.BL/TradePool | „TradePool"-Handelsbörse (XML-basierter Austausch von Handelsdaten). |
|
||||
| M-110 | Transactions | src/backend/Centron.BL/Transactions | Transaktionsobjekte (TransactionBL). |
|
||||
| M-111 | TwoFactorAuthenticator | src/backend/Centron.BL/TwoFactorAuthenticator | Zwei-Faktor-Authentifizierung (TOTP). |
|
||||
| M-112 | Urls | src/backend/Centron.BL/Urls | Verwaltung einfacher URL-Objekte (Weblinks je Objekt). |
|
||||
| M-113 | VideoPortal | src/backend/Centron.BL/VideoPortal | Zuordnung von Schulungsvideos (Videoportal). |
|
||||
| M-114 | VoucherManagement | src/backend/Centron.BL/VoucherManagement | Gutscheinverwaltung: Barcodes mit Status frei/ausgegeben/eingelöst. *(Beschreibung nach Detailanalyse präzisiert)* |
|
||||
| M-115 | Warehousing | src/backend/Centron.BL/Warehousing | Artikelstamm und Lager: Artikel, EAN-Codes, Preise/Aktionspreise, Artikelhistorie, Umweltschutz-Angaben, Artikelimport. |
|
||||
| M-116 | WebLinks | src/backend/Centron.BL/WebLinks | Aktions-Weblinks (z. B. Erinnerungen, Kontoaktivitäten per Link). |
|
||||
| M-117 | WebServices (BL) | src/backend/Centron.BL/WebServices | Geschäftslogik der Webservice-Endpunkte (Datenbereitstellung für Web/Mobile/Nexus). |
|
||||
| M-118 | WebSuite | src/backend/Centron.BL/WebSuite | Konfiguration der Web-Suite (Webmenü, Web-Einstellungen, Web-HD-Fragen). |
|
||||
| M-119 | WebVersion | src/backend/Centron.BL/WebVersion | Versionsverwaltung der Webanwendung. |
|
||||
| M-120 | Helpers (BL) | src/backend/Centron.BL/Helpers | Technische Hilfsklassen (Graph-Client, PDF-Interaktion, String-/Bild-Helfer). |
|
||||
| M-121 | Exceptions (BL) | src/backend/Centron.BL/Exceptions | Fachliche Ausnahmen (z. B. TicketExpiredException). |
|
||||
|
||||
### B. Weitere Schichten, Anwendungen und Artefakte
|
||||
|
||||
| Nr. | Modul / Komponente | Pfad | Fachliche Aufgabe (1 Satz) |
|
||||
|---|---|---|---|
|
||||
| M-122 | Centron.DAO (Persistenz) | src/backend/Centron.DAO | Datenzugriffsschicht auf NHibernate-Basis: Mappings, Sessions, Change-Tracking, Repositories, benannte Abfragen. |
|
||||
| M-123 | Centron.Entities | src/backend/Centron.Entities | Entitätsmodell (persistierte Geschäftsobjekte). |
|
||||
| M-124 | Centron.Common | src/backend/Centron.Common | Querschnittsbibliothek: Logging, Einstellungen, Berechnungen, Konstanten, Benutzerkontext. |
|
||||
| M-125 | Centron.Interfaces | src/backend/Centron.Interfaces | Schnittstellen- und Konstantendefinitionen (u. a. Rechte-Konstanten UserRightsConst). |
|
||||
| M-126 | Centron.Gateway | src/backend/Centron.Gateway | Import-/Export-Gateway: EDI-Formate (Alltron, ALSO, EGIS, Herweck, Komsa), OpenTrans, ZUGFeRD 2.1, Onlinebanking, MSP-Collector, Portal. |
|
||||
| M-127 | Centron.WPF.UI (+ Extension) | src/centron/Centron.WPF.UI, .../Centron.WPF.UI.Extension | Windows-Desktop-Client (WPF/XAML): Masken, Module, Wizards, Lokalisierung. |
|
||||
| M-128 | Centron.Controls (+ Preview) | src/shared/Centron.Controls, .../Centron.Controls.Preview | Wiederverwendbare UI-Controls (DevExpress-basiert) inkl. Dokumentvorschau. |
|
||||
| M-129 | Centron.Core (shared) | src/shared/Centron.Core | Gemeinsame Kernbibliothek von Client und Server. |
|
||||
| M-130 | CentronNexus (Blazor-Web) | src/nexus/CentronNexus | Webclient „c-entron Nexus" (Blazor): WebCart/Shop, WebOffer, ServiceBoard, Dokument-Signierung, Produktionsauftrags-Management. |
|
||||
| M-131 | CentronNexus.Host | src/nexus/CentronNexus.Host | Hosting-Anwendung des Nexus-Webclients. |
|
||||
| M-132 | CentronNexus.OutlookAddIn | src/nexus/CentronNexus.OutlookAddIn | Outlook-Add-In des Nexus-Webclients. |
|
||||
| M-133 | Centron.Controllers (REST-API) | src/webservice/Centron.Controllers | REST-Controller des c-entron Webservice (versionierte API, Autorisierung). |
|
||||
| M-134 | Centron.WebServices.Core | src/webservice/Centron.WebServices.Core | Kern des Webservice (Infrastruktur der Dienstschicht). |
|
||||
| M-135 | Centron.Host (+ Console/WindowsService) | src/webservice/Centron.Host, .../Centron.Host.Console, .../Centron.Host.WindowsService | Hosting des Webservice als Konsole oder Windows-Dienst. |
|
||||
| M-136 | ConnectionManager | src/webservice/c-entron.misc.ConnectionManager | Verwaltung der Verbindungskonfiguration (Werkzeug). |
|
||||
| M-137 | Centron.Api.EbInterface | src/apis/Centron.Api.EbInterface | Erzeugung österreichischer E-Rechnungen (ebInterface). |
|
||||
| M-138 | Centron.Api.Gls | src/apis/Centron.Api.Gls | Versandanbindung GLS (Paketlabel). |
|
||||
| M-139 | Centron.Api.Shipcloud | src/apis/Centron.Api.Shipcloud | Versandanbindung Shipcloud (Multi-Carrier-Versand). |
|
||||
| M-140 | Centron.APIs.CopDataAccess | src/apis/Centron.APIs.CopDataAccess | Anbindung „COP" (SOAP-Datenzugriff auf Distributor). |
|
||||
| M-141 | Centron.APIs.EgisDataAccess | src/apis/Centron.APIs.EgisDataAccess | Anbindung EGIS (Distributor-Datenzugriff). |
|
||||
| M-142 | Centron.APIs.FinAPI | src/apis/Centron.APIs.FinAPI | Anbindung finAPI (Onlinebanking-REST-Dienst). |
|
||||
| M-143 | Centron.APIs.IcecatDataAccess | src/apis/Centron.APIs.IcecatDataAccess | Anbindung Icecat (Produktdatenkatalog). |
|
||||
| M-144 | Centron.APIs.ITscopeDataAccess | src/apis/Centron.APIs.ITscopeDataAccess | Anbindung ITscope (Handelsplattform). |
|
||||
| M-145 | Centron.Api.docuFORM | Centron.Api.docuFORM | Anbindung docuFORM (Druckerdaten/Managed Print). |
|
||||
| M-146 | Datenbankschema | SSMS_DB_SCHEMA.sql | SQL-Schema-Dump der c-entron-Datenbank (1558 CREATE TABLE, Constraints, Indizes). |
|
||||
| M-147 | Deployment/Installer | deployment | Installer (WixSharp) und Deployment-Konfiguration für c-entron und Riverbird. |
|
||||
| M-148 | Docker/Betrieb | docker | Container-Definitionen für API, Webservice, Demo, Mailcatcher, Regressionstest-DB. |
|
||||
| M-149 | Scripts | scripts | Hilfs- und Wartungsskripte. |
|
||||
| M-150 | Dokumentation | docs | Entwickler-/Betriebsdokumentation (Features, Architektur, Security, EDI, Belege). |
|
||||
| M-151 | Tests | tests | Test-Suiten (Unit, Integration, EndToEnd, Playwright). |
|
||||
|
||||
**Hinweis:** Das Inventar wird bei Bedarf ergänzt, aber nicht gekürzt.
|
||||
|
||||
---
|
||||
|
||||
## Abdeckungstabelle (je Modul des Inventars)
|
||||
|
||||
Einstufung: `tief` = mehrere Anforderungen inkl. gelesener Kernlogik der risikorelevanten Pfade; `mittel` = 2-3 Anforderungen auf Basis gelesener Kernmethoden; `flach` = 1-2 Anforderungen auf Basis von Methodensignaturen/ausgewählten Codeausschnitten; `nicht analysiert` = keine Anforderung (mit Begründung).
|
||||
|
||||
| Modul | Bezeichnung | Einstufung | Anzahl Anforderungen | Anforderungen |
|
||||
|---|---|---|---|---|
|
||||
| M-001 | Accounting (Bankkonten) | mittel | 2 | SwRS-019, SwRS-155 |
|
||||
| M-002 | Accounts (Konten-/Adressstamm) | mittel | 3 | SwRS-020, SyRS-020, StRS-001 |
|
||||
| M-003 | Administration: AccessTokens | mittel | 3 | SyRS-017, SwRS-021, StRS-013 |
|
||||
| M-004 | Administration: Applications | flach | 1 | SwRS-022 |
|
||||
| M-005 | Administration: ArtificialIntelligence | mittel | 3 | SyRS-019, SwRS-023, StRS-029 |
|
||||
| M-006 | Administration: BackgroundServices | mittel | 3 | SyRS-018, SwRS-024, StRS-031 |
|
||||
| M-007 | Administration: BookKeepingAccountSystems | flach | 1 | SwRS-025 |
|
||||
| M-008 | Administration: CentronConfigDb | flach | 1 | SwRS-026 |
|
||||
| M-009 | Administration: Company/CompanyInformations | mittel | 3 | SyRS-024, SwRS-027, StRS-033 |
|
||||
| M-010 | Administration: Connections | flach | 1 | SwRS-028 |
|
||||
| M-011 | Administration: Customization | mittel | 2 | SwRS-029, StRS-032 |
|
||||
| M-012 | Administration: DataSecurity | mittel | 3 | SyRS-022, SwRS-030, StRS-030 |
|
||||
| M-013 | Administration: Documents/FileManagement | mittel | 3 | SwRS-031, SyRS-026, StRS-020 |
|
||||
| M-014 | Administration: Employees | flach | 1 | SwRS-032 |
|
||||
| M-015 | Administration: Environments | flach | 1 | SwRS-033 |
|
||||
| M-016 | Administration: Licensing | tief | 3 | SyRS-003, SwRS-009, StRS-014 |
|
||||
| M-017 | Administration: Logins/Auth | tief | 9 | SyRS-003, SyRS-004, SyRS-005, SyRS-006, SyRS-007, SwRS-002, SwRS-003, SwRS-005, StRS-013 |
|
||||
| M-018 | Administration: Mandatory | mittel | 4 | SyRS-012, SwRS-012, SyRS-024, StRS-033 |
|
||||
| M-019 | Administration: Masterdata | flach | 1 | SwRS-034 |
|
||||
| M-020 | Administration: NetworkDiagnostics | flach | 1 | SwRS-035 |
|
||||
| M-021 | Administration: PerformanceTests/Profiling | flach | 1 | SwRS-036 |
|
||||
| M-022 | Administration: PhoneSettings | mittel | 2 | SwRS-037, SyRS-030 |
|
||||
| M-023 | Administration: Portal | flach | 1 | SwRS-038 |
|
||||
| M-024 | Administration: Rights | tief | 7 | SyRS-001, SyRS-002, SyRS-008, SwRS-001, SwRS-004, SwRS-008, StRS-012 |
|
||||
| M-025 | Administration: Scripts/SQLManagement | flach | 1 | SwRS-039 |
|
||||
| M-026 | Administration: Settings | mittel | 4 | SyRS-023, SwRS-040, SyRS-050, StRS-032 |
|
||||
| M-027 | Administration: Themes | flach | 1 | SwRS-041 |
|
||||
| M-028 | Administration: WebServiceConfiguration | flach | 1 | SwRS-042 |
|
||||
| M-029 | AppointmentRequests | flach | 1 | SwRS-043 |
|
||||
| M-030 | ArtificialIntelligence | mittel | 2 | SyRS-019, StRS-029 |
|
||||
| M-031 | BusinessPartner | flach | 1 | SwRS-044 |
|
||||
| M-032 | Buying | flach | 1 | SwRS-045 |
|
||||
| M-033 | Calendar | mittel | 3 | SwRS-046, SyRS-029, SwRS-157 |
|
||||
| M-034 | CentronIcons | flach | 1 | SwRS-047 |
|
||||
| M-035 | CentronNexus (BL) | flach | 1 | SwRS-048 |
|
||||
| M-036 | ChangeTracking | mittel | 3 | SyRS-009, SwRS-007, StRS-030 |
|
||||
| M-037 | Chats | mittel | 2 | SwRS-049, StRS-017 |
|
||||
| M-038 | CheckListArea | flach | 1 | SwRS-050 |
|
||||
| M-039 | Core (BL-Kern) | mittel | 4 | SyRS-009, SyRS-010, SwRS-006, SwRS-007 |
|
||||
| M-040 | CountryArea | flach | 1 | SwRS-051 |
|
||||
| M-041 | CPra | flach | 1 | SwRS-052 |
|
||||
| M-042 | CustomerArea | mittel | 2 | SwRS-059, StRS-023 |
|
||||
| M-043 | Customizations (CustomTables) | mittel | 2 | SwRS-053, StRS-032 |
|
||||
| M-044 | DataExchange | tief | 7 | SyRS-021, SwRS-057, SwRS-058, SyRS-043, StRS-009, StRS-010, StRS-021 |
|
||||
| M-045 | Devices | mittel | 3 | SwRS-054, SyRS-028, StRS-022 |
|
||||
| M-046 | DocuBoard | mittel | 3 | SwRS-055, SyRS-028, StRS-022 |
|
||||
| M-047 | DocumentationArea | flach | 1 | SwRS-056 |
|
||||
| M-048 | EDI | mittel | 4 | SyRS-027, SwRS-060, StRS-007, StRS-010 |
|
||||
| M-049 | EmployeeArea | flach | 1 | SwRS-061 |
|
||||
| M-050 | ExpectedEvents | flach | 1 | SwRS-062 |
|
||||
| M-051 | ExternalHelpdesk | flach | 1 | SwRS-063 |
|
||||
| M-052 | ExternalToolsBL | flach | 1 | SwRS-064 |
|
||||
| M-053 | Finances | tief | 6 | SyRS-032, SwRS-065, SwRS-066, SyRS-050, SwRS-155, StRS-009 |
|
||||
| M-054 | Gateway (BL) | flach | 1 | SwRS-067 |
|
||||
| M-055 | GUI (BL-Anteil) | flach | 1 | SwRS-134 |
|
||||
| M-056 | IndexSearch | mittel | 3 | SyRS-033, SwRS-068, StRS-027 |
|
||||
| M-057 | Integrations | flach | 1 | SwRS-069 |
|
||||
| M-058 | ItPlanner | flach | 1 | SwRS-070 |
|
||||
| M-059 | Logistics | mittel | 2 | SwRS-071, StRS-008 |
|
||||
| M-060 | Mail | mittel | 4 | SyRS-035, SwRS-072, SwRS-157, StRS-017 |
|
||||
| M-061 | MailScanner | mittel | 2 | SyRS-036, SwRS-073 |
|
||||
| M-062 | Mailings | mittel | 2 | SwRS-074, StRS-026 |
|
||||
| M-063 | MassUpdate | mittel | 2 | SyRS-034, SwRS-075 |
|
||||
| M-064 | Mobile | flach | 1 | SwRS-076 |
|
||||
| M-065 | Modules | mittel | 2 | SwRS-077, StRS-014 |
|
||||
| M-066 | MyCentron | mittel | 3 | SyRS-029, SwRS-078, StRS-018 |
|
||||
| M-067 | MyDay | mittel | 4 | SyRS-029, SwRS-079, SwRS-158, StRS-018 |
|
||||
| M-068 | NexusNotifications | flach | 1 | SwRS-080 |
|
||||
| M-069 | NexusTicketViews | flach | 1 | SwRS-081 |
|
||||
| M-070 | Notifications | flach | 1 | SwRS-082 |
|
||||
| M-071 | ObjectExternalReferences | mittel | 2 | SwRS-083, StRS-021 |
|
||||
| M-072 | Outlook | flach | 1 | SwRS-084 |
|
||||
| M-073 | PasswordManagementArea | mittel | 2 | SwRS-085, StRS-028 |
|
||||
| M-074 | PasswordManager | mittel | 2 | SwRS-086, StRS-028 |
|
||||
| M-075 | Processes | flach | 1 | SwRS-087 |
|
||||
| M-076 | ProductMatrix | mittel | 2 | SwRS-088, StRS-025 |
|
||||
| M-077 | Production | mittel | 2 | SwRS-089, StRS-024 |
|
||||
| M-078 | Projects | mittel | 2 | SwRS-090, StRS-025 |
|
||||
| M-079 | Purchasing | mittel | 2 | SwRS-091, StRS-007 |
|
||||
| M-080 | ReportEngine | mittel | 3 | SyRS-025, SyRS-043, StRS-015 |
|
||||
| M-081 | Reporting | flach | 1 | SyRS-025 |
|
||||
| M-082 | RiverDivo | flach | 1 | SwRS-101 |
|
||||
| M-083 | Sales: Receipts (Belegwesen) | tief | 16 | SyRS-011, SyRS-012, SyRS-013, SyRS-014, SyRS-015, SyRS-016, SwRS-010, SwRS-013, SwRS-014, SwRS-015, SwRS-016, SwRS-017, SwRS-018, SwRS-154, StRS-002, StRS-003 |
|
||||
| M-084 | Sales: CustomerAssets (Verträge) | tief | 11 | SyRS-028, SyRS-037, SyRS-038, SyRS-039, SwRS-092, SwRS-093, SwRS-094, SwRS-095, StRS-004, StRS-006, StRS-022 |
|
||||
| M-085 | Sales: Customers (CRM) | flach | 1 | SwRS-102 |
|
||||
| M-086 | Sales: Support (Helpdesk) | tief | 11 | SyRS-039, SyRS-040, SyRS-041, SwRS-095, SwRS-096, SwRS-097, SwRS-098, SwRS-099, SwRS-156, StRS-005, StRS-006 |
|
||||
| M-087 | Sales: CashBooks | tief | 4 | SyRS-042, SwRS-100, StRS-003, StRS-009 |
|
||||
| M-088 | Sales: Marketing | mittel | 2 | SwRS-103, StRS-026 |
|
||||
| M-089 | Sales: Calendar | flach | 1 | SwRS-104 |
|
||||
| M-090 | Sales: DocumentationWizardArea | flach | 1 | SwRS-105 |
|
||||
| M-091 | Sales: HourlySurchargeRatesBL | flach | 1 | SwRS-106 |
|
||||
| M-092 | Security (PdfSigning) | mittel | 2 | SwRS-107, StRS-020 |
|
||||
| M-093 | SelfCare | mittel | 2 | SwRS-108, StRS-019 |
|
||||
| M-094 | Services | flach | 1 | SwRS-109 |
|
||||
| M-095 | SocialMedia | flach | 1 | SwRS-110 |
|
||||
| M-096 | Start | flach | 1 | SwRS-111 |
|
||||
| M-097 | Statistics | mittel | 2 | SwRS-135, StRS-016 |
|
||||
| M-098 | Storage | mittel | 2 | SwRS-112, StRS-008 |
|
||||
| M-099 | SystemArea | flach | 1 | SwRS-113 |
|
||||
| M-100 | Tags | flach | 1 | SwRS-114 |
|
||||
| M-101 | Tapi | mittel | 3 | SyRS-030, SwRS-115, StRS-017 |
|
||||
| M-102 | TaskManager | flach | 1 | SwRS-116 |
|
||||
| M-103 | Telemetry | flach | 1 | SwRS-117 |
|
||||
| M-104 | TextModuleArea | flach | 1 | SwRS-118 |
|
||||
| M-105 | TicketProjects | mittel | 2 | SwRS-119, StRS-025 |
|
||||
| M-106 | Time | flach | 1 | SwRS-120 |
|
||||
| M-107 | ToDoArea | mittel | 2 | SyRS-029, SwRS-121 |
|
||||
| M-108 | Tools | flach | 1 | SwRS-122 |
|
||||
| M-109 | TradePool | flach | 1 | SwRS-123 |
|
||||
| M-110 | Transactions | flach | 1 | SwRS-124 |
|
||||
| M-111 | TwoFactorAuthenticator | flach | 1 | SwRS-011 |
|
||||
| M-112 | Urls | flach | 1 | SwRS-125 |
|
||||
| M-113 | VideoPortal | flach | 1 | SwRS-126 |
|
||||
| M-114 | VoucherManagement | flach | 1 | SwRS-127 |
|
||||
| M-115 | Warehousing | mittel | 4 | SyRS-013, SwRS-014, SwRS-128, StRS-008 |
|
||||
| M-116 | WebLinks | flach | 1 | SwRS-129 |
|
||||
| M-117 | WebServices (BL) | flach | 1 | SwRS-136 |
|
||||
| M-118 | WebSuite | flach | 1 | SwRS-130 |
|
||||
| M-119 | WebVersion | flach | 1 | SwRS-131 |
|
||||
| M-120 | Helpers (BL) | flach | 1 | SwRS-132 |
|
||||
| M-121 | Exceptions (BL) | flach | 1 | SwRS-133 |
|
||||
| M-122 | Centron.DAO (Persistenz) | flach | 1 | SwRS-137 |
|
||||
| M-123 | Centron.Entities | flach | 1 | SwRS-138 |
|
||||
| M-124 | Centron.Common | flach | 1 | SwRS-139 |
|
||||
| M-125 | Centron.Interfaces | flach | 1 | SwRS-140 |
|
||||
| M-126 | Centron.Gateway | mittel | 2 | SyRS-043, SwRS-141 |
|
||||
| M-127 | Centron.WPF.UI (+ Extension) | mittel | 2 | SyRS-031, SwRS-142 |
|
||||
| M-128 | Centron.Controls (+ Preview) | flach | 1 | SwRS-143 |
|
||||
| M-129 | Centron.Core (shared) | flach | 1 | SwRS-144 |
|
||||
| M-130 | CentronNexus (Blazor-Web) | mittel | 5 | SyRS-031, SyRS-045, SwRS-145, SwRS-156, StRS-019 |
|
||||
| M-131 | CentronNexus.Host | flach | 1 | SwRS-145 |
|
||||
| M-132 | CentronNexus.OutlookAddIn | flach | 1 | SwRS-145 |
|
||||
| M-133 | Centron.Controllers (REST-API) | mittel | 3 | SyRS-031, SyRS-046, SwRS-147 |
|
||||
| M-134 | Centron.WebServices.Core | flach | 1 | SwRS-146 |
|
||||
| M-135 | Centron.Host (+ Console/WindowsService) | flach | 1 | SwRS-146 |
|
||||
| M-136 | ConnectionManager | flach | 1 | SwRS-146 |
|
||||
| M-137 | Centron.Api.EbInterface | flach | 1 | SyRS-043 |
|
||||
| M-138 | Centron.Api.Gls | mittel | 3 | SyRS-044, SwRS-151, StRS-011 |
|
||||
| M-139 | Centron.Api.Shipcloud | mittel | 3 | SyRS-044, SwRS-151, StRS-011 |
|
||||
| M-140 | Centron.APIs.CopDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-141 | Centron.APIs.EgisDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-142 | Centron.APIs.FinAPI | flach | 1 | SwRS-149 |
|
||||
| M-143 | Centron.APIs.IcecatDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-144 | Centron.APIs.ITscopeDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-145 | Centron.Api.docuFORM | flach | 1 | SwRS-150 |
|
||||
| M-146 | Datenbankschema | flach | 1 | SwRS-152 |
|
||||
| M-147 | Deployment/Installer | mittel | 3 | SyRS-048, SwRS-153, StRS-031 |
|
||||
| M-148 | Docker/Betrieb | mittel | 4 | SyRS-047, SyRS-049, SwRS-153, StRS-031 |
|
||||
| M-149 | Scripts | mittel | 2 | SyRS-048, SwRS-153 |
|
||||
| M-150 | Dokumentation | nicht analysiert | 0 | – (reine Entwickler-/Betriebsdokumentation ohne eigene Systemfunktion; als KONTEXT-Belegquelle genutzt, z. B. für SyRS-043, SwRS-157) |
|
||||
| M-151 | Tests | mittel | 2 | SyRS-049, StRS-031 |
|
||||
|
||||
**Summen:** tief: 9 Module, mittel: 58, flach: 83, nicht analysiert: 1 (gesamt 151 Module).
|
||||
|
||||
## Konsistenzcheck
|
||||
|
||||
Automatisiert über alle drei Spezifikationsdateien ausgeführt (241 Anforderungsblöcke):
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---|---|
|
||||
| Doppelte oder mehrfach vergebene IDs | keine (241 eindeutige IDs: 33 StRS, 50 SyRS, 158 SwRS) |
|
||||
| Anforderungen ohne Beleg | keine (jeder Block enthält mind. einen klassifizierten Beleg) |
|
||||
| Anforderungen ohne Übernahmewürdigkeit | keine |
|
||||
| Anforderungen ohne Prüfidee | keine |
|
||||
| Tracelinks auf nicht existierende IDs | keine |
|
||||
| SwRS ohne SyRS-Referenz / SyRS ohne StRS-Referenz | keine (siehe Traceability.md) |
|
||||
| Abgleich Hypothesen.md ↔ Inline-Markierungen | deckungsgleich: SyRS-050, SwRS-154, SwRS-155, SwRS-156, SwRS-157, SwRS-158 (6 Stück) |
|
||||
| Inhaltlich deckungsgleiche Anforderungen ohne Konsolidierungsvermerk | keine gefundenen; erkannte fachliche Doppelimplementierungen sind als Konsolidierungskandidaten markiert (siehe Liste unten) |
|
||||
|
||||
**Wesentliche Konsolidierungskandidaten (fachlich gleiche Konzepte in getrennten Implementierungen):**
|
||||
|
||||
1. Gerätedatenhaltungen: AccountDevices (M-045) vs. CustomerAssets/„Stammblätter" (M-084) vs. DocuBoard-Assetmanagement (M-046) → ein Asset-Konzept (SyRS-028, StRS-022).
|
||||
2. Zwei Belegmodelle: Sales/Receipts (neu) vs. Sales/CustomerAssets (alt) für dieselben Belegarten (SyRS-011).
|
||||
3. Zwei Rechtemodelle: interne Rechte (Sichtrus/Sichmemb) vs. WebAccountsRights (SyRS-001/SyRS-002).
|
||||
4. Drei 2FA-Wege: RADIUS, E-Mail-Link, TOTP (SyRS-005, SwRS-011).
|
||||
5. Zwei Passwortverwaltungen: PasswordManagementArea vs. PasswordManager (SwRS-085/SwRS-086).
|
||||
6. Zwei Workflow-/Prozess-Engines: Processes vs. Services/Workflows (SwRS-087/SwRS-109); zusätzlich MailScanner-Workflows (SyRS-036).
|
||||
7. Zwei Customizing-Mechanismen: Custom Properties vs. Custom Tables (SwRS-029/SwRS-053).
|
||||
8. Drei Projektbegriffe: Projects, CrmProjects, TicketProjects (SwRS-090/SwRS-119, StRS-025).
|
||||
9. Zwei Aufgabenkonzepte: ToDoArea vs. TaskManager (SwRS-116/SwRS-121).
|
||||
10. Zwei Benachrichtigungssysteme: Notifications vs. NexusNotifications (SwRS-080/SwRS-082).
|
||||
11. EDI-Logik doppelt: Centron.BL/EDI vs. Centron.Gateway/EDI_* (SyRS-027/SwRS-141).
|
||||
12. Bankverbindungen doppelt: Felder in Tabelle Kunden vs. BankAccount-Objekte (SwRS-152/SwRS-019).
|
||||
13. Zwei Endkunden-Formularwege: SelfCare vs. Nexus-Kundenportal-Formulare (SwRS-108/SyRS-045).
|
||||
14. Versandwege GLS-direkt vs. Shipcloud (SyRS-044).
|
||||
15. Desktop-Client (WPF) vs. Nexus-Web-UI für dieselben Prozesse (SyRS-031, SwRS-142/SwRS-145).
|
||||
|
||||
## Risikorelevante Anforderungen (Sicherheit, Abrechnung/Fakturierung, Berechtigungen)
|
||||
|
||||
75 Anforderungen sind risikorelevant. Belegsituation:
|
||||
|
||||
| ID | Titel | PRIMÄR-Beleg vorhanden | Status |
|
||||
|---|---|---|---|
|
||||
| SyRS-001 | Gruppenbasierte Benutzerrechtepruefung | ja | belegt |
|
||||
| SyRS-002 | Getrenntes Rechtemodell fuer Web-Accounts | ja | belegt |
|
||||
| SyRS-003 | Ticketbasierte Sitzungen mit Lizenzpruefung | ja | belegt |
|
||||
| SyRS-004 | Mehrere Authentifizierungsverfahren | ja | belegt |
|
||||
| SyRS-005 | Zwei-Faktor-Authentifizierung | ja | belegt |
|
||||
| SyRS-006 | Zeitgesteuerte Kontodeaktivierung | ja | belegt |
|
||||
| SyRS-007 | Anwendungsbezogene Anmelderechte | ja | belegt |
|
||||
| SyRS-008 | Standard-Rechtegruppen | ja | belegt |
|
||||
| SwRS-001 | Rechteermittlung SQL+Cache | ja | belegt |
|
||||
| SwRS-002 | Passwort SHA1 ungesalzen | ja | belegt |
|
||||
| SwRS-003 | 2FA-Validatorwahl | ja | belegt |
|
||||
| SwRS-004 | Rechtegruppenverwaltung | ja | belegt |
|
||||
| SwRS-005 | Ticket-Wiederverwendung+LoginIP | ja | belegt |
|
||||
| SwRS-008 | Standardrechtegruppen aus Ressource | ja | belegt |
|
||||
| SwRS-009 | Signaturvalidierte Lizenzdatei | ja | belegt |
|
||||
| SyRS-011 | Belegkette Weiterfuehrungswege | ja | belegt |
|
||||
| SyRS-012 | Nummernkreise je Mandant/Filiale | ja | belegt |
|
||||
| SyRS-013 | Bestandswirkung der Belege | ja | belegt |
|
||||
| SyRS-014 | Mindestpreisschutz | ja | belegt |
|
||||
| SwRS-010 | Belegnummernvergabe+Templatekunde | ja | belegt |
|
||||
| SwRS-011 | TOTP-Zweitfaktor | ja | belegt |
|
||||
| SwRS-012 | Nummernkreis-Kaskade | ja | belegt |
|
||||
| SwRS-014 | Negativbuchung nur mit Recht | ja | belegt |
|
||||
| SwRS-015 | Mindestpreis-Reauth | ja | belegt |
|
||||
| SyRS-017 | API-Zugriffstokens | ja | belegt |
|
||||
| SwRS-019 | Bankverbindungen Rechte+Default | ja | belegt |
|
||||
| SwRS-020 | Kontenstamm Rechte+FiBu-Nummer | ja | belegt |
|
||||
| SwRS-021 | API-Token Hash+Ablauf+Log | ja | belegt |
|
||||
| SwRS-026 | Konfig-DB Masterkey | ja | belegt |
|
||||
| SyRS-022 | DSGVO Loeschkonzept | ja | belegt |
|
||||
| SwRS-027 | Kollisionssichere Nummernvergabe | ja | belegt |
|
||||
| SwRS-030 | DSGVO-Kontaktloeschung | ja | belegt |
|
||||
| SyRS-021 | FiBu-Uebergabe DATEV | ja | belegt |
|
||||
| SwRS-057 | FiBu-Exportkonfigurationen | ja | belegt |
|
||||
| SwRS-058 | Doppeluebergabeschutz FiBu | ja | belegt |
|
||||
| SyRS-032 | Onlinebanking-Zahlungsabgleich | ja | belegt |
|
||||
| SwRS-065 | Zahlungseingangsprotokoll | ja | belegt |
|
||||
| SwRS-066 | Bankumsatz-Zuordnung/Buchung | ja | belegt |
|
||||
| SwRS-085 | Kundenzugangsdaten+Logs | ja | belegt |
|
||||
| SwRS-086 | Passwortmanager Siegel | ja | belegt |
|
||||
| SyRS-037 | Vertragsverwaltung Laufzeit/Intervalle | ja | belegt |
|
||||
| SyRS-038 | Automatische Vertragsfakturierung | ja | belegt |
|
||||
| SyRS-039 | Timer-Billing | ja | belegt |
|
||||
| SyRS-040 | Helpdesk Rechte+Status | ja | belegt |
|
||||
| SyRS-042 | Kassenbuch | ja | belegt |
|
||||
| SwRS-092 | Vertrags-Datumsarithmetik | ja | belegt |
|
||||
| SwRS-093 | Auto-Vertragsschliessen | ja | belegt |
|
||||
| SwRS-094 | Abrechnungsfaellige Kunden+Zaehler | ja | belegt |
|
||||
| SwRS-095 | Timer-Belegerzeugung | ja | belegt |
|
||||
| SwRS-096 | Ticket-Rechtepruefung Save | ja | belegt |
|
||||
| SwRS-097 | Ticket-Sichtbarkeit restriktiv | ja | belegt |
|
||||
| SwRS-100 | Kassenbuchbuchung | ja | belegt |
|
||||
| SwRS-101 | Riverbird-Ticketvalidierung | ja | belegt |
|
||||
| SwRS-106 | Stundenzuschlagssaetze | ja | belegt |
|
||||
| SwRS-107 | PDF-Signatur | ja | belegt |
|
||||
| SwRS-112 | Inventur | ja | belegt |
|
||||
| SwRS-127 | Gutscheinverwaltung | ja | belegt |
|
||||
| SyRS-043 | E-Rechnungsformate | ja | belegt |
|
||||
| SyRS-046 | REST-API Rechteautorisierung | ja | belegt |
|
||||
| SwRS-144 | Core-Bibliothek TOTP | ja | belegt |
|
||||
| SwRS-147 | Versionierte Controller | ja | belegt |
|
||||
| SwRS-149 | finAPI-Client | ja | belegt |
|
||||
| SyRS-050 | [HYPOTHESE] Mahnwesen | nein | HYPOTHESE |
|
||||
| SwRS-154 | [HYPOTHESE] Anzahlungsverrechnung | ja | HYPOTHESE |
|
||||
| SwRS-155 | [HYPOTHESE] SEPA-Lastschrift | ja | HYPOTHESE |
|
||||
| StRS-003 | Geschuetzte Fakturierung | ja | belegt |
|
||||
| StRS-004 | Vertragsgeschaeft | ja | belegt |
|
||||
| StRS-006 | Leistungserfassung | ja | belegt |
|
||||
| StRS-009 | Finanzprozesse | ja | belegt |
|
||||
| StRS-010 | E-Belegaustausch | ja | belegt |
|
||||
| StRS-012 | Berechtigungssteuerung | ja | belegt |
|
||||
| StRS-013 | Sichere Anmeldung/API | ja | belegt |
|
||||
| StRS-014 | Lizenz-/Modulsteuerung | ja | belegt |
|
||||
| StRS-028 | Kundenzugangsdaten | ja | belegt |
|
||||
| StRS-030 | DSGVO+Audit | ja | belegt |
|
||||
|
||||
**Regelprüfung:** Alle risikorelevanten Anforderungen besitzen entweder einen PRIMÄR-Beleg mit benannter durchsetzender Stelle oder sind als `[HYPOTHESE]` gekennzeichnet (betrifft SyRS-050 Mahnwesen). Kein Verstoß gegen die risikobasierte Priorisierung.
|
||||
|
||||
## Selbstbewertung
|
||||
|
||||
**Umfang des Laufs:** 241 Anforderungen (33 StRS, 50 SyRS, 158 SwRS) über 151 Inventarmodule; 6 Hypothesen (2,5 %); 75 risikorelevante Anforderungen.
|
||||
|
||||
**Analysetiefe (absolute Zahlen):**
|
||||
- tief: 9 Module (M-016 Licensing, M-017 Logins/Auth, M-024 Rights, M-044 DataExchange/FiBu, M-053 Finances/Onlinebanking, M-083 Receipts/Belegwesen, M-084 CustomerAssets/Verträge, M-086 Support/Helpdesk, M-087 CashBooks) - Kernlogik der risikorelevanten Pfade wurde im Quelltext gelesen.
|
||||
- mittel: 58 Module (2-3 Anforderungen, Kernmethoden gelesen).
|
||||
- flach: 83 Module (1 Anforderung auf Basis von Klassen-/Methodensignaturen und gezielten Codeausschnitten).
|
||||
- nicht analysiert: 1 Modul (M-150 docs - reine Dokumentation, als KONTEXT-Belegquelle genutzt).
|
||||
|
||||
**Mindestabdeckung:** erreicht. Jedes der 151 Module hat mindestens eine Anforderung; einzige Ausnahme ist M-150 mit dokumentierter Begründung (zulässig laut Vorgabe: `nicht analysiert` mit Begründung).
|
||||
|
||||
**Dünne Belegstellen (ehrliche Abgrenzung):**
|
||||
- Bei flach eingestuften Modulen stützen sich die PRIMÄR-Belege auf gelesene Methodensignaturen und kurze Codeausschnitte, nicht auf vollständige Methodenrümpfe (z. B. SwRS-047 Icons, SwRS-070 ItPlanner, SwRS-090 Projekte, SwRS-124 Transactions, SwRS-143 Controls). Die Aussagen sind bewusst eng an den gesicherten Befund formuliert.
|
||||
- Rein strukturbasierte Belege (Ordner-/Projektexistenz statt Prüf logik) tragen SwRS-142 (WPF-Client), SwRS-143 (Controls), SwRS-145 (Nexus), SwRS-146 (Hosting), SyRS-031 (Mehrkanal), SyRS-049 (Tests) - hier ist die Existenz der Struktur selbst der Fakt.
|
||||
- Hypothesen betreffen v. a. Abrechnungsdetails (Mahnwesen, SEPA-Datei, Anzahlungsverrechnung) und Web-/Sync-Verhalten (WebCart-Sortiment, Exchange-Sync, Supremo).
|
||||
- SEKUNDÄR/KONTEXT-lastig sind SyRS-050 (nur Konfigurationsschalter) und SwRS-156 (nur README + Klassenexistenz) - beide korrekt als HYPOTHESE geführt.
|
||||
|
||||
**Hypothesenquote:** 6 von 241 (2,5 %). Der Wert liegt bewusst über null: Bei einer Codebasis dieser Größe (u. a. 11.441 Zeilen allein in ReceiptBL.cs, 1558 DB-Tabellen) bleiben nach einem Lauf zwangsläufig offene Kernfragen; die sechs Hypothesen benennen sie explizit.
|
||||
|
||||
**Erkenntnisse für eine Folge-Iteration (Nachschlag empfohlen):**
|
||||
1. Mahnwesen lokalisieren und als belegte Anforderungen ausarbeiten (SyRS-050) - abrechnungskritisch.
|
||||
2. DownPaymentBL, SEPA-Erzeugung und ReceiptItemPriceBL/ReceiptPriceHelperBL (Preisberechnung inkl. Rabatt-/Staffellogik) vertiefen - die Preisermittlungsformeln selbst wurden nicht spezifiziert.
|
||||
3. Das alte Belegmodell Sales/CustomerAssets systematisch gegen Sales/Receipts differenzieren (welche Masken nutzen noch das Altmodell?).
|
||||
4. WebServices-BL (464 Dateien) und Centron.Controllers-Endpunkte vollständig katalogisieren (API-Oberfläche als eigenes Spezifikationskapitel).
|
||||
5. DB-Schema systematisch auswerten (Constraints/Trigger je Kerntabelle); in diesem Lauf nur punktuell genutzt (Tabelle Kunden).
|
||||
6. WPF-Masken (Views/Wizards) und Nexus-Seiten fachlich durchgehen, um UI-nahe Regeln (Pflichtfelder, Sichtbarkeiten) zu heben - bisher überwiegend BL-getrieben analysiert.
|
||||
7. Statistiken/Reports einzeln inventarisieren (Reportvorlagenbestand ist Migrationsaufwandstreiber).
|
||||
|
||||
**Methodische Anmerkungen:**
|
||||
- Alle Anforderungen wurden aus statischer Analyse gewonnen; keine Ausführung, keine externen Werkzeuge.
|
||||
- Die Change-Historie (Git) wurde nicht ausgewertet, da im Arbeitsverzeichnis keine Commit-Metadaten als Dateien vorlagen (nur der Code-Snapshot); Schritt 2 der Methodenkette ist insoweit teilweise erfüllt (Projektartefakte docs/, README, CentronRights.md wurden genutzt).
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
# Glossar – c-entron ERP-Suite
|
||||
|
||||
Domänenbegriffe, wie sie in den Anforderungen verwendet werden. Technische Bezeichner (Klassen,
|
||||
Tabellen) in Originalschreibweise.
|
||||
|
||||
| Begriff | Bedeutung |
|
||||
|---|---|
|
||||
| Abholliste / Abholschein (PickupList) | Beleg über die Rücknahme von Ware vom Kunden; bucht Bestand zu. |
|
||||
| AppUser | Internes Benutzerkonto (Tabelle `Sichbenu`); mit Mitarbeiter (Employee) verknüpft. |
|
||||
| Asset (CustomerAsset) | Historischer Oberbegriff des alten Belegmodells („Vorgang") unter Sales/CustomerAssets; zugleich Begriff für beim Kunden befindliche Geräte („Stammblätter"). |
|
||||
| AssetCondition | Stammdatensatz für Zahlungs-/Lieferkonditionen; steuert u. a. Kassenbuchwirkung (`ChangesCashBook`) und automatisches Schließen von Belegen. |
|
||||
| AutomaticFactura | Automatische Vertragsfakturierung inkl. Zählerstands- und Sammelrechnungslogik. |
|
||||
| Barbeleg / IsCashAsset | Beleg mit Barzahlung; eigener Nummernkreis (CashInvoice/CashOffer) und Kassenbuchbindung. |
|
||||
| Belegkette | Zulässige Weiterführungspfade zwischen Belegarten (Angebot → Auftrag → Lieferschein → Rechnung → Gutschrift; Vertrag → Rechnung). |
|
||||
| BranchOrigin | Regel, aus welcher Person (Ersteller oder Vertriebsmitarbeiter) die Filiale eines neuen Belegs abgeleitet wird. |
|
||||
| c-entron Nexus | Blazor-basierter Webclient (interne Web-Oberfläche und Kundenportal). |
|
||||
| CashBookRecord | Kassen-Belegart je Steuersatz/Filiale mit Sachkonto und Steuerschlüssel; Voraussetzung jeder Kassenbuchbuchung. |
|
||||
| CentronObjectKindNumeric | Systemweiter numerischer Katalog der Objektarten (Belegarten, Tickets, Konten …). |
|
||||
| Concurrency-Control-Guid | Token je Beleg zur Erkennung konkurrierender Änderungen bei Einzelfeld-Updates. |
|
||||
| Dispatcher | Ausgezeichneter Mitarbeiter für die Einsatz-/Ticketverteilung (genau einer). |
|
||||
| Distributor | Großhändler/Lieferant der IT-Branche (ALSO, Alltron, EGIS, Komsa, Herweck, ITscope …). |
|
||||
| EDI | Elektronischer Datenaustausch mit Distributoren (Bestellungen, Auftragsbestätigungen) in herstellerspezifischen Formaten. |
|
||||
| Eskalation | Dreistufige Fristenüberwachung überfälliger Vorgänge mit Zeitstempeln `Eskalation1Am`–`Eskalation3Am`. |
|
||||
| Firmengruppe (CompanyGroup) | Konzernverbund von Kundenkonten; kann Belegeinstellungen der Gruppe vererben (`UseSettingsFromCompanyGroupForReceipts`). |
|
||||
| Helpdesk / Ticket | Supportvorgang mit Status, Verantwortlichem, Fälligkeit, Timern und Eskalation. |
|
||||
| Helpdesk-Timer | Am Ticket erfasste Arbeitszeit; Grundlage der Leistungsabrechnung (Timer-Billing). |
|
||||
| I3D | Systemweiter Primärschlüssel der Geschäftsobjekte (zentral vergeben, keine Identity-Spalten). |
|
||||
| Lieferschein (DeliveryList) | Bestandswirksamer Auslieferungsbeleg; bucht Bestand ab. |
|
||||
| Mandant (Mandator) | Rechtlich eigenständige Firma innerhalb einer Installation; Filialen (Branch) sind Mandanten zugeordnet. |
|
||||
| Mindestpreis (MinPrice) | Artikeluntergrenze; Unterschreitung nur per Recht bzw. Zweitanmeldung (Vier-Augen-Prinzip). |
|
||||
| MSP / MSP-Collector | Managed-Service-Provider-Funktionen; Collector sammelt Verbrauchs-/Gerätedaten für Auswertung und Abrechnung. |
|
||||
| Nummernkreis (NumberGroup) | Fortlaufender Nummernvorrat je Belegart, Mandant und Filiale mit Fallback-Kaskade. |
|
||||
| Receipt | Beleg im neueren Belegmodell (Sales/Receipts); ersetzt schrittweise das CustomerAssets-Modell. |
|
||||
| Rechtegruppe (AppGroup) | Bündel von Rechten (Tabelle `Sichtrus`), Benutzern über `Sichmemb` zugeordnet. |
|
||||
| Restriktives Recht | Recht, das die Sicht einschränkt statt erweitert (z. B. „Tickets anzeigen – nur eigene"). |
|
||||
| RMA | Reklamationsvorgang: Rücknahme vom Kunden (SendBack) und Weiterleitung an den Lieferanten (SendForth). |
|
||||
| Sammelrechnung (Collective Invoice) | Eine Rechnung über mehrere Verträge/Leistungen eines Kunden oder Konzerns. |
|
||||
| SelfCare | Web-Formulare, über die Endkunden Anfragen einreichen. |
|
||||
| Sonderpreis | Kundenindividueller Artikelpreis; laut Doku Basis des WebCart-Sortiments. |
|
||||
| Stammblatt | Historische Bezeichnung für Gerätedatensätze beim Kunden (v. a. Drucker); Konsolidierungskandidat zum Asset-Konzept. |
|
||||
| Ticket (Anmeldung) | Sitzungsnachweis nach erfolgreicher Authentifizierung (nicht zu verwechseln mit Helpdesk-Ticket). |
|
||||
| Timer-Billing | Überführung erfasster Ticketzeiten in Abrechnungsbelege unter Vertrags-/Kontingentbeachtung. |
|
||||
| Vertrag (ReceiptContract) | Wiederkehrend abzurechnender Beleg mit Laufzeit, Kündigung, Verlängerung und Abrechnungsintervall. |
|
||||
| Web-Account | Externer Kundenzugang (Portal/Shop) mit eigenem Rechtemodell (`WebAccountsRights`). |
|
||||
| WebCart | Shop-Bereich des Kundenportals im Nexus. |
|
||||
| Zählerstand (Counter) | Nutzungswert je Gerät/Vertrag (z. B. Druckseiten) als Abrechnungsgrundlage. |
|
||||
| ZUGFeRD / Factur-X | Hybrides E-Rechnungsformat (PDF mit eingebettetem XML), hier in Version 2.1 Extended. |
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# Hypothesen – c-entron ERP-Suite
|
||||
|
||||
Diese Datei enthält **genau die Anforderungen mit `[HYPOTHESE]`-Markierung** aus StRS/SyRS/SwRS
|
||||
(deckungsgleich mit den Inline-Markierungen, keine zusätzlichen freien Fragen). Offene Punkte ohne
|
||||
zugehörige Anforderung stehen in der Selbstbewertung des Analyseberichts.
|
||||
|
||||
Stand: 6 Hypothesen bei 241 Anforderungen (2,5 %).
|
||||
|
||||
| ID | Titel | Offene Frage (fehlende Information zur Bestätigung) |
|
||||
|---|---|---|
|
||||
| SyRS-050 | Mahnwesen mit drei Mahnstufen und Belegsperre | Wo liegt die durchsetzende Mahnlauf-Logik (Stufenermittlung, Mahnschreiben, Sperrprüfung)? Nur Konfigurationsschalter (DunningLevel1-3Text, CustomerAssetsLockedAfterDunningLevel) wurden gefunden. |
|
||||
| SwRS-154 | Verrechnung von Anzahlungen in der Schlussrechnung | Wie verrechnet DownPaymentBL geleistete Anzahlungen konkret in der Schlussrechnung (Positionslogik, Steuerbehandlung)? |
|
||||
| SwRS-155 | SEPA-Lastschrifteinzug aus Rechnungen | Wo wird die SEPA-XML-Einzugsdatei erzeugt (vermutlich Gateway/OnlineBanking)? Mandatsbindung und Statusfeld `directDebitCreated` sind belegt, die Dateierzeugung nicht. |
|
||||
| SwRS-156 | Webshop-Sortiment aus Kunden-Sonderpreisen | Welche Codestelle im Nexus-WebCart schränkt das Sortiment auf die Sonderpreise des Kunden ein? Bisher nur README-Aussage und Existenz von CustomerSpecialArticleBL. |
|
||||
| SwRS-157 | Bidirektionale Exchange-Terminsynchronisation | Synchronisationsrichtung, Konfliktauflösung und Auslöser der Kalendersynchronisation (EWS vs. Graph) sind nicht aus dem Code verifiziert. |
|
||||
| SwRS-158 | Fernwartungsstart (Supremo) aus dem Arbeitsplatz | Wie wird die Supremo-Sitzung aufgebaut (Parameter, Zielgerätezuordnung)? Nur Komponenten (MyDay/Supremo.cs, assemblies/remote-desktop) belegt. |
|
||||
|
||||
## Hinweis zur risikobasierten Priorisierung
|
||||
|
||||
SyRS-050, SwRS-154 und SwRS-155 betreffen Abrechnung/Fakturierung. SwRS-154/155 besitzen je einen
|
||||
`PRIMÄR`-Beleg für den belegten Teilaspekt; die dennoch offene Kernregel ist der Grund für die
|
||||
Hypothesen-Kennzeichnung. SyRS-050 besitzt keinen `PRIMÄR`-Beleg und ist deshalb zwingend als
|
||||
`[HYPOTHESE]` geführt (regelkonform).
|
||||
+669
@@ -0,0 +1,669 @@
|
||||
# StRS – Stakeholder Requirements Specification
|
||||
**System:** c-entron ERP-Suite | **Quelle:** Statische Codeanalyse | **Lauf:** 2026-08-27
|
||||
|
||||
Fachliche Anforderungen aus Stakeholdersicht (Akteure, Geschäftsziele). Grundlage: aus der Codebasis rekonstruierte Fachfunktionen.
|
||||
|
||||
---
|
||||
|
||||
**Zielgruppe des Systems (aus der Codebasis rekonstruiert):** IT-Systemhäuser und Managed-Service-Provider im DACH-Raum (deutschsprachige Fachbegriffe, DATEV-/SEPA-/ZUGFeRD-Bezüge, Distributoren-EDI ALSO/Alltron/EGIS/Komsa/Herweck, Schweiz-Spezifika in Receipts/Switzerland).
|
||||
|
||||
```
|
||||
ID: StRS-001
|
||||
Titel: Zentrale Geschäftspartnerverwaltung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Vertrieb, Einkauf, Verwaltung
|
||||
Vorbedingung: -
|
||||
Fakt: Die Codebasis führt Konten mit Rollen Kunde/Lieferant, Adressen, Ansprechpartnern, Klassifikationen, Firmengruppen, Bankverbindungen und Länder-/Währungsbezug (Accounts, Sales/Customers, CountryArea, Accounting).
|
||||
Aussage: Das Unternehmen soll alle Geschäftspartner (Kunden, Lieferanten, Interessenten) einheitlich mit Adressen, Ansprechpartnern, Konditionen und Bankdaten verwalten können.
|
||||
Ergebnis: Ein Partnerstamm als Basis aller Prozesse.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Accounts/AccountBL.cs (SaveAccount, Kontotypen) - Begründung: implementiert die Partnerverwaltung.
|
||||
Prüfidee: Partner als Kunde und Lieferant führen; alle Belegprozesse referenzieren denselben Stamm.
|
||||
Tracelinks: SyRS-020, SyRS-024
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Fundament.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-002
|
||||
Titel: Durchgängige Angebots- und Auftragsabwicklung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Vertrieb
|
||||
Vorbedingung: Kunde existiert.
|
||||
Fakt: Belegkette Angebot → Auftrag → Lieferschein → Rechnung (→ Gutschrift) mit Weiterführung, Versionierung, Sperren und Vorlagen ist implementiert (Sales/Receipts).
|
||||
Aussage: Der Vertrieb soll Verkaufsvorgänge vom Angebot bis zur Rechnung ohne Doppelerfassung abwickeln können; jeder Schritt bleibt nachvollziehbar.
|
||||
Ergebnis: Lückenlose, versionierte Belegkette.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs (ForwardReceipt, CreateNewVersion) - Begründung: implementiert die Kette.
|
||||
Prüfidee: Kompletten Durchlauf Angebot→Rechnung ohne Neuerfassung der Positionen durchführen.
|
||||
Tracelinks: SyRS-011, SyRS-015, SyRS-016
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Kernprozess.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-003
|
||||
Titel: Korrekte und geschützte Fakturierung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Vertrieb, Buchhaltung, Geschäftsführung
|
||||
Vorbedingung: Leistungen/Lieferungen sind erbracht.
|
||||
Fakt: Rechnungen, Barrechnungen, interne Rechnungen und Gutschriften haben eigene Nummernkreise; Mindestpreise sind geschützt (Vier-Augen-Prinzip); Kassenbuchbuchungen entstehen automatisch (Receipts/Invoices, CashBooks, NumberGroups).
|
||||
Aussage: Das Unternehmen soll Rechnungen und Gutschriften mit eindeutigen Nummern, geschützten Preisuntergrenzen und automatischer Kassenanbindung erstellen können.
|
||||
Ergebnis: Revisionssichere Fakturierung ohne Margenverlust.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Receipts/Invoices/InvoiceSpecificLogic.cs (Nummernkreise), ReceiptBL.CheckArticleMinPrices - Begründung: implementieren die Schutzregeln.
|
||||
Prüfidee: Rechnung unter Mindestpreis ohne Freigabe; erwartet: verhindert.
|
||||
Tracelinks: SyRS-012, SyRS-014, SyRS-042, SyRS-050
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Umsatz- und Compliance-Kern.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-004
|
||||
Titel: Vertragsgeschäft mit wiederkehrender Abrechnung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Geschäftsführung, Vertragsverwaltung, Buchhaltung
|
||||
Vorbedingung: Serviceverträge sind abgeschlossen.
|
||||
Fakt: Verträge mit Laufzeiten, Verlängerung, Intervallen, Zählerständen und automatischer Fakturierung inkl. Sammelrechnung sind implementiert (CustomerAssets/Contracts, AutomaticFactura).
|
||||
Aussage: Das Unternehmen soll wiederkehrende Umsätze (Wartung, Miete, Managed Services, Seitenpreise) automatisch, vollständig und periodengerecht abrechnen können.
|
||||
Ergebnis: Planbare, automatisierte Vertragsumsätze.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/CustomerAssets/Contracts/ContractBL.cs, AutomaticFactura/AutomaticFacturaBL.cs - Begründung: implementieren das Vertragsgeschäft.
|
||||
Prüfidee: Jahresvertrag mit Zähler; erwartet: 12 korrekte Perioden, keine Lücke/Doppel.
|
||||
Tracelinks: SyRS-037, SyRS-038, SyRS-039
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - strategischer Umsatzträger.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-005
|
||||
Titel: Professioneller Kundensupport (Helpdesk)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Support, Support-Leitung, Endkunde
|
||||
Vorbedingung: Kunde meldet Anliegen.
|
||||
Fakt: Ticketsystem mit Status, Kategorien, Prioritäten, Zeiterfassung, Eskalation, Abschlussbenachrichtigung, Ticket-Projekten und Web-Zugriff ist implementiert (Sales/Support, NexusTicketViews).
|
||||
Aussage: Der Support soll Kundenanliegen als Tickets mit Verantwortlichen, Fälligkeiten und Eskalationen bearbeiten; Kunden sollen ihre Tickets online verfolgen können.
|
||||
Ergebnis: Nachvollziehbarer, SLA-fähiger Supportprozess.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Escalation/EscalationBL.cs - Begründung: implementieren den Prozess.
|
||||
Prüfidee: Ticket mit SLA-Verletzung; erwartet: dreistufige Eskalation.
|
||||
Tracelinks: SyRS-040, SyRS-041, SyRS-036
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Kernprozess des Systemhauses.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-006
|
||||
Titel: Lückenlose Leistungserfassung und -verrechnung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Techniker, Buchhaltung
|
||||
Vorbedingung: Leistungen werden erbracht.
|
||||
Fakt: Ticket-Timer mit Abrechnungsstatus, Stundenzuschlagssätzen und Belegerzeugung sind implementiert (HelpdeskTimer*, TimerBilling, HourlySurchargeRates).
|
||||
Aussage: Erbrachte Arbeitszeiten sollen vollständig erfasst und - unter Berücksichtigung von Verträgen und Zuschlägen - genau einmal verrechnet werden.
|
||||
Ergebnis: Kein Leistungsverlust zwischen Erbringung und Rechnung.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/CustomerAssets/TimerBilling/TimerBillingBL.cs - Begründung: implementiert die Verrechnung.
|
||||
Prüfidee: Erfasste Zeit doppelt abrechnen; erwartet: verhindert.
|
||||
Tracelinks: SyRS-039
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - direkter Umsatzhebel.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-007
|
||||
Titel: Effizienter Einkauf mit Distributorenanbindung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Einkauf
|
||||
Vorbedingung: Bedarf besteht.
|
||||
Fakt: Bestellvorschläge, Lieferantenbestellungen, EDI-Übertragung an Distributoren und externe Artikel-/Preissuche (ITscope, EGIS, COP, Icecat) sind implementiert.
|
||||
Aussage: Der Einkauf soll Bedarfe automatisch erkennen, Preise/Verfügbarkeiten der Distributoren direkt einsehen und Bestellungen elektronisch übertragen können.
|
||||
Ergebnis: Schneller, fehlerarmer Einkaufsprozess.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Purchasing/OrderSuggestionList/OrderSuggestionListBL.cs, EDI/EDIDispatcherBL.cs - Begründung: implementieren den Prozess.
|
||||
Prüfidee: Unterschreitung Mindestbestand bis EDI-Bestellung durchspielen.
|
||||
Tracelinks: SyRS-027; SwRS-091, SwRS-148
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Kernprozess des IT-Handels.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-008
|
||||
Titel: Verlässliche Artikel- und Lagerführung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Lager, Einkauf, Vertrieb
|
||||
Vorbedingung: Artikelstamm existiert.
|
||||
Fakt: Artikelstamm mit EAN, Preisen, Seriennummern-/Barcodeverfolgung, Mehrlager, Umbuchungslog, Inventur und belegbasierter Bestandsführung ist implementiert (Warehousing, Logistics, Storage).
|
||||
Aussage: Bestände sollen jederzeit korrekt, seriennummerngenau und je Lagerort nachvollziehbar sein; jede Veränderung hat einen Belegbezug.
|
||||
Ergebnis: Inventurfähige Bestandsführung.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Logistics/Warehousing/StockBL.cs, Warehousing/ArticleBL.cs - Begründung: implementieren die Bestandsführung.
|
||||
Prüfidee: Bestandsdifferenz erzeugen; erwartet: über Belege/Umbuchungslog aufklärbar.
|
||||
Tracelinks: SyRS-013, SyRS-034; SwRS-112
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Kernprozess.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-009
|
||||
Titel: Nahtlose Finanzprozesse (Zahlungen, FiBu, Mahnwesen)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Buchhaltung, Steuerberater
|
||||
Vorbedingung: Belege sind fakturiert.
|
||||
Fakt: Onlinebanking-Zahlungsabgleich, Zahlungsprotokolle, DATEV-Export mit Doppelübergabeschutz und Kassenbuch sind implementiert; Mahnwesen ist konfigurierbar angelegt.
|
||||
Aussage: Zahlungseingänge sollen automatisch zugeordnet, offene Posten gemahnt und alle Buchungsdaten ohne Doppelerfassung an die Finanzbuchhaltung (DATEV) übergeben werden.
|
||||
Ergebnis: Geschlossener Order-to-Cash-Kreislauf.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Finances/OnlineBanking/OnlineBankingAccountTransactionsBL.cs, DataExchange/BookKeeping/BookKeepingExportBL.cs - Begründung: implementieren die Finanzprozesse.
|
||||
Prüfidee: Zahlungseingang bis DATEV-Export durchspielen; keine manuelle Doppelerfassung nötig.
|
||||
Tracelinks: SyRS-021, SyRS-032, SyRS-042, SyRS-050
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Pflichtprozess.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-010
|
||||
Titel: Elektronischer Belegaustausch und E-Rechnung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Buchhaltung, Kunden, Behörden, Distributoren
|
||||
Vorbedingung: Belege werden ausgetauscht.
|
||||
Fakt: ZUGFeRD/Factur-X, XRechnung-Schnittstellen, ebInterface (AT) und Distributoren-EDI sind implementiert.
|
||||
Aussage: Das Unternehmen soll Belege elektronisch in den gesetzlich bzw. vom Partner geforderten Formaten senden und empfangen können.
|
||||
Ergebnis: E-Rechnungs- und EDI-Konformität.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/ReportEngine/CustomPdfGenerators/CustomZugferdPdfGenerator.cs; Centron.Gateway/ZUGFeRD21_Extended - Begründung: implementieren die Formate.
|
||||
Prüfidee: ZUGFeRD-Rechnung gegen Validator prüfen.
|
||||
Tracelinks: SyRS-043, SyRS-027
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - gesetzlich getrieben.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-011
|
||||
Titel: Integrierte Versandabwicklung
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Lager/Versand
|
||||
Vorbedingung: Lieferung ist kommissioniert.
|
||||
Fakt: GLS- und Shipcloud-Anbindungen erzeugen Sendungen aus dem System (src/apis).
|
||||
Aussage: Versandlabel und Tracking sollen direkt aus dem Lieferbeleg erzeugt werden.
|
||||
Ergebnis: Kein Medienbruch im Versand.
|
||||
Belege:
|
||||
- [PRIMÄR] src/apis/Centron.Api.Gls/CentronGlsLogic.cs - Begründung: implementiert den Versand.
|
||||
Prüfidee: Label aus Lieferschein erzeugen.
|
||||
Tracelinks: SyRS-044
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Logistikstandard.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-012
|
||||
Titel: Feingranulare Berechtigungssteuerung
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Geschäftsführung, Administrator, alle Benutzer
|
||||
Vorbedingung: -
|
||||
Fakt: Gruppenbasiertes Rechtesystem mit hunderten Einzelrechten, restriktiven Rechten (nur eigene/Filiale), Rollenvorlagen und Rechteprotokoll ist implementiert.
|
||||
Aussage: Jede Funktion und jede Datensicht soll einzeln berechtigt werden können; Standardrollen erleichtern die Einführung; Rechteänderungen sind nachvollziehbar.
|
||||
Ergebnis: Need-to-know-Prinzip im gesamten System.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs - Begründung: implementiert das Rechtesystem.
|
||||
Prüfidee: Stichprobe: Funktion ohne Recht aufrufen; erwartet: verweigert.
|
||||
Tracelinks: SyRS-001, SyRS-002, SyRS-006, SyRS-007, SyRS-008
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Sicherheitsfundament.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-013
|
||||
Titel: Sichere Anmeldung und API-Zugänge
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Benutzer, externe Systeme
|
||||
Vorbedingung: -
|
||||
Fakt: Mehrere Authentifizierungsverfahren, Zwei-Faktor-Optionen, Sitzungstickets, gehashte API-Tokens und deklarativ geschützte REST-Endpunkte sind implementiert.
|
||||
Aussage: Zugriffe von Menschen und Systemen sollen stark authentifiziert, zeitlich begrenzt und protokolliert sein.
|
||||
Ergebnis: Kontrollierter Zugang über alle Kanäle.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs, AccessTokens/AccessTokenBL.cs - Begründung: implementieren die Zugriffssicherung.
|
||||
Prüfidee: Penetrationstest der Anmeldewege.
|
||||
Tracelinks: SyRS-003, SyRS-004, SyRS-005, SyRS-017, SyRS-046
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - im Zielsystem modernisieren (Passworthashing!).
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-014
|
||||
Titel: Lizenz- und Modulsteuerung des Produkts
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Hersteller, Kunde (Systemhaus)
|
||||
Vorbedingung: -
|
||||
Fakt: Signierte Lizenzdateien, Seat-Prüfung bei Anmeldung, Feature-Gates (ModuleFeatures) und Modulkatalog sind implementiert.
|
||||
Aussage: Der Funktionsumfang je Installation soll sich aus der erworbenen Lizenz ergeben; Überbelegung von Arbeitsplätzen wird verhindert.
|
||||
Ergebnis: Durchgesetztes Lizenzmodell.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs - Begründung: implementiert die Lizenzsteuerung.
|
||||
Prüfidee: Anmeldung über Seat-Limit; erwartet: abgelehnt.
|
||||
Tracelinks: SyRS-003; SwRS-009, SwRS-139
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - als SaaS-Abomodell neu umsetzen.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-015
|
||||
Titel: Professioneller Belegdruck und Berichte
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Fachbereiche, Kunden (Empfänger)
|
||||
Vorbedingung: Daten vorhanden.
|
||||
Fakt: FastReport-basierte Report-Engine mit Vorlagen, PDF-Export, Belegarchivierung und zentraler Reportverteilung ist implementiert.
|
||||
Aussage: Alle Belege und Berichte sollen in anpassbarem Firmenlayout gedruckt, als PDF archiviert und zentral aktualisiert werden können.
|
||||
Ergebnis: Einheitliches Schriftbild, archivierte Belege.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/ReportEngine/FastReportHelper.cs; ReceiptBL.CreateFullReportForReceipt - Begründung: implementieren den Druck.
|
||||
Prüfidee: Vorlage ändern; alle Folgedrucke nutzen neue Vorlage.
|
||||
Tracelinks: SyRS-025
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Pflicht.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-016
|
||||
Titel: Betriebswirtschaftliche Transparenz
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Geschäftsführung, Controlling
|
||||
Vorbedingung: Bewegungsdaten vorhanden.
|
||||
Fakt: Statistiken zu Umsatz, offenen Posten, Verträgen, Auslastung und MSP-Verbräuchen sind implementiert (Statistics).
|
||||
Aussage: Die Geschäftsführung soll Umsätze, offene Posten, Vertragsbestand und Auslastung ohne Zusatzwerkzeuge auswerten können.
|
||||
Ergebnis: Steuerungsfähige Kennzahlen.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Statistics/Accounts/RevenueStatisticBL.cs - Begründung: implementiert Auswertungen.
|
||||
Prüfidee: Umsatzstatistik gegen Belegsumme abstimmen.
|
||||
Tracelinks: SyRS-021; SwRS-135
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Führungsinstrument.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-017
|
||||
Titel: Integrierte Kommunikation (E-Mail, Telefon, Chat)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Mitarbeiter
|
||||
Vorbedingung: Kommunikationskanäle konfiguriert.
|
||||
Fakt: Exchange-Mail, Signaturen, Mail-Scanner, TAPI-Telefonie mit Anruferkennung und interner Chat sind implementiert.
|
||||
Aussage: Kundenkommunikation soll im Vorgangskontext stattfinden: Mails und Anrufe werden automatisch Kunden/Tickets zugeordnet.
|
||||
Ergebnis: Vollständige Kommunikationshistorie je Vorgang.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Mail/*, Tapi/PhoneCallBL.cs - Begründung: implementieren die Kanäle.
|
||||
Prüfidee: Eingehende Mail/Anruf; erwartet: Kontextzuordnung.
|
||||
Tracelinks: SyRS-035, SyRS-036, SyRS-030
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Effizienzkern.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-018
|
||||
Titel: Persönliche Arbeitsorganisation
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Mitarbeiter
|
||||
Vorbedingung: -
|
||||
Fakt: Kalender, ToDos, MyDay, Dashboards, Benachrichtigungen und Terminanfragen sind implementiert.
|
||||
Aussage: Jeder Mitarbeiter soll seinen Arbeitsvorrat (Termine, Aufgaben, Benachrichtigungen) an einem Ort sehen und steuern können.
|
||||
Ergebnis: Weniger Übersehen von Fälligkeiten.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/MyDay/MyDayBL.cs - Begründung: implementiert die Tagesübersicht.
|
||||
Prüfidee: Fällige Objekte erscheinen in MyDay.
|
||||
Tracelinks: SyRS-029
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Produktivität.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-019
|
||||
Titel: Online-Self-Service für Endkunden
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Endkunde des Systemhauses
|
||||
Vorbedingung: Web-Account existiert.
|
||||
Fakt: Kundenportal mit Shop (Sonderpreise), Ticketeinsicht, Verträgen, Formularen, Dokumenten und Aktionslinks ist implementiert (Nexus WebCart, SelfCare, WebLinks).
|
||||
Aussage: Endkunden sollen Bestellungen, Tickets, Verträge und Dokumente online einsehen und auslösen können - beschränkt auf die eigenen Daten.
|
||||
Ergebnis: Entlastung des Supports, moderner Kundenzugang.
|
||||
Belege:
|
||||
- [PRIMÄR] src/nexus/CentronNexus/WebCart/*.razor - Begründung: implementiert das Portal.
|
||||
Prüfidee: Web-Account sieht nur eigene Tickets/Verträge.
|
||||
Tracelinks: SyRS-045, SyRS-002
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Zielbild SaaS.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-020
|
||||
Titel: Dokumentenverwaltung mit digitaler Unterschrift
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Fachbereiche, Kunden
|
||||
Vorbedingung: -
|
||||
Fakt: Objektbezogene Verzeichnisse, PDF-Signatur, Online-Bestätigung von AVV/SEPA und Beleg-Signierprozess sind implementiert.
|
||||
Aussage: Dokumente sollen objektbezogen abgelegt und Verträge/Belege digital unterschrieben werden können.
|
||||
Ergebnis: Papierlose, nachweisbare Dokumentprozesse.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/FileManagement/DirectoryReferenceBL.cs, Security/PdfSigningBL.cs - Begründung: implementieren Ablage und Signatur.
|
||||
Prüfidee: AVV online bestätigen; erwartet: signiertes Dokument am Kunden.
|
||||
Tracelinks: SyRS-026, SyRS-022; SwRS-031, SwRS-107
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Digitalisierungskern.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-021
|
||||
Titel: Offenheit für Drittsysteme (Konnektoren)
|
||||
Ebene: StRS
|
||||
Typ: Schnittstelle
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Systemhaus, Drittsysteme
|
||||
Vorbedingung: Drittsystem im Einsatz.
|
||||
Fakt: Konnektoren zu DocBee, docuFORM, Riverbird, CPra, Shopsystemen, TradePool sowie generische WebHooks und externe Objektreferenzen sind implementiert.
|
||||
Aussage: Das System soll gängige Branchenwerkzeuge anbinden und Objekte beidseitig referenzieren können.
|
||||
Ergebnis: Integrierbare Systemlandschaft.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/ObjectExternalReferences/ObjectExternalReferenceBL.cs, DataExchange/Connectors/* - Begründung: implementieren die Offenheit.
|
||||
Prüfidee: Fremd-ID an Objekt koppeln und rückwärts auflösen.
|
||||
Tracelinks: SyRS-027; SwRS-083
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Ökosystem entscheidend.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-022
|
||||
Titel: Überblick über Kundengeräte und -infrastruktur
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Service, Vertrieb
|
||||
Vorbedingung: Geräte beim Kunden im Einsatz.
|
||||
Fakt: Kundengeräte werden in mehreren Modulen geführt (AccountDevices, CustomerAssets/Stammblätter, DocuBoard-Assets) inkl. Logs, Vertragsbezug und Outlook-Suche.
|
||||
Aussage: Der Servicebetrieb soll jederzeit wissen, welche Geräte mit welchen Verträgen beim Kunden stehen.
|
||||
Ergebnis: Asset-Transparenz für Service und Abrechnung.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Devices/AccountDeviceBL.cs - Begründung: implementiert Geräteverwaltung.
|
||||
Prüfidee: Gerät über alle Sichten konsistent auffinden.
|
||||
Tracelinks: SyRS-028
|
||||
Konsolidierung: Kandidat: drei Gerätedatenhaltungen (siehe SyRS-028) - im Zielsystem ein Asset-Konzept
|
||||
Übernahmewürdigkeit: übernehmen - mit Konsolidierungsauflage.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-023
|
||||
Titel: Geordnete Reklamationsabwicklung (RMA)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Service, Kunde, Lieferant
|
||||
Vorbedingung: Defektes Gerät wird gemeldet.
|
||||
Fakt: RMA-Prozess mit Kundenrücknahme, Lieferantenweiterleitung, Versandarten und Artikelhistorie ist implementiert.
|
||||
Aussage: Reklamationen sollen vom Kundeneingang bis zur Lieferantenabwicklung verfolgt werden.
|
||||
Ergebnis: Kein Reklamationsverlust; Garantienachweis.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/CustomerArea/RmaBL.cs - Begründung: implementiert den Prozess.
|
||||
Prüfidee: RMA-Kette Kunde→Lieferant→Rückläufer verfolgen.
|
||||
Tracelinks: SyRS-028; SwRS-059
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Handelskern.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-024
|
||||
Titel: Auftragsbezogene Fertigung (Assemblierung)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Produktion/Technik
|
||||
Vorbedingung: Fertigungsauftrag liegt vor.
|
||||
Fakt: Fertigungsaufträge mit Positionen und Protokoll sowie ein Web-Produktionsmanagement sind implementiert (Production, Nexus/ProductionOrderManagement); Rechte für Stücklisten/Arbeitspläne existieren.
|
||||
Aussage: Das Unternehmen soll kundenbezogene Fertigung (z. B. PC-/Server-Assemblierung) mit dokumentierten Arbeitsschritten abwickeln können.
|
||||
Ergebnis: Nachvollziehbare Fertigung mit Seriennummernbezug.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Production/ProductionOrderBL.cs - Begründung: implementiert die Fertigung.
|
||||
Prüfidee: Fertigungsauftrag mit Protokollschritten abschließen.
|
||||
Tracelinks: SyRS-013; SwRS-089
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - sofern Geschäftsfeld bestätigt.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-025
|
||||
Titel: Projekt- und Chancenverfolgung (CRM)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Vertrieb, Projektleitung
|
||||
Vorbedingung: -
|
||||
Fakt: Projekte, CRM-Projekte, Ticket-Projekte, Produktmatrix, Angebotsklassifikationen (Wahrscheinlichkeit/Produktgruppe) und Aktivitäten sind implementiert.
|
||||
Aussage: Der Vertrieb soll Verkaufschancen und Projekte mit Wahrscheinlichkeiten und Produktpotenzialen je Kunde verfolgen können.
|
||||
Ergebnis: Gefüllte, bewertbare Pipeline.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Sales/CustomerAssets/Offers/ClassificationProbabilityBL.cs, ProductMatrix/ProductMatrixBL.cs - Begründung: implementieren die Bewertung.
|
||||
Prüfidee: Angebot mit Wahrscheinlichkeit klassifizieren; erscheint in Pipeline-Auswertung.
|
||||
Tracelinks: SyRS-020; SwRS-088, SwRS-090, SwRS-119
|
||||
Konsolidierung: Kandidat: drei Projektbegriffe (Projects, CrmProjects, TicketProjects) zusammenführen
|
||||
Übernahmewürdigkeit: übernehmen - Vertriebssteuerung.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-026
|
||||
Titel: Zielgerichtetes Marketing (Kampagnen, Mailings, Telemarketing)
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Marketing, Vertrieb
|
||||
Vorbedingung: Zielgruppen definierbar.
|
||||
Fakt: Kampagnen (Accounts/Campaigns), Serien-Mailings und Telemarketing-Aktionen sind implementiert.
|
||||
Aussage: Das Unternehmen soll Zielgruppen ansprechen können (Mailing, Telefonaktion, Kampagne) und Reaktionen am Kunden dokumentieren.
|
||||
Ergebnis: Messbare Marketingaktionen.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Mailings/MailingDataBL.cs, Sales/Marketing/TelemarketingBL.cs - Begründung: implementieren die Aktionen.
|
||||
Prüfidee: Mailing an Zielgruppe mit Antwortdokumentation.
|
||||
Tracelinks: SyRS-035; SwRS-074, SwRS-103
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Basisumfang genügt ggf.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-027
|
||||
Titel: Schnelles Auffinden aller Informationen
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Alle Benutzer
|
||||
Vorbedingung: -
|
||||
Fakt: Volltextsuche (Lucene) über Konten und Tickets sowie Suche über Zusatzfelder sind implementiert.
|
||||
Aussage: Benutzer sollen Kunden und Vorgänge über eine zentrale Suche in Sekunden finden.
|
||||
Ergebnis: Kurze Suchwege im Tagesgeschäft.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/IndexSearch/IndexSearchBL.cs - Begründung: implementiert die Suche.
|
||||
Prüfidee: Suche nach Ticketinhalt liefert Treffer < definierte Zeit.
|
||||
Tracelinks: SyRS-033
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Nutzererwartung.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-028
|
||||
Titel: Sicherer Umgang mit Kundenzugangsdaten
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Techniker, Datenschutz
|
||||
Vorbedingung: Zugangsdaten von Kundensystemen werden benötigt.
|
||||
Fakt: Zwei Passwortverwaltungen mit Zugriffslogs, Siegeln, kundenbezogenen Rechten und Richtlinien sind implementiert.
|
||||
Aussage: Zugangsdaten der Kundensysteme sollen verschlüsselt, feingranular berechtigt und mit lückenlosem Zugriffsnachweis verwaltet werden.
|
||||
Ergebnis: Auditierbarer Passwortzugriff.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/PasswordManagementArea/PasswordManagementBL.cs, PasswordManager/PasswordManagerBL.cs - Begründung: implementieren die Verwaltung.
|
||||
Prüfidee: Passwortzugriff hinterlässt Logeintrag; Siegelbruch sichtbar.
|
||||
Tracelinks: SyRS-017; SwRS-085, SwRS-086, SwRS-026
|
||||
Konsolidierung: Kandidat: zwei Passwortmodule vereinigen
|
||||
Übernahmewürdigkeit: übernehmen - MSP-Vertrauensbasis.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-029
|
||||
Titel: KI-Unterstützung im Tagesgeschäft
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Support, Administration
|
||||
Vorbedingung: KI-Dienst konfiguriert.
|
||||
Fakt: Ticket-Zusammenfassungen, Lösungsvorschläge, Prompt-Verwaltung und Modellanbindung sind implementiert.
|
||||
Aussage: Mitarbeiter sollen KI-Unterstützung (Zusammenfassungen, Vorschläge) direkt im Vorgang erhalten; das Unternehmen kontrolliert Modelle und Prompts.
|
||||
Ergebnis: Zeitersparnis im Support.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/ArtificialIntelligence/ArtificialIntelligenceBL.cs - Begründung: implementiert die KI-Funktionen.
|
||||
Prüfidee: Ticketzusammenfassung erzeugen und fachlich bewerten.
|
||||
Tracelinks: SyRS-019
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Differenzierungsmerkmal.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-030
|
||||
Titel: Datenschutz und Nachvollziehbarkeit (DSGVO, Audit)
|
||||
Ebene: StRS
|
||||
Typ: Sicherheit
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Datenschutzbeauftragter, Geschäftsführung
|
||||
Vorbedingung: -
|
||||
Fakt: DSGVO-Löschung mit Protokoll, Änderungsmetadaten an allen Objekten, Rechte-/Zugriffs-/Beleglogs und transaktionale Speicherung sind implementiert.
|
||||
Aussage: Das Unternehmen soll Betroffenenrechte (Löschung) erfüllen und jede relevante Änderung einem Verursacher zuordnen können.
|
||||
Ergebnis: DSGVO-Konformität und Auditierbarkeit.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs; DBBaseBL.cs (Änderungsmetadaten) - Begründung: implementieren die Pflichten.
|
||||
Prüfidee: Löschantrag ausführen; Protokoll weist Durchführung nach.
|
||||
Tracelinks: SyRS-022, SyRS-009, SyRS-010
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - gesetzlich.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-031
|
||||
Titel: Automatisierter, wartbarer Systembetrieb
|
||||
Ebene: StRS
|
||||
Typ: nicht-funktional
|
||||
Qualitätsmerkmal: Zuverlässigkeit, Übertragbarkeit
|
||||
Akteur: IT-Betrieb (Systemhaus), Hersteller
|
||||
Vorbedingung: -
|
||||
Fakt: Steuerbare Hintergrunddienste, Wartungsskripte, Container-Deployment, Installer, Testsuiten und Diagnosefunktionen sind implementiert.
|
||||
Aussage: Das System soll automatisiert betrieben, aktualisiert und überwacht werden können, mit reproduzierbaren Deployments.
|
||||
Ergebnis: Geringer Betriebsaufwand, sichere Updates.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/BackgroundServices/BackgroundServiceBL.cs; docker/compose/compose.yaml - Begründung: implementieren den Betrieb.
|
||||
Prüfidee: Update-Durchlauf mit Skriptausführung und Regressionstests.
|
||||
Tracelinks: SyRS-018, SyRS-047, SyRS-048, SyRS-049
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Basis der SaaS-Fähigkeit.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-032
|
||||
Titel: Anpassbarkeit ohne Programmierung
|
||||
Ebene: StRS
|
||||
Typ: nicht-funktional
|
||||
Qualitätsmerkmal: Wartbarkeit (Modifizierbarkeit)
|
||||
Akteur: Administrator, Customizing
|
||||
Vorbedingung: -
|
||||
Fakt: Tausende Einstellungen (AppSettingsConst), Custom-Properties, Custom-Tables, konfigurierbare Menüs, Reportvorlagen und Rechtestrukturen sind implementiert.
|
||||
Aussage: Das Systemhaus soll das System an eigene Prozesse anpassen können (Felder, Einstellungen, Menüs, Vorlagen), ohne Individualprogrammierung.
|
||||
Ergebnis: Hohe Passgenauigkeit je Installation.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Settings/AppSettingsBL.cs, Customization/ModuleCustomPropertyBL.cs - Begründung: implementieren die Anpassbarkeit.
|
||||
Prüfidee: Prozessvariante rein per Konfiguration abbilden.
|
||||
Tracelinks: SyRS-023
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - Produkt-DNA; Wildwuchs im Zielsystem eindämmen.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
```
|
||||
ID: StRS-033
|
||||
Titel: Mehrfirmen- und Filialbetrieb
|
||||
Ebene: StRS
|
||||
Typ: funktional
|
||||
Qualitätsmerkmal:
|
||||
Akteur: Unternehmensgruppe, Filialen
|
||||
Vorbedingung: Mehrere Firmen/Standorte.
|
||||
Fakt: Mandanten, Filialen mit eigenen Nummernkreisen, Erlöskonten, filialbezogene Rechte und Belege sind implementiert.
|
||||
Aussage: Unternehmensgruppen sollen mehrere Firmen und Standorte mit getrennten Nummernkreisen und Konten in einer Installation führen können.
|
||||
Ergebnis: Konzernfähigkeit.
|
||||
Belege:
|
||||
- [PRIMÄR] src/backend/Centron.BL/Administration/Company/MandatorBL.cs, BranchBL.cs - Begründung: implementieren die Struktur.
|
||||
Prüfidee: Zwei Mandanten mit getrennten Rechnungskreisen betreiben.
|
||||
Tracelinks: SyRS-024, SyRS-012
|
||||
Konsolidierung: nein
|
||||
Übernahmewürdigkeit: übernehmen - im SaaS als Mandantenmodell.
|
||||
Status: belegt
|
||||
```
|
||||
|
||||
+3186
File diff suppressed because it is too large
Load Diff
+1030
File diff suppressed because it is too large
Load Diff
+60
@@ -0,0 +1,60 @@
|
||||
# Traceability – c-entron ERP-Suite
|
||||
|
||||
Konsolidierte Traceability-Tabelle über die drei Ebenen (Forward: StRS → SyRS → SwRS; Backward über dieselben Spalten). Der Artefaktbeleg nennt den führenden Modulpfad; die vollständigen Belege stehen in den Einzelanforderungen.
|
||||
|
||||
| StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg |
|
||||
|---|---|---|---|
|
||||
| StRS-012 | SyRS-001 | SwRS-001, SwRS-004, SwRS-014, SwRS-019, SwRS-020, SwRS-096 | src/backend/Centron.BL/Administration/Rights |
|
||||
| StRS-019, StRS-012 | SyRS-002 | SwRS-001 | src/backend/Centron.BL/Administration/Rights |
|
||||
| StRS-013, StRS-014 | SyRS-003 | SwRS-005, SwRS-009, SwRS-022, SwRS-028, SwRS-133, SwRS-139 | src/backend/Centron.BL/Administration/Logins; src/backend/Centron.BL/Administration/Licensing |
|
||||
| StRS-013 | SyRS-004 | SwRS-002 | src/backend/Centron.BL/Administration/Logins |
|
||||
| StRS-013 | SyRS-005 | SwRS-003, SwRS-011, SwRS-042, SwRS-144 | src/backend/Centron.BL/Administration/Logins |
|
||||
| StRS-012, StRS-013 | SyRS-006 | - | src/backend/Centron.BL/Administration/Logins |
|
||||
| StRS-012, StRS-013 | SyRS-007 | - | src/backend/Centron.BL/Administration/Logins |
|
||||
| StRS-012 | SyRS-008 | SwRS-004, SwRS-008 | src/backend/Centron.BL/Administration/Rights |
|
||||
| StRS-030 | SyRS-009 | SwRS-007, SwRS-137, SwRS-138 | src/backend/Centron.BL/ChangeTracking; src/backend/Centron.BL/Core |
|
||||
| StRS-030 | SyRS-010 | SwRS-006, SwRS-111, SwRS-113, SwRS-137, SwRS-138 | src/backend/Centron.BL/Core |
|
||||
| StRS-002, StRS-003 | SyRS-011 | SwRS-013, SwRS-018, SwRS-034, SwRS-051, SwRS-118, SwRS-140, SwRS-152, SwRS-154 | src/backend/Centron.BL/Sales/Receipts |
|
||||
| StRS-003, StRS-012 | SyRS-012 | SwRS-010, SwRS-012, SwRS-016, SwRS-027 | src/backend/Centron.BL/Sales/Receipts; src/backend/Centron.BL/Administration/Mandatory |
|
||||
| StRS-002, StRS-008, StRS-024 | SyRS-013 | SwRS-013, SwRS-014, SwRS-017, SwRS-071, SwRS-089, SwRS-112, SwRS-128 | src/backend/Centron.BL/Sales/Receipts; src/backend/Centron.BL/Warehousing |
|
||||
| StRS-003 | SyRS-014 | SwRS-015, SwRS-154 | src/backend/Centron.BL/Sales/Receipts |
|
||||
| StRS-002 | SyRS-015 | - | src/backend/Centron.BL/Sales/Receipts |
|
||||
| StRS-002, StRS-030 | SyRS-016 | - | src/backend/Centron.BL/Sales/Receipts |
|
||||
| StRS-013, StRS-028 | SyRS-017 | SwRS-021, SwRS-026, SwRS-085, SwRS-086, SwRS-101 | src/backend/Centron.BL/Administration/AccessTokens |
|
||||
| StRS-031 | SyRS-018 | SwRS-024, SwRS-039, SwRS-062, SwRS-120 | src/backend/Centron.BL/Administration/BackgroundServices |
|
||||
| StRS-029 | SyRS-019 | SwRS-023 | src/backend/Centron.BL/Administration/ArtificialIntelligence; src/backend/Centron.BL/ArtificialIntelligence |
|
||||
| StRS-001, StRS-025 | SyRS-020 | SwRS-019, SwRS-020, SwRS-032, SwRS-061, SwRS-088, SwRS-090, SwRS-102, SwRS-103, SwRS-124, SwRS-152 | src/backend/Centron.BL/Accounts |
|
||||
| StRS-030 | SyRS-022 | SwRS-030, SwRS-031 | src/backend/Centron.BL/Administration/DataSecurity |
|
||||
| StRS-032 | SyRS-023 | SwRS-029, SwRS-033, SwRS-035, SwRS-036, SwRS-039, SwRS-040, SwRS-041, SwRS-042, SwRS-053, SwRS-064, SwRS-117, SwRS-122, SwRS-126 | src/backend/Centron.BL/Administration/Settings |
|
||||
| StRS-033 | SyRS-024 | SwRS-027 | src/backend/Centron.BL/Administration/Company, .../CompanyInformations; src/backend/Centron.BL/Administration/Mandatory |
|
||||
| StRS-009, StRS-016 | SyRS-021 | SwRS-025, SwRS-057, SwRS-058, SwRS-135, SwRS-141, SwRS-155 | src/backend/Centron.BL/DataExchange |
|
||||
| StRS-015 | SyRS-025 | SwRS-038, SwRS-099, SwRS-107, SwRS-118, SwRS-132 | src/backend/Centron.BL/ReportEngine; src/backend/Centron.BL/Reporting |
|
||||
| StRS-020 | SyRS-026 | SwRS-044, SwRS-056, SwRS-105, SwRS-125 | src/backend/Centron.BL/Administration/Documents, .../FileManagement |
|
||||
| StRS-010, StRS-007, StRS-021 | SyRS-027 | SwRS-045, SwRS-052, SwRS-060, SwRS-063, SwRS-067, SwRS-069, SwRS-083, SwRS-091, SwRS-101, SwRS-123, SwRS-141, SwRS-148, SwRS-150 | src/backend/Centron.BL/EDI |
|
||||
| StRS-022, StRS-023 | SyRS-028 | SwRS-054, SwRS-055, SwRS-059 | src/backend/Centron.BL/Devices; src/backend/Centron.BL/DocuBoard; src/backend/Centron.BL/Sales/CustomerAssets |
|
||||
| StRS-018 | SyRS-029 | SwRS-043, SwRS-046, SwRS-049, SwRS-050, SwRS-070, SwRS-078, SwRS-079, SwRS-082, SwRS-104, SwRS-110, SwRS-116, SwRS-121, SwRS-157, SwRS-158 | src/backend/Centron.BL/Calendar; src/backend/Centron.BL/MyCentron; src/backend/Centron.BL/MyDay; src/backend/Centron.BL/ToDoArea |
|
||||
| StRS-017 | SyRS-030 | SwRS-037, SwRS-115, SwRS-158 | src/backend/Centron.BL/Tapi; src/backend/Centron.BL/Administration/PhoneSettings |
|
||||
| StRS-019 | SyRS-031 | SwRS-047, SwRS-048, SwRS-076, SwRS-077, SwRS-080, SwRS-081, SwRS-084, SwRS-108, SwRS-129, SwRS-130, SwRS-131, SwRS-134, SwRS-136, SwRS-142, SwRS-143, SwRS-145, SwRS-146, SwRS-147 | src/centron/Centron.WPF.UI, .../Centron.WPF.UI.Extension; src/nexus/CentronNexus; src/webservice/Centron.Controllers |
|
||||
| StRS-009 | SyRS-032 | SwRS-065, SwRS-066, SwRS-135, SwRS-149, SwRS-155 | src/backend/Centron.BL/Finances |
|
||||
| StRS-027 | SyRS-033 | SwRS-068 | src/backend/Centron.BL/IndexSearch |
|
||||
| StRS-008 | SyRS-034 | SwRS-075 | src/backend/Centron.BL/MassUpdate |
|
||||
| StRS-017, StRS-026 | SyRS-035 | SwRS-072, SwRS-074, SwRS-157 | src/backend/Centron.BL/Mail |
|
||||
| StRS-017, StRS-005 | SyRS-036 | SwRS-073, SwRS-087, SwRS-109 | src/backend/Centron.BL/MailScanner |
|
||||
| StRS-004 | SyRS-037 | SwRS-092, SwRS-093 | src/backend/Centron.BL/Sales/CustomerAssets |
|
||||
| StRS-004, StRS-003 | SyRS-038 | SwRS-093, SwRS-094, SwRS-150 | src/backend/Centron.BL/Sales/CustomerAssets |
|
||||
| StRS-006, StRS-005 | SyRS-039 | SwRS-095, SwRS-106 | src/backend/Centron.BL/Sales/CustomerAssets; src/backend/Centron.BL/Sales/Support |
|
||||
| StRS-005, StRS-012 | SyRS-040 | SwRS-096, SwRS-097, SwRS-099, SwRS-114, SwRS-119 | src/backend/Centron.BL/Sales/Support |
|
||||
| StRS-005 | SyRS-041 | SwRS-098 | src/backend/Centron.BL/Sales/Support |
|
||||
| StRS-003, StRS-009 | SyRS-042 | SwRS-100, SwRS-127 | src/backend/Centron.BL/Sales/CashBooks |
|
||||
| StRS-010, StRS-003 | SyRS-043 | SwRS-141 | src/backend/Centron.BL/DataExchange; src/backend/Centron.BL/ReportEngine; src/backend/Centron.Gateway; src/apis/Centron.Api.EbInterface |
|
||||
| StRS-011 | SyRS-044 | SwRS-151 | src/apis/Centron.Api.Gls; src/apis/Centron.Api.Shipcloud |
|
||||
| StRS-019 | SyRS-045 | SwRS-145, SwRS-156 | src/nexus/CentronNexus |
|
||||
| StRS-013, StRS-012 | SyRS-046 | SwRS-136, SwRS-147 | src/webservice/Centron.Controllers |
|
||||
| StRS-031 | SyRS-047 | SwRS-146, SwRS-153 | docker |
|
||||
| StRS-031 | SyRS-048 | SwRS-153 | deployment; scripts |
|
||||
| StRS-031 | SyRS-049 | SwRS-153 | tests; docker |
|
||||
| StRS-009, StRS-003 | SyRS-050 | - | src/backend/Centron.BL/Administration/Settings; src/backend/Centron.BL/Finances |
|
||||
|
||||
**SwRS ohne SyRS-Referenz:** keine – jede SwRS-Anforderung referenziert mindestens eine SyRS-Anforderung.
|
||||
|
||||
**StRS ohne referenzierende SyRS-Anforderung:** keine – jede StRS-Anforderung wird von mindestens einer SyRS-Anforderung referenziert.
|
||||
+197
@@ -0,0 +1,197 @@
|
||||
# Messprotokoll – Versuch 01 (V1 Baseline, Prompt-only) – Iteration 02
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Iteration:** 02 – vom User ausdrücklich benannt; entspricht zugleich der Regel „höchste
|
||||
vorhandene Iterationsnummer". Wiederholungslauf zur Varianzbestimmung in derselben Zelle.
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-27T00:24:41.6237308+02:00
|
||||
- **Endzeit:** 2026-08-27T07:28:28.0825221+02:00
|
||||
- **Dauer gesamt:** 7:03:46 (`duration_ms` 7:03:44; API: 7:01:25)
|
||||
— **im Parallelbetrieb erhoben, nicht für Laufzeitvergleiche verwendbar**
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP` (24.662 versionierte Dateien)
|
||||
- **Codebasis-Commit:** `7df384f6d2e7249dc914a74e299fe7fa71ece748` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja (Prüfmuster ohne Treffer);
|
||||
die Codebasis ist seit Commit `f045b99a` kein eigenes Repository mehr, sondern Teil des
|
||||
Arbeitsrepos – der Vorher/Nachher-Vergleich läuft deshalb pfadskopiert
|
||||
- **Snapshot-Zusatzartefakte:** keine – der Snapshot entspricht dem Commit-Stand
|
||||
- **Prompt-Repo-Commit:** `7df384f6d2e7249dc914a74e299fe7fa71ece748`
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 7.0.0
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **CLI-Pfad:** `C:\Users\ChristophSchwoerer\.vscode\extensions\anthropic.claude-code-2.1.246-win32-x64\resources\native-binary\claude.exe`
|
||||
- **Modell (angefordert):** `claude-fable-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-fable-5` 30.635.548 Tokens (99.98 %), `claude-haiku-4-5-20251001` 6.969 Tokens (0.02 %)
|
||||
- **Kontrolle Modell:** bestanden – ausschließlich das angeforderte Modell plus Haiku als zulässiger interner Hilfsaufruf
|
||||
- **Effort:** `high` (per `--effort high` gesetzt)
|
||||
- **Laufverzeichnis-ID:** `v7.0.0-35a4`
|
||||
- **Ablage:** `Iteration 3/claude-fable-5/solo/high/`
|
||||
- **Parallele Läufe:** nein – die Zeitangaben sind für Laufzeitvergleiche verwendbar
|
||||
- **Agentenmodus:** `solo` (V1)
|
||||
- **Kontextfenster:** 1.000.000 Tokens; `maxOutputTokens` 64.000
|
||||
- **Sampling-Parameter:** nicht steuerbar über die CLI, nicht erfasst
|
||||
- **Nur bei lokalem Modellbetrieb:** entfällt (Cloud-Inferenz, `provider: firstParty`)
|
||||
- **Permission-Mode:** `acceptEdits`
|
||||
- **Toolfreigabe:** `--allowedTools "Bash" "PowerShell"` /
|
||||
`--disallowedTools` 33er-Denylist (schreibende und bauende Kommandos) **zuzüglich** `Task`, `Agent`, `Workflow` aus dem Modus `solo`
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **MCP-Server / Agentendateien:** keine – aus dem Snapshot entfernt, zusätzlich `--safe-mode`
|
||||
- **Subagenten:** keine (`spawned` = 0, `by_type` leer)
|
||||
- **Verschachtelung:** `spawned` = 0, davon `spawned_by_subagents` = 0, `max_depth` = 0. Keine tieferen Ebenen, `_meta\subagenten.md` entfällt.
|
||||
|
||||
## Validierungsstichprobe
|
||||
- **Größe:** noch nicht festgelegt
|
||||
- **Ziehungsverfahren:** noch nicht festgelegt
|
||||
- **Validatoren:** noch nicht festgelegt
|
||||
- **Stand:** noch nicht gezogen
|
||||
|
||||
## Verbrauch
|
||||
|
||||
### Hauptagent (`usage`)
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Input-Tokens | 246 |
|
||||
| Output-Tokens | 280.683 (davon 40.204 Thinking-Tokens) |
|
||||
| Cache-Write-Tokens | 816.487 |
|
||||
| Cache-Read-Tokens | 28.808.092 |
|
||||
| Agent-Turns | 139 |
|
||||
|
||||
### Gesamtlauf inkl. Subagenten (`modelUsage`, abrechnungsrelevant)
|
||||
| Messgröße | `claude-fable-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 250 | 6.945 | 7.195 |
|
||||
| Output-Tokens | 281.133 | 24 | 281.157 |
|
||||
| Cache-Write-Tokens | 1.178.596 | 0 | 1.178.596 |
|
||||
| Cache-Read-Tokens | 29.175.569 | 0 | 29.175.569 |
|
||||
| **Tokens gesamt** | **30.635.548** | **6.969** | **30.642.517** |
|
||||
|
||||
**Tokens gesamt: 30.642.517** — Input + Output + Cache-Write + Cache-Read über alle Modelle.
|
||||
Das ist die **berichtete Aufwandsgröße** der Versuchsreihe. `total_cost_usd` bleibt unberührt in
|
||||
`RawResult.json` erhalten, wird aber nicht ins Protokoll übernommen: Token sind modell- und
|
||||
preisunabhängig und bleiben damit über Preisänderungen und Modellwechsel hinweg vergleichbar.
|
||||
|
||||
Da im Modus `solo` keine Subagenten laufen, sind `usage` und `modelUsage` für das Hauptmodell
|
||||
deckungsgleich; die Differenz zur Summe stammt allein aus den Haiku-Hilfsaufrufen.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
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 |
|
||||
|---|---:|---:|
|
||||
| StRS | 33 | 13,7 % |
|
||||
| SyRS | 50 | 20,7 % |
|
||||
| SwRS | 158 | 65,6 % |
|
||||
| **Gesamt** | **241** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 133 | 55,2 % |
|
||||
| Sicherheit | 32 | 13,3 % |
|
||||
| Schnittstelle | 25 | 10,4 % |
|
||||
| funktional (Abrechnung) | 19 | 7,9 % |
|
||||
| nicht-funktional | 16 | 6,6 % |
|
||||
| Daten | 12 | 5,0 % |
|
||||
| Schnittstelle (Abrechnung) | 2 | 0,8 % |
|
||||
| funktional (Abrechnung/Fakturierung) | 1 | 0,4 % |
|
||||
| Sicherheit (Abrechnung) | 1 | 0,4 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 283 |
|
||||
| davon `PRIMÄR` | 252 (89,0 %) |
|
||||
| davon `SEKUNDÄR` | 18 (6,4 %) |
|
||||
| davon `KONTEXT` | 13 (4,6 %) |
|
||||
| Belege je Anforderung (Median) | 1 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 237 (98,3 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 218 | 90,5 % |
|
||||
| workaround | 9 | 3,7 % |
|
||||
| sonderfall | 7 | 2,9 % |
|
||||
| veraltet | 7 | 2,9 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 235 | 97,5 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 6 | 2,5 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 41 | 17,0 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 16 | 6,6 % |
|
||||
|
||||
### Regelkonformität (Prüfung gegen die Vorgaben des Prompts)
|
||||
|
||||
| Vorgabe | Ergebnis |
|
||||
|---|---|
|
||||
| **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** (74 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 241 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 241 von 241 mit Tracelinks (100,0 %) |
|
||||
|
||||
## Ergebnis
|
||||
- **Status:** erfolgreich (`is_error` = false, `subtype` = `success`, `stop_reason` = `end_turn`, `terminal_reason` = `completed`)
|
||||
- **Session-ID:** `03603a98-feb4-43f9-8f8c-1621115f6c38`
|
||||
- **Permission-Denials:** 2 (2 × `Bash`) – **keines auf `Task`/`Agent`/`Workflow`**. Der Agent hat zu keinem Zeitpunkt zu delegieren versucht; die Modus-Sperre wurde nie ausgelöst.
|
||||
- **Kontrolle Agentenmodus:** `subagent_stats.spawned` = 0 – Bedingung `solo` eingehalten
|
||||
- **Subagenten-Prompts:** entfällt (Modus `solo`)
|
||||
- **Erzeugte Dateien:** 7 Dateien in `Ergebnisse\`:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
| `Analysebericht.md` | 43.009 B |
|
||||
| `Glossar.md` | 4.881 B |
|
||||
| `Hypothesen.md` | 2.131 B |
|
||||
| `StRS.md` | 33.169 B |
|
||||
| `SwRS.md` | 201.104 B |
|
||||
| `SyRS.md` | 83.391 B |
|
||||
| `Traceability.md` | 6.885 B |
|
||||
|
||||
- **Root unverändert:** ja (zeilenendennormalisiert verglichen).
|
||||
- **Abschlusstext des Agenten:** siehe `RawResult.json` (`result`)
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Neue Zelle: `claude-fable-5` / `solo` / `high`.** Erster gültiger Lauf dieser Kombination;
|
||||
der vorausgegangene Versuch `195958_v7.0.0-77a1` scheiterte am Session-Kontingent.
|
||||
|
||||
**2. Die Modellkontrolle ist sauber – und grenzt den Fable-Befund ein.** `modelUsage` weist
|
||||
ausschließlich `claude-fable-5` plus Haiku-Hilfsaufrufe aus. Im Modus `builtin` war bei Fable
|
||||
zweimal `claude-opus-5[1m]` aufgetreten, zuletzt im Lauf `d694` desselben Blocks. Damit steht
|
||||
fest: **Nicht Fable ist das Problem, sondern Fable in Kombination mit Delegation.** Ohne
|
||||
Subagenten wird das angeforderte Modell eingehalten.
|
||||
|
||||
**3. Zweithöchster `PRIMÄR`-Anteil der Reihe: 89,0 %** von 283 Belegen, 98,3 % der Anforderungen
|
||||
mit mindestens einem Primärbeleg – bei nur 30,6 Mio. Tokens. Das günstigste Modell liefert hier
|
||||
die sauberste Belegarbeit.
|
||||
|
||||
**4. Vollständig regelkonform:** alle fünf Prüfkriterien erfüllt, einschließlich der
|
||||
risikobasierten Priorisierung (74 risikorelevante Anforderungen, alle gedeckt) und Tracelinks bei
|
||||
100 %. Das gelang sonst nur `f631`, `2316`, `b652` und den drei `max`-Läufen.
|
||||
|
||||
**5. Belegdichte Median 1,0** – Fable schreibt einen Beleg je Anforderung. Zusammen mit Opus
|
||||
(2,0 auf `high`) und Sonnet (1,0) stützt das den Befund aus Punkt 2 des Laufs `2269`: Die
|
||||
Belegdichte folgt dem Modell.
|
||||
|
||||
**6. Die Wanduhrzeit von 7:03:44 ist unbrauchbar – aus einem neuen Grund.** Nicht Parallelbetrieb,
|
||||
sondern **Kontingent-Wartezeiten**: Zwischen den Werkzeugaufrufen lagen Lücken von 4:00 h
|
||||
(23:08 → 03:08) und zweimal rund 2 h. Die CLI bricht bei erschöpftem Kontingent nicht ab, sondern
|
||||
wartet auf das nächste Reset-Fenster. `duration_ms` bildet diese Wartezeit mit ab. Damit ist ein
|
||||
dritter Verzerrungsmechanismus der Zeitmessung dokumentiert, neben Parallelbetrieb und Abbruch.
|
||||
Tokenverbrauch, Anforderungszahl und Belegkennzahlen sind davon **nicht** betroffen.
|
||||
|
||||
**7. Zwei Permission-Denials**, keiner auf `Task`/`Agent`/`Workflow`. `spawned` = 0.
|
||||
+1
File diff suppressed because one or more lines are too long
+242
@@ -0,0 +1,242 @@
|
||||
ReqID Titel Ebene Module Trace Risiko PRIMAER Status Konsolidierung
|
||||
SyRS-001 Gruppenbasierte Benutzerrechtepruefung SyRS M-024 StRS-012 J J belegt Kandidat:SyRS-002
|
||||
SyRS-002 Getrenntes Rechtemodell fuer Web-Accounts SyRS M-024 StRS-019,StRS-012 J J belegt Kandidat:SyRS-001
|
||||
SyRS-003 Ticketbasierte Sitzungen mit Lizenzpruefung SyRS M-017,M-016 StRS-013,StRS-014 J J belegt nein
|
||||
SyRS-004 Mehrere Authentifizierungsverfahren SyRS M-017 StRS-013 J J belegt nein
|
||||
SyRS-005 Zwei-Faktor-Authentifizierung SyRS M-017 StRS-013 J J belegt Kandidat:SwRS-011
|
||||
SyRS-006 Zeitgesteuerte Kontodeaktivierung SyRS M-017 StRS-012,StRS-013 J J belegt nein
|
||||
SyRS-007 Anwendungsbezogene Anmelderechte SyRS M-017 StRS-012,StRS-013 J J belegt nein
|
||||
SyRS-008 Standard-Rechtegruppen SyRS M-024 StRS-012 J J belegt nein
|
||||
SyRS-009 Aenderungsnachverfolgung SyRS M-036,M-039 StRS-030 N J belegt nein
|
||||
SyRS-010 Transaktionale Speicherung SyRS M-039 StRS-030 N J belegt nein
|
||||
SwRS-001 Rechteermittlung SQL+Cache SwRS M-024 SyRS-001,SyRS-002 J J belegt nein
|
||||
SwRS-002 Passwort SHA1 ungesalzen SwRS M-017 SyRS-004 J J belegt nein
|
||||
SwRS-003 2FA-Validatorwahl SwRS M-017 SyRS-005 J J belegt nein
|
||||
SwRS-004 Rechtegruppenverwaltung SwRS M-024 SyRS-001,SyRS-008 J J belegt nein
|
||||
SwRS-005 Ticket-Wiederverwendung+LoginIP SwRS M-017 SyRS-003 J J belegt nein
|
||||
SwRS-006 Speicher-Template Hooks SwRS M-039 SyRS-010 N J belegt nein
|
||||
SwRS-007 Erstellungs-/Aenderungsmetadaten SwRS M-036,M-039 SyRS-009 N J belegt nein
|
||||
SwRS-008 Standardrechtegruppen aus Ressource SwRS M-024 SyRS-008 J J belegt nein
|
||||
SwRS-009 Signaturvalidierte Lizenzdatei SwRS M-016 SyRS-003 J J belegt nein
|
||||
SyRS-011 Belegkette Weiterfuehrungswege SyRS M-083 StRS-002,StRS-003 J J belegt Kandidat:CustomerAssets-Modell
|
||||
SyRS-012 Nummernkreise je Mandant/Filiale SyRS M-083,M-018 StRS-003,StRS-012 J J belegt nein
|
||||
SyRS-013 Bestandswirkung der Belege SyRS M-083,M-115 StRS-002,StRS-008,StRS-024 J J belegt nein
|
||||
SyRS-014 Mindestpreisschutz SyRS M-083 StRS-003 J J belegt nein
|
||||
SyRS-015 Belegsperren+Concurrency SyRS M-083 StRS-002 N J belegt nein
|
||||
SyRS-016 Belegversionierung SyRS M-083 StRS-002,StRS-030 N J belegt nein
|
||||
SwRS-010 Belegnummernvergabe+Templatekunde SwRS M-083 SyRS-012 J J belegt nein
|
||||
SwRS-011 TOTP-Zweitfaktor SwRS M-111 SyRS-005 J J belegt Kandidat:SyRS-005
|
||||
SwRS-012 Nummernkreis-Kaskade SwRS M-018 SyRS-012 J J belegt nein
|
||||
SwRS-013 IReceiptSpecificLogic-Strategie SwRS M-083 SyRS-011,SyRS-013 N J belegt nein
|
||||
SwRS-014 Negativbuchung nur mit Recht SwRS M-083,M-115 SyRS-013,SyRS-001 J J belegt nein
|
||||
SwRS-015 Mindestpreis-Reauth SwRS M-083 SyRS-014 J J belegt nein
|
||||
SwRS-016 Filialzuordnung BranchOrigin SwRS M-083 SyRS-012 N J belegt nein
|
||||
SwRS-017 Seriennummern-Vollstaendigkeit SwRS M-083 SyRS-013 N J belegt nein
|
||||
SwRS-018 Firmengruppen-Belegeinstellungen SwRS M-083 SyRS-011 N J belegt nein
|
||||
SyRS-017 API-Zugriffstokens SyRS M-003 StRS-013,StRS-028 J J belegt nein
|
||||
SyRS-018 Steuerbare Hintergrunddienste SyRS M-006 StRS-031 N J belegt nein
|
||||
SyRS-019 KI-Assistenz konfigurierbar SyRS M-005,M-030 StRS-029 N J belegt nein
|
||||
SwRS-019 Bankverbindungen Rechte+Default SwRS M-001 SyRS-001,SyRS-020 J J belegt nein
|
||||
SwRS-020 Kontenstamm Rechte+FiBu-Nummer SwRS M-002 SyRS-001,SyRS-020 J J belegt nein
|
||||
SwRS-021 API-Token Hash+Ablauf+Log SwRS M-003 SyRS-017 J J belegt nein
|
||||
SwRS-022 Client-Version je Anmeldung SwRS M-004 SyRS-003 N J belegt nein
|
||||
SwRS-023 KI-Prompts+verschluesselte Keys SwRS M-005 SyRS-019 N J belegt nein
|
||||
SwRS-024 Hintergrunddienst-Zustand SwRS M-006 SyRS-018 N J belegt nein
|
||||
SwRS-025 Kontenrahmenverwaltung SwRS M-007 SyRS-021 N J belegt nein
|
||||
SwRS-026 Konfig-DB Masterkey SwRS M-008 SyRS-017,StRS-028 J J belegt Kandidat:SwRS-023
|
||||
SyRS-020 Konten-/Adressstamm SyRS M-002 StRS-001,StRS-025 N J belegt nein
|
||||
SyRS-022 DSGVO Loeschkonzept SyRS M-012 StRS-030 J J belegt nein
|
||||
SyRS-023 Zentrale Konfiguration SyRS M-026 StRS-032 N J belegt nein
|
||||
SyRS-024 Mandanten-/Filialstruktur SyRS M-009,M-018 StRS-033 N J belegt nein
|
||||
SwRS-027 Kollisionssichere Nummernvergabe SwRS M-009 SyRS-012,SyRS-024 J J belegt nein
|
||||
SwRS-028 Verbindungsverwaltung SwRS M-010 SyRS-003 N J belegt nein
|
||||
SwRS-029 Custom Properties je Modul SwRS M-011 SyRS-023 N J belegt Kandidat:M-043
|
||||
SwRS-030 DSGVO-Kontaktloeschung SwRS M-012 SyRS-022 J J belegt nein
|
||||
SwRS-031 Online-AVV/SEPA-Dokumente SwRS M-013 SyRS-022,StRS-020 N J belegt Kandidat:Nexus-Signierung
|
||||
SwRS-032 Mitarbeiter Abteilungen/Skills SwRS M-014 SyRS-020,StRS-012 N J belegt nein
|
||||
SwRS-033 DB-Umgebungspruefungen SwRS M-015 SyRS-023 N J belegt nein
|
||||
SwRS-034 Konditionen-Stammdaten SwRS M-019 SyRS-011 N J belegt nein
|
||||
SwRS-035 Netzwerkdiagnose SwRS M-020 SyRS-023 N J belegt nein
|
||||
SwRS-036 Performance-Messungen SwRS M-021 SyRS-023 N J belegt nein
|
||||
SwRS-037 Telefonie-Einstellungen SwRS M-022 SyRS-030 N J belegt nein
|
||||
SwRS-038 Portal Statuspruefung/Reportupload SwRS M-023 SyRS-025 N J belegt nein
|
||||
SwRS-039 Wartungsskripte+SQL-Management SwRS M-025 SyRS-023,SyRS-018 N J belegt nein
|
||||
SwRS-040 Typisierter Einstellungszugriff SwRS M-026 SyRS-023 N J belegt nein
|
||||
SwRS-041 UI-Themes SwRS M-027 SyRS-023 N J belegt nein
|
||||
SwRS-042 Webservice-Konfigurationsdatei SwRS M-028 SyRS-023,SyRS-005 N J belegt nein
|
||||
SyRS-021 FiBu-Uebergabe DATEV SyRS M-044 StRS-009,StRS-016 J J belegt nein
|
||||
SwRS-043 Terminanfragen SwRS M-029 SyRS-029,StRS-018 N J belegt nein
|
||||
SwRS-044 Lieferantenbeleg-Ablage SwRS M-031 SyRS-026 N J belegt nein
|
||||
SwRS-045 Distributoren auto-anlegen SwRS M-032 SyRS-027 N J belegt nein
|
||||
SwRS-046 Kalender-Einstellungen SwRS M-033 SyRS-029,StRS-018 N J belegt nein
|
||||
SwRS-047 Icon-Verwaltung SwRS M-034 SyRS-031 N J belegt nein
|
||||
SwRS-048 Nexus-Einstellungen SwRS M-035 SyRS-031 N J belegt nein
|
||||
SwRS-049 Chat SwRS M-037 SyRS-029,StRS-017 N J belegt nein
|
||||
SwRS-050 Checklisten SwRS M-038 SyRS-029 N J belegt nein
|
||||
SwRS-051 Laender/Waehrungen SwRS M-040 SyRS-011,StRS-001 N J belegt nein
|
||||
SwRS-052 CPra-Konnektor SwRS M-041 SyRS-027 N J belegt nein
|
||||
SwRS-053 Custom Tables SwRS M-043 SyRS-023 N J belegt Kandidat:SwRS-029
|
||||
SwRS-054 AccountDevices SwRS M-045 SyRS-028,StRS-022 N J belegt Kandidat:Assets
|
||||
SwRS-055 AssetManagement DocuBoard SwRS M-046 SyRS-028,StRS-022 N J belegt Kandidat:SwRS-054
|
||||
SwRS-056 Dokumentationen SwRS M-047 SyRS-026,StRS-020 N J belegt nein
|
||||
SwRS-057 FiBu-Exportkonfigurationen SwRS M-044 SyRS-021 J J belegt nein
|
||||
SwRS-058 Doppeluebergabeschutz FiBu SwRS M-044 SyRS-021 J J belegt nein
|
||||
SyRS-025 Report-Engine Belegdruck SyRS M-080,M-081 StRS-015 N J belegt nein
|
||||
SyRS-026 Dokumenten-/Verzeichnisverwaltung SyRS M-013 StRS-020 N J belegt nein
|
||||
SyRS-027 EDI-Bestelluebertragung SyRS M-048 StRS-010,StRS-007,StRS-021 N J belegt Kandidat:Gateway-EDI
|
||||
SyRS-028 Kundengeraete/Assets SyRS M-045,M-046,M-084 StRS-022,StRS-023 N J belegt Kandidat:3 Datenhaltungen
|
||||
SyRS-029 Organisation+Zusammenarbeit SyRS M-033,M-066,M-067,M-107 StRS-018 N J belegt nein
|
||||
SyRS-030 TAPI-Telefonie SyRS M-101,M-022 StRS-017 N J belegt nein
|
||||
SyRS-031 Mehrkanal-Clients SyRS M-127,M-130,M-133 StRS-019 N J belegt Kandidat:Doppel-UI
|
||||
SyRS-032 Onlinebanking-Zahlungsabgleich SyRS M-053 StRS-009 J J belegt nein
|
||||
SyRS-033 Volltextsuche SyRS M-056 StRS-027 N J belegt nein
|
||||
SyRS-034 Massenaenderungen SyRS M-063 StRS-008 N J belegt nein
|
||||
SyRS-035 E-Mail/Exchange SyRS M-060 StRS-017,StRS-026 N J belegt nein
|
||||
SyRS-036 Mail-Scanner SyRS M-061 StRS-017,StRS-005 N J belegt Kandidat:Workflows
|
||||
SwRS-059 RMA-Abwicklung SwRS M-042 SyRS-028,StRS-023 N J belegt nein
|
||||
SwRS-060 EDI-Bestellerzeugung SwRS M-048 SyRS-027 N J belegt nein
|
||||
SwRS-061 Mitarbeiterstatus/Dispatcher SwRS M-049 SyRS-020,StRS-012 N J belegt nein
|
||||
SwRS-062 ExpectedEvents SwRS M-050 SyRS-018,StRS-031 N J belegt nein
|
||||
SwRS-063 Externe Helpdesk-Konfiguration SwRS M-051 SyRS-027,StRS-005 N J belegt Kandidat:DocBee
|
||||
SwRS-064 Externe Tools SwRS M-052 SyRS-023 N J belegt nein
|
||||
SwRS-065 Zahlungseingangsprotokoll SwRS M-053 SyRS-032 J J belegt nein
|
||||
SwRS-066 Bankumsatz-Zuordnung/Buchung SwRS M-053 SyRS-032 J J belegt nein
|
||||
SwRS-067 CustomGateway Sonderartikel SwRS M-054 SyRS-027,StRS-004 N J belegt nein
|
||||
SwRS-068 Lucene-Index inkrementell SwRS M-056 SyRS-033 N J belegt nein
|
||||
SwRS-069 Shop-Integration ExternalId SwRS M-057 SyRS-027,StRS-019 N J belegt nein
|
||||
SwRS-070 ItPlanner Kategorien SwRS M-058 SyRS-029 N J belegt nein
|
||||
SwRS-071 Lagerorte+Umbuchungslog SwRS M-059 SyRS-013,StRS-008 N J belegt nein
|
||||
SwRS-072 Signaturen+Blacklist SwRS M-060 SyRS-035 N J belegt nein
|
||||
SwRS-073 MailScanner-Konfiguration SwRS M-061 SyRS-036 N J belegt nein
|
||||
SwRS-074 Serien-Mailings SwRS M-062 SyRS-035,StRS-026 N J belegt nein
|
||||
SwRS-075 Massenpreisaenderungen SwRS M-063 SyRS-034 N J belegt nein
|
||||
SwRS-076 Mobile Mitarbeiterliste SwRS M-064 SyRS-031 N J belegt nein
|
||||
SwRS-077 Modulkatalog+Favoriten SwRS M-065 SyRS-031,StRS-014 N J belegt nein
|
||||
SwRS-078 Dashboards SwRS M-066 SyRS-029 N J belegt nein
|
||||
SwRS-079 MyDay Arbeitsvorrat SwRS M-067 SyRS-029 N J belegt nein
|
||||
SwRS-080 Nexus-Benachrichtigungen SwRS M-068 SyRS-031,StRS-018 N J belegt Kandidat:M-070
|
||||
SwRS-081 Ticket-Ansichten Nexus SwRS M-069 SyRS-031,StRS-005 N J belegt nein
|
||||
SwRS-082 Objekt-Benachrichtigungsempfaenger SwRS M-070 SyRS-029 N J belegt Kandidat:SwRS-080
|
||||
SwRS-083 Externe Objektreferenzen SwRS M-071 SyRS-027 N J belegt nein
|
||||
SwRS-084 Outlook-Assetsuche SwRS M-072 SyRS-031,StRS-022 N J belegt nein
|
||||
SwRS-085 Kundenzugangsdaten+Logs SwRS M-073 SyRS-017,StRS-028 J J belegt Kandidat:M-074
|
||||
SwRS-086 Passwortmanager Siegel SwRS M-074 SyRS-017,StRS-028 J J belegt Kandidat:SwRS-085
|
||||
SwRS-087 Prozesse Schritte/Bindungen SwRS M-075 SyRS-036,StRS-031 N J belegt Kandidat:Workflows
|
||||
SwRS-088 Produktmatrix SwRS M-076 SyRS-020,StRS-025 N J belegt nein
|
||||
SwRS-089 Fertigungsauftraege SwRS M-077 SyRS-013,StRS-024 N J belegt nein
|
||||
SwRS-090 Projektliste SwRS M-078 SyRS-020,StRS-025 N J belegt Kandidat:Projektbegriffe
|
||||
SwRS-091 Bestellvorschlaege SwRS M-079 SyRS-027,StRS-007 N J belegt nein
|
||||
SyRS-037 Vertragsverwaltung Laufzeit/Intervalle SyRS M-084 StRS-004 J J belegt nein
|
||||
SyRS-038 Automatische Vertragsfakturierung SyRS M-084 StRS-004,StRS-003 J J belegt nein
|
||||
SyRS-039 Timer-Billing SyRS M-084,M-086 StRS-006,StRS-005 J J belegt nein
|
||||
SyRS-040 Helpdesk Rechte+Status SyRS M-086 StRS-005,StRS-012 J J belegt nein
|
||||
SyRS-041 Ticket-Eskalation SyRS M-086 StRS-005 N J belegt nein
|
||||
SyRS-042 Kassenbuch SyRS M-087 StRS-003,StRS-009 J J belegt nein
|
||||
SwRS-092 Vertrags-Datumsarithmetik SwRS M-084 SyRS-037 J J belegt nein
|
||||
SwRS-093 Auto-Vertragsschliessen SwRS M-084 SyRS-037,SyRS-038 J J belegt nein
|
||||
SwRS-094 Abrechnungsfaellige Kunden+Zaehler SwRS M-084 SyRS-038 J J belegt nein
|
||||
SwRS-095 Timer-Belegerzeugung SwRS M-084,M-086 SyRS-039 J J belegt nein
|
||||
SwRS-096 Ticket-Rechtepruefung Save SwRS M-086 SyRS-040,SyRS-001 J J belegt nein
|
||||
SwRS-097 Ticket-Sichtbarkeit restriktiv SwRS M-086 SyRS-040 J J belegt nein
|
||||
SwRS-098 Eskalationslauf SwRS M-086 SyRS-041 N J belegt nein
|
||||
SwRS-099 Ticketabschluss+Benachrichtigung SwRS M-086 SyRS-040,SyRS-025 N J belegt nein
|
||||
SwRS-100 Kassenbuchbuchung SwRS M-087 SyRS-042 J J belegt nein
|
||||
SwRS-101 Riverbird-Ticketvalidierung SwRS M-082 SyRS-017,SyRS-027 J J belegt nein
|
||||
SwRS-102 Kundensuche Kompakt SwRS M-085 SyRS-020 N J belegt nein
|
||||
SwRS-103 Telemarketing SwRS M-088 SyRS-020,StRS-026 N J belegt nein
|
||||
SwRS-104 Terminverwaltung Schedule SwRS M-089 SyRS-029 N J belegt Kandidat:M-033
|
||||
SwRS-105 Dokuwizard Infrastruktur SwRS M-090 SyRS-026,StRS-020 N J belegt Kandidat:M-047
|
||||
SwRS-106 Stundenzuschlagssaetze SwRS M-091 SyRS-039 J J belegt nein
|
||||
SwRS-107 PDF-Signatur SwRS M-092 SyRS-025,StRS-020 J J belegt nein
|
||||
SwRS-108 SelfCare-Formulare SwRS M-093 SyRS-031,StRS-019 N J belegt Kandidat:WebHDQuestion
|
||||
SwRS-109 Workflow-Prozesse SwRS M-094 SyRS-036,StRS-031 N J belegt Kandidat:SwRS-087
|
||||
SwRS-110 Social-Media-Feed SwRS M-095 SyRS-029 N J belegt nein
|
||||
SwRS-111 Start Mapping/Verbindung SwRS M-096 SyRS-010 N J belegt nein
|
||||
SwRS-112 Inventur SwRS M-098 SyRS-013,StRS-008 J J belegt nein
|
||||
SwRS-113 I3D-Systemtabelle SwRS M-099 SyRS-010 N J belegt nein
|
||||
SwRS-114 Tags SwRS M-100 SyRS-040 N J belegt nein
|
||||
SwRS-115 Anruferkennung SwRS M-101 SyRS-030 N J belegt nein
|
||||
SwRS-116 TaskManager Handler SwRS M-102 SyRS-029,StRS-031 N J belegt Kandidat:M-107
|
||||
SwRS-117 Telemetrie SwRS M-103 SyRS-023 N J belegt nein
|
||||
SwRS-118 Textbausteine SwRS M-104 SyRS-025,SyRS-011 N J belegt nein
|
||||
SwRS-119 Ticket-Projekte SwRS M-105 SyRS-040,StRS-025 N J belegt Kandidat:SwRS-090
|
||||
SwRS-120 TimingSettings SwRS M-106 SyRS-018 N J belegt nein
|
||||
SwRS-121 Objekt-ToDos SwRS M-107 SyRS-029 N J belegt Kandidat:SwRS-116
|
||||
SwRS-122 Textformat-Konvertierung SwRS M-108 SyRS-023 N J belegt nein
|
||||
SwRS-123 TradePool-Import SwRS M-109 SyRS-027 N J belegt nein
|
||||
SwRS-124 Transaktionsobjekte SwRS M-110 SyRS-020 N J belegt nein
|
||||
SwRS-125 SimpleUrls SwRS M-112 SyRS-026 N J belegt nein
|
||||
SwRS-126 Videoportal-Zuordnung SwRS M-113 SyRS-023 N J belegt nein
|
||||
SwRS-127 Gutscheinverwaltung SwRS M-114 SyRS-042 J J belegt nein
|
||||
SwRS-128 Artikelstamm Systemartikel SwRS M-115 SyRS-013,StRS-008 N J belegt nein
|
||||
SwRS-129 Aktions-Weblinks SwRS M-116 SyRS-031,StRS-019 N J belegt nein
|
||||
SwRS-130 Webmenue-Konfiguration SwRS M-118 SyRS-031 N J belegt nein
|
||||
SwRS-131 Webservice-Version SwRS M-119 SyRS-031 N J belegt nein
|
||||
SwRS-132 PDF-Merge SwRS M-120 SyRS-025 N J belegt nein
|
||||
SwRS-133 Typisierte Exceptions SwRS M-121 SyRS-003 N J belegt nein
|
||||
SyRS-043 E-Rechnungsformate SyRS M-044,M-080,M-126,M-137 StRS-010,StRS-003 J J belegt nein
|
||||
SyRS-044 Versanddienstleister SyRS M-138,M-139 StRS-011 N J belegt Kandidat:GLS-vs-Shipcloud
|
||||
SyRS-045 Kundenportal Nexus SyRS M-130 StRS-019 N J belegt Kandidat:SelfCare
|
||||
SyRS-046 REST-API Rechteautorisierung SyRS M-133 StRS-013,StRS-012 J J belegt nein
|
||||
SyRS-047 Container-Betrieb SyRS M-148 StRS-031 N J belegt nein
|
||||
SyRS-048 Windows-Installer SyRS M-147,M-149 StRS-031 N J belegt nein
|
||||
SyRS-049 Testabdeckung SyRS M-151,M-148 StRS-031 N J belegt nein
|
||||
SwRS-134 Grid-/UI-Profile SwRS M-055 SyRS-031 N J belegt nein
|
||||
SwRS-135 Statistiken SwRS M-097 SyRS-021,SyRS-032,StRS-016 N J belegt nein
|
||||
SwRS-136 Webservice-Fassaden SwRS M-117 SyRS-031,SyRS-046 N J belegt Kandidat:Doppel-BL
|
||||
SwRS-137 DAO Event-Listener SwRS M-122 SyRS-010,SyRS-009 N J belegt nein
|
||||
SwRS-138 Entitaetsmodell I3D SwRS M-123 SyRS-009,SyRS-010 N J belegt nein
|
||||
SwRS-139 ModuleFeatures SwRS M-124 SyRS-003 N J belegt nein
|
||||
SwRS-140 Objektartenkatalog SwRS M-125 SyRS-011 N J belegt nein
|
||||
SwRS-141 Gateway-Formatadapter SwRS M-126 SyRS-027,SyRS-021,SyRS-043 N J belegt Kandidat:EDI-Doppel
|
||||
SwRS-142 WPF-Client SwRS M-127 SyRS-031 N J belegt Kandidat:Nexus
|
||||
SwRS-143 Controls-Bibliothek SwRS M-128 SyRS-031 N J belegt nein
|
||||
SwRS-144 Core-Bibliothek TOTP SwRS M-129 SyRS-005 J J belegt nein
|
||||
SwRS-145 Nexus-Webclient SwRS M-130,M-131,M-132 SyRS-031,SyRS-045 N J belegt Kandidat:SwRS-142
|
||||
SwRS-146 Webservice-Hosting SwRS M-134,M-135,M-136 SyRS-047,SyRS-031 N J belegt nein
|
||||
SwRS-147 Versionierte Controller SwRS M-133 SyRS-046,SyRS-031 J J belegt nein
|
||||
SwRS-148 Distributor-Produktdaten SwRS M-140,M-141,M-143,M-144 SyRS-027,StRS-007 N J belegt nein
|
||||
SwRS-149 finAPI-Client SwRS M-142 SyRS-032 J J belegt nein
|
||||
SwRS-150 docuFORM-Anbindung SwRS M-145 SyRS-038,SyRS-027 N J belegt Kandidat:Assets
|
||||
SwRS-151 GLS/Shipcloud Logik SwRS M-138,M-139 SyRS-044 N J belegt nein
|
||||
SwRS-152 Legacy-DB-Schema Kunden SwRS M-146 SyRS-011,SyRS-020 N J belegt Kandidat:Bankdaten
|
||||
SwRS-153 Release-Artefakte SwRS M-147,M-148,M-149 SyRS-047,SyRS-048,SyRS-049 N J belegt nein
|
||||
SyRS-050 [HYPOTHESE] Mahnwesen SyRS M-026,M-053 StRS-009,StRS-003 J N HYPOTHESE nein
|
||||
SwRS-154 [HYPOTHESE] Anzahlungsverrechnung SwRS M-083 SyRS-011,SyRS-014 J J HYPOTHESE nein
|
||||
SwRS-155 [HYPOTHESE] SEPA-Lastschrift SwRS M-053,M-001 SyRS-032,SyRS-021 J J HYPOTHESE nein
|
||||
SwRS-156 [HYPOTHESE] WebCart-Sonderpreise SwRS M-130,M-086 SyRS-045 N N HYPOTHESE nein
|
||||
SwRS-157 [HYPOTHESE] Exchange-Sync SwRS M-060,M-033 SyRS-035,SyRS-029 N N HYPOTHESE Kandidat:SwRS-104
|
||||
SwRS-158 [HYPOTHESE] Fernwartung Supremo SwRS M-067 SyRS-029,SyRS-030 N N HYPOTHESE nein
|
||||
StRS-001 Geschaeftspartnerverwaltung StRS M-002 SyRS-020,SyRS-024 N J belegt nein
|
||||
StRS-002 Angebots-/Auftragsabwicklung StRS M-083 SyRS-011,SyRS-015,SyRS-016 N J belegt nein
|
||||
StRS-003 Geschuetzte Fakturierung StRS M-083,M-087 SyRS-012,SyRS-014,SyRS-042 J J belegt nein
|
||||
StRS-004 Vertragsgeschaeft StRS M-084 SyRS-037,SyRS-038,SyRS-039 J J belegt nein
|
||||
StRS-005 Helpdesk StRS M-086 SyRS-040,SyRS-041,SyRS-036 N J belegt nein
|
||||
StRS-006 Leistungserfassung StRS M-084,M-086 SyRS-039 J J belegt nein
|
||||
StRS-007 Einkauf+Distribution StRS M-079,M-048 SyRS-027 N J belegt nein
|
||||
StRS-008 Artikel-/Lagerfuehrung StRS M-115,M-059,M-098 SyRS-013,SyRS-034 N J belegt nein
|
||||
StRS-009 Finanzprozesse StRS M-053,M-044,M-087 SyRS-021,SyRS-032,SyRS-042,SyRS-050 J J belegt nein
|
||||
StRS-010 E-Belegaustausch StRS M-044,M-048 SyRS-043,SyRS-027 J J belegt nein
|
||||
StRS-011 Versandabwicklung StRS M-138,M-139 SyRS-044 N J belegt nein
|
||||
StRS-012 Berechtigungssteuerung StRS M-024 SyRS-001,SyRS-002,SyRS-008 J J belegt nein
|
||||
StRS-013 Sichere Anmeldung/API StRS M-017,M-003 SyRS-003,SyRS-004,SyRS-005,SyRS-017,SyRS-046 J J belegt nein
|
||||
StRS-014 Lizenz-/Modulsteuerung StRS M-016,M-065 SyRS-003 J J belegt nein
|
||||
StRS-015 Belegdruck/Berichte StRS M-080 SyRS-025 N J belegt nein
|
||||
StRS-016 BW-Transparenz StRS M-097 SyRS-021 N J belegt nein
|
||||
StRS-017 Integrierte Kommunikation StRS M-060,M-101,M-037 SyRS-035,SyRS-036,SyRS-030 N J belegt nein
|
||||
StRS-018 Arbeitsorganisation StRS M-067,M-066 SyRS-029 N J belegt nein
|
||||
StRS-019 Endkunden-Self-Service StRS M-130,M-093 SyRS-045,SyRS-002 N J belegt nein
|
||||
StRS-020 Dokumente+Signatur StRS M-013,M-092 SyRS-026,SyRS-022 N J belegt nein
|
||||
StRS-021 Konnektoren-Offenheit StRS M-071,M-044 SyRS-027 N J belegt nein
|
||||
StRS-022 Kundengeraete-Ueberblick StRS M-045,M-046,M-084 SyRS-028 N J belegt Kandidat:Asset-Konzept
|
||||
StRS-023 RMA StRS M-042 SyRS-028 N J belegt nein
|
||||
StRS-024 Fertigung StRS M-077 SyRS-013 N J belegt nein
|
||||
StRS-025 CRM/Projekte StRS M-078,M-076,M-105 SyRS-020 N J belegt Kandidat:Projektbegriffe
|
||||
StRS-026 Marketing StRS M-062,M-088 SyRS-035 N J belegt nein
|
||||
StRS-027 Zentrale Suche StRS M-056 SyRS-033 N J belegt nein
|
||||
StRS-028 Kundenzugangsdaten StRS M-073,M-074 SyRS-017 J J belegt Kandidat:2 Passwortmodule
|
||||
StRS-029 KI-Unterstuetzung StRS M-030,M-005 SyRS-019 N J belegt nein
|
||||
StRS-030 DSGVO+Audit StRS M-012,M-036 SyRS-022,SyRS-009,SyRS-010 J J belegt nein
|
||||
StRS-031 Automatisierter Betrieb StRS M-006,M-148,M-147,M-151 SyRS-018,SyRS-047,SyRS-048,SyRS-049 N J belegt nein
|
||||
StRS-032 Anpassbarkeit StRS M-026,M-011,M-043 SyRS-023 N J belegt nein
|
||||
StRS-033 Mehrfirmen-/Filialbetrieb StRS M-009,M-018 SyRS-024,SyRS-012 N J belegt nein
|
||||
|
+4623
File diff suppressed because it is too large
Load Diff
+69
@@ -0,0 +1,69 @@
|
||||
## Gefundene Anforderungen
|
||||
|
||||
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 |
|
||||
|---|---:|---:|
|
||||
| StRS | 33 | 13,7 % |
|
||||
| SyRS | 50 | 20,7 % |
|
||||
| SwRS | 158 | 65,6 % |
|
||||
| **Gesamt** | **241** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 133 | 55,2 % |
|
||||
| Sicherheit | 32 | 13,3 % |
|
||||
| Schnittstelle | 25 | 10,4 % |
|
||||
| funktional (Abrechnung) | 19 | 7,9 % |
|
||||
| nicht-funktional | 16 | 6,6 % |
|
||||
| Daten | 12 | 5,0 % |
|
||||
| Schnittstelle (Abrechnung) | 2 | 0,8 % |
|
||||
| funktional (Abrechnung/Fakturierung) | 1 | 0,4 % |
|
||||
| Sicherheit (Abrechnung) | 1 | 0,4 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 283 |
|
||||
| davon `PRIMÄR` | 252 (89,0 %) |
|
||||
| davon `SEKUNDÄR` | 18 (6,4 %) |
|
||||
| davon `KONTEXT` | 13 (4,6 %) |
|
||||
| Belege je Anforderung (Median) | 1 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 237 (98,3 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 218 | 90,5 % |
|
||||
| workaround | 9 | 3,7 % |
|
||||
| sonderfall | 7 | 2,9 % |
|
||||
| veraltet | 7 | 2,9 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 235 | 97,5 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 6 | 2,5 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 41 | 17,0 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 16 | 6,6 % |
|
||||
|
||||
### Regelkonformität (Prüfung gegen die Vorgaben des Prompts)
|
||||
|
||||
| Vorgabe | Ergebnis |
|
||||
|---|---|
|
||||
| **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** (74 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 241 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 241 von 241 mit Tracelinks (100,0 %) |
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
# Versuch 01 - Baseline (Prompt-only) - Iteration 02
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V1 Baseline (Prompt-only)
|
||||
- **Iteration:** 02 (erste Überarbeitung nach Auswertung von Iteration 01)
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Auswertung der 24 Läufe von Tag 1 über 3.287 erzeugte Anforderungen. Jede Änderung ist an einen gemessenen Befund gekoppelt:
|
||||
|
||||
| Änderung | Auslösender Befund |
|
||||
|---|---|
|
||||
| Modulinventar als Pflicht-Vorstufe, Mindestabdeckung je Modul, Vertiefung erst danach | Anforderungszahl schwankte je Lauf zwischen 42 und 325 (Faktor 5,9); 55 bis 60 von rund 85 Modulen blieben unanalysiert; die Modultabellen der Analyseberichte reichten von 0 bis 51 Zeilen |
|
||||
| Hypothesenpflicht kalibriert, `Hypothesen.md` deckungsgleich mit den Inline-Markierungen | Zwei Läufe meldeten null Hypothesen bei 71 bzw. 148 Anforderungen; der Anteil schwankte zwischen 0 % und 26,2 %; mehrfach wichen Sammeldatei und Inline-Markierungen voneinander ab |
|
||||
| Primärbeleg muss die durchsetzende Stelle benennen | 45,9 % aller Anforderungen trugen genau einen Beleg; in einem Lauf waren 5 von 31 risikorelevanten Anforderungen weder mit `PRIMÄR` noch als `[HYPOTHESE]` gedeckt |
|
||||
| Belegpflicht verschärft: ohne Beleg keine Anforderung | Eine Anforderung wurde ohne jeden Beleg geschrieben |
|
||||
| Konsolidierungsbegriff an einem Beispiel kalibriert | Anteil der Konsolidierungskandidaten schwankte je Lauf zwischen 2,4 % und 35,2 % |
|
||||
| Eigenes Feld `Qualitätsmerkmal` für die ISO-25010-Zuordnung | Die Zuordnung war gefordert, hatte aber keinen Ablageort: nur 33 von 313 nicht-funktionalen Anforderungen führten sie als eigene Angabe |
|
||||
| Risikoanforderungen im Konsistenzcheck auflisten | Verstöße gegen die risikobasierte Priorisierung fielen erst in der nachgelagerten Auswertung auf, nicht im Lauf selbst |
|
||||
|
||||
Unverändert bleiben Prüfidee, Tracelinks, Belegklassifikation und das Blockformat: Prüfidee und Tracelinks waren in **allen** 3.287 Anforderungen gesetzt, 78,6 % der Belege waren `PRIMÄR`.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite ausschließlich auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, ggf. DB-Skripte). Nutze nur Informationen, die du aus diesen Artefakten gewinnen kannst.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, keine Ausführung)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz).
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
|
||||
---
|
||||
|
||||
### Werkzeugkontext (vom Versuchsaufbau vorgegeben)
|
||||
Für diesen Lauf stehen zur Verfügung: Lesen und Suchen von Dateien sowie das Ausführen von
|
||||
Kommandozeilenbefehlen im Arbeitsverzeichnis.
|
||||
Nicht verfügbar sind: Subagenten, spezialisierte Agentenrollen, externe Werkzeugserver.
|
||||
Triff keine Annahmen über weitere Werkzeuge und versuche nicht, nicht verfügbare
|
||||
Werkzeuge zu ersetzen.
|
||||
### Ausgabeverzeichnis (überschreibt anderslautende Pfadangaben oben)
|
||||
Schreibe ALLE zu erzeugenden Ergebnisdateien in das Verzeichnis
|
||||
`c:\DEV\MasterArbeit\Versuche\Versuch_01\Iteration 3\claude-fable-5\solo\high\02_Lauf_2026-08-27_002430_v7.0.0-35a4\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-27T07:28:28.0825221+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-27T00:24:41.6237308+02:00
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
M-001 2
|
||||
M-002 3
|
||||
M-003 3
|
||||
M-004 1
|
||||
M-005 3
|
||||
M-006 3
|
||||
M-007 1
|
||||
M-008 1
|
||||
M-009 3
|
||||
M-010 1
|
||||
M-011 2
|
||||
M-012 3
|
||||
M-013 3
|
||||
M-014 1
|
||||
M-015 1
|
||||
M-016 3
|
||||
M-017 9
|
||||
M-018 4
|
||||
M-019 1
|
||||
M-020 1
|
||||
M-021 1
|
||||
M-022 2
|
||||
M-023 1
|
||||
M-024 7
|
||||
M-025 1
|
||||
M-026 4
|
||||
M-027 1
|
||||
M-028 1
|
||||
M-029 1
|
||||
M-030 2
|
||||
M-031 1
|
||||
M-032 1
|
||||
M-033 3
|
||||
M-034 1
|
||||
M-035 1
|
||||
M-036 3
|
||||
M-037 2
|
||||
M-038 1
|
||||
M-039 4
|
||||
M-040 1
|
||||
M-041 1
|
||||
M-042 2
|
||||
M-043 2
|
||||
M-044 7
|
||||
M-045 3
|
||||
M-046 3
|
||||
M-047 1
|
||||
M-048 4
|
||||
M-049 1
|
||||
M-050 1
|
||||
M-051 1
|
||||
M-052 1
|
||||
M-053 6
|
||||
M-054 1
|
||||
M-055 1
|
||||
M-056 3
|
||||
M-057 1
|
||||
M-058 1
|
||||
M-059 2
|
||||
M-060 4
|
||||
M-061 2
|
||||
M-062 2
|
||||
M-063 2
|
||||
M-064 1
|
||||
M-065 2
|
||||
M-066 3
|
||||
M-067 4
|
||||
M-068 1
|
||||
M-069 1
|
||||
M-070 1
|
||||
M-071 2
|
||||
M-072 1
|
||||
M-073 2
|
||||
M-074 2
|
||||
M-075 1
|
||||
M-076 2
|
||||
M-077 2
|
||||
M-078 2
|
||||
M-079 2
|
||||
M-080 3
|
||||
M-081 1
|
||||
M-082 1
|
||||
M-083 16
|
||||
M-084 11
|
||||
M-085 1
|
||||
M-086 11
|
||||
M-087 4
|
||||
M-088 2
|
||||
M-089 1
|
||||
M-090 1
|
||||
M-091 1
|
||||
M-092 2
|
||||
M-093 2
|
||||
M-094 1
|
||||
M-095 1
|
||||
M-096 1
|
||||
M-097 2
|
||||
M-098 2
|
||||
M-099 1
|
||||
M-100 1
|
||||
M-101 3
|
||||
M-102 1
|
||||
M-103 1
|
||||
M-104 1
|
||||
M-105 2
|
||||
M-106 1
|
||||
M-107 2
|
||||
M-108 1
|
||||
M-109 1
|
||||
M-110 1
|
||||
M-111 1
|
||||
M-112 1
|
||||
M-113 1
|
||||
M-114 1
|
||||
M-115 4
|
||||
M-116 1
|
||||
M-117 1
|
||||
M-118 1
|
||||
M-119 1
|
||||
M-120 1
|
||||
M-121 1
|
||||
M-122 1
|
||||
M-123 1
|
||||
M-124 1
|
||||
M-125 1
|
||||
M-126 2
|
||||
M-127 2
|
||||
M-128 1
|
||||
M-129 1
|
||||
M-130 5
|
||||
M-131 1
|
||||
M-132 1
|
||||
M-133 3
|
||||
M-134 1
|
||||
M-135 1
|
||||
M-136 1
|
||||
M-137 1
|
||||
M-138 3
|
||||
M-139 3
|
||||
M-140 1
|
||||
M-141 1
|
||||
M-142 1
|
||||
M-143 1
|
||||
M-144 1
|
||||
M-145 1
|
||||
M-146 1
|
||||
M-147 3
|
||||
M-148 4
|
||||
M-149 2
|
||||
M-151 2
|
||||
+192
@@ -0,0 +1,192 @@
|
||||
## Abdeckungstabelle (je Modul des Inventars)
|
||||
|
||||
Einstufung: `tief` = mehrere Anforderungen inkl. gelesener Kernlogik der risikorelevanten Pfade; `mittel` = 2-3 Anforderungen auf Basis gelesener Kernmethoden; `flach` = 1-2 Anforderungen auf Basis von Methodensignaturen/ausgewählten Codeausschnitten; `nicht analysiert` = keine Anforderung (mit Begründung).
|
||||
|
||||
| Modul | Bezeichnung | Einstufung | Anzahl Anforderungen | Anforderungen |
|
||||
|---|---|---|---|---|
|
||||
| M-001 | Accounting (Bankkonten) | mittel | 2 | SwRS-019, SwRS-155 |
|
||||
| M-002 | Accounts (Konten-/Adressstamm) | mittel | 3 | SwRS-020, SyRS-020, StRS-001 |
|
||||
| M-003 | Administration: AccessTokens | mittel | 3 | SyRS-017, SwRS-021, StRS-013 |
|
||||
| M-004 | Administration: Applications | flach | 1 | SwRS-022 |
|
||||
| M-005 | Administration: ArtificialIntelligence | mittel | 3 | SyRS-019, SwRS-023, StRS-029 |
|
||||
| M-006 | Administration: BackgroundServices | mittel | 3 | SyRS-018, SwRS-024, StRS-031 |
|
||||
| M-007 | Administration: BookKeepingAccountSystems | flach | 1 | SwRS-025 |
|
||||
| M-008 | Administration: CentronConfigDb | flach | 1 | SwRS-026 |
|
||||
| M-009 | Administration: Company/CompanyInformations | mittel | 3 | SyRS-024, SwRS-027, StRS-033 |
|
||||
| M-010 | Administration: Connections | flach | 1 | SwRS-028 |
|
||||
| M-011 | Administration: Customization | mittel | 2 | SwRS-029, StRS-032 |
|
||||
| M-012 | Administration: DataSecurity | mittel | 3 | SyRS-022, SwRS-030, StRS-030 |
|
||||
| M-013 | Administration: Documents/FileManagement | mittel | 3 | SwRS-031, SyRS-026, StRS-020 |
|
||||
| M-014 | Administration: Employees | flach | 1 | SwRS-032 |
|
||||
| M-015 | Administration: Environments | flach | 1 | SwRS-033 |
|
||||
| M-016 | Administration: Licensing | tief | 3 | SyRS-003, SwRS-009, StRS-014 |
|
||||
| M-017 | Administration: Logins/Auth | tief | 9 | SyRS-003, SyRS-004, SyRS-005, SyRS-006, SyRS-007, SwRS-002, SwRS-003, SwRS-005, StRS-013 |
|
||||
| M-018 | Administration: Mandatory | mittel | 4 | SyRS-012, SwRS-012, SyRS-024, StRS-033 |
|
||||
| M-019 | Administration: Masterdata | flach | 1 | SwRS-034 |
|
||||
| M-020 | Administration: NetworkDiagnostics | flach | 1 | SwRS-035 |
|
||||
| M-021 | Administration: PerformanceTests/Profiling | flach | 1 | SwRS-036 |
|
||||
| M-022 | Administration: PhoneSettings | mittel | 2 | SwRS-037, SyRS-030 |
|
||||
| M-023 | Administration: Portal | flach | 1 | SwRS-038 |
|
||||
| M-024 | Administration: Rights | tief | 7 | SyRS-001, SyRS-002, SyRS-008, SwRS-001, SwRS-004, SwRS-008, StRS-012 |
|
||||
| M-025 | Administration: Scripts/SQLManagement | flach | 1 | SwRS-039 |
|
||||
| M-026 | Administration: Settings | mittel | 4 | SyRS-023, SwRS-040, SyRS-050, StRS-032 |
|
||||
| M-027 | Administration: Themes | flach | 1 | SwRS-041 |
|
||||
| M-028 | Administration: WebServiceConfiguration | flach | 1 | SwRS-042 |
|
||||
| M-029 | AppointmentRequests | flach | 1 | SwRS-043 |
|
||||
| M-030 | ArtificialIntelligence | mittel | 2 | SyRS-019, StRS-029 |
|
||||
| M-031 | BusinessPartner | flach | 1 | SwRS-044 |
|
||||
| M-032 | Buying | flach | 1 | SwRS-045 |
|
||||
| M-033 | Calendar | mittel | 3 | SwRS-046, SyRS-029, SwRS-157 |
|
||||
| M-034 | CentronIcons | flach | 1 | SwRS-047 |
|
||||
| M-035 | CentronNexus (BL) | flach | 1 | SwRS-048 |
|
||||
| M-036 | ChangeTracking | mittel | 3 | SyRS-009, SwRS-007, StRS-030 |
|
||||
| M-037 | Chats | mittel | 2 | SwRS-049, StRS-017 |
|
||||
| M-038 | CheckListArea | flach | 1 | SwRS-050 |
|
||||
| M-039 | Core (BL-Kern) | mittel | 4 | SyRS-009, SyRS-010, SwRS-006, SwRS-007 |
|
||||
| M-040 | CountryArea | flach | 1 | SwRS-051 |
|
||||
| M-041 | CPra | flach | 1 | SwRS-052 |
|
||||
| M-042 | CustomerArea | mittel | 2 | SwRS-059, StRS-023 |
|
||||
| M-043 | Customizations (CustomTables) | mittel | 2 | SwRS-053, StRS-032 |
|
||||
| M-044 | DataExchange | tief | 7 | SyRS-021, SwRS-057, SwRS-058, SyRS-043, StRS-009, StRS-010, StRS-021 |
|
||||
| M-045 | Devices | mittel | 3 | SwRS-054, SyRS-028, StRS-022 |
|
||||
| M-046 | DocuBoard | mittel | 3 | SwRS-055, SyRS-028, StRS-022 |
|
||||
| M-047 | DocumentationArea | flach | 1 | SwRS-056 |
|
||||
| M-048 | EDI | mittel | 4 | SyRS-027, SwRS-060, StRS-007, StRS-010 |
|
||||
| M-049 | EmployeeArea | flach | 1 | SwRS-061 |
|
||||
| M-050 | ExpectedEvents | flach | 1 | SwRS-062 |
|
||||
| M-051 | ExternalHelpdesk | flach | 1 | SwRS-063 |
|
||||
| M-052 | ExternalToolsBL | flach | 1 | SwRS-064 |
|
||||
| M-053 | Finances | tief | 6 | SyRS-032, SwRS-065, SwRS-066, SyRS-050, SwRS-155, StRS-009 |
|
||||
| M-054 | Gateway (BL) | flach | 1 | SwRS-067 |
|
||||
| M-055 | GUI (BL-Anteil) | flach | 1 | SwRS-134 |
|
||||
| M-056 | IndexSearch | mittel | 3 | SyRS-033, SwRS-068, StRS-027 |
|
||||
| M-057 | Integrations | flach | 1 | SwRS-069 |
|
||||
| M-058 | ItPlanner | flach | 1 | SwRS-070 |
|
||||
| M-059 | Logistics | mittel | 2 | SwRS-071, StRS-008 |
|
||||
| M-060 | Mail | mittel | 4 | SyRS-035, SwRS-072, SwRS-157, StRS-017 |
|
||||
| M-061 | MailScanner | mittel | 2 | SyRS-036, SwRS-073 |
|
||||
| M-062 | Mailings | mittel | 2 | SwRS-074, StRS-026 |
|
||||
| M-063 | MassUpdate | mittel | 2 | SyRS-034, SwRS-075 |
|
||||
| M-064 | Mobile | flach | 1 | SwRS-076 |
|
||||
| M-065 | Modules | mittel | 2 | SwRS-077, StRS-014 |
|
||||
| M-066 | MyCentron | mittel | 3 | SyRS-029, SwRS-078, StRS-018 |
|
||||
| M-067 | MyDay | mittel | 4 | SyRS-029, SwRS-079, SwRS-158, StRS-018 |
|
||||
| M-068 | NexusNotifications | flach | 1 | SwRS-080 |
|
||||
| M-069 | NexusTicketViews | flach | 1 | SwRS-081 |
|
||||
| M-070 | Notifications | flach | 1 | SwRS-082 |
|
||||
| M-071 | ObjectExternalReferences | mittel | 2 | SwRS-083, StRS-021 |
|
||||
| M-072 | Outlook | flach | 1 | SwRS-084 |
|
||||
| M-073 | PasswordManagementArea | mittel | 2 | SwRS-085, StRS-028 |
|
||||
| M-074 | PasswordManager | mittel | 2 | SwRS-086, StRS-028 |
|
||||
| M-075 | Processes | flach | 1 | SwRS-087 |
|
||||
| M-076 | ProductMatrix | mittel | 2 | SwRS-088, StRS-025 |
|
||||
| M-077 | Production | mittel | 2 | SwRS-089, StRS-024 |
|
||||
| M-078 | Projects | mittel | 2 | SwRS-090, StRS-025 |
|
||||
| M-079 | Purchasing | mittel | 2 | SwRS-091, StRS-007 |
|
||||
| M-080 | ReportEngine | mittel | 3 | SyRS-025, SyRS-043, StRS-015 |
|
||||
| M-081 | Reporting | flach | 1 | SyRS-025 |
|
||||
| M-082 | RiverDivo | flach | 1 | SwRS-101 |
|
||||
| M-083 | Sales: Receipts (Belegwesen) | tief | 16 | SyRS-011, SyRS-012, SyRS-013, SyRS-014, SyRS-015, SyRS-016, SwRS-010, SwRS-013, SwRS-014, SwRS-015, SwRS-016, SwRS-017, SwRS-018, SwRS-154, StRS-002, StRS-003 |
|
||||
| M-084 | Sales: CustomerAssets (Verträge) | tief | 11 | SyRS-028, SyRS-037, SyRS-038, SyRS-039, SwRS-092, SwRS-093, SwRS-094, SwRS-095, StRS-004, StRS-006, StRS-022 |
|
||||
| M-085 | Sales: Customers (CRM) | flach | 1 | SwRS-102 |
|
||||
| M-086 | Sales: Support (Helpdesk) | tief | 11 | SyRS-039, SyRS-040, SyRS-041, SwRS-095, SwRS-096, SwRS-097, SwRS-098, SwRS-099, SwRS-156, StRS-005, StRS-006 |
|
||||
| M-087 | Sales: CashBooks | tief | 4 | SyRS-042, SwRS-100, StRS-003, StRS-009 |
|
||||
| M-088 | Sales: Marketing | mittel | 2 | SwRS-103, StRS-026 |
|
||||
| M-089 | Sales: Calendar | flach | 1 | SwRS-104 |
|
||||
| M-090 | Sales: DocumentationWizardArea | flach | 1 | SwRS-105 |
|
||||
| M-091 | Sales: HourlySurchargeRatesBL | flach | 1 | SwRS-106 |
|
||||
| M-092 | Security (PdfSigning) | mittel | 2 | SwRS-107, StRS-020 |
|
||||
| M-093 | SelfCare | mittel | 2 | SwRS-108, StRS-019 |
|
||||
| M-094 | Services | flach | 1 | SwRS-109 |
|
||||
| M-095 | SocialMedia | flach | 1 | SwRS-110 |
|
||||
| M-096 | Start | flach | 1 | SwRS-111 |
|
||||
| M-097 | Statistics | mittel | 2 | SwRS-135, StRS-016 |
|
||||
| M-098 | Storage | mittel | 2 | SwRS-112, StRS-008 |
|
||||
| M-099 | SystemArea | flach | 1 | SwRS-113 |
|
||||
| M-100 | Tags | flach | 1 | SwRS-114 |
|
||||
| M-101 | Tapi | mittel | 3 | SyRS-030, SwRS-115, StRS-017 |
|
||||
| M-102 | TaskManager | flach | 1 | SwRS-116 |
|
||||
| M-103 | Telemetry | flach | 1 | SwRS-117 |
|
||||
| M-104 | TextModuleArea | flach | 1 | SwRS-118 |
|
||||
| M-105 | TicketProjects | mittel | 2 | SwRS-119, StRS-025 |
|
||||
| M-106 | Time | flach | 1 | SwRS-120 |
|
||||
| M-107 | ToDoArea | mittel | 2 | SyRS-029, SwRS-121 |
|
||||
| M-108 | Tools | flach | 1 | SwRS-122 |
|
||||
| M-109 | TradePool | flach | 1 | SwRS-123 |
|
||||
| M-110 | Transactions | flach | 1 | SwRS-124 |
|
||||
| M-111 | TwoFactorAuthenticator | flach | 1 | SwRS-011 |
|
||||
| M-112 | Urls | flach | 1 | SwRS-125 |
|
||||
| M-113 | VideoPortal | flach | 1 | SwRS-126 |
|
||||
| M-114 | VoucherManagement | flach | 1 | SwRS-127 |
|
||||
| M-115 | Warehousing | mittel | 4 | SyRS-013, SwRS-014, SwRS-128, StRS-008 |
|
||||
| M-116 | WebLinks | flach | 1 | SwRS-129 |
|
||||
| M-117 | WebServices (BL) | flach | 1 | SwRS-136 |
|
||||
| M-118 | WebSuite | flach | 1 | SwRS-130 |
|
||||
| M-119 | WebVersion | flach | 1 | SwRS-131 |
|
||||
| M-120 | Helpers (BL) | flach | 1 | SwRS-132 |
|
||||
| M-121 | Exceptions (BL) | flach | 1 | SwRS-133 |
|
||||
| M-122 | Centron.DAO (Persistenz) | flach | 1 | SwRS-137 |
|
||||
| M-123 | Centron.Entities | flach | 1 | SwRS-138 |
|
||||
| M-124 | Centron.Common | flach | 1 | SwRS-139 |
|
||||
| M-125 | Centron.Interfaces | flach | 1 | SwRS-140 |
|
||||
| M-126 | Centron.Gateway | mittel | 2 | SyRS-043, SwRS-141 |
|
||||
| M-127 | Centron.WPF.UI (+ Extension) | mittel | 2 | SyRS-031, SwRS-142 |
|
||||
| M-128 | Centron.Controls (+ Preview) | flach | 1 | SwRS-143 |
|
||||
| M-129 | Centron.Core (shared) | flach | 1 | SwRS-144 |
|
||||
| M-130 | CentronNexus (Blazor-Web) | mittel | 5 | SyRS-031, SyRS-045, SwRS-145, SwRS-156, StRS-019 |
|
||||
| M-131 | CentronNexus.Host | flach | 1 | SwRS-145 |
|
||||
| M-132 | CentronNexus.OutlookAddIn | flach | 1 | SwRS-145 |
|
||||
| M-133 | Centron.Controllers (REST-API) | mittel | 3 | SyRS-031, SyRS-046, SwRS-147 |
|
||||
| M-134 | Centron.WebServices.Core | flach | 1 | SwRS-146 |
|
||||
| M-135 | Centron.Host (+ Console/WindowsService) | flach | 1 | SwRS-146 |
|
||||
| M-136 | ConnectionManager | flach | 1 | SwRS-146 |
|
||||
| M-137 | Centron.Api.EbInterface | flach | 1 | SyRS-043 |
|
||||
| M-138 | Centron.Api.Gls | mittel | 3 | SyRS-044, SwRS-151, StRS-011 |
|
||||
| M-139 | Centron.Api.Shipcloud | mittel | 3 | SyRS-044, SwRS-151, StRS-011 |
|
||||
| M-140 | Centron.APIs.CopDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-141 | Centron.APIs.EgisDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-142 | Centron.APIs.FinAPI | flach | 1 | SwRS-149 |
|
||||
| M-143 | Centron.APIs.IcecatDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-144 | Centron.APIs.ITscopeDataAccess | flach | 1 | SwRS-148 |
|
||||
| M-145 | Centron.Api.docuFORM | flach | 1 | SwRS-150 |
|
||||
| M-146 | Datenbankschema | flach | 1 | SwRS-152 |
|
||||
| M-147 | Deployment/Installer | mittel | 3 | SyRS-048, SwRS-153, StRS-031 |
|
||||
| M-148 | Docker/Betrieb | mittel | 4 | SyRS-047, SyRS-049, SwRS-153, StRS-031 |
|
||||
| M-149 | Scripts | mittel | 2 | SyRS-048, SwRS-153 |
|
||||
| M-150 | Dokumentation | nicht analysiert | 0 | – (reine Entwickler-/Betriebsdokumentation ohne eigene Systemfunktion; als KONTEXT-Belegquelle genutzt, z. B. für SyRS-043, SwRS-157) |
|
||||
| M-151 | Tests | mittel | 2 | SyRS-049, StRS-031 |
|
||||
|
||||
**Summen:** tief: 9 Module, mittel: 58, flach: 83, nicht analysiert: 1 (gesamt 151 Module).
|
||||
|
||||
## Konsistenzcheck
|
||||
|
||||
Automatisiert über alle drei Spezifikationsdateien ausgeführt (241 Anforderungsblöcke):
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---|---|
|
||||
| Doppelte oder mehrfach vergebene IDs | keine (241 eindeutige IDs: 33 StRS, 50 SyRS, 158 SwRS) |
|
||||
| Anforderungen ohne Beleg | keine (jeder Block enthält mind. einen klassifizierten Beleg) |
|
||||
| Anforderungen ohne Übernahmewürdigkeit | keine |
|
||||
| Anforderungen ohne Prüfidee | keine |
|
||||
| Tracelinks auf nicht existierende IDs | keine |
|
||||
| SwRS ohne SyRS-Referenz / SyRS ohne StRS-Referenz | keine (siehe Traceability.md) |
|
||||
| Abgleich Hypothesen.md ↔ Inline-Markierungen | deckungsgleich: SyRS-050, SwRS-154, SwRS-155, SwRS-156, SwRS-157, SwRS-158 (6 Stück) |
|
||||
| Inhaltlich deckungsgleiche Anforderungen ohne Konsolidierungsvermerk | keine gefundenen; erkannte fachliche Doppelimplementierungen sind als Konsolidierungskandidaten markiert (siehe Liste unten) |
|
||||
|
||||
**Wesentliche Konsolidierungskandidaten (fachlich gleiche Konzepte in getrennten Implementierungen):**
|
||||
|
||||
1. Gerätedatenhaltungen: AccountDevices (M-045) vs. CustomerAssets/„Stammblätter" (M-084) vs. DocuBoard-Assetmanagement (M-046) → ein Asset-Konzept (SyRS-028, StRS-022).
|
||||
2. Zwei Belegmodelle: Sales/Receipts (neu) vs. Sales/CustomerAssets (alt) für dieselben Belegarten (SyRS-011).
|
||||
3. Zwei Rechtemodelle: interne Rechte (Sichtrus/Sichmemb) vs. WebAccountsRights (SyRS-001/SyRS-002).
|
||||
4. Drei 2FA-Wege: RADIUS, E-Mail-Link, TOTP (SyRS-005, SwRS-011).
|
||||
5. Zwei Passwortverwaltungen: PasswordManagementArea vs. PasswordManager (SwRS-085/SwRS-086).
|
||||
6. Zwei Workflow-/Prozess-Engines: Processes vs. Services/Workflows (SwRS-087/SwRS-109); zusätzlich MailScanner-Workflows (SyRS-036).
|
||||
7. Zwei Customizing-Mechanismen: Custom Properties vs. Custom Tables (SwRS-029/SwRS-053).
|
||||
8. Drei Projektbegriffe: Projects, CrmProjects, TicketProjects (SwRS-090/SwRS-119, StRS-025).
|
||||
9. Zwei Aufgabenkonzepte: ToDoArea vs. TaskManager (SwRS-116/SwRS-121).
|
||||
10. Zwei Benachrichtigungssysteme: Notifications vs. NexusNotifications (SwRS-080/SwRS-082).
|
||||
11. EDI-Logik doppelt: Centron.BL/EDI vs. Centron.Gateway/EDI_* (SyRS-027/SwRS-141).
|
||||
12. Bankverbindungen doppelt: Felder in Tabelle Kunden vs. BankAccount-Objekte (SwRS-152/SwRS-019).
|
||||
13. Zwei Endkunden-Formularwege: SelfCare vs. Nexus-Kundenportal-Formulare (SwRS-108/SyRS-045).
|
||||
14. Versandwege GLS-direkt vs. Shipcloud (SyRS-044).
|
||||
15. Desktop-Client (WPF) vs. Nexus-Web-UI für dieselben Prozesse (SyRS-031, SwRS-142/SwRS-145).
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
## Risikorelevante Anforderungen (Sicherheit, Abrechnung/Fakturierung, Berechtigungen)
|
||||
|
||||
75 Anforderungen sind risikorelevant. Belegsituation:
|
||||
|
||||
| ID | Titel | PRIMÄR-Beleg vorhanden | Status |
|
||||
|---|---|---|---|
|
||||
| SyRS-001 | Gruppenbasierte Benutzerrechtepruefung | ja | belegt |
|
||||
| SyRS-002 | Getrenntes Rechtemodell fuer Web-Accounts | ja | belegt |
|
||||
| SyRS-003 | Ticketbasierte Sitzungen mit Lizenzpruefung | ja | belegt |
|
||||
| SyRS-004 | Mehrere Authentifizierungsverfahren | ja | belegt |
|
||||
| SyRS-005 | Zwei-Faktor-Authentifizierung | ja | belegt |
|
||||
| SyRS-006 | Zeitgesteuerte Kontodeaktivierung | ja | belegt |
|
||||
| SyRS-007 | Anwendungsbezogene Anmelderechte | ja | belegt |
|
||||
| SyRS-008 | Standard-Rechtegruppen | ja | belegt |
|
||||
| SwRS-001 | Rechteermittlung SQL+Cache | ja | belegt |
|
||||
| SwRS-002 | Passwort SHA1 ungesalzen | ja | belegt |
|
||||
| SwRS-003 | 2FA-Validatorwahl | ja | belegt |
|
||||
| SwRS-004 | Rechtegruppenverwaltung | ja | belegt |
|
||||
| SwRS-005 | Ticket-Wiederverwendung+LoginIP | ja | belegt |
|
||||
| SwRS-008 | Standardrechtegruppen aus Ressource | ja | belegt |
|
||||
| SwRS-009 | Signaturvalidierte Lizenzdatei | ja | belegt |
|
||||
| SyRS-011 | Belegkette Weiterfuehrungswege | ja | belegt |
|
||||
| SyRS-012 | Nummernkreise je Mandant/Filiale | ja | belegt |
|
||||
| SyRS-013 | Bestandswirkung der Belege | ja | belegt |
|
||||
| SyRS-014 | Mindestpreisschutz | ja | belegt |
|
||||
| SwRS-010 | Belegnummernvergabe+Templatekunde | ja | belegt |
|
||||
| SwRS-011 | TOTP-Zweitfaktor | ja | belegt |
|
||||
| SwRS-012 | Nummernkreis-Kaskade | ja | belegt |
|
||||
| SwRS-014 | Negativbuchung nur mit Recht | ja | belegt |
|
||||
| SwRS-015 | Mindestpreis-Reauth | ja | belegt |
|
||||
| SyRS-017 | API-Zugriffstokens | ja | belegt |
|
||||
| SwRS-019 | Bankverbindungen Rechte+Default | ja | belegt |
|
||||
| SwRS-020 | Kontenstamm Rechte+FiBu-Nummer | ja | belegt |
|
||||
| SwRS-021 | API-Token Hash+Ablauf+Log | ja | belegt |
|
||||
| SwRS-026 | Konfig-DB Masterkey | ja | belegt |
|
||||
| SyRS-022 | DSGVO Loeschkonzept | ja | belegt |
|
||||
| SwRS-027 | Kollisionssichere Nummernvergabe | ja | belegt |
|
||||
| SwRS-030 | DSGVO-Kontaktloeschung | ja | belegt |
|
||||
| SyRS-021 | FiBu-Uebergabe DATEV | ja | belegt |
|
||||
| SwRS-057 | FiBu-Exportkonfigurationen | ja | belegt |
|
||||
| SwRS-058 | Doppeluebergabeschutz FiBu | ja | belegt |
|
||||
| SyRS-032 | Onlinebanking-Zahlungsabgleich | ja | belegt |
|
||||
| SwRS-065 | Zahlungseingangsprotokoll | ja | belegt |
|
||||
| SwRS-066 | Bankumsatz-Zuordnung/Buchung | ja | belegt |
|
||||
| SwRS-085 | Kundenzugangsdaten+Logs | ja | belegt |
|
||||
| SwRS-086 | Passwortmanager Siegel | ja | belegt |
|
||||
| SyRS-037 | Vertragsverwaltung Laufzeit/Intervalle | ja | belegt |
|
||||
| SyRS-038 | Automatische Vertragsfakturierung | ja | belegt |
|
||||
| SyRS-039 | Timer-Billing | ja | belegt |
|
||||
| SyRS-040 | Helpdesk Rechte+Status | ja | belegt |
|
||||
| SyRS-042 | Kassenbuch | ja | belegt |
|
||||
| SwRS-092 | Vertrags-Datumsarithmetik | ja | belegt |
|
||||
| SwRS-093 | Auto-Vertragsschliessen | ja | belegt |
|
||||
| SwRS-094 | Abrechnungsfaellige Kunden+Zaehler | ja | belegt |
|
||||
| SwRS-095 | Timer-Belegerzeugung | ja | belegt |
|
||||
| SwRS-096 | Ticket-Rechtepruefung Save | ja | belegt |
|
||||
| SwRS-097 | Ticket-Sichtbarkeit restriktiv | ja | belegt |
|
||||
| SwRS-100 | Kassenbuchbuchung | ja | belegt |
|
||||
| SwRS-101 | Riverbird-Ticketvalidierung | ja | belegt |
|
||||
| SwRS-106 | Stundenzuschlagssaetze | ja | belegt |
|
||||
| SwRS-107 | PDF-Signatur | ja | belegt |
|
||||
| SwRS-112 | Inventur | ja | belegt |
|
||||
| SwRS-127 | Gutscheinverwaltung | ja | belegt |
|
||||
| SyRS-043 | E-Rechnungsformate | ja | belegt |
|
||||
| SyRS-046 | REST-API Rechteautorisierung | ja | belegt |
|
||||
| SwRS-144 | Core-Bibliothek TOTP | ja | belegt |
|
||||
| SwRS-147 | Versionierte Controller | ja | belegt |
|
||||
| SwRS-149 | finAPI-Client | ja | belegt |
|
||||
| SyRS-050 | [HYPOTHESE] Mahnwesen | nein | HYPOTHESE |
|
||||
| SwRS-154 | [HYPOTHESE] Anzahlungsverrechnung | ja | HYPOTHESE |
|
||||
| SwRS-155 | [HYPOTHESE] SEPA-Lastschrift | ja | HYPOTHESE |
|
||||
| StRS-003 | Geschuetzte Fakturierung | ja | belegt |
|
||||
| StRS-004 | Vertragsgeschaeft | ja | belegt |
|
||||
| StRS-006 | Leistungserfassung | ja | belegt |
|
||||
| StRS-009 | Finanzprozesse | ja | belegt |
|
||||
| StRS-010 | E-Belegaustausch | ja | belegt |
|
||||
| StRS-012 | Berechtigungssteuerung | ja | belegt |
|
||||
| StRS-013 | Sichere Anmeldung/API | ja | belegt |
|
||||
| StRS-014 | Lizenz-/Modulsteuerung | ja | belegt |
|
||||
| StRS-028 | Kundenzugangsdaten | ja | belegt |
|
||||
| StRS-030 | DSGVO+Audit | ja | belegt |
|
||||
|
||||
**Regelprüfung:** Alle risikorelevanten Anforderungen besitzen entweder einen PRIMÄR-Beleg mit benannter durchsetzender Stelle oder sind als `[HYPOTHESE]` gekennzeichnet (betrifft SyRS-050 Mahnwesen). Kein Verstoß gegen die risikobasierte Priorisierung.
|
||||
+64
-70
@@ -1,67 +1,39 @@
|
||||
# Messprotokoll – Versuch 01 (V1 Baseline, Prompt-only) – Iteration 02
|
||||
# Messprotokoll – Versuch 01 (V1b Baseline mit werkzeugeigenen Agenten) – Prompt-Version 02
|
||||
|
||||
> ## ⚠ FEHLMESSUNG – nicht für Auswertungen verwenden
|
||||
>
|
||||
> Der Lauf meldet `is_error: false` und `subtype: success`, hat aber **null Ergebnisdateien** erzeugt. Der Headless-Modus brach nach 600 Sekunden ab, während zehn Hintergrund-Subagenten noch arbeiteten. Verbraucht wurden dabei **193.399.648 Tokens**. Der Lauf ist für jede inhaltliche Auswertung unbrauchbar; sein Verbrauch ist real und wird ausgewiesen.
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Iteration:** 02 – vom User ausdrücklich benannt; entspricht zugleich der Regel „höchste
|
||||
vorhandene Iterationsnummer". Wiederholungslauf zur Varianzbestimmung in derselben Zelle.
|
||||
- **Prompt-Version:** 02
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-26T16:00:49.2361402+02:00
|
||||
- **Endzeit:** 2026-08-26T16:21:48.6873493+02:00
|
||||
- **Dauer gesamt:** 0:20:59 (`duration_ms` 0:10:57; API: 3:49:48)
|
||||
— **im Parallelbetrieb erhoben, nicht für Laufzeitvergleiche verwendbar**
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP` (24.662 versionierte Dateien)
|
||||
- **Codebasis-Commit:** `7df384f6d2e7249dc914a74e299fe7fa71ece748` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja (Prüfmuster ohne Treffer);
|
||||
die Codebasis ist seit Commit `f045b99a` kein eigenes Repository mehr, sondern Teil des
|
||||
Arbeitsrepos – der Vorher/Nachher-Vergleich läuft deshalb pfadskopiert
|
||||
- **Snapshot-Zusatzartefakte:** keine – der Snapshot entspricht dem Commit-Stand
|
||||
- **Prompt-Repo-Commit:** `7df384f6d2e7249dc914a74e299fe7fa71ece748`
|
||||
- **Startzeit:** 2026-08-26T16:00:44.0+02:00
|
||||
- **Endzeit:** 2026-08-26T16:21:43.0+02:00
|
||||
- **Dauer gesamt:** 00:20:59 — im Parallelbetrieb erhoben, nicht für Laufzeitvergleiche verwendbar
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
- **Codebasis-Commit:** `f349d189c735a87f5829bc93f67991320061a2c0` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja; enthält `SSMS_DB_SCHEMA.sql`
|
||||
(SHA-256 `ED7F21250E868577572B4CADA53C132F7433C74270BF9B59E817CCEC6B1FA8DB`)
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 4.5.0
|
||||
- **Skill-Version:** 4.5.0 (Laufzeit); Gültigkeitsprüfung nachträglich mit 6.1.0 eingeführt
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **CLI-Pfad:** `C:\Users\ChristophSchwoerer\.vscode\extensions\anthropic.claude-code-2.1.246-win32-x64\resources\native-binary\claude.exe`
|
||||
- **Modell (angefordert):** `claude-opus-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-opus-5` 193.392.662 Tokens (100.00 %), `claude-haiku-4-5-20251001` 6.986 Tokens (0.00 %)
|
||||
- **Kontrolle Modell:** bestanden – ausschließlich das angeforderte Modell plus Haiku als zulässiger interner Hilfsaufruf
|
||||
- **Effort:** `high` (per `--effort high` gesetzt)
|
||||
- **Laufverzeichnis-ID:** `v4.5.0-116d`
|
||||
- **Ablage:** `Iteration 3/claude-opus-5/builtin/high/`
|
||||
- **Parallele Läufe:** **ja** – zeitgleich liefen:
|
||||
- `Iteration 3/claude-opus-5/builtin/high/02_Lauf_2026-08-26_160037_v4.5.0-9d9e`
|
||||
|
||||
Die Zeitangaben dieses Laufs sind daher **nicht** für Laufzeitvergleiche zu verwenden. Tokenverbrauch, Anforderungszahl, Belegkennzahlen und Denials bleiben unverzerrt.
|
||||
- **Kontrolle Modell:** bestanden – ausschließlich `claude-opus-5` plus Haiku-Hilfsaufrufe
|
||||
- **Effort:** `high`
|
||||
- **Agentenmodus:** `builtin` (V1b)
|
||||
- **Kontextfenster:** 1.000.000 Tokens; `maxOutputTokens` 64.000
|
||||
- **Sampling-Parameter:** nicht steuerbar über die CLI, nicht erfasst
|
||||
- **Nur bei lokalem Modellbetrieb:** entfällt (Cloud-Inferenz, `provider: firstParty`)
|
||||
- **Permission-Mode:** `acceptEdits`
|
||||
- **Toolfreigabe:** `--allowedTools "Bash" "PowerShell"` /
|
||||
`--disallowedTools` 33er-Denylist (schreibende und bauende Kommandos). Der Modus `builtin` fügt keine weiteren Sperren hinzu – die werkzeugeigenen Subagenten sind zugelassen.
|
||||
- **Toolfreigabe:** `--allowedTools "Bash" "PowerShell"` / 33er-Denylist
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **MCP-Server / Agentendateien:** keine – aus dem Snapshot entfernt, zusätzlich `--safe-mode`
|
||||
- **Subagenten:** 20 gestartet (10 × `Explore`, 10 × `general-purpose`), 10 abgeschlossen, 0 fehlgeschlagen; 20 im Hintergrund gestartet
|
||||
- **Verschachtelung:** `spawned` = 20, davon `spawned_by_subagents` = 10, `max_depth` = 2. Bei `max_depth` > 1 sind die Tokens der tieferen Ebenen in „Tokens gesamt" enthalten, ihre Prompts jedoch **nicht** in `_meta\subagenten.md`.
|
||||
- **Verbrauchsanteil der Subagenten:** `usage` (nur Hauptagent) 2.124.147 Tokens gegenüber `modelUsage` 193.399.648 Tokens – auf die Subagenten entfallen 191.275.501 Tokens (98.9 %).
|
||||
|
||||
## Validierungsstichprobe
|
||||
- **Größe:** noch nicht festgelegt
|
||||
- **Ziehungsverfahren:** noch nicht festgelegt
|
||||
- **Validatoren:** noch nicht festgelegt
|
||||
- **Stand:** noch nicht gezogen
|
||||
- **Parallele Läufe:** ja – der jeweils andere Lauf dieser Zelle
|
||||
- **Subagenten:** 20 gestartet (10 × `Explore`, 10 × `general-purpose`), 10 abgeschlossen, 0 fehlgeschlagen
|
||||
- **Verschachtelung:** `spawned` = 20, davon `spawned_by_subagents` = 10,
|
||||
`max_depth` = 2, am Nebenläufigkeitslimit abgewiesen: 5
|
||||
|
||||
## Verbrauch
|
||||
|
||||
### Hauptagent (`usage`)
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Input-Tokens | 44 |
|
||||
| Output-Tokens | 65.246 (davon 9.113 Thinking-Tokens) |
|
||||
| Cache-Write-Tokens | 123.977 |
|
||||
| Cache-Read-Tokens | 1.934.880 |
|
||||
| Agent-Turns | 44 |
|
||||
|
||||
### Gesamtlauf inkl. Subagenten (`modelUsage`, abrechnungsrelevant)
|
||||
| Messgröße | `claude-opus-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 2.604 | 6.960 | 9.564 |
|
||||
@@ -70,34 +42,56 @@
|
||||
| Cache-Read-Tokens | 187.592.610 | 0 | 187.592.610 |
|
||||
| **Tokens gesamt** | **193.392.662** | **6.986** | **193.399.648** |
|
||||
|
||||
**Tokens gesamt: 193.399.648** — Input + Output + Cache-Write + Cache-Read über alle Modelle.
|
||||
Das ist die **berichtete Aufwandsgröße** der Versuchsreihe. `total_cost_usd` bleibt unberührt in
|
||||
`RawResult.json` erhalten, wird aber nicht ins Protokoll übernommen: Token sind modell- und
|
||||
preisunabhängig und bleiben damit über Preisänderungen und Modellwechsel hinweg vergleichbar.
|
||||
|
||||
`usage` erfasst **nur den Hauptagenten**. Der Unterschied zu `modelUsage` ist der Verbrauch
|
||||
der Subagenten – siehe Feld „Verbrauchsanteil der Subagenten" oben. Für den
|
||||
abrechnungsrelevanten Gesamtverbrauch gilt ausschließlich `modelUsage`.
|
||||
**Tokens gesamt: 193.399.648** — Input + Output + Cache-Write + Cache-Read über alle Modelle.
|
||||
Der Verbrauch ist **real angefallen** und wird deshalb ausgewiesen, obwohl der Lauf ungültig ist.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
Keine Anforderungen im vorgegebenen Format gefunden.
|
||||
Keine. Der Lauf hat **null** verwertbare Ergebnisdatei(en) erzeugt; eine Auswertung mit
|
||||
`analyse-anforderungen.py` ist gegenstandslos.
|
||||
|
||||
## Ergebnis
|
||||
- **Status:** erfolgreich (`is_error` = false, `subtype` = `success`, `stop_reason` = `end_turn`, `terminal_reason` = `completed`)
|
||||
- **Gültigkeit:** **Fehlmessung** – Ergebnisverzeichnis leer, Abbruch durch Hintergrund-Zeitlimit
|
||||
- **Status:** `is_error` = false, `subtype` = `success`, `stop_reason` = `end_turn`,
|
||||
`terminal_reason` = `completed`
|
||||
- **Session-ID:** `ac82faba-7709-4a7c-9881-dcf0cd4faa1c`
|
||||
- **Permission-Denials:** 1 (1 × `Bash`) – **keines auf `Task`/`Agent`/`Workflow`**. Der Agent hat zu keinem Zeitpunkt zu delegieren versucht; die Modus-Sperre wurde nie ausgelöst.
|
||||
- **Kontrolle Agentenmodus:** `subagent_stats.spawned` = 20 – Bedingung `solo` **VERLETZT – Fehlmessung**
|
||||
- **Subagenten-Prompts:** `_meta\subagenten.md` erzeugt
|
||||
- **Erzeugte Dateien:** 0 Dateien in `Ergebnisse\`:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
|
||||
|
||||
- **Root unverändert:** ja (zeilenendennormalisiert verglichen).
|
||||
- **Abschlusstext des Agenten:** siehe `RawResult.json` (`result`)
|
||||
- **Permission-Denials:** 1
|
||||
- **Erzeugte Dateien:** **keine**
|
||||
- **Root unverändert:** ja
|
||||
- **Abschlusstext des Agenten:** „Die Erhebung läuft. … 10 von 12 Agenten arbeiten parallel." – der Agent berichtet einen Zwischenstand, keinen Abschluss.
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
<!-- ANMERKUNGEN -->
|
||||
**1. Stiller Fehlschlag – `is_error` erkennt ihn nicht.** `RawResult.json` meldet
|
||||
`is_error: false`, `subtype: success`, `stop_reason: end_turn`, `terminal_reason: completed`.
|
||||
Der einzige maschinelle Hinweis steht in `Stderr.log`:
|
||||
|
||||
```
|
||||
Background tasks still running after 600s; terminating.
|
||||
Set CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0 to wait indefinitely.
|
||||
```
|
||||
|
||||
Ohne den Blick in `Ergebnisse\` wäre der Lauf als gültiger Messpunkt mit „0 Anforderungen" in
|
||||
den Modellvergleich eingegangen. Daraufhin wurde in Skill 6.1.0 die Pflichtprüfung ergänzt:
|
||||
leeres Ergebnisverzeichnis oder Abbruchmeldung in `Stderr.log` bedeutet Fehlmessung,
|
||||
unabhängig von `is_error`.
|
||||
|
||||
**2. Ursache ist eine Wechselwirkung, keine Modelleigenschaft.** Der Hauptagent startete zehn
|
||||
Subagenten im Hintergrund und beendete seinen eigenen Turn nach 44 Turns. Die Subagenten liefen
|
||||
weiter, der Headless-Modus wartete 600 s und schnitt sie ab. Die drei Sonnet-`builtin`-Läufe
|
||||
derselben Iteration starteten ihre Subagenten **ebenfalls durchgängig im Hintergrund**
|
||||
(6/6, 8/8, 31/31) und lieferten dennoch alle sieben Dateien mit leerem `Stderr` – ihre
|
||||
Subagenten waren vor Ablauf der Frist fertig. Der Unterschied liegt im Zuschnitt: Opus erteilte
|
||||
Aufträge von rund 7.700 Zeichen (Sonnet: 1.428–3.656) an zehn Agenten und wollte zwölf.
|
||||
|
||||
**3. Vorbeugung ab Skill 6.1.0:** `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0` im
|
||||
Ausführungsabschnitt. Das ändert die Versuchsbedingung für künftige `builtin`-Läufe und ist
|
||||
dort zu vermerken; die bisherigen Läufe liefen unter dem 600-Sekunden-Limit, haben es aber
|
||||
nie erreicht.
|
||||
|
||||
**4. Nebenbefund aus dem Abschlusstext:** Der Agent stellt fest, die Codebasis enthalte „keine
|
||||
`.git`-Historie und keine SQL-Migrationsskripte". Das trifft zu und gilt für **alle** Läufe:
|
||||
Seit die Codebasis als Dateien ins Arbeitsrepo übernommen wurde, ist die Entwicklungshistorie
|
||||
der ERP-Suite nicht erreichbar. Der Prompt fordert sie in Schritt 2 ausdrücklich als
|
||||
Artefaktquelle – diese Belegquelle steht der gesamten Versuchsreihe nicht zur Verfügung.
|
||||
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
# Messprotokoll – Versuch 01 (V1b Baseline mit werkzeugeigenen Agenten) – Prompt-Version 02
|
||||
|
||||
> ## ⚠ FEHLMESSUNG – nicht für Auswertungen verwenden
|
||||
>
|
||||
> Der Lauf brach mit `is_error: true` und HTTP 429 ab: „You've hit your session limit". Erzeugt wurde eine einzige Datei (`Glossar.md`) von sieben geforderten. Verbraucht wurden **392.882.986 Tokens** – der mit Abstand höchste Wert der gesamten Versuchsreihe. Zusätzlich ist die **Modellbedingung verletzt**.
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Prompt-Version:** 02
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-26T16:00:46.8+02:00
|
||||
- **Endzeit:** 2026-08-26T16:35:37.0+02:00
|
||||
- **Dauer gesamt:** 00:34:50 — im Parallelbetrieb erhoben, nicht für Laufzeitvergleiche verwendbar
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
- **Codebasis-Commit:** `f349d189c735a87f5829bc93f67991320061a2c0` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja; enthält `SSMS_DB_SCHEMA.sql`
|
||||
(SHA-256 `ED7F21250E868577572B4CADA53C132F7433C74270BF9B59E817CCEC6B1FA8DB`)
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 4.5.0 (Laufzeit); Gültigkeitsprüfung nachträglich mit 6.1.0 eingeführt
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **Modell (angefordert):** `claude-opus-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-opus-5` 374.348.393 Tokens (95.28 %), `claude-sonnet-5` 18.527.609 Tokens (4.72 %), `claude-haiku-4-5-20251001` 6.984 Tokens (0.00 %)
|
||||
- **Kontrolle Modell:** **verletzt** – nicht angefordertes Modell `claude-sonnet-5` mit 18.527.609 Tokens (4.72 %)
|
||||
- **Effort:** `high`
|
||||
- **Agentenmodus:** `builtin` (V1b)
|
||||
- **Permission-Mode:** `acceptEdits`
|
||||
- **Toolfreigabe:** `--allowedTools "Bash" "PowerShell"` / 33er-Denylist
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **Parallele Läufe:** ja – der jeweils andere Lauf dieser Zelle
|
||||
- **Subagenten:** 34 gestartet (24 × `Explore`, 10 × `general-purpose`), 32 abgeschlossen, **1 fehlgeschlagen**
|
||||
- **Verschachtelung:** `spawned` = 34, davon `spawned_by_subagents` = 24,
|
||||
`max_depth` = 2, am Nebenläufigkeitslimit abgewiesen: 22
|
||||
|
||||
## Verbrauch
|
||||
|
||||
| Messgröße | `claude-opus-5` | `claude-sonnet-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|---:|
|
||||
| Input-Tokens | 4.038 | 296 | 6.962 | 11.296 |
|
||||
| Output-Tokens | 1.970.258 | 136.253 | 22 | 2.106.533 |
|
||||
| Cache-Write-Tokens | 8.663.246 | 665.977 | 0 | 9.329.223 |
|
||||
| Cache-Read-Tokens | 363.710.851 | 17.725.083 | 0 | 381.435.934 |
|
||||
| **Tokens gesamt** | **374.348.393** | **18.527.609** | **6.984** | **392.882.986** |
|
||||
|
||||
|
||||
**Tokens gesamt: 392.882.986** — Input + Output + Cache-Write + Cache-Read über alle Modelle.
|
||||
Der Verbrauch ist **real angefallen** und wird deshalb ausgewiesen, obwohl der Lauf ungültig ist.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
Keine. Der Lauf hat eine von sieben verwertbare Ergebnisdatei(en) erzeugt; eine Auswertung mit
|
||||
`analyse-anforderungen.py` ist gegenstandslos.
|
||||
|
||||
## Ergebnis
|
||||
- **Gültigkeit:** **Fehlmessung** – API-Abbruch (HTTP 429, Session-Limit) und verletzte Modellbedingung
|
||||
- **Status:** `is_error` = true, `subtype` = `success`, `stop_reason` = `stop_sequence`,
|
||||
`terminal_reason` = `api_error`
|
||||
- **Session-ID:** `d23d004f-5de4-47d7-a3c9-dbc25dafbe27`
|
||||
- **Permission-Denials:** 0
|
||||
- **Erzeugte Dateien:** `Glossar.md` (22.279 B) – von sieben geforderten Artefakten
|
||||
- **Root unverändert:** ja
|
||||
- **Abschlusstext des Agenten:** „You've hit your session limit · resets 5:40pm (Europe/Berlin)"
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Abbruch durch Kontingentgrenze, nicht durch einen Fehler im Lauf.**
|
||||
`terminal_reason: api_error`, `api_error_status: 429`. Der Lauf hatte zu diesem Zeitpunkt bereits
|
||||
392,9 Mio. Tokens verbraucht – mehr als das Doppelte des bisher teuersten gültigen Laufs
|
||||
(150,3 Mio., Fable/`builtin` aus Iteration 1). Auffällig ist die Diskrepanz zwischen
|
||||
`duration_ms` (446 ms) und `duration_api_ms` (25.332.446 ms ≈ 7:02 h): Letzteres ist die Summe
|
||||
der nebenläufigen Anfragen aller 34 Subagenten, nicht die Wanduhrzeit von 34:50.
|
||||
|
||||
**2. Modellbedingung verletzt – zweiter dokumentierter Fall der Reihe.** Angefordert war
|
||||
`claude-opus-5`; `modelUsage` weist zusätzlich **`claude-sonnet-5` mit 18.527.609 Tokens
|
||||
(4,72 %)** aus. Der erste Fall war Fable + `builtin` in Iteration 1, wo 91 % des Verbrauchs auf
|
||||
`claude-opus-5[1m]` entfielen. Beide Fälle betreffen **ausschließlich den Modus `builtin`**:
|
||||
`--model` steuert den Hauptagenten, nicht zwingend die Subagenten. Bei 34 Subagenten
|
||||
(24 `Explore`, 10 `general-purpose`) ist plausibel, dass die `Explore`-Agenten auf einem
|
||||
anderen Modell liefen. **Konsequenz für die Versuchsplanung: Bei `builtin` ist die
|
||||
Modellbedingung nicht allein über `--model` herstellbar.** Für einen sauberen Modellvergleich
|
||||
ist entweder `solo` zu verwenden oder die Modellbindung der Subagenten gesondert zu belegen.
|
||||
|
||||
**3. Extremste Delegation der Reihe:** 34 Subagenten, davon **24 von Subagenten gestartet**
|
||||
(`max_depth` = 2), 22 weitere am Nebenläufigkeitslimit abgewiesen, einer fehlgeschlagen. Die
|
||||
Prompts der 24 Enkel-Agenten sind nicht erfasst – sie liegen in Transkripten, die zwar als
|
||||
Dateien angelegt, aber leer bleiben.
|
||||
|
||||
**4. Zusammen mit `116d` sind in dieser Zelle rund 586 Mio. Tokens ohne verwertbares Ergebnis
|
||||
angefallen.** Die Kombination Opus + `builtin` + Prompt-Version 02 hat in beiden Läufen zu einer
|
||||
Delegationstiefe geführt, die weder das Zeitlimit des Headless-Modus noch das Session-Kontingent
|
||||
trägt. Vor einer Wiederholung ist zu entscheiden, ob die Zelle überhaupt sinnvoll messbar ist.
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
# Messprotokoll – Versuch 01 (V1b Baseline mit werkzeugeigenen Agenten) – Prompt-Version 02
|
||||
|
||||
> ## ⚠ FEHLMESSUNG – nicht für Auswertungen verwenden
|
||||
>
|
||||
> Der Lauf brach mit `is_error: true` und HTTP 429 ab: „You've hit your session limit ·
|
||||
> resets 10:50pm (Europe/Berlin)". Erzeugt wurden **null Ergebnisdateien**. Verbraucht wurden
|
||||
> bis zum Abbruch **204.385.225 Tokens**.
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Prompt-Version:** 02
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-26T20:00:13.2974808+02:00
|
||||
- **Endzeit:** 2026-08-26T20:31:25.0410574+02:00
|
||||
- **Dauer gesamt:** 00:07:4x — bis zum Kontingentabbruch
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
- **Codebasis-Commit:** `f349d189c735a87f5829bc93f67991320061a2c0` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja; enthält `SSMS_DB_SCHEMA.sql`
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 7.0.0
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **Modell (angefordert):** `claude-opus-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-opus-5` 204.378.242 (100.00 %), `claude-haiku-4-5-20251001` 6.983 (0.00 %)
|
||||
- **Kontrolle Modell:** bestanden
|
||||
- **Effort:** `high`
|
||||
- **Agentenmodus:** `builtin` (V1b)
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **Hintergrund-Wartezeit:** `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0`
|
||||
- **Parallele Läufe:** **ja** – alle vier Läufe der Welle liefen gleichzeitig
|
||||
- **Subagenten:** 24 gestartet (11 × `Explore`, 13 × `general-purpose`), `max_depth` = 2
|
||||
|
||||
## Verbrauch
|
||||
|
||||
| Messgröße | `claude-opus-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 2.786 | 6.960 | 9.746 |
|
||||
| Output-Tokens | 1.554.538 | 23 | 1.554.561 |
|
||||
| Cache-Write-Tokens | 5.985.107 | 0 | 5.985.107 |
|
||||
| Cache-Read-Tokens | 196.835.811 | 0 | 196.835.811 |
|
||||
| **Tokens gesamt** | **204.378.242** | **6.983** | **204.385.225** |
|
||||
|
||||
|
||||
**Tokens gesamt: 204.385.225** — real angefallen und deshalb ausgewiesen, obwohl der Lauf ungültig ist.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
Keine. Das Ergebnisverzeichnis ist leer; eine Auswertung ist gegenstandslos.
|
||||
|
||||
## Ergebnis
|
||||
- **Gültigkeit:** **Fehlmessung** – API-Abbruch (HTTP 429, Session-Kontingent); Ergebnisverzeichnis leer
|
||||
- **Status:** `is_error` = true, `terminal_reason` = `api_error`, `api_error_status` = 429
|
||||
- **Session-ID:** `7312f1e5-98fe-447a-8150-f9c8427bf0f7`
|
||||
- **Turns:** 1
|
||||
- **Permission-Denials:** 0
|
||||
- **Erzeugte Dateien:** **keine**
|
||||
- **Root unverändert:** ja
|
||||
- **Abschlusstext des Agenten:** „You've hit your session limit · resets 10:50pm (Europe/Berlin)"
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Kontingentabbruch, nicht Laufversagen.** Vier Läufe wurden am 26.08. um 19:59 gleichzeitig
|
||||
gestartet; alle vier liefen in dieselbe Grenze. Zusammen hatten sie zu diesem Zeitpunkt
|
||||
297,4 Mio. Tokens verbraucht, davon allein 204,4 Mio. im Lauf `45dd`. Die Parallelität von vier
|
||||
Läufen – darunter einer mit extremer Delegation – hat das Kontingent gerissen.
|
||||
|
||||
**2. Konsequenz für den Versuchsaufbau:** Die verbleibenden Zellen werden **seriell** gefahren.
|
||||
Der erste serielle Lauf danach (`opus-5/solo/high`, `2269`) lief mit 38,1 Mio. Tokens sauber durch.
|
||||
|
||||
**3. Dritter Totalausfall derselben Zelle.** `opus-5/builtin/high` ist damit dreimal
|
||||
gescheitert, ohne je ein Artefakt zu liefern:
|
||||
|
||||
| Lauf | Abbruch | Subagenten | Tokens |
|
||||
|---|---|---:|---:|
|
||||
| `116d` | 600-s-Zeitlimit für Hintergrund-Subagenten | 20 (10 verschachtelt) | 193,4 Mio. |
|
||||
| `9d9e` | Kontingent (HTTP 429) | 34 (24 verschachtelt) | 392,9 Mio. |
|
||||
| `45dd` | Kontingent (HTTP 429) | 24 | 204,4 Mio. |
|
||||
| | | **Summe** | **790,7 Mio.** |
|
||||
|
||||
Das Muster ist jedes Mal identisch: Opus zerlegt die Aufgabe in 20 bis 34 Subagenten, beendet
|
||||
seinen eigenen Turn nach einem einzigen Turn und überlässt die Arbeit den Hintergrundagenten.
|
||||
Die in Skill 6.1.0 eingeführte Einstellung `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0` hat das
|
||||
Zeitlimit beseitigt – der Lauf scheiterte diesmal am Kontingent, das die Delegationsbreite
|
||||
erzeugt.
|
||||
|
||||
**4. Die Zelle ist mit dieser Prompt-Version und diesem Modell nicht messbar.** Drei
|
||||
reproduzierbare Ausfälle sind als Grenzbefund über die Delegation aussagekräftiger als ein
|
||||
vierter Versuch. Ein weiterer Anlauf wäre nur mit gedrosselter Nebenläufigkeit
|
||||
(`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`) sinnvoll – das wäre allerdings eine geänderte
|
||||
Werkzeugkonfiguration und damit nicht mehr mit den Sonnet-`builtin`-Läufen vergleichbar.
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"is_error":true,"duration_api_ms":18953757,"num_turns":1,"stop_reason":"stop_sequence","session_id":"7312f1e5-98fe-447a-8150-f9c8427bf0f7","total_cost_usd":175.15875799999992,"usage":{"output_tokens_details":{"thinking_tokens":0},"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[],"speed":"standard"},"modelUsage":{"claude-haiku-4-5-20251001":{"inputTokens":6960,"outputTokens":23,"cacheReadInputTokens":0,"cacheCreationInputTokens":0,"webSearchRequests":0,"costUSD":0.007075,"contextWindow":200000,"maxOutputTokens":32000,"canonicalModel":"claude-haiku-4-5","provider":"firstParty","costBasis":"list"},"claude-opus-5":{"inputTokens":2786,"outputTokens":1554538,"cacheReadInputTokens":196835811,"cacheCreationInputTokens":5985107,"webSearchRequests":0,"costUSD":175.15168299999993,"contextWindow":1000000,"maxOutputTokens":64000,"canonicalModel":"claude-opus-5","provider":"firstParty","costBasis":"list"}},"permission_denials":[],"terminal_reason":"api_error","fast_mode_state":"off","fast_mode_disabled_reason":"extra_usage_disabled","origin":{"kind":"task-notification"},"subagent_stats":{"spawned":24,"requested":{"background":0,"foreground":0,"unset":24},"started_in_background":24,"max_depth":2,"spawned_by_subagents":11,"completed":10,"failed":14,"killed":{"parent":0,"user":0,"system":0},"refused":{"depth_limit":0,"concurrency_limit":7,"budget":0},"by_type":{"general-purpose":13,"Explore":11}},"subtype":"success","api_error_status":429,"result":"You've hit your session limit · resets 10:50pm (Europe/Berlin)","type":"result","duration_ms":357,"uuid":"d880473e-010c-4790-bd6c-7be798a324e7","queued_turn_count":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
+178
@@ -0,0 +1,178 @@
|
||||
# Versuch 01 - Baseline (Prompt-only) - Iteration 02
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V1 Baseline (Prompt-only)
|
||||
- **Iteration:** 02 (erste Überarbeitung nach Auswertung von Iteration 01)
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Auswertung der 24 Läufe von Tag 1 über 3.287 erzeugte Anforderungen. Jede Änderung ist an einen gemessenen Befund gekoppelt:
|
||||
|
||||
| Änderung | Auslösender Befund |
|
||||
|---|---|
|
||||
| Modulinventar als Pflicht-Vorstufe, Mindestabdeckung je Modul, Vertiefung erst danach | Anforderungszahl schwankte je Lauf zwischen 42 und 325 (Faktor 5,9); 55 bis 60 von rund 85 Modulen blieben unanalysiert; die Modultabellen der Analyseberichte reichten von 0 bis 51 Zeilen |
|
||||
| Hypothesenpflicht kalibriert, `Hypothesen.md` deckungsgleich mit den Inline-Markierungen | Zwei Läufe meldeten null Hypothesen bei 71 bzw. 148 Anforderungen; der Anteil schwankte zwischen 0 % und 26,2 %; mehrfach wichen Sammeldatei und Inline-Markierungen voneinander ab |
|
||||
| Primärbeleg muss die durchsetzende Stelle benennen | 45,9 % aller Anforderungen trugen genau einen Beleg; in einem Lauf waren 5 von 31 risikorelevanten Anforderungen weder mit `PRIMÄR` noch als `[HYPOTHESE]` gedeckt |
|
||||
| Belegpflicht verschärft: ohne Beleg keine Anforderung | Eine Anforderung wurde ohne jeden Beleg geschrieben |
|
||||
| Konsolidierungsbegriff an einem Beispiel kalibriert | Anteil der Konsolidierungskandidaten schwankte je Lauf zwischen 2,4 % und 35,2 % |
|
||||
| Eigenes Feld `Qualitätsmerkmal` für die ISO-25010-Zuordnung | Die Zuordnung war gefordert, hatte aber keinen Ablageort: nur 33 von 313 nicht-funktionalen Anforderungen führten sie als eigene Angabe |
|
||||
| Risikoanforderungen im Konsistenzcheck auflisten | Verstöße gegen die risikobasierte Priorisierung fielen erst in der nachgelagerten Auswertung auf, nicht im Lauf selbst |
|
||||
|
||||
Unverändert bleiben Prüfidee, Tracelinks, Belegklassifikation und das Blockformat: Prüfidee und Tracelinks waren in **allen** 3.287 Anforderungen gesetzt, 78,6 % der Belege waren `PRIMÄR`.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite ausschließlich auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, ggf. DB-Skripte). Nutze nur Informationen, die du aus diesen Artefakten gewinnen kannst.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, keine Ausführung)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz).
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
|
||||
---
|
||||
|
||||
### Werkzeugkontext (vom Versuchsaufbau vorgegeben)
|
||||
Für diesen Lauf stehen zur Verfügung: Lesen und Suchen von Dateien, das Ausführen von
|
||||
Kommandozeilenbefehlen im Arbeitsverzeichnis sowie die werkzeugeigenen Subagenten.
|
||||
Nicht verfügbar sind: spezialisierte Agentenrollen aus Konfigurationsdateien, externe
|
||||
Werkzeugserver.
|
||||
Triff keine Annahmen über weitere Werkzeuge und versuche nicht, nicht verfügbare
|
||||
Werkzeuge zu ersetzen.
|
||||
### Ausgabeverzeichnis (überschreibt anderslautende Pfadangaben oben)
|
||||
Schreibe ALLE zu erzeugenden Ergebnisdateien in das Verzeichnis
|
||||
`c:\DEV\MasterArbeit\Versuche\Versuch_01\Iteration 3\claude-opus-5\builtin\high\02_Lauf_2026-08-26_195958_v7.0.0-45dd\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:31:25.0410574+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:00:13.2974808+02:00
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
# Analysebericht — Reverse Requirements Engineering c-entron ERP-Suite
|
||||
|
||||
**Untersuchungsgegenstand:** Gesamte Codebasis unter `C:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
**Vorgehen:** Statische Analyse (Lesen/Suchen von Dateien, Kommandozeile). Keine Ausführung, kein Datenbankzugriff, keine externen Werkzeuge.
|
||||
**Norm:** ISO/IEC/IEEE 29148:2018 (StRS/SyRS/SwRS), ISO/IEC 25010 für Qualitätsmerkmale.
|
||||
**Datum des Laufs:** 2026-08-26
|
||||
|
||||
---
|
||||
|
||||
## 1. Schritt 0 — Modulinventar
|
||||
|
||||
Das Inventar wurde **vor** der Formulierung der ersten Anforderung erstellt. Bezugsquellen für die
|
||||
Vollständigkeit:
|
||||
|
||||
* `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs` — die zentrale Registrierungsliste der
|
||||
fachlichen Module des WPF-Clients (82 registrierte `ModuleRegistrationItem`-Einträge inkl. Testmodul).
|
||||
* `Centron.sln`, `docs/getting-started/ai-codebase-navigation.md` — Top-Level-Aufteilung der Projekte.
|
||||
* `src/webservice/Centron.Host/AspNetCore/HostedServices/` — 37 Hintergrunddienste.
|
||||
* `SSMS_DB_SCHEMA.sql` — 1.558 Tabellen, 181 Views, 59 Stored Procedures.
|
||||
|
||||
Das Inventar ist die Bezugsgröße für die Abdeckungstabelle in Abschnitt 3.
|
||||
|
||||
### 1.1 Fachliche Module (WPF-Client, Registrierungsgruppen wie im Quelltext)
|
||||
|
||||
| # | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-01 | Pauschalabrechnung | `src/centron/Centron.WPF.UI/Modules/Finances/FlatrateBilling/` | Pauschale (nicht aufwandsbezogene) Abrechnung von Projekten/Leistungen |
|
||||
| M-02 | Provisionsauswertung | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/Provision/Evaluation/` | Auswertung von Vertriebsprovisionen je Mitarbeiter/Zeitraum |
|
||||
| M-03 | Provisionsschemas verwalten | `.../Finances/Receipts/Provision/Schemas/` | Definition der Berechnungsregeln für Provisionen |
|
||||
| M-04 | Provisionsschema-Kundenzuordnung | `.../Finances/Receipts/Provision/SchemaCustomerAssignments/` | Zuordnung von Provisionsschemata zu Kunden |
|
||||
| M-05 | Vereinfachte Ticketabrechnung | `.../Finances/TimerBilling/` | Abrechnung erfasster Ticketzeiten ohne vollen Belegdurchlauf |
|
||||
| M-06 | Vertragsabrechnung (automatisiert) | `.../Finances/AutomatedBilling/`, BL `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/` | Periodische Rechnungserzeugung aus Verträgen |
|
||||
| M-07 | Aufschläge Stundensätze | `.../Administration/HourlySurchargeRates/` | Zuschlagsätze auf Stundensätze (z. B. Nacht/Wochenende) |
|
||||
| M-08 | c-entron DSGVO | `.../Administration/DSGVO/`, BL `src/backend/Centron.BL/Administration/Documents/Dsgvo/` | Auftragsverarbeitungsverträge, Online-PDF-Dokumente, Datenschutzdokumentation |
|
||||
| M-09 | Einstellungen (Modul) | `.../Administration/Settings/` | Zentrale Anwendungseinstellungen des Mandanten |
|
||||
| M-10 | Kontenrahmen | `.../Warehousing/AccountSystems/` | Buchhaltungskontenrahmen und Konten |
|
||||
| M-11 | Leasing/Service | `.../Administration/SalesAndLeasing/` | Leasing- und Servicevertragsstammdaten |
|
||||
| M-12 | Mailvorlagen | `.../Administration/MailTemplates/` | Verwaltung von E-Mail-Vorlagen mit Variablen |
|
||||
| M-13 | Mandantenverwaltung | `.../Administration/MandatorManagement/` | Mehrmandantenfähigkeit, Mandantenstammdaten |
|
||||
| M-14 | Mitarbeiterverwaltung | `.../Administration/EmployeeManagement/` | Personalstamm, Abteilungen, Filialzuordnung |
|
||||
| M-15 | Rechteverwaltung | `.../Administration/RightsManagement/` | Benutzerrechte und Rechtegruppen |
|
||||
| M-16 | Textbausteinverwaltung | `.../Administration/TextBlockManagement/` | Wiederverwendbare Textbausteine |
|
||||
| M-17 | Ticketprozess-Vorlagen | `.../Helpdesk/TicketProcessTemplates/` | Vorlagen für mehrstufige Ticketprozesse (C-FLOW) |
|
||||
| M-18 | Vertragsarten | `.../Finances/Contracts/ContractSettings/ContractTypes/` | Katalog der Vertragsarten |
|
||||
| M-19 | Adressstamm (klassisch) | `.../Finances/AccountManagement/` | Kunden-/Lieferantenstamm in der klassischen Maske |
|
||||
| M-20 | CRM (Account Management neu) | `.../Finances/Crm/` | Alternative CRM-Sicht auf denselben Adressstamm |
|
||||
| M-21 | Audit / Umfragen | `.../Survey/`, BL `src/backend/Centron.BL/…` | Kundenbefragungen und Audits |
|
||||
| M-22 | CRM-Projekte | `.../Finances/Projects/` | Vertriebsprojekte / Opportunities |
|
||||
| M-23 | Kampagnen & Mailing | `.../Finances/Campaigns/` | Marketingkampagnen, Teilnehmer, Phasen, Serienmails |
|
||||
| M-24 | Lieferantenverträge | `.../Finances/Crm/AccountContracts/` | Verträge auf Lieferantenseite |
|
||||
| M-25 | PLM (Product Lifecycle) | `.../PLM/` | Lizenz-/Produktlebenszyklus beim Kunden |
|
||||
| M-26 | Stammblätter | `.../Finances/MasterDataLists/OverView/` | Geräte-/Anlagenstammblätter beim Kunden (Seriennummern, Zähler) |
|
||||
| M-27 | Erwartete Events | `.../Helpdesk/ExpectedEvents/` | Überwachung erwarteter technischer Ereignisse |
|
||||
| M-28 | Erwartete Events — Auswertung | `.../Helpdesk/ExpectedEventsReporting/` | Auswertung der Ereignisüberwachung |
|
||||
| M-29 | Reportserver | `.../Administration/ReportServer/` | Zeitgesteuerte Reportausführung und -verteilung |
|
||||
| M-30 | Buchhaltungsexport/-import | `.../DataExchange/BookKeeping/` | Übergabe von Buchungssätzen an die Finanzbuchhaltung |
|
||||
| M-31 | DATEV Belegtransfer | `.../DataExchange/DatevOnline2020/` | Belegtransfer an DATEV Unternehmen online |
|
||||
| M-32 | Kalkulation pro Filiale | `.../DataExchange/SupplierOrderPerBranch/` | Filialbezogene Einkaufs-/Kalkulationsauswertung |
|
||||
| M-33 | Mahnwesen | `.../Finances/Dunning/`, BL `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/` | Mahnläufe über offene Rechnungen, Mahnstufen |
|
||||
| M-34 | OPOS | `.../Finances/Opos/` | Offene-Posten-Übersicht |
|
||||
| M-35 | SEPA / Zahlungsverkehr | `.../DataExchange/PaymentTransactions/` | SEPA-Lastschriften und -Überweisungen, Mandate |
|
||||
| M-36 | Zahlungseingang | `.../Finances/Payments/` | Erfassung und Zuordnung von Zahlungseingängen |
|
||||
| M-37 | Analytics / Verkaufsstatistik | `.../Statistics/SaleStatistics/` | Umsatz-, Margen- und Verkaufsauswertungen |
|
||||
| M-38 | Leistungsnachweise | `.../Statistics/EmployeeAnalytics/` | Leistungs-/Auslastungsnachweise je Mitarbeiter |
|
||||
| M-39 | Management Info | `.../Statistics/ManagementInfo/` | Verdichtete betriebswirtschaftliche Kennzahlen |
|
||||
| M-40 | Mitarbeiterauslastung | `.../MyCentron/MyDay/EmployeeOverview/` | Auslastungssicht über Mitarbeiter hinweg |
|
||||
| M-41 | MSP-Auswertung (Comparer) | `.../Global/MSPLicensesCompare/` | Abgleich MSP-Lizenzbestand gegen Verträge |
|
||||
| M-42 | MSP-Collector | `.../Statistics/MspCollectors/` | Einsammeln von MSP-Nutzungsdaten aus Fremdsystemen |
|
||||
| M-43 | MSP-Dashboard | `.../Statistics/MspStatistics/` | Verdichtete MSP-Kennzahlen |
|
||||
| M-44 | Vertragsauswertung | `.../Finances/ContractEvaluation2/` | Wirtschaftlichkeitsauswertung von Verträgen |
|
||||
| M-45 | Belegerfassung Einkauf | `.../Warehousing/OutcomingPayments/` | Erfassung von Eingangsbelegen/Ausgangszahlungen |
|
||||
| M-46 | Bestellvorschlagsliste | `.../Purchasing/OrderSuggestionList/` | Automatische Bestellvorschläge aus Bedarf/Bestand |
|
||||
| M-47 | EDI-Verwaltung | `.../Purchasing/EDIManagement/`, BL `src/backend/Centron.BL/EDI/` | Elektronischer Belegaustausch mit Distributoren |
|
||||
| M-48 | Eingang / Kalkulation | `.../Finances/Receipts/SupplierReceiptDocuments/` | Wareneingang mit Einkaufskalkulation |
|
||||
| M-49 | Checklisten | `.../Helpdesk/CentronChecklist/` | Checklistenvorlagen und -instanzen an Tickets |
|
||||
| M-50 | Projektverwaltung | `.../ProjectManagement/` | Interne Projektverwaltung (nur c-entron-intern freigeschaltet) |
|
||||
| M-51 | RMA / Werkstatt | `.../Rma/` | Retouren-/Reparaturabwicklung |
|
||||
| M-52 | Taskmanagement | `.../Helpdesk/TaskManagment/` | Aufgabenverwaltung mit Board-Sicht |
|
||||
| M-53 | Ticket-Liste / Helpdesk | `.../Helpdesk/TicketList/`, BL `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs` | Serviceticket-Bearbeitung, Zeiterfassung, Eskalation |
|
||||
| M-54 | c-entron Inspektor | `.../MyCentron/CentronInspectors/` | Technisches Diagnosewerkzeug (nur Admin) |
|
||||
| M-55 | c-entron Logs | `.../Administration/LogViewer/` | Einsicht in Anwendungsprotokolle |
|
||||
| M-56 | SQL-Manager | `.../Administration/SqlManagers/` | Direkter SQL-Zugriff für Administratoren |
|
||||
| M-57 | Artikelimport | `.../Warehousing/ArticleImport/` | Import von Artikelstammdaten aus Distributorlisten |
|
||||
| M-58 | Artikelverwaltung | `.../Warehousing/ArticleManagement/` | Artikelstamm, Preise, Warengruppen, Bestände |
|
||||
| M-59 | Inventur | `.../Warehousing/Inventory/` | Inventurerfassung und -abschluss |
|
||||
| M-60 | Kommissionierung | `.../Warehousing/Commissions/` | Kommissionierung von Aufträgen im Lager |
|
||||
| M-61 | Dashboard | `.../MyCentron/Dashboard/` | Persönliches Einstiegs-Dashboard |
|
||||
| M-62 | Mein Tag (MyDay) | `.../MyCentron/MyDay/Editor/` | Tagesbezogene Zeit-/Aufgabenerfassung |
|
||||
| M-63 | Telefonate (TAPI) | `.../MyCentron/Telephony/CallLog/`, BL `src/backend/Centron.BL/Tapi/` | Telefonanbindung und Gesprächsprotokoll |
|
||||
| M-64 | Todo-Liste | `.../MyCentron/TodoList/` | Persönliche Aufgabenliste |
|
||||
| M-65 | KI-Chat | `.../ArtificialIntelligence/Chat/` | KI-Assistent im Client |
|
||||
| M-66 | Persönliche Einstellungen | `.../MyCentron/PersonalSettings/` | Benutzerbezogene Einstellungen (13 Seiten) |
|
||||
| M-67 | Passwort-Manager Richtlinien | `.../PasswordManager/` (GuidelineManagement) | Passwortrichtlinien für verwaltete Zugänge |
|
||||
| M-68 | Passwort-Manager Zugänge | `.../PasswordManager/` (AccessManagement) | Verschlüsselte Ablage von Kundenzugängen |
|
||||
| M-69 | Passwort-Manager Zugangsbereiche | `.../PasswordManager/` (AccessAreaManagement) | Bereichsstruktur für Zugänge |
|
||||
| M-70 | Maschinenverwaltung | `.../Production/MachineManagement/` | Produktionsmaschinen |
|
||||
| M-71 | Produktionsaufträge | `.../Production/ProductionOrder/` | Fertigungsaufträge mit Arbeitsschritten |
|
||||
| M-72 | Belegkonditionen | `.../Administration/ReceiptConditions/` | Liefer-/Zahlungskonditionen für Belege |
|
||||
| M-73 | Data Updater (Massenupdates) | `.../Massenupdates/`, BL `src/backend/Centron.BL/MassUpdate/` | Regelbasierte Massenänderung von Datensätzen |
|
||||
| M-74 | Kostenträger/Kostenstellen | `.../PayersAndCostCenter/` | Kostenrechnungsobjekte |
|
||||
| M-75 | Länderverwaltung | `.../Administration/CountryManagement/` | Länder, Währungen, Steuerkennzeichen |
|
||||
| M-76 | Mehrwertsteuerverwaltung | `.../Warehousing/…/ValueAddedTax` | Steuersätze und deren Gültigkeit |
|
||||
| M-77 | Projektpreis-Import | `.../ProjectPriceImport/` | Import von Projektpreisen (Sonderkonditionen) |
|
||||
| M-78 | Reportverwaltung | `.../Reports/ReportManagement/`, BL `src/backend/Centron.BL/ReportEngine/` | Verwaltung und Ausführung von Reports |
|
||||
| M-79 | Warengruppenverwaltung | `.../Warehousing/MaterialGroupManagement/` | Warengruppenhierarchie |
|
||||
| M-80 | Dynamischer Datenimport Verträge | `.../Sales/SpecialArticleToContractImport/` | Periodischer Mengen-/Nutzungsimport in Verträge |
|
||||
| M-81 | Klick-Zählerverwaltung | `.../Finances/DeviceClickCounter/` | Zählerstände für Klickabrechnung (Drucker/Kopierer) |
|
||||
| M-82 | Statischer Datenimport Verträge | `.../Sales/SpecialArticleImport/` | Import fester Sonderartikel/-preise |
|
||||
| M-83 | Einstellungsseiten ohne Modul | `ModuleRegistration.GetSettingsWithoutModule()` | 85 fachliche Einstellungsseiten, die kein eigenes Modul bilden |
|
||||
| M-84 | Belegwesen Verkauf (Kern) | `src/backend/Centron.BL/Sales/Receipts/`, `src/backend/Centron.Entities/Entities/Sales/Receipts/` | Angebot, Auftrag, Lieferschein, Rechnung, Gutschrift, Abholschein, Vertrag |
|
||||
|
||||
### 1.2 Technische Komponenten und Plattform
|
||||
|
||||
| # | Komponente | Pfad | Aufgabe |
|
||||
|---|---|---|---|
|
||||
| T-01 | Centron.Entities | `src/backend/Centron.Entities/` | NHibernate-Entitäten (86 fachliche Unterverzeichnisse) |
|
||||
| T-02 | Centron.DAO | `src/backend/Centron.DAO/` | FluentNHibernate-Mappings, Repositories, Named Queries, ADO-Zugriff |
|
||||
| T-03 | Centron.BL | `src/backend/Centron.BL/` | Geschäftslogik (85 fachliche Unterverzeichnisse) |
|
||||
| T-04 | Centron.Interfaces | `src/backend/Centron.Interfaces/` | DTO-/Filter-/Enum-Verträge zwischen den Schichten |
|
||||
| T-05 | Centron.Common | `src/backend/Centron.Common/` | Querschnittshelfer (Kodierung, Netzwerk, Assembly-Infos) |
|
||||
| T-06 | Centron.Gateway | `src/backend/Centron.Gateway/` | EDI-Parserbibliotheken je Distributor |
|
||||
| T-07 | Centron.Core | `src/shared/Centron.Core/` | Geteilte Basisbibliothek (TOTP, Parser, Utils) |
|
||||
| T-08 | Centron.Controls | `src/shared/Centron.Controls/` | Wiederverwendbare WPF-Steuerelemente |
|
||||
| T-09 | Centron.WPF.UI (Shell) | `src/centron/Centron.WPF.UI/` | Windows-Client, Modulhost, MVVM |
|
||||
| T-10 | Centron.WPF.UI.Extension | `src/centron/Centron.WPF.UI.Extension/` | Erweiterungspunkte/Schnittstellen für Module |
|
||||
| T-11 | Legacy-REST-Service | `src/webservice/Centron.WebServices.Core/` | `ICentronRestService`, Rechtekonstanten, Legacy-DTOs |
|
||||
| T-12 | Moderne REST-API | `src/webservice/Centron.Controllers/` | Versionierte ASP.NET-Core-Controller (v1) |
|
||||
| T-13 | Web-Service-Hosts | `src/webservice/Centron.Host*/` | Self-Host, Konsolen- und Windows-Dienst-Host |
|
||||
| T-14 | Hintergrunddienste | `src/webservice/Centron.Host/AspNetCore/HostedServices/` | 37 periodische Dienste (EDI, Eskalation, Datenqualität …) |
|
||||
| T-15 | Echtzeitdienste (SignalR) | `src/webservice/Centron.Host/RealTimeServices/` | Chat, Benachrichtigungen, Verfügbarkeit, TAPI |
|
||||
| T-16 | Authentifizierung & Ticketing | `src/backend/Centron.BL/Administration/Logins/` | Basic/AD/OIDC/WebAccount, Ticketvergabe, 2FA |
|
||||
| T-17 | Lizenzierung | `src/backend/Centron.BL/Administration/Licensing/` | Lizenzprüfung gegen Lizenzserver, Feature-Freischaltung |
|
||||
| T-18 | Nexus ServiceBoard | `src/nexus/CentronNexus/ServiceBoard/` | Webbasierte Ticketbearbeitung (Blazor Server) |
|
||||
| T-19 | Nexus WebCart / Kundenportal | `src/nexus/CentronNexus/WebCart/` | Kundenshop und Kundenportal |
|
||||
| T-20 | Nexus WebOffer | `src/nexus/CentronNexus/WebOffer/` | Webbasierte Belegansicht/Freigabe |
|
||||
| T-21 | Nexus Office / Dokumentsignatur | `src/nexus/CentronNexus/Office/`, `.../DocumentSigning/` | Geteilte Dokumente, Freigabe, digitale Signatur |
|
||||
| T-22 | Nexus Management | `src/nexus/CentronNexus/Management/` | Verwaltung von Web-Accounts, Ticketvorlagen, Tasks |
|
||||
| T-23 | Nexus Settings | `src/nexus/CentronNexus/Settings/` | Portaleinstellungen, Branding, Themes |
|
||||
| T-24 | Nexus Host | `src/nexus/CentronNexus.Host/` | Kestrel/HttpSys-Host, Auth-Pipeline, Middleware |
|
||||
| T-25 | Outlook Add-In | `src/nexus/CentronNexus.OutlookAddIn/` | Outlook-Integration für CRM/Tickets/Belege |
|
||||
| T-26 | ConnectionManager | `src/webservice/c-entron.misc.ConnectionManager/` | Verbindungsprofile für den Client |
|
||||
| T-27 | API COP | `src/apis/Centron.APIs.CopDataAccess/` | SOAP-Anbindung Distributor COP |
|
||||
| T-28 | API EGIS | `src/apis/Centron.APIs.EgisDataAccess/` | Elektronische Rechnungsstellung EGIS |
|
||||
| T-29 | API FinAPI | `src/apis/Centron.APIs.FinAPI/` | Bankdatenzugriff (Online-Banking) |
|
||||
| T-30 | API ITscope | `src/apis/Centron.APIs.ITscopeDataAccess/` | Produkt-/Preisdaten ITscope |
|
||||
| T-31 | API Icecat | `src/apis/Centron.APIs.IcecatDataAccess/` | Produktbeschreibungen/Bilder Icecat |
|
||||
| T-32 | API ebInterface | `src/apis/Centron.Api.EbInterface/` | Österreichisches E-Rechnungsformat |
|
||||
| T-33 | API GLS | `src/apis/Centron.Api.Gls/` | Versanddienstleister GLS |
|
||||
| T-34 | API Shipcloud | `src/apis/Centron.Api.Shipcloud/` | Versand-Aggregator Shipcloud |
|
||||
| T-35 | API docuFORM | `Centron.Api.docuFORM/` | Anbindung docuFORM (Druckerdatenerfassung) |
|
||||
| T-36 | Deployment / Installer | `deployment/` | WiX-Installer für Client und Dienste |
|
||||
| T-37 | Container | `docker/` | Dockerfile und Compose-Definitionen |
|
||||
| T-38 | CI/CD | `azure/`, `.github/` | Build-, Test-, Analyse- und Docker-Pipelines |
|
||||
| T-39 | Tests | `tests/` | Unit-, Integrations-, E2E- und Playwright-Tests |
|
||||
| T-40 | Datenbankschema | `SSMS_DB_SCHEMA.sql` | 1.558 Tabellen, 181 Views, 59 Prozeduren, 134 Fremdschlüssel |
|
||||
| T-41 | Lokalisierung | `**/LocalizedStrings*.resx`, `SharedResource*.resx` | Deutsch (Basis) und Englisch |
|
||||
| T-42 | Build-/Hilfsskripte | `scripts/` | Buildorchestrierung |
|
||||
|
||||
**Inventarumfang: 84 fachliche Module + 42 technische Komponenten = 126 Inventareinträge.**
|
||||
|
||||
---
|
||||
|
||||
## 2. Erhobene Artefakttypen (Schritt 2)
|
||||
|
||||
| Artefakttyp | Erhoben | Bemerkung |
|
||||
|---|---|---|
|
||||
| C#-Quellcode | ja | `src/**/*.cs` |
|
||||
| XAML-UI (WPF) | teilweise | Stichprobenartig; Modulstruktur über Controller erschlossen |
|
||||
| Razor-Komponenten (Blazor) | teilweise | Verzeichnisstruktur vollständig, Inhalte stichprobenartig |
|
||||
| Datenbankschema | ja | `SSMS_DB_SCHEMA.sql` (3,2 MB, Stand 11.11.2025) |
|
||||
| Konfiguration | ja | `appsettings.json`, `Directory.Build.props`, `global.json`, `docker/` |
|
||||
| Projektdokumentation | ja | `docs/**` (44 Markdown-Dateien), `README.md`, `CentronRights.md` |
|
||||
| Deployment-Skripte | ja | `docker/Dockerfile`, `azure/*.yml`, `deployment/` |
|
||||
| Ressourcen/Lokalisierung | teilweise | `ResXManager.config.xml`, Resx-Struktur |
|
||||
| Change-Historie (Commits) | **nein** | Kein Git-Verlauf des Zielsystems im Arbeitsverzeichnis lesbar; siehe Lücke L-1 |
|
||||
| Tickets / Release Notes | teilweise | `src/nexus/CentronNexus/changelog.txt` vorhanden; kein Ticketsystem-Export |
|
||||
|
||||
---
|
||||
|
||||
*Abschnitt 3 (Abdeckungstabelle), Abschnitt 4 (Konsistenzcheck) und Abschnitt 5 (Selbstbewertung)
|
||||
folgen unten nach Abschluss der Spezifikation.*
|
||||
+2088
File diff suppressed because it is too large
Load Diff
+79
@@ -0,0 +1,79 @@
|
||||
# Messprotokoll – Versuch 01 (V1 Baseline) – Prompt-Version 02
|
||||
|
||||
> ## ⚠ FEHLMESSUNG – nicht für Auswertungen verwenden
|
||||
>
|
||||
> Der Lauf brach mit `is_error: true` und HTTP 429 ab: „You've hit your session limit ·
|
||||
> resets 10:50pm (Europe/Berlin)". Erzeugt wurden **2 von sieben** geforderten Ergebnisdateien; der Lauf brach mitten in der Bearbeitung ab. Verbraucht wurden
|
||||
> bis zum Abbruch **7.198.773 Tokens**.
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Prompt-Version:** 02
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-26T20:00:06.7195929+02:00
|
||||
- **Endzeit:** 2026-08-26T20:31:17.3017181+02:00
|
||||
- **Dauer gesamt:** 00:07:4x — bis zum Kontingentabbruch
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
- **Codebasis-Commit:** `f349d189c735a87f5829bc93f67991320061a2c0` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja; enthält `SSMS_DB_SCHEMA.sql`
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 7.0.0
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **Modell (angefordert):** `claude-opus-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-opus-5` 7.191.806 (99.90 %), `claude-haiku-4-5-20251001` 6.967 (0.10 %)
|
||||
- **Kontrolle Modell:** bestanden
|
||||
- **Effort:** `high`
|
||||
- **Agentenmodus:** `solo` (V1)
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **Hintergrund-Wartezeit:** `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0`
|
||||
- **Parallele Läufe:** **ja** – alle vier Läufe der Welle liefen gleichzeitig
|
||||
- **Subagenten:** keine (`spawned` = 0)
|
||||
|
||||
## Verbrauch
|
||||
|
||||
| Messgröße | `claude-opus-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 100 | 6.945 | 7.045 |
|
||||
| Output-Tokens | 156.962 | 22 | 156.984 |
|
||||
| Cache-Write-Tokens | 278.056 | 0 | 278.056 |
|
||||
| Cache-Read-Tokens | 6.756.688 | 0 | 6.756.688 |
|
||||
| **Tokens gesamt** | **7.191.806** | **6.967** | **7.198.773** |
|
||||
|
||||
|
||||
**Tokens gesamt: 7.198.773** — real angefallen und deshalb ausgewiesen, obwohl der Lauf ungültig ist.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
Der Lauf brach vor Abschluss ab. Im vorhandenen **Teilbestand** stehen **65 Anforderungen**. Die Zahl ist **nicht** mit vollständigen Läufen vergleichbar – es fehlen `SyRS.md`, `SwRS.md`, `Traceability.md`, `Hypothesen.md`, `Glossar.md`. Die maschinelle Auswertung liegt zur Vollständigkeit unter `_meta/anforderungen.md`, geht aber nicht in Vergleiche ein.
|
||||
|
||||
## Ergebnis
|
||||
- **Gültigkeit:** **Fehlmessung** – API-Abbruch (HTTP 429, Session-Kontingent); nur 2 von sieben Artefakten erzeugt
|
||||
- **Status:** `is_error` = true, `terminal_reason` = `api_error`, `api_error_status` = 429
|
||||
- **Session-ID:** `aa5fb7ff-4191-4b88-b772-9baca2b9cc5c`
|
||||
- **Turns:** 86
|
||||
- **Permission-Denials:** 0
|
||||
- **Erzeugte Dateien:** 2 von sieben geforderten Artefakten:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
| `Analysebericht.md` | 17.284 B |
|
||||
| `StRS.md` | 133.396 B |
|
||||
|
||||
Es fehlen: `SyRS.md`, `SwRS.md`, `Traceability.md`, `Hypothesen.md`, `Glossar.md`
|
||||
- **Root unverändert:** ja
|
||||
- **Abschlusstext des Agenten:** „You've hit your session limit · resets 10:50pm (Europe/Berlin)"
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Kontingentabbruch, nicht Laufversagen.** Vier Läufe wurden am 26.08. um 19:59 gleichzeitig
|
||||
gestartet; alle vier liefen in dieselbe Grenze. Zusammen hatten sie zu diesem Zeitpunkt
|
||||
297,4 Mio. Tokens verbraucht, davon allein 204,4 Mio. im Lauf `45dd`. Die Parallelität von vier
|
||||
Läufen – darunter einer mit extremer Delegation – hat das Kontingent gerissen.
|
||||
|
||||
**2. Konsequenz für den Versuchsaufbau:** Die verbleibenden Zellen werden **seriell** gefahren.
|
||||
Der erste serielle Lauf danach (`opus-5/solo/high`, `2269`) lief mit 38,1 Mio. Tokens sauber durch.
|
||||
|
||||
**3. Zelle inzwischen gültig belegt.** Der Wiederholungslauf `02_Lauf_2026-08-26_225807_v7.0.0-2269`
|
||||
war erfolgreich: 363 Anforderungen, 99,7 % mit Primärbeleg, 38,1 Mio. Tokens. Dieser Lauf hier
|
||||
bleibt als Beleg für den Kontingentabbruch erhalten.
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"is_error":true,"duration_api_ms":1669088,"num_turns":86,"stop_reason":"stop_sequence","session_id":"aa5fb7ff-4191-4b88-b772-9baca2b9cc5c","total_cost_usd":10.090508999999999,"usage":{"input_tokens":100,"cache_creation_input_tokens":278056,"cache_read_input_tokens":6756688,"output_tokens":156962,"output_tokens_details":{"thinking_tokens":8446},"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":278056,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":64000,"cache_read_input_tokens":214142,"cache_creation_input_tokens":63914,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":63914},"type":"message"}],"speed":"standard"},"modelUsage":{"claude-haiku-4-5-20251001":{"inputTokens":6945,"outputTokens":22,"cacheReadInputTokens":0,"cacheCreationInputTokens":0,"webSearchRequests":0,"costUSD":0.007055,"contextWindow":200000,"maxOutputTokens":32000,"canonicalModel":"claude-haiku-4-5","provider":"firstParty","costBasis":"list"},"claude-opus-5":{"inputTokens":100,"outputTokens":156962,"cacheReadInputTokens":6756688,"cacheCreationInputTokens":278056,"webSearchRequests":0,"costUSD":10.083454,"contextWindow":1000000,"maxOutputTokens":64000,"canonicalModel":"claude-opus-5","provider":"firstParty","costBasis":"list"}},"permission_denials":[],"terminal_reason":"api_error","fast_mode_state":"off","fast_mode_disabled_reason":"extra_usage_disabled","subagent_stats":{"spawned":0,"requested":{"background":0,"foreground":0,"unset":0},"started_in_background":0,"max_depth":0,"spawned_by_subagents":0,"completed":0,"failed":0,"killed":{"parent":0,"user":0,"system":0},"refused":{"depth_limit":0,"concurrency_limit":0,"budget":0},"by_type":{}},"subtype":"success","api_error_status":429,"result":"You've hit your session limit · resets 10:50pm (Europe/Berlin)","type":"result","duration_ms":1868837,"uuid":"8ae2f7a0-b8a3-49ae-bdb7-fb36c021be6a","queued_turn_count":0}
|
||||
+1352
File diff suppressed because it is too large
Load Diff
+64
@@ -0,0 +1,64 @@
|
||||
## Gefundene Anforderungen
|
||||
|
||||
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 |
|
||||
|---|---:|---:|
|
||||
| StRS | 65 | 100,0 % |
|
||||
| SyRS | 0 | 0,0 % |
|
||||
| SwRS | 0 | 0,0 % |
|
||||
| **Gesamt** | **65** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 41 | 63,1 % |
|
||||
| Sicherheit | 9 | 13,8 % |
|
||||
| Schnittstelle | 8 | 12,3 % |
|
||||
| nicht-funktional | 5 | 7,7 % |
|
||||
| Daten | 2 | 3,1 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 180 |
|
||||
| davon `PRIMÄR` | 125 (69,4 %) |
|
||||
| davon `SEKUNDÄR` | 28 (15,6 %) |
|
||||
| davon `KONTEXT` | 27 (15,0 %) |
|
||||
| Belege je Anforderung (Median) | 3 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 63 (96,9 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 60 | 92,3 % |
|
||||
| workaround | 2 | 3,1 % |
|
||||
| veraltet | 3 | 4,6 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 65 | 100,0 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 0 | 0,0 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 5 | 7,7 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 5 | 7,7 % |
|
||||
|
||||
### Regelkonformität (Prüfung gegen die Vorgaben des Prompts)
|
||||
|
||||
| Vorgabe | Ergebnis |
|
||||
|---|---|
|
||||
| **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** (22 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 65 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 65 von 65 mit Tracelinks (100,0 %) |
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
# Versuch 01 - Baseline (Prompt-only) - Iteration 02
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V1 Baseline (Prompt-only)
|
||||
- **Iteration:** 02 (erste Überarbeitung nach Auswertung von Iteration 01)
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Auswertung der 24 Läufe von Tag 1 über 3.287 erzeugte Anforderungen. Jede Änderung ist an einen gemessenen Befund gekoppelt:
|
||||
|
||||
| Änderung | Auslösender Befund |
|
||||
|---|---|
|
||||
| Modulinventar als Pflicht-Vorstufe, Mindestabdeckung je Modul, Vertiefung erst danach | Anforderungszahl schwankte je Lauf zwischen 42 und 325 (Faktor 5,9); 55 bis 60 von rund 85 Modulen blieben unanalysiert; die Modultabellen der Analyseberichte reichten von 0 bis 51 Zeilen |
|
||||
| Hypothesenpflicht kalibriert, `Hypothesen.md` deckungsgleich mit den Inline-Markierungen | Zwei Läufe meldeten null Hypothesen bei 71 bzw. 148 Anforderungen; der Anteil schwankte zwischen 0 % und 26,2 %; mehrfach wichen Sammeldatei und Inline-Markierungen voneinander ab |
|
||||
| Primärbeleg muss die durchsetzende Stelle benennen | 45,9 % aller Anforderungen trugen genau einen Beleg; in einem Lauf waren 5 von 31 risikorelevanten Anforderungen weder mit `PRIMÄR` noch als `[HYPOTHESE]` gedeckt |
|
||||
| Belegpflicht verschärft: ohne Beleg keine Anforderung | Eine Anforderung wurde ohne jeden Beleg geschrieben |
|
||||
| Konsolidierungsbegriff an einem Beispiel kalibriert | Anteil der Konsolidierungskandidaten schwankte je Lauf zwischen 2,4 % und 35,2 % |
|
||||
| Eigenes Feld `Qualitätsmerkmal` für die ISO-25010-Zuordnung | Die Zuordnung war gefordert, hatte aber keinen Ablageort: nur 33 von 313 nicht-funktionalen Anforderungen führten sie als eigene Angabe |
|
||||
| Risikoanforderungen im Konsistenzcheck auflisten | Verstöße gegen die risikobasierte Priorisierung fielen erst in der nachgelagerten Auswertung auf, nicht im Lauf selbst |
|
||||
|
||||
Unverändert bleiben Prüfidee, Tracelinks, Belegklassifikation und das Blockformat: Prüfidee und Tracelinks waren in **allen** 3.287 Anforderungen gesetzt, 78,6 % der Belege waren `PRIMÄR`.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite ausschließlich auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, ggf. DB-Skripte). Nutze nur Informationen, die du aus diesen Artefakten gewinnen kannst.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, keine Ausführung)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz).
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
|
||||
---
|
||||
|
||||
### Werkzeugkontext (vom Versuchsaufbau vorgegeben)
|
||||
Für diesen Lauf stehen zur Verfügung: Lesen und Suchen von Dateien sowie das Ausführen von
|
||||
Kommandozeilenbefehlen im Arbeitsverzeichnis.
|
||||
Nicht verfügbar sind: Subagenten, spezialisierte Agentenrollen, externe Werkzeugserver.
|
||||
Triff keine Annahmen über weitere Werkzeuge und versuche nicht, nicht verfügbare
|
||||
Werkzeuge zu ersetzen.
|
||||
### Ausgabeverzeichnis (überschreibt anderslautende Pfadangaben oben)
|
||||
Schreibe ALLE zu erzeugenden Ergebnisdateien in das Verzeichnis
|
||||
`c:\DEV\MasterArbeit\Versuche\Versuch_01\Iteration 3\claude-opus-5\solo\high\02_Lauf_2026-08-26_195958_v7.0.0-e7e6\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:31:17.3017181+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T20:00:06.7195929+02:00
|
||||
+876
@@ -0,0 +1,876 @@
|
||||
# Analysebericht — Reverse Requirements Engineering c-entron ERP-Suite
|
||||
|
||||
**Untersuchungsgegenstand:** gesamte Codebasis unter `C:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
**Verfahren:** ausschließlich statische Analyse (Lesen, Suchen, Kommandozeile). Keine Ausführung, kein Datenbankzugriff, keine laufende Instanz.
|
||||
**Normbezug:** ISO/IEC/IEEE 29148:2018 (StRS / SyRS / SwRS), ISO/IEC 25010 (Qualitätsmerkmale)
|
||||
**Datum:** 2026-08-26
|
||||
|
||||
---
|
||||
|
||||
## 0. Kennzahlen des Untersuchungsgegenstands
|
||||
|
||||
| Kennzahl | Wert | Ermittlung |
|
||||
|---|---|---|
|
||||
| .NET-Projekte (`*.csproj`) | 44 | `find . -name "*.csproj"` |
|
||||
| C#-Quelldateien unter `src/` | 15.554 | `find src -name "*.cs" \| wc -l` |
|
||||
| XAML-Dateien unter `src/` | 1.233 | `find src -name "*.xaml" \| wc -l` |
|
||||
| Razor-Komponenten unter `src/` | 491 | `find src -name "*.razor" \| wc -l` |
|
||||
| Tabellen im DB-Schema-Dump | 1.558 | `grep -c "CREATE TABLE" SSMS_DB_SCHEMA.sql` |
|
||||
| Registrierte UI-Module (WPF) | 84 | `grep -c "ModuleRegistrationItem.For<" ModuleRegistration.cs` |
|
||||
| Rechtekonstanten-Datei | 2.819 Zeilen | `wc -l UserRightsConst.cs` |
|
||||
| Größte Einzelklasse | `ReceiptBL.cs`, 11.441 Zeilen | `wc -l` |
|
||||
|
||||
Technologiestack (belegt über `Directory.Build.props`, `docker/Dockerfile`, `*.csproj`):
|
||||
WPF-Rich-Client (C#/XAML, DevExpress), Blazor-Server-Webanwendung („c-entron Nexus"), ASP.NET-Core-Webservice mit REST-Controllern,
|
||||
NHibernate als O/R-Mapper gegen MS SQL Server, Outlook-Add-In, Linux-Container-Deployment (.NET 10, Alpine).
|
||||
|
||||
---
|
||||
|
||||
## 1. Modulinventar (Schritt 0)
|
||||
|
||||
Das Inventar wurde **vor** der Formulierung der ersten Anforderung erstellt. Es ist die Bezugsgröße für die
|
||||
Abdeckungstabelle in Abschnitt 3. Grundlage sind (a) die 84 in `ModuleRegistration.cs` registrierten fachlichen
|
||||
UI-Module, (b) die Verzeichnisstruktur von `src/backend/Centron.BL`, `src/backend/Centron.Entities`,
|
||||
`src/apis`, `src/nexus`, `src/webservice`, (c) Betriebs- und Build-Artefakte (`docker/`, `azure/`, `.github/`).
|
||||
|
||||
Spalte „Aufgabe" ist eine Ein-Satz-Beschreibung der fachlichen Aufgabe des Moduls.
|
||||
|
||||
### 1.1 Vertrieb und Beleggeschäft
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-01 | Belegkern (receipt engine) | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs` | Gemeinsame Anlage-, Speicher-, Versions- und Weiterführungslogik für alle sieben Belegarten. |
|
||||
| M-02 | Angebote | `src/backend/Centron.BL/Sales/Receipts/Offers/` | Erstellung, Klassifikation und Nachverfolgung von Kundenangeboten. |
|
||||
| M-03 | Aufträge | `src/backend/Centron.BL/Sales/Receipts/Orders/` | Auftragserfassung und -abwicklung inklusive Teilkommissionierung. |
|
||||
| M-04 | Lieferscheine | `src/backend/Centron.BL/Sales/Receipts/DeliveryLists/` | Warenausgangsbelege und Versandabwicklung. |
|
||||
| M-05 | Rechnungen | `src/backend/Centron.BL/Sales/Receipts/Invoices/` | Fakturierung gegenüber Kunden inklusive Mahnstufenführung. |
|
||||
| M-06 | Gutschriften | `src/backend/Centron.BL/Sales/Receipts/CreditVouchers/` | Kundengutschriften als wertmäßige Korrektur von Rechnungen. |
|
||||
| M-07 | Abholscheine | `src/backend/Centron.BL/Sales/Receipts/PickUps/`, `PickupLists/` | Abholbelege für Barverkauf und Selbstabholung. |
|
||||
| M-08 | Belegpositionen | `src/backend/Centron.BL/Sales/Receipts/ReceiptItemBL.cs` | Positionsverwaltung: Preise, Rabatte, Fracht, Saldopositionen, Anzeigenummerierung. |
|
||||
| M-09 | Belegvorlagen | `src/backend/Centron.BL/Sales/Receipts/ReceiptTemplateBL.cs` | Wiederverwendbare Belegvorlagen in Ordnerstruktur. |
|
||||
| M-10 | Belegprotokoll / Progression | `src/backend/Centron.BL/Sales/Receipts/ReceiptLogBL.cs`, `ReceiptProgressionBL.cs` | Änderungsprotokoll und Belegkette (Angebot → Auftrag → Lieferschein → Rechnung). |
|
||||
| M-11 | Belegkonditionen | `src/centron/Centron.WPF.UI/Modules/Administration/ReceiptConditions/` | Pflege von Zahlungs- und Lieferkonditionen als Stammdaten. |
|
||||
| M-12 | Web-Beleg (WebReceipt) | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs` (Region `WebReceipt`) | Freigabe/Ablehnung von Belegen durch den Kunden über einen Token-Link. |
|
||||
| M-13 | Belegsignatur | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs` (Region `Signing`), `src/nexus/CentronNexus/DocumentSigning/` | Elektronische Unterzeichnung freigegebener Dokumente. |
|
||||
| M-14 | Provisionsabrechnung | `src/backend/Centron.BL/Sales/Receipts/ReceiptProvision*BL.cs` | Provisionsschemata, Mitarbeiterziele und Provisionsauswertung. |
|
||||
| M-15 | Sonderpreise / Produktmatrix | `src/backend/Centron.BL/ProductMatrix/`, `Accounts/SpecialPrices/` | Kundenindividuelle Preise und Preismatrizen. |
|
||||
| M-16 | Frachtartikel-Steuerung | `src/backend/Centron.BL/Sales/Receipts/FreightArticleSettingBL.cs` | Automatisches Einsteuern von Fracht- und Versicherungspositionen. |
|
||||
|
||||
### 1.2 Verträge und wiederkehrende Abrechnung
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-17 | Verträge (Kern) | `src/backend/Centron.BL/Sales/CustomerAssets/Contracts/ContractBL.cs` | Serviceverträge mit Abrechnungsintervall, Kontingent und Laufzeit. |
|
||||
| M-18 | Automatische Vertragsabrechnung | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/` | Turnusmäßige Erzeugung von Rechnungen aus Verträgen. |
|
||||
| M-19 | Klickabrechnung (MPS) | `src/backend/Centron.BL/Sales/CustomerAssets/Contracts/ClickContracts/` | Abrechnung nach Zählerständen von Druck-/Kopiergeräten. |
|
||||
| M-20 | Pauschalabrechnung | `src/centron/Centron.WPF.UI/Modules/Finances/FlatrateBilling/` | Pauschale (flat-rate) Abrechnung von Projekten. |
|
||||
| M-21 | Vereinfachte Ticketabrechnung | `src/backend/Centron.BL/Sales/CustomerAssets/TimerBilling/TimerBillingBL.cs` | Abrechnung erfasster Ticketzeiten über Aufträge/Rechnungen. |
|
||||
| M-22 | Vertragsarten | `src/centron/Centron.WPF.UI/Modules/Finances/Contracts/ContractSettings/ContractTypes/` | Katalog der Vertragsarten als Stammdaten. |
|
||||
| M-23 | Vertragsauswertung | `src/centron/Centron.WPF.UI/Modules/Finances/ContractEvaluation2/` | Wirtschaftliche Auswertung von Verträgen. |
|
||||
| M-24 | Vertrags-Datenimport | `src/backend/Centron.BL/Sales/CustomerAssets/Contracts/ContractExternalArticleImport*.cs` | Import externer Artikel-/Mengendaten in Verträge (dynamisch und statisch). |
|
||||
| M-25 | Leasing/Service | `src/backend/Centron.BL/Sales/Receipts/LeasingAndService/` | Leasing- und Servicekonditionen an Belegen. |
|
||||
|
||||
### 1.3 Kunden, Lieferanten, CRM
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-26 | Adressstamm / Accounts | `src/backend/Centron.BL/Accounts/AccountBL.cs` | Zentraler Geschäftspartnerstamm (Kunde, Lieferant, Interessent). |
|
||||
| M-27 | Alt-Kundenstamm | `src/backend/Centron.BL/Sales/Customers/` | Klassische Kundenstammverwaltung vor der Account-Umstellung. |
|
||||
| M-28 | Lieferantenstamm | `src/backend/Centron.BL/BusinessPartner/`, `Purchasing/Suppliers/` | Lieferantendaten und Lieferantensuche. |
|
||||
| M-29 | Adressen und Ansprechpartner | `src/backend/Centron.BL/Accounts/AccountAddress*BL.cs` | Mehrfachadressen und Kontaktpersonen je Geschäftspartner. |
|
||||
| M-30 | CRM-Aktivitäten | `src/backend/Centron.BL/Accounts/Activities/` | Protokollierung von Kundenkontakten und Vorgängen. |
|
||||
| M-31 | CRM-Projekte | `src/centron/Centron.WPF.UI/Modules/Finances/Projects/`, `Centron.BL/Projects/ProjectBL.cs` | Vertriebsprojekte über mehrere Belege hinweg. |
|
||||
| M-32 | Kampagnen und Mailings | `src/backend/Centron.BL/Accounts/Campaigns/`, `Mailings/` | Serienbrief- und Kampagnensteuerung. |
|
||||
| M-33 | Audit / Umfragen | `src/backend/Centron.BL/Accounts/Survey/` | Kundenzufriedenheitsbefragungen, u. a. nach Ticketabschluss. |
|
||||
| M-34 | Lieferantenverträge | `src/backend/Centron.BL/Accounts/AccountContracts/` | Verträge auf der Beschaffungsseite. |
|
||||
| M-35 | Kundenhotline / Zugangsdaten | `src/backend/Centron.BL/Accounts/HotlineArea/`, `HotlineBL.cs` | Kundenspezifische Hotline- und Zugangsinformationen. |
|
||||
| M-36 | Geschäftsbereiche / Interessen | `src/backend/Centron.BL/CustomerArea/BusinessLineBL.cs`, `InterestBL.cs` | Segmentierungsmerkmale für Kunden. |
|
||||
|
||||
### 1.4 Service, Helpdesk, Zeiterfassung
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-37 | Helpdesk (Ticketkern) | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs` | Anlage, Bearbeitung und Sichtbarkeitssteuerung von Servicetickets. |
|
||||
| M-38 | Ticketabschluss | `src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs` | Abschluss von Tickets inklusive Benachrichtigung und Umfrage. |
|
||||
| M-39 | Ticketkategorien/-typen/-status | `src/backend/Centron.BL/Sales/Support/HelpdeskCategoryBL.cs`, `HelpdeskTypeBL.cs`, `HelpdeskStatusBL.cs` | Klassifikationsschema der Tickets. |
|
||||
| M-40 | Ticketprioritäten und Eskalation | `src/backend/Centron.BL/Sales/Support/HelpdeskPrioritiesBL.cs`, `Escalation/` | Priorisierung und Eskalationsstufen. |
|
||||
| M-41 | Ticket-Zeiterfassung (Timer) | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs`, `HelpdeskTimeRecordingBL.cs` | Erfassung von Arbeitszeiten je Ticket, inkl. Stoppuhr. |
|
||||
| M-42 | Ticket-Unterschrift | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerSignatureBL.cs` | Kundenunterschrift auf einem Zeiteintrag. |
|
||||
| M-43 | Stundensatz-Aufschläge | `src/backend/Centron.BL/Sales/HourlySurchargeRatesBL/` | Zeitabhängige Zuschläge (Nacht, Wochenende) auf Stundensätze. |
|
||||
| M-44 | Ticketvorlagen / Muster | `src/backend/Centron.BL/Sales/Support/HelpdeskPatternBL.cs`, `HelpdeskCreationTemplateBL.cs` | Automatische Ticketerzeugung aus Vorlagen. |
|
||||
| M-45 | Ticketprozesse | `src/backend/Centron.BL/Sales/Support/TicketProcess/` | Mehrstufige Prozessvorlagen für Tickets. |
|
||||
| M-46 | Ticketprojekte | `src/backend/Centron.BL/TicketProjects/TicketProjectBL.cs` | Bündelung von Tickets zu Projekten. |
|
||||
| M-47 | Checklisten | `src/backend/Centron.BL/CheckListArea/` | Abarbeitbare Prüflisten an Tickets und Objekten. |
|
||||
| M-48 | Taskmanagement | `src/backend/Centron.BL/TaskManager/`, `src/nexus/CentronNexus/Management/TaskManagement/` | Aufgabenverwaltung quer zu Tickets. |
|
||||
| M-49 | RMA / Werkstatt | `src/backend/Centron.BL/CustomerArea/RmaBL.cs` | Retouren-, Reparatur- und Tauschabwicklung mit Seriennummern. |
|
||||
| M-50 | Mail-Scanner | `src/backend/Centron.BL/MailScanner/MailScannerBL.cs` | Regelbasiertes Erzeugen/Zuordnen von Tickets aus Postfächern. |
|
||||
| M-51 | Externer Helpdesk | `src/backend/Centron.BL/ExternalHelpdesk/` | Anbindung fremder Ticketsysteme. |
|
||||
| M-52 | Erwartete Events | `src/backend/Centron.BL/ExpectedEvents/ExpectedEventsBL.cs` | Überwachung erwarteter, wiederkehrender Ereignisse. |
|
||||
|
||||
### 1.5 Warenwirtschaft und Logistik
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-53 | Artikelstamm | `src/backend/Centron.BL/Warehousing/ArticleBL.cs` | Zentrale Artikelverwaltung inklusive Sonderartikel-Rollen. |
|
||||
| M-54 | Artikelimport | `src/backend/Centron.BL/Warehousing/ArticleManagement/ArticleImportBL.cs` | Massenimport von Artikeldaten. |
|
||||
| M-55 | Warengruppen | `src/backend/Centron.BL/Warehousing/InventoryManagement/MaterialGroupBL.cs` | Hierarchische Warengruppen mit Erlöskontozuordnung. |
|
||||
| M-56 | Lager und Lagerplätze | `src/backend/Centron.BL/Warehousing/StockManagement/` | Lagerorte, Lagerplätze und Bestandsführung. |
|
||||
| M-57 | Seriennummern und Barcodes | `src/backend/Centron.BL/Warehousing/BarcodeBL.cs`, `BarcodeHistoryBL.cs` | Einzelstückverfolgung über Barcode-/Seriennummernzustände. |
|
||||
| M-58 | Inventur | `src/backend/Centron.BL/Warehousing/InventoryManagement/InventoryNewBL.cs` | Zähl- und Abschlussprozess der Inventur. |
|
||||
| M-59 | Kommissionierung | `src/backend/Centron.BL/Warehousing/Commissions/` | Auftragsbezogene Kommissionierung, auch als Teilkommissionierung. |
|
||||
| M-60 | Artikeleinheiten und Staffelpreise | `src/backend/Centron.BL/Warehousing/ArticleUnitBL.cs`, `ArticleVolumePricesBL.cs` | Mengeneinheiten und mengenabhängige Preise. |
|
||||
| M-61 | Stücklisten / Produktfamilien | `src/backend/Centron.BL/Warehousing/StockManagement/PartListArticleBL.cs`, `ArticleManagement/ProductFamilyBL.cs` | Zusammengesetzte Artikel und Produktfamilien. |
|
||||
| M-62 | Versandarten und Versanddienstleister | `src/backend/Centron.BL/Logistics/`, `src/apis/Centron.Api.Gls/`, `Centron.Api.Shipcloud/` | Versandsteuerung und Labelerzeugung. |
|
||||
| M-63 | Aktionspreise | `src/backend/Centron.BL/Warehousing/ActionPriceBL.cs` | Zeitlich befristete Aktionspreise. |
|
||||
|
||||
### 1.6 Einkauf
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-64 | Lieferantenbelege | `src/backend/Centron.BL/Sales/Receipts/Supplier*/` | Anfragen, Bestellungen, Wareneingänge, Lieferantenrechnungen und -gutschriften. |
|
||||
| M-65 | Bestellvorschlagsliste | `src/backend/Centron.BL/Purchasing/OrderSuggestionList/` | Ermittlung von Bestellvorschlägen aus Bedarf und Bestand. |
|
||||
| M-66 | EDI-Beschaffung | `src/backend/Centron.BL/EDI/` | Elektronischer Datenaustausch mit Distributoren (ALSO, Alltron, Komsa, EGIS, Concerto). |
|
||||
| M-67 | ZUGFeRD / XRechnung | `src/backend/Centron.BL/EDI/Zugferd/`, `docs/guides/development/xrechnung.md` | Elektronische Rechnungsformate im Ein- und Ausgang. |
|
||||
| M-68 | ebInterface (AT) | `src/apis/Centron.Api.EbInterface/` | Österreichisches E-Rechnungsformat. |
|
||||
| M-69 | Distributor-Produktdaten | `src/apis/Centron.APIs.ITscopeDataAccess/`, `IcecatDataAccess/`, `CopDataAccess/`, `EgisDataAccess/` | Bezug von Produktstamm-, Preis- und Verfügbarkeitsdaten. |
|
||||
| M-70 | Bestellung pro Filiale | `src/backend/Centron.BL/Purchasing/SupplierOrderPerBranchBL.cs` | Filialbezogene Aufteilung von Bestellungen. |
|
||||
|
||||
### 1.7 Finanzen und Buchhaltung
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-71 | Buchhaltungsexport/-import | `src/backend/Centron.BL/DataExchange/BookKeeping/` | Übergabe von Belegdaten an die Finanzbuchhaltung (DATEV). |
|
||||
| M-72 | Mahnwesen | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/` | Mahnläufe, Mahnstufen und Mahnbelege. |
|
||||
| M-73 | Offene Posten (OPOS) | `src/backend/Centron.BL/Sales/Receipts/Invoices/Opos/` | Offene-Posten-Liste und Ausgleich. |
|
||||
| M-74 | Zahlungseingang | `src/backend/Centron.BL/Finances/IncomingPayments/` | Erfassung und Protokollierung von Zahlungseingängen. |
|
||||
| M-75 | SEPA-Mandate | `src/centron/Centron.WPF.UI/Modules/Administration/SepaContract/` | Verwaltung von SEPA-Lastschriftmandaten. |
|
||||
| M-76 | Online-Banking | `src/backend/Centron.BL/Finances/OnlineBanking/`, `src/apis/Centron.APIs.FinAPI/` | Kontoumsatzabruf und Zahlungsverkehr über finAPI. |
|
||||
| M-77 | Bankverbindungen | `src/backend/Centron.BL/Accounting/BankAccountBL.cs` | Bankstammdaten der Geschäftspartner. |
|
||||
| M-78 | Kontenrahmen | `src/centron/Centron.WPF.UI/Modules/Warehousing/AccountSystems/` | Erlös- und Aufwandskonten je Mandant und Filiale. |
|
||||
| M-79 | Mehrwertsteuer | `src/backend/Centron.BL/Warehousing/TaxBL.cs` | Steuersätze, Steuersatzketten und Steuersatzwechsel. |
|
||||
| M-80 | Kostenstellen/Kostenträger | `src/backend/Centron.BL/Warehousing/CostCenterBL.cs`, `CostObjectBL.cs` | Kostenrechnerische Zuordnung. |
|
||||
| M-81 | Kalkulation pro Filiale | `src/centron/Centron.WPF.UI/Modules/DataExchange/SupplierOrderPerBranch/` | Filialbezogene Kalkulation. |
|
||||
| M-82 | Produkt-Lifecycle (PLM) | `src/backend/Centron.BL/Finances/ProductLifecycleBL.cs` | Lebenszyklus von Lizenz-/Produktbeständen beim Kunden. |
|
||||
| M-83 | Gutschein-/Voucher-Verwaltung | `src/backend/Centron.BL/VoucherManagement/` | Ausgabe und Einlösung von Gutscheinen. |
|
||||
|
||||
### 1.8 Geräte, Assets, Monitoring
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-84 | Kunden-Assets | `src/backend/Centron.BL/Sales/CustomerAssets/AssetBL.cs`, `CustomerAssetBL.cs` | Beim Kunden installierte Wirtschaftsgüter. |
|
||||
| M-85 | Stammblätter | `src/backend/Centron.BL/Sales/Receipts/…/MasterDataLists`, Tabelle `Stammdat` | Geräteblätter mit Seriennummer, Zählerstand und Rechnungsbezug. |
|
||||
| M-86 | Account-Geräte | `src/backend/Centron.BL/Devices/AccountDeviceBL.cs`, Tabelle `AccountDevices` | Geräteverzeichnis am Account, verknüpfbar mit Tickets. |
|
||||
| M-87 | Asset-Management / DocuBoard | `src/backend/Centron.BL/DocuBoard/`, Tabellen `AssetManagement*` | Inventarisierte IT-Systeme, SNMP-Checks und Monitoringergebnisse. |
|
||||
| M-88 | RMM-Anbindung | `src/backend/Centron.BL/DataExchange/Rmm/`, `Controllers/v1/Integrations/RmmController.cs` | Anbindung von Remote-Monitoring-Systemen. |
|
||||
| M-89 | docuFORM-Anbindung | `Centron.Api.docuFORM/`, `src/backend/Centron.BL/DataExchange/DocuForm/` | Auslesen von Druckerzählerständen. |
|
||||
| M-90 | IT-Planner | `src/backend/Centron.BL/ItPlanner/` | Kategorisierung virtueller Objekte für Checklisten. |
|
||||
|
||||
### 1.9 Administration, Sicherheit, Betrieb
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-91 | Anmeldung und Authentifizierung | `src/backend/Centron.BL/Administration/Logins/Auth/` | Basic-, Active-Directory- und OpenID-Connect-Anmeldung. |
|
||||
| M-92 | Zwei-Faktor-Authentifizierung | `src/backend/Centron.BL/Administration/Logins/TwoFactor/` | Zweiter Faktor per E-Mail oder RADIUS. |
|
||||
| M-93 | Sitzungs-/Ticketverwaltung | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs` | Ausgabe und Ablauf von Sitzungstickets. |
|
||||
| M-94 | Rechteverwaltung | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs` | Benutzergruppen und rund 800 Einzelrechte. |
|
||||
| M-95 | Web-Benutzerkonten | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs` | Kundenzugänge für das Webportal mit eigenem Rechtesystem. |
|
||||
| M-96 | API-Zugriffstoken | `src/backend/Centron.BL/Administration/AccessTokens/` | Persönliche und administrative API-Token. |
|
||||
| M-97 | Lizenzierung | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs` | Freischaltung von Anwendungen und Einzelfunktionen über Lizenz-GUIDs. |
|
||||
| M-98 | Mandanten und Filialen | `src/backend/Centron.BL/Administration/Company/` | Mandanten-, Filial- und Nummernkreisstruktur. |
|
||||
| M-99 | Nummernkreise | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs` | Vergabe fortlaufender Belegnummern je Nummernart. |
|
||||
| M-100 | Mitarbeiterverwaltung | `src/backend/Centron.BL/EmployeeArea/` | Mitarbeiter, Abteilungen, Skills, Urlaub, Mitarbeiterartikel. |
|
||||
| M-101 | Anwendungseinstellungen | `src/backend/Centron.BL/Administration/Settings/` | Zentrale Konfigurationswerte (`ApplicationSettings`). |
|
||||
| M-102 | Konfigurationsdatenbank | `src/backend/Centron.BL/Administration/CentronConfigDb/` | Übergreifende Konfiguration inkl. Hotline-Masterkey. |
|
||||
| M-103 | DB-Skript-/Migrationsengine | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs` | Versionierte Datenbankmigration beim Start. |
|
||||
| M-104 | SQL-Manager | `src/backend/Centron.BL/Administration/SQLManagement/` | Administrative SQL-Ausführung aus der Anwendung. |
|
||||
| M-105 | Datenschutz (DSGVO) | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs` | Auskunft, Löschung und Datenbankbereinigung. |
|
||||
| M-106 | Passwort-Manager | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs` | Verschlüsselte Ablage von Kundenzugangsdaten. |
|
||||
| M-107 | Passwortverwaltung (Altmodul) | `src/backend/Centron.BL/PasswordManagementArea/` | Vorgängermodul der Zugangsdatenverwaltung. |
|
||||
| M-108 | Änderungshistorie | `src/backend/Centron.BL/ChangeTracking/History/` | Feldbezogene Änderungsverfolgung. |
|
||||
| M-109 | Massenupdate | `src/backend/Centron.BL/MassUpdate/MassUpdateBL.cs` | Feldänderungen über viele Datensätze hinweg. |
|
||||
| M-110 | Customizing / Custom Properties | `src/backend/Centron.BL/Customizations/`, `Modules/` | Kundenindividuelle Zusatzfelder und Tabellen. |
|
||||
| M-111 | Telemetrie | `src/backend/Centron.BL/Telemetry/TelemetryBL.cs` | Nutzungszählung von API- und KI-Werkzeugen. |
|
||||
| M-112 | Protokollierung / LogViewer | `src/centron/Centron.WPF.UI/nlog.config`, `Modules/Administration/LogViewer/` | Anwendungsprotokollierung und Protokollansicht. |
|
||||
| M-113 | Deployment und Container | `docker/`, `deployment/`, `azure/` | Auslieferung als Windows-Installer und Linux-Container. |
|
||||
| M-114 | Build- und Testpipeline | `.github/workflows/`, `azure/*.yml`, `tests/` | Automatisierte Übersetzung, Signierung und Prüfung. |
|
||||
| M-115 | Datenqualitätsdienst | `src/backend/Centron.BL/Services/DataQuality/`, `docs/Background Service/DataQualityService.md` | Periodische Konsistenzprüfungen im Hintergrund. |
|
||||
|
||||
### 1.10 Ausgabe, Kommunikation, Suche
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-116 | Report-Engine | `src/backend/Centron.BL/ReportEngine/` | Formulargenerierung (FastReport) und PDF-Export. |
|
||||
| M-117 | Reportverwaltung | `src/centron/Centron.WPF.UI/Modules/Reports/ReportManagement/` | Verwaltung der Formularvorlagen und Reportgruppen. |
|
||||
| M-118 | Reportserver | `src/centron/Centron.WPF.UI/Modules/Administration/ReportServer/` | Zeitgesteuerter Reportversand. |
|
||||
| M-119 | PDF-Signatur | `src/backend/Centron.BL/Security/PdfSigningBL.cs` | Digitale Signatur erzeugter PDF-Dokumente. |
|
||||
| M-120 | Mailversand und Vorlagen | `src/backend/Centron.BL/Mail/` | SMTP/Exchange-Versand, Mailvorlagen, Variablenersetzung. |
|
||||
| M-121 | Textbausteine | `src/backend/Centron.BL/TextModuleArea/` | Wiederverwendbare Textblöcke in Belegen und Mails. |
|
||||
| M-122 | Kalender und Terminplanung | `src/backend/Centron.BL/Calendar/CalendarBL.cs`, `Mail/Exchange/` | Termine und Exchange-Synchronisation. |
|
||||
| M-123 | Terminanfragen | `src/backend/Centron.BL/AppointmentRequests/` | Terminvorschläge an Kunden. |
|
||||
| M-124 | Telefonie / TAPI | `src/backend/Centron.BL/Tapi/PhoneCallBL.cs`, `docs/reference/architecture/tapi.md` | Anrufprotokollierung und Rufnummernauflösung. |
|
||||
| M-125 | Volltext-Indexsuche | `src/backend/Centron.BL/IndexSearch/` | Objektübergreifende Volltextsuche mit eigenem Index. |
|
||||
| M-126 | Dokumentenverwaltung | `src/backend/Centron.BL/Administration/FileManagement/` | Verzeichnisstruktur und Dokumentenablage je Objekt. |
|
||||
| M-127 | Benachrichtigungen | `src/backend/Centron.BL/Notifications/`, `NexusNotifications/` | Push- und In-App-Benachrichtigungen. |
|
||||
| M-128 | Chats | `src/backend/Centron.BL/Chats/ChatBL.cs` | Interne Kurznachrichten. |
|
||||
| M-129 | Tags | `src/backend/Centron.BL/Tags/TagsBL.cs` | Freie Verschlagwortung von Objekten. |
|
||||
| M-130 | Web-Links / Kurz-URLs | `src/backend/Centron.BL/Urls/`, `WebLinks/` | Signierte Kurzlinks mit hinterlegter Aktion. |
|
||||
| M-131 | Dokumentationsbereich | `src/backend/Centron.BL/DocumentationArea/` | Strukturierte Kundendokumentation. |
|
||||
| M-132 | Social Media | `src/backend/Centron.BL/SocialMedia/` | Anbindung sozialer Netzwerke. |
|
||||
| M-133 | Videoportal | `src/backend/Centron.BL/VideoPortal/` | Zuordnung von Schulungsvideos. |
|
||||
|
||||
### 1.11 Web-Oberflächen (c-entron Nexus) und Clients
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-134 | Nexus ServiceBoard | `src/nexus/CentronNexus/ServiceBoard/` | Webbasierte Ticketbearbeitung inkl. Kanban und Planung. |
|
||||
| M-135 | Nexus Kundenportal / WebCart | `src/nexus/CentronNexus/WebCart/` | Kundenportal mit Shop, Belegen, Tickets und Formularen. |
|
||||
| M-136 | Nexus WebOffer | `src/nexus/CentronNexus/WebOffer/` | Belegansicht und -freigabe durch den Kunden. |
|
||||
| M-137 | Nexus Dokumentensignatur | `src/nexus/CentronNexus/DocumentSigning/`, `Office/` | Unterzeichnung und geteilte Dokumente. |
|
||||
| M-138 | Nexus Management | `src/nexus/CentronNexus/Management/` | Verwaltung von Tasks, Ticketmustern und Web-Konten im Web. |
|
||||
| M-139 | Nexus Einstellungen/Branding | `src/nexus/CentronNexus/Settings/` | Mandantenspezifisches Erscheinungsbild und Konfiguration. |
|
||||
| M-140 | Outlook-Add-In | `src/nexus/CentronNexus.OutlookAddIn/` | Zugriff auf Kunden, Belege und Tickets aus Outlook. |
|
||||
| M-141 | Self-Care-Formulare | `src/backend/Centron.BL/SelfCare/`, `Controllers/v1/SelfCare/` | Vom Kunden ausfüllbare Formulare zur Ticketerzeugung. |
|
||||
| M-142 | WPF-Rich-Client | `src/centron/Centron.WPF.UI/` | Hauptbedienoberfläche mit Modulregistrierung und Ribbon. |
|
||||
| M-143 | Gemeinsame Steuerelemente | `src/shared/Centron.Controls/`, `Centron.Core/` | Wiederverwendete UI-Bausteine und Kernbibliothek. |
|
||||
| M-144 | Mobile-Anbindung | `src/backend/Centron.BL/Mobile/MobileBL.cs` | Datenversorgung mobiler Clients. |
|
||||
|
||||
### 1.12 Schnittstellen, Auswertung, Sonstiges
|
||||
|
||||
| ID | Modul / Komponente | Pfad | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-145 | Webservice-Host und REST-API | `src/webservice/`, `src/webservice/Centron.Controllers/` | Versionierte REST-Schnittstelle und Hosting als Dienst/Konsole. |
|
||||
| M-146 | Verbindungsverwaltung | `src/webservice/c-entron.misc.ConnectionManager/`, `Centron.BL/Administration/Connections/` | Verwaltung der Datenbank- und Webserviceverbindungen. |
|
||||
| M-147 | Statistiken und Auswertungen | `src/backend/Centron.BL/Statistics/` | Umsatz-, Ticket-, Vertrags- und MSP-Statistiken. |
|
||||
| M-148 | MSP-Collector | `src/centron/Centron.WPF.UI/Modules/Statistics/MspCollectors/` | Einsammeln von Lizenz-/Nutzungsdaten für MSP-Abrechnung. |
|
||||
| M-149 | Management-Info und Dashboard | `src/centron/Centron.WPF.UI/Modules/Statistics/ManagementInfo/`, `MyCentron/Dashboard/` | Verdichtete Kennzahlen für Führungskräfte. |
|
||||
| M-150 | Mein Tag (MyDay) | `src/backend/Centron.BL/MyDay/` | Persönliche Tagesplanung und Zeitübersicht. |
|
||||
| M-151 | Todo-Liste | `src/backend/Centron.BL/ToDoArea/ToDoBL.cs` | Persönliche und objektbezogene Aufgaben. |
|
||||
| M-152 | KI-Assistent | `src/backend/Centron.BL/ArtificialIntelligence/` | Chat, Textbewertung und Ticketkategorisierung über LLM-APIs. |
|
||||
| M-153 | Externe Werkzeuge / Fernwartung | `src/backend/Centron.BL/ExternalToolsBL/`, `MyDay/Supremo.cs` | Start externer Programme und Fernwartungssitzungen. |
|
||||
| M-154 | TradePool | `src/backend/Centron.BL/TradePool/` | Handelsplattform-Anbindung. |
|
||||
| M-155 | RiverSuite/RiverDivo-Anbindung | `src/backend/Centron.BL/RiverDivo/` | Anbindung der RiverSuite-Produktlinie. |
|
||||
| M-156 | CPra-Konnektor | `src/backend/Centron.BL/CPra/` | Anbindung des Fremdsystems CPra. |
|
||||
| M-157 | Telekom Dive | `src/backend/Centron.BL/DataExchange/TelekomDive/` | Anbindung des Telekom-Dive-Portals. |
|
||||
| M-158 | GFK-Export | `src/backend/Centron.BL/DataExchange/GfkExport/` | Marktforschungsdatenexport. |
|
||||
| M-159 | Objekt-Externreferenzen | `src/backend/Centron.BL/ObjectExternalReferences/` | Verknüpfung interner Objekte mit Fremdsystem-IDs. |
|
||||
| M-160 | Zahlungsverkehrsdateien | `src/backend/Centron.BL/DataExchange/PaymentTransactions/` | Erzeugung von Zahlungsverkehrsdateien. |
|
||||
| M-161 | Produktion | `src/backend/Centron.BL/Production/` | Produktionsaufträge und Maschinenverwaltung. |
|
||||
| M-162 | Datenimport (generisch) | `src/backend/Centron.BL/DataExchange/Import/`, `Entities/Import/` | Generische Importwege für Fremddaten. |
|
||||
| M-163 | Gateway | `src/backend/Centron.BL/Gateway/`, `src/backend/Centron.Gateway/` | Vermittlungsschicht für externe Aufrufe. |
|
||||
| M-164 | Länderverwaltung | `src/backend/Centron.BL/CountryArea/` | Länder, Bundesländer und länderabhängige Steuersätze. |
|
||||
| M-165 | Themes und Oberflächenanpassung | `src/centron/Centron.WPF.UI/Style/`, `Controllers/v1/Administration/ThemesController.cs` | Farbschemata und Layoutanpassungen. |
|
||||
|
||||
**Inventarumfang: 165 Module/Komponenten.**
|
||||
|
||||
Die Abdeckungstabelle in Abschnitt 3 führt jede dieser 165 Zeilen mit Einstufung und Anforderungszahl.
|
||||
Abschnitt 4 enthält den Konsistenzcheck, Abschnitt 5 die Selbstbewertung.
|
||||
|
||||
---
|
||||
|
||||
## 2. Vorgehen im Lauf
|
||||
|
||||
| Schritt | Umsetzung |
|
||||
|---|---|
|
||||
| **0 — Modulinventar** | Vor der ersten Anforderung erstellt (Abschnitt 1), 165 Einträge. Grundlage: `ModuleRegistration.cs` (84 registrierte UI-Module), Verzeichnisstruktur von `Centron.BL`, `Centron.Entities`, `src/apis`, `src/nexus`, `src/webservice`, Betriebsartefakte. |
|
||||
| **0b — Mindestabdeckung** | Jedes Inventarmodul hat mindestens eine Anforderung (Abschnitt 3). Kein Modul steht auf `nicht analysiert`. |
|
||||
| **0c — Vertiefung nach Risiko** | Vertieft wurden zuerst Berechtigungen (`AppRightsBL`, `UserRightsConst`, die vier Prüfmethoden in `ReceiptBL`), Anmeldung und Kennwortbehandlung (`Authenticator`, `BasicAuthenticator`, `SHA1Decoder`, `AESCryptoLogic`, `AccessTokenBL`, `WebAccountBL`), Abrechnung und Fakturierung (`ReceiptBL.SaveReceipt`/`ForwardReceipt`, `InvoiceSpecificLogic`, `DunningRunBL`, `AutomaticFacturaBL`, `TimerBillingBL`, `TaxBL`, `NumberGroupBL`) sowie Datenschutz (`DataSecurityBL`). |
|
||||
| **2 — Artefakterhebung** | Quellcode, DB-Schema-Dump (1.558 Tabellen), Rechtekonstanten, Modulregistrierung, Ressourcendateien, `docs/` (54 Dateien), `CentronRights.md`, `README.md`, `docker/`, `azure/`, `.github/workflows/`. **Nicht erhoben:** Commit-Historie und Ticketreferenzen — das Arbeitsverzeichnis enthält kein Git-Repository der analysierten Codebasis, sondern nur den Dateibestand. |
|
||||
| **3 — Technische Analyse** | Module, Abhängigkeiten, Statusmaschinen (`BarcodeState`, `DunningLevel`, `RmaArticleState`, Zeiterfassung), Validierungslogik (`SaveReceipt`, `HelpdeskBL.DoValidateMandatoryFields`), Berechtigungsprüfungen. |
|
||||
| **4 — Semantische Interpretation** | Trennung in `Fakt` (belegte Beobachtung) und `Aussage` (fachliche Soll-Aussage) in jedem Anforderungsblock. |
|
||||
| **5 — Formalisierung** | 363 Anforderungen im vorgegebenen Blockformat mit Vorbedingung, Ergebnis und Prüfidee. |
|
||||
| **6 — Traceability-Anreicherung** | 740 Artefaktbelege; `Traceability.md` mit 319 Zeilen, maschinell aus den `Tracelinks`- und `Belege`-Feldern erzeugt. |
|
||||
|
||||
**Nicht durchgeführt:** Ausführung des Systems, Datenbankzugriff, Debugging, Einsatz zusätzlicher
|
||||
Analysewerkzeuge. Alle Aussagen stammen aus dem Lesen und Durchsuchen der Dateien.
|
||||
|
||||
---
|
||||
|
||||
## 3. Abdeckungstabelle
|
||||
|
||||
Einstufung: `tief` ≥ 8 Anforderungen, `mittel` 4–7, `flach` 1–3, `nicht analysiert` 0.
|
||||
|
||||
Die Zuordnung Modul → Anforderung wurde maschinell erzeugt, indem die Belege und der Text jeder
|
||||
Anforderung gegen die Pfad- und Bezeichnerschlüssel des jeweiligen Moduls geprüft wurden. Bei
|
||||
fünfzehn Modulen überzeichnet diese Suche das Ergebnis, weil kurze Schlüssel auch fremde Begriffe
|
||||
treffen (`Kunden` in „Kundenstamm", `Mandat` in „Mandant", `Voucher` in „CreditVoucher", `EDI` in
|
||||
`EDIT_INVOICE`, `Employee`, `Signature`, `Exchange`, `Monitoring`). Für diese Module ist der nach
|
||||
Durchsicht verbleibende Wert eingetragen und der Rohwert in der letzten Spalte vermerkt.
|
||||
|
||||
| Modul-ID | Modul | Einstufung | Anzahl Anforderungen | Anforderungs-IDs |
|
||||
|---|---|---|---|---|
|
||||
| M-01 | Belegkern | tief | 75 | StRS-003, StRS-004, StRS-005, StRS-012, StRS-013, StRS-023, StRS-028, StRS-030, StRS-032, StRS-034, StRS-038, StRS-040, StRS-045, StRS-051, StRS-058, SwRS-003, SwRS-009, SwRS-010, … (+57) |
|
||||
| M-02 | Angebote | tief | 12 | StRS-003, StRS-004, SwRS-005, SwRS-012, SwRS-023, SwRS-024, SwRS-191, SyRS-012, SyRS-014, SyRS-015, SyRS-022, SyRS-023 |
|
||||
| M-03 | Aufträge | mittel | 6 | StRS-030, StRS-040, SwRS-005, SwRS-083, SyRS-022, SyRS-113 |
|
||||
| M-04 | Lieferscheine | mittel | 6 | StRS-009, StRS-024, SwRS-005, SwRS-070, SyRS-022, SyRS-032 |
|
||||
| M-05 | Rechnungen | tief | 21 | StRS-005, StRS-028, StRS-029, StRS-040, SwRS-005, SwRS-013, SwRS-014, SwRS-021, SwRS-022, SwRS-082, SwRS-083, SwRS-090, SyRS-013, SyRS-014, SyRS-020, SyRS-021, SyRS-022, SyRS-082, SyRS-083, SyRS-113, SyRS-183 |
|
||||
| M-06 | Gutschriften | mittel | 7 | StRS-006, StRS-024, StRS-040, SwRS-005, SwRS-027, SwRS-070, SyRS-113 |
|
||||
| M-07 | Abholscheine | flach | 2 | StRS-007, SwRS-005 |
|
||||
| M-08 | Belegpositionen | flach | 1 | SyRS-005 |
|
||||
| M-09 | Belegvorlagen | flach | 2 | SwRS-016, SyRS-016 |
|
||||
| M-10 | Belegprotokoll/Progression | mittel | 6 | StRS-051, SwRS-023, SwRS-024, SwRS-154, SyRS-023, SyRS-154 |
|
||||
| M-11 | Belegkonditionen | flach | 2 | SwRS-017, SyRS-017 |
|
||||
| M-12 | Web-Beleg | flach | 3 | StRS-045, SwRS-123, SyRS-123 |
|
||||
| M-13 | Belegsignatur | mittel | 4 | StRS-045, SwRS-124, SyRS-123, SyRS-124 |
|
||||
| M-14 | Provisionsabrechnung | mittel | 4 | StRS-003, StRS-013, SwRS-084, SyRS-034 |
|
||||
| M-15 | Sonderpreise/Produktmatrix | mittel | 4 | StRS-044, SwRS-197, SyRS-004, SyRS-005 |
|
||||
| M-16 | Frachtartikel-Steuerung | flach | 3 | SwRS-065, SyRS-011, SyRS-064 |
|
||||
| M-17 | Verträge (Kern) | tief | 11 | StRS-008, SwRS-017, SwRS-018, SwRS-030, SwRS-084, SwRS-140, SyRS-018, SyRS-030, SyRS-031, SyRS-085, SyRS-140 |
|
||||
| M-18 | Automatische Vertragsabrechnung | mittel | 7 | StRS-009, SwRS-032, SwRS-033, SwRS-088, SyRS-032, SyRS-033, SyRS-165 |
|
||||
| M-19 | Klickabrechnung | mittel | 4 | StRS-010, StRS-049, SwRS-140, SyRS-140 |
|
||||
| M-20 | Pauschalabrechnung | mittel | 5 | StRS-011, SwRS-031, SwRS-102, SyRS-031, SyRS-064 |
|
||||
| M-21 | Vereinfachte Ticketabrechnung | mittel | 4 | StRS-012, SwRS-035, SwRS-180, SyRS-035 |
|
||||
| M-22 | Vertragsarten | flach | 1 | SwRS-193 |
|
||||
| M-23 | Vertragsauswertung | flach | 3 | StRS-054, SwRS-170, SwRS-190 |
|
||||
| M-24 | Vertrags-Datenimport | mittel | 4 | SwRS-033, SwRS-088, SwRS-197, SyRS-033 |
|
||||
| M-25 | Leasing/Service | flach | 1 | SwRS-191 |
|
||||
| M-26 | Adressstamm/Accounts | tief | 13 | StRS-001, StRS-044, SwRS-053, SwRS-080, SwRS-120, SwRS-122, SwRS-199, SyRS-001, SyRS-002, SyRS-080, SyRS-085, SyRS-120, SyRS-122 |
|
||||
| M-27 | Alt-Kundenstamm | tief | 66 | StRS-001, StRS-002, StRS-013, StRS-015, StRS-016, StRS-030, StRS-033, StRS-035, StRS-043, StRS-044, StRS-045, StRS-047, StRS-049, StRS-058, StRS-059, StRS-060, SwRS-011, SwRS-016, … (+48) |
|
||||
| M-28 | Lieferantenstamm | mittel | 5 | StRS-001, StRS-035, SwRS-075, SyRS-002, SyRS-095 |
|
||||
| M-29 | Adressen und Ansprechpartner | tief | 10 | StRS-050, SwRS-004, SwRS-018, SwRS-122, SwRS-140, SwRS-150, SyRS-002, SyRS-003, SyRS-014, SyRS-150 |
|
||||
| M-30 | CRM-Aktivitäten | mittel | 4 | SwRS-183, SwRS-207, SyRS-002, SyRS-183 |
|
||||
| M-31 | CRM-Projekte | flach | 2 | SwRS-192, SwRS-195 |
|
||||
| M-32 | Kampagnen und Mailings | flach | 1 | StRS-057 |
|
||||
| M-33 | Audit/Umfragen | flach | 3 | SwRS-056, SwRS-203, SyRS-056 |
|
||||
| M-34 | Lieferantenverträge | flach | 1 | SwRS-193 |
|
||||
| M-35 | Kundenhotline/Zugangsdaten | mittel | 7 | StRS-047, StRS-048, SwRS-107, SwRS-130, SwRS-131, SwRS-132, SyRS-130 |
|
||||
| M-36 | Geschäftsbereiche/Interessen | flach | 1 | SwRS-194 |
|
||||
| M-37 | Helpdesk (Ticketkern) | tief | 15 | StRS-016, StRS-017, SwRS-050, SwRS-051, SwRS-052, SwRS-053, SwRS-054, SwRS-057, SwRS-121, SwRS-129, SwRS-203, SyRS-050, SyRS-051, SyRS-052, SyRS-053 |
|
||||
| M-38 | Ticketabschluss | tief | 17 | StRS-046, SwRS-004, SwRS-007, SwRS-054, SwRS-055, SwRS-056, SwRS-057, SwRS-112, SwRS-203, SwRS-211, SyRS-050, SyRS-054, SyRS-055, SyRS-056, SyRS-128, SyRS-165, SyRS-183 |
|
||||
| M-39 | Ticketkategorien/-typen/-status | mittel | 4 | StRS-016, SwRS-054, SyRS-054, SyRS-058 |
|
||||
| M-40 | Prioritäten/Eskalation | flach | 2 | StRS-016, SyRS-057 |
|
||||
| M-41 | Ticket-Zeiterfassung | tief | 12 | StRS-014, SwRS-036, SwRS-040, SwRS-041, SwRS-043, SwRS-182, SyRS-035, SyRS-036, SyRS-040, SyRS-041, SyRS-042, SyRS-182 |
|
||||
| M-42 | Ticket-Unterschrift | tief | 12 | StRS-015, StRS-040, StRS-045, SwRS-035, SwRS-040, SwRS-042, SwRS-043, SwRS-107, SwRS-110, SwRS-112, SyRS-012, SyRS-124 |
|
||||
| M-43 | Stundensatz-Aufschläge | flach | 2 | SwRS-036, SyRS-036 |
|
||||
| M-44 | Ticketvorlagen/Muster | mittel | 4 | SwRS-058, SwRS-125, SyRS-058, SyRS-125 |
|
||||
| M-45 | Ticketprozesse | flach | 1 | SwRS-195 |
|
||||
| M-46 | Ticketprojekte | flach | 1 | SwRS-195 |
|
||||
| M-47 | Checklisten | mittel | 4 | StRS-019, SwRS-058, SwRS-202, SyRS-058 |
|
||||
| M-48 | Taskmanagement | flach | 2 | StRS-020, StRS-046 |
|
||||
| M-49 | RMA/Werkstatt | mittel | 5 | StRS-018, SwRS-060, SyRS-054, SyRS-055, SyRS-060 |
|
||||
| M-50 | Mail-Scanner | flach | 2 | StRS-041, SwRS-113 |
|
||||
| M-51 | Externer Helpdesk | flach | 2 | SwRS-175, SwRS-196 |
|
||||
| M-52 | Erwartete Events | flach | 2 | SwRS-179, SyRS-179 |
|
||||
| M-53 | Artikelstamm | tief | 15 | StRS-011, SwRS-027, SwRS-031, SwRS-065, SwRS-066, SwRS-067, SwRS-143, SwRS-181, SwRS-200, SyRS-004, SyRS-031, SyRS-064, SyRS-065, SyRS-181, SyRS-182 |
|
||||
| M-54 | Artikelimport | mittel | 4 | SwRS-067, SwRS-197, SyRS-004, SyRS-033 |
|
||||
| M-55 | Warengruppen | mittel | 5 | StRS-027, SyRS-007, SyRS-009, SyRS-064, SyRS-080 |
|
||||
| M-56 | Lager und Lagerplätze | flach | 1 | StRS-021 |
|
||||
| M-57 | Seriennummern und Barcodes | tief | 11 | StRS-018, StRS-021, StRS-049, SwRS-060, SwRS-061, SwRS-067, SwRS-140, SyRS-010, SyRS-060, SyRS-061, SyRS-140 |
|
||||
| M-58 | Inventur | mittel | 7 | StRS-021, StRS-022, SwRS-062, SwRS-063, SwRS-140, SyRS-009, SyRS-062 |
|
||||
| M-59 | Kommissionierung | mittel | 7 | StRS-023, SwRS-012, SwRS-064, SwRS-102, SyRS-012, SyRS-018, SyRS-063 |
|
||||
| M-60 | Artikeleinheiten/Staffelpreise | flach | 3 | SyRS-004, SyRS-005, SyRS-066 |
|
||||
| M-61 | Stücklisten/Produktfamilien | flach | 3 | SwRS-066, SwRS-067, SyRS-065 |
|
||||
| M-62 | Versandarten/Dienstleister | flach | 3 | SwRS-068, SwRS-069, SyRS-067 |
|
||||
| M-63 | Aktionspreise | flach | 2 | SyRS-004, SyRS-005 |
|
||||
| M-64 | Lieferantenbelege | flach | 3 | StRS-024, SwRS-070, SwRS-193 |
|
||||
| M-65 | Bestellvorschlagsliste | flach | 2 | SwRS-075, SyRS-075 |
|
||||
| M-66 | EDI-Beschaffung | tief | 19 | StRS-016, StRS-025, StRS-026, StRS-032, SwRS-029, SwRS-051, SwRS-071, SwRS-072, SwRS-087, SwRS-109, SyRS-001, SyRS-020, SyRS-051, SyRS-071, SyRS-072, SyRS-109, SyRS-111, SyRS-178, SyRS-182 |
|
||||
| M-67 | ZUGFeRD/XRechnung | flach | 2 | StRS-026, SwRS-072 |
|
||||
| M-68 | ebInterface | flach | 1 | StRS-026 |
|
||||
| M-69 | Distributor-Produktdaten | mittel | 4 | SwRS-073, SwRS-074, SyRS-073, SyRS-074 |
|
||||
| M-70 | Bestellung pro Filiale | flach | 3 | SwRS-076, SwRS-199, SyRS-076 |
|
||||
| M-71 | Buchhaltungsexport/-import | mittel | 5 | StRS-027, SwRS-080, SwRS-087, SyRS-009, SyRS-080 |
|
||||
| M-72 | Mahnwesen | tief | 8 | StRS-028, StRS-029, StRS-030, SwRS-082, SwRS-083, SyRS-082, SyRS-083, SyRS-084 |
|
||||
| M-73 | Offene Posten (OPOS) | flach | 1 | StRS-028 |
|
||||
| M-74 | Zahlungseingang | flach | 2 | SwRS-086, SyRS-087 |
|
||||
| M-75 | SEPA-Mandate | tief | 8 | StRS-003, StRS-034, SwRS-050, SwRS-084, SwRS-093, SyRS-050, SyRS-085, SyRS-093 |
|
||||
| M-76 | Online-Banking | flach | 2 | SwRS-085, SyRS-086 |
|
||||
| M-77 | Bankverbindungen | flach | 1 | SyRS-085 |
|
||||
| M-78 | Kontenrahmen | flach | 3 | SwRS-080, SwRS-199, SyRS-080 |
|
||||
| M-79 | Mehrwertsteuer | mittel | 6 | SwRS-007, SwRS-008, SwRS-009, SyRS-006, SyRS-007, SyRS-008 |
|
||||
| M-80 | Kostenstellen/Kostenträger | flach | 3 | StRS-027, SwRS-194, SwRS-198 |
|
||||
| M-81 | Kalkulation pro Filiale | flach | 1 | SwRS-199 |
|
||||
| M-82 | Produkt-Lifecycle (PLM) | flach | 2 | SwRS-102, SyRS-089 |
|
||||
| M-83 | Gutschein-/Voucher-Verwaltung | tief | 10 | StRS-006, StRS-024, StRS-040, SwRS-005, SwRS-027, SwRS-065, SwRS-070, SwRS-200, SyRS-064, SyRS-113 |
|
||||
| M-84 | Kunden-Assets | tief | 18 | StRS-008, StRS-009, StRS-012, StRS-049, SwRS-013, SwRS-032, SwRS-033, SwRS-035, SwRS-057, SwRS-088, SwRS-140, SwRS-143, SwRS-180, SyRS-003, SyRS-030, SyRS-032, SyRS-033, SyRS-140 |
|
||||
| M-85 | Stammblätter | tief | 11 | StRS-010, StRS-049, SwRS-017, SwRS-018, SwRS-140, SwRS-176, SwRS-198, SwRS-201, SyRS-001, SyRS-140, SyRS-176 |
|
||||
| M-86 | Account-Geräte | mittel | 4 | StRS-049, SwRS-141, SyRS-002, SyRS-140 |
|
||||
| M-87 | Asset-Management/DocuBoard | tief | 8 | StRS-049, StRS-062, SwRS-030, SwRS-142, SwRS-161, SyRS-030, SyRS-100, SyRS-140 |
|
||||
| M-88 | RMM-Anbindung | mittel | 4 | StRS-062, SwRS-087, SwRS-175, SyRS-175 |
|
||||
| M-89 | docuFORM-Anbindung | mittel | 5 | StRS-010, StRS-062, SwRS-087, SwRS-175, SwRS-201 |
|
||||
| M-90 | IT-Planner | flach | 1 | SwRS-202 |
|
||||
| M-91 | Anmeldung/Authentifizierung | tief | 15 | StRS-033, StRS-037, StRS-061, SwRS-003, SwRS-103, SwRS-104, SwRS-105, SwRS-106, SwRS-165, SyRS-102, SyRS-104, SyRS-105, SyRS-106, SyRS-107, SyRS-165 |
|
||||
| M-92 | Zwei-Faktor-Authentifizierung | flach | 3 | SwRS-003, SwRS-104, SyRS-105 |
|
||||
| M-93 | Sitzungs-/Ticketverwaltung | tief | 11 | StRS-033, StRS-037, SwRS-100, SwRS-101, SwRS-121, SyRS-100, SyRS-101, SyRS-103, SyRS-104, SyRS-105, SyRS-106 |
|
||||
| M-94 | Rechteverwaltung | tief | 37 | StRS-006, StRS-007, StRS-017, StRS-022, StRS-024, StRS-028, StRS-031, StRS-032, StRS-050, StRS-054, StRS-056, SwRS-006, SwRS-090, SwRS-095, SwRS-109, SwRS-142, SwRS-192, SwRS-208, … (+19) |
|
||||
| M-95 | Web-Benutzerkonten | tief | 15 | StRS-017, StRS-033, StRS-044, SwRS-053, SwRS-100, SwRS-101, SwRS-120, SwRS-121, SwRS-122, SwRS-126, SwRS-173, SyRS-051, SyRS-120, SyRS-121, SyRS-122 |
|
||||
| M-96 | API-Zugriffstoken | mittel | 6 | SwRS-085, SwRS-102, SwRS-108, SwRS-109, SyRS-086, SyRS-109 |
|
||||
| M-97 | Lizenzierung | tief | 22 | StRS-011, StRS-036, StRS-037, StRS-056, StRS-057, SwRS-034, SwRS-088, SwRS-101, SwRS-102, SwRS-103, SwRS-109, SwRS-160, SwRS-177, SwRS-192, SwRS-193, SyRS-018, SyRS-089, SyRS-103, SyRS-104, SyRS-109, SyRS-170, SyRS-178 |
|
||||
| M-98 | Mandanten und Filialen | tief | 21 | StRS-003, StRS-017, StRS-027, StRS-032, StRS-034, SwRS-050, SwRS-059, SwRS-076, SwRS-080, SwRS-092, SwRS-093, SwRS-194, SwRS-199, SyRS-009, SyRS-020, SyRS-050, SyRS-076, SyRS-080, SyRS-092, SyRS-093, SyRS-126 |
|
||||
| M-99 | Nummernkreise | tief | 13 | StRS-007, StRS-018, StRS-034, StRS-035, StRS-043, SwRS-093, SwRS-094, SwRS-095, SwRS-192, SyRS-093, SyRS-094, SyRS-095, SyRS-115 |
|
||||
| M-100 | Mitarbeiterverwaltung | tief | 19 | StRS-013, StRS-029, StRS-032, StRS-050, StRS-051, StRS-061, SwRS-003, SwRS-041, SwRS-082, SwRS-093, SwRS-170, SwRS-181, SwRS-182, SyRS-041, SyRS-092, SyRS-093, SyRS-130, SyRS-181, SyRS-182 |
|
||||
| M-101 | Anwendungseinstellungen | flach | 1 | SwRS-203 |
|
||||
| M-102 | Konfigurationsdatenbank | mittel | 4 | StRS-047, SwRS-107, SwRS-131, SyRS-130 |
|
||||
| M-103 | DB-Skript-/Migrationsengine | mittel | 6 | StRS-053, SwRS-161, SwRS-162, SyRS-161, SyRS-162, SyRS-165 |
|
||||
| M-104 | SQL-Manager | flach | 2 | SwRS-177, SyRS-177 |
|
||||
| M-105 | Datenschutz (DSGVO) | tief | 8 | StRS-050, SwRS-023, SwRS-150, SwRS-151, SwRS-152, SyRS-150, SyRS-151, SyRS-152 |
|
||||
| M-106 | Passwort-Manager | tief | 8 | StRS-047, StRS-048, StRS-059, SwRS-107, SwRS-130, SwRS-131, SwRS-132, SyRS-130 |
|
||||
| M-107 | Passwortverwaltung (Altmodul) | mittel | 4 | StRS-047, StRS-048, SyRS-130, SyRS-131 |
|
||||
| M-108 | Änderungshistorie | tief | 17 | StRS-018, StRS-019, StRS-020, StRS-021, StRS-044, StRS-051, SwRS-040, SwRS-057, SwRS-060, SwRS-067, SwRS-153, SwRS-154, SyRS-040, SyRS-054, SyRS-060, SyRS-153, SyRS-154 |
|
||||
| M-109 | Massenupdate | flach | 2 | SwRS-176, SyRS-176 |
|
||||
| M-110 | Customizing/Custom Properties | mittel | 4 | StRS-047, StRS-059, SwRS-130, SyRS-130 |
|
||||
| M-111 | Telemetrie | flach | 3 | StRS-056, SwRS-167, SyRS-167 |
|
||||
| M-112 | Protokollierung/LogViewer | mittel | 4 | SwRS-105, SwRS-165, SyRS-106, SyRS-165 |
|
||||
| M-113 | Deployment und Container | flach | 3 | StRS-052, SwRS-160, SyRS-160 |
|
||||
| M-114 | Build- und Testpipeline | mittel | 6 | SwRS-163, SwRS-164, SwRS-211, SyRS-073, SyRS-163, SyRS-164 |
|
||||
| M-115 | Datenqualitätsdienst | flach | 3 | SwRS-111, SwRS-166, SyRS-166 |
|
||||
| M-116 | Report-Engine | mittel | 6 | StRS-038, SwRS-028, SwRS-110, SwRS-178, SwRS-206, SyRS-110 |
|
||||
| M-117 | Reportverwaltung | mittel | 6 | StRS-038, SwRS-110, SwRS-178, SwRS-206, SyRS-110, SyRS-178 |
|
||||
| M-118 | Reportserver | flach | 1 | SyRS-178 |
|
||||
| M-119 | PDF-Signatur | flach | 1 | SyRS-124 |
|
||||
| M-120 | Mailversand und Vorlagen | tief | 14 | StRS-040, StRS-041, StRS-042, StRS-045, StRS-057, SwRS-053, SwRS-058, SwRS-112, SwRS-113, SwRS-114, SwRS-124, SyRS-113, SyRS-114, SyRS-124 |
|
||||
| M-121 | Textbausteine | flach | 2 | StRS-058, SwRS-015 |
|
||||
| M-122 | Kalender und Terminplanung | tief | 18 | StRS-027, StRS-040, StRS-042, StRS-062, SwRS-076, SwRS-087, SwRS-112, SwRS-114, SwRS-173, SwRS-175, SwRS-196, SwRS-197, SwRS-199, SwRS-201, SwRS-214, SyRS-076, SyRS-088, SyRS-181 |
|
||||
| M-123 | Terminanfragen | flach | 1 | SwRS-204 |
|
||||
| M-124 | Telefonie/TAPI | flach | 3 | StRS-043, SwRS-115, SyRS-115 |
|
||||
| M-125 | Volltext-Indexsuche | mittel | 5 | StRS-055, SwRS-023, SwRS-171, SyRS-023, SyRS-171 |
|
||||
| M-126 | Dokumentenverwaltung | mittel | 7 | StRS-039, StRS-045, SwRS-111, SwRS-124, SyRS-111, SyRS-123, SyRS-124 |
|
||||
| M-127 | Benachrichtigungen | mittel | 7 | StRS-046, SwRS-041, SwRS-126, SwRS-128, SwRS-205, SyRS-041, SyRS-128 |
|
||||
| M-128 | Chats | flach | 1 | SwRS-205 |
|
||||
| M-129 | Tags | flach | 1 | SwRS-206 |
|
||||
| M-130 | Web-Links/Kurz-URLs | flach | 1 | SwRS-207 |
|
||||
| M-131 | Dokumentationsbereich | flach | 1 | SwRS-208 |
|
||||
| M-132 | Social Media | flach | 1 | SwRS-209 |
|
||||
| M-133 | Videoportal | flach | 1 | SwRS-210 |
|
||||
| M-134 | Nexus ServiceBoard | tief | 10 | StRS-046, SwRS-059, SwRS-101, SwRS-102, SwRS-141, SwRS-182, SwRS-215, SyRS-057, SyRS-059, SyRS-115 |
|
||||
| M-135 | Nexus Kundenportal/WebCart | mittel | 6 | StRS-044, SwRS-025, SwRS-125, SwRS-126, SyRS-004, SyRS-125 |
|
||||
| M-136 | Nexus WebOffer | flach | 1 | SyRS-123 |
|
||||
| M-137 | Nexus Dokumentensignatur | flach | 3 | StRS-045, SwRS-124, SyRS-124 |
|
||||
| M-138 | Nexus Management | mittel | 5 | StRS-020, SwRS-058, SwRS-125, SyRS-058, SyRS-125 |
|
||||
| M-139 | Nexus Einstellungen/Branding | mittel | 4 | SwRS-126, SwRS-128, SyRS-126, SyRS-127 |
|
||||
| M-140 | Outlook-Add-In | flach | 2 | SwRS-127, SyRS-127 |
|
||||
| M-141 | Self-Care-Formulare | flach | 3 | SwRS-125, SwRS-173, SyRS-125 |
|
||||
| M-142 | WPF-Rich-Client | tief | 61 | StRS-001, StRS-002, StRS-009, StRS-010, StRS-011, StRS-013, StRS-025, StRS-027, StRS-036, StRS-042, StRS-048, StRS-054, StRS-055, StRS-056, StRS-057, StRS-059, StRS-060, SwRS-001, … (+43) |
|
||||
| M-143 | Gemeinsame Steuerelemente | tief | 8 | SwRS-093, SwRS-107, SwRS-164, SwRS-211, SyRS-107, SyRS-108, SyRS-112, SyRS-165 |
|
||||
| M-144 | Mobile-Anbindung | flach | 1 | SwRS-212 |
|
||||
| M-145 | Webservice-Host und REST-API | tief | 21 | StRS-019, StRS-026, StRS-033, StRS-052, StRS-062, SwRS-058, SwRS-069, SwRS-091, SwRS-173, SwRS-174, SwRS-175, SwRS-196, SwRS-201, SyRS-091, SyRS-105, SyRS-125, SyRS-170, SyRS-173, SyRS-174, SyRS-175, SyRS-182 |
|
||||
| M-146 | Verbindungsverwaltung | flach | 3 | SwRS-002, SwRS-168, SyRS-168 |
|
||||
| M-147 | Statistiken und Auswertungen | tief | 8 | StRS-046, StRS-054, SwRS-057, SwRS-088, SwRS-170, SwRS-182, SwRS-190, SyRS-182 |
|
||||
| M-148 | MSP-Collector | mittel | 6 | StRS-054, SwRS-088, SwRS-170, SwRS-190, SyRS-033, SyRS-089 |
|
||||
| M-149 | Management-Info und Dashboard | mittel | 4 | StRS-054, SwRS-190, SwRS-215, SyRS-170 |
|
||||
| M-150 | Mein Tag (MyDay) | flach | 3 | StRS-046, SwRS-213, SwRS-215 |
|
||||
| M-151 | Todo-Liste | mittel | 6 | StRS-020, StRS-046, SwRS-023, SwRS-215, SyRS-023, SyRS-054 |
|
||||
| M-152 | KI-Assistent | mittel | 6 | StRS-056, SwRS-102, SwRS-167, SwRS-172, SyRS-167, SyRS-172 |
|
||||
| M-153 | Externe Werkzeuge/Fernwartung | flach | 1 | SwRS-213 |
|
||||
| M-154 | TradePool | flach | 2 | StRS-062, SwRS-214 |
|
||||
| M-155 | RiverSuite/RiverDivo | flach | 2 | StRS-062, SwRS-214 |
|
||||
| M-156 | CPra-Konnektor | flach | 2 | StRS-062, SwRS-214 |
|
||||
| M-157 | Telekom Dive | mittel | 4 | SwRS-087, SwRS-175, SwRS-214, SyRS-175 |
|
||||
| M-158 | GFK-Export | flach | 2 | SwRS-087, SyRS-088 |
|
||||
| M-159 | Objekt-Externreferenzen | mittel | 5 | StRS-062, SwRS-023, SwRS-175, SyRS-023, SyRS-175 |
|
||||
| M-160 | Zahlungsverkehrsdateien | flach | 2 | SwRS-087, SyRS-088 |
|
||||
| M-161 | Produktion | mittel | 6 | StRS-052, StRS-060, SwRS-035, SwRS-067, SwRS-180, SyRS-180 |
|
||||
| M-162 | Datenimport (generisch) | flach | 1 | SwRS-197 |
|
||||
| M-163 | Gateway | mittel | 4 | StRS-025, SwRS-071, SwRS-214, SyRS-071 |
|
||||
| M-164 | Länderverwaltung | flach | 1 | SyRS-008 |
|
||||
| M-165 | Themes/Oberflächenanpassung | flach | 1 | SyRS-126 |
|
||||
|
||||
**Zusammenfassung der Abdeckung:**
|
||||
|
||||
| Einstufung | Module | Anteil |
|
||||
|---|---|---|
|
||||
| tief (≥ 8 Anforderungen) | 23 | 13,9 % |
|
||||
| mittel (4–7) | 64 | 38,8 % |
|
||||
| flach (1–3) | 78 | 47,3 % |
|
||||
| nicht analysiert (0) | **0** | 0 % |
|
||||
| **Summe** | **165** | **100 %** |
|
||||
|
||||
---
|
||||
|
||||
## 4. Konsistenzcheck über das gesamte Anforderungs-Set
|
||||
|
||||
Der Check wurde maschinell über alle 363 Anforderungsblöcke ausgeführt (Auswertung der Felder `ID`,
|
||||
`Belege`, `Tracelinks`, `Konsolidierung`, `Übernahmewürdigkeit`, `Status`, `Qualitätsmerkmal`).
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---|---|
|
||||
| Doppelte oder mehrfach vergebene IDs | **0** — alle 363 IDs sind eindeutig (62 StRS, 132 SyRS, 169 SwRS). |
|
||||
| Anforderungen ohne Beleg | **0** — jede Anforderung führt mindestens einen Beleg; insgesamt 740 Belege. |
|
||||
| Anforderungen ohne Angabe zur `Übernahmewürdigkeit` | **0** |
|
||||
| Anforderungen ohne `Tracelinks` | **0** |
|
||||
| Tracelinks auf nicht existierende IDs | **0** — vier zunächst leere Verweise (`SyRS-130`, `SyRS-131`, `SyRS-140`, ein Tippfehler `SyRS-200`) wurden im Lauf behoben, indem die fehlenden Anforderungen ergänzt beziehungsweise der Verweis korrigiert wurde. |
|
||||
| Nicht-funktionale Anforderungen ohne ISO-25010-Zuordnung | **0** — alle 46 nicht-funktionalen Anforderungen führen das Merkmal im Feld `Qualitätsmerkmal`. |
|
||||
| Doppelte Titel | **0** |
|
||||
| Inhaltlich deckungsgleiche Anforderungen ohne Konsolidierungsmarkierung | **0** — ein automatischer Ähnlichkeitsvergleich aller Paare (Feld `Aussage`, Schwelle 0,72) liefert zwei Paare: `StRS-022`/`SyRS-062` (0,83) und `SwRS-063`/`SwRS-093` (0,73). Beide sind bereits als Konsolidierungskandidat markiert. `StRS-022`/`SyRS-062` beschreiben denselben Sachverhalt auf zwei Ebenen und sind damit gemäß Vorgabe **kein** Konsolidierungsfall; die Verbindung stellen die Tracelinks her. |
|
||||
| Abgleich `Hypothesen.md` gegen Inline-Markierungen | **deckungsgleich** — 5 Anforderungen tragen `Status: HYPOTHESE`, dieselben 5 tragen die Inline-Markierung `[HYPOTHESE]` im Feld `Aussage`, und dieselben 5 stehen in `Hypothesen.md`. `Hypothesen.md` enthält keine zusätzlichen freien Fragen; diese stehen in Abschnitt 5.4. |
|
||||
|
||||
### 4.1 Belegsituation im Überblick
|
||||
|
||||
| Kennzahl | Wert |
|
||||
|---|---|
|
||||
| Belege gesamt | 740 |
|
||||
| davon `PRIMÄR` | 490 (66,2 %) |
|
||||
| davon `SEKUNDÄR` | 187 (25,3 %) |
|
||||
| davon `KONTEXT` | 63 (8,5 %) |
|
||||
| Anforderungen mit genau einem Beleg | 76 (20,9 %) |
|
||||
| Anforderungen ohne `PRIMÄR`-Beleg | 1 (`SyRS-005`, als `[HYPOTHESE]` geführt) |
|
||||
| Belege je Anforderung (Durchschnitt) | 2,04 |
|
||||
|
||||
### 4.2 Verteilung nach Typ und Übernahmewürdigkeit
|
||||
|
||||
| Typ | Anzahl | | Übernahmewürdigkeit | Anzahl |
|
||||
|---|---|---|---|---|
|
||||
| funktional | 147 | | übernehmen | 336 |
|
||||
| Daten | 87 | | veraltet | 14 |
|
||||
| Sicherheit | 55 | | Workaround | 12 |
|
||||
| nicht-funktional | 46 | | Sonderfall | 1 |
|
||||
| Schnittstelle | 28 | | | |
|
||||
|
||||
ISO-25010-Merkmale der 46 nicht-funktionalen Anforderungen: Wartbarkeit 29, Zuverlässigkeit 7,
|
||||
Übertragbarkeit 4, Performance-Effizienz 4, Benutzbarkeit 2.
|
||||
|
||||
Konsolidierungskandidaten: **67** von 363 Anforderungen (18,5 %).
|
||||
|
||||
### 4.3 Liste der risikorelevanten Anforderungen
|
||||
|
||||
Als risikorelevant gilt jede Anforderung vom Typ `Sicherheit` sowie jede, deren `Titel`, `Fakt` oder
|
||||
`Aussage` Berechtigungen, Abrechnung, Fakturierung, Preisfindung, Mahnwesen, Zahlungsverkehr,
|
||||
Lizenzierung, Kennwörter, Verschlüsselung, Token, Anmeldung, Datenschutz, Steuersätze,
|
||||
Kontingente, Belegnummern, Signaturen oder Zugangsdaten betrifft.
|
||||
|
||||
**Ergebnis: 173 risikorelevante Anforderungen. Davon 172 mit mindestens einem `PRIMÄR`-Beleg; die
|
||||
eine Ausnahme (`SyRS-005`) ist als `[HYPOTHESE]` gekennzeichnet. Verstöße gegen die risikobasierte
|
||||
Priorisierung: 0.**
|
||||
|
||||
| ID | Titel | PRIMÄR-Beleg vorhanden | Status |
|
||||
|---|---|---|---|
|
||||
| StRS-003 | Durchgängige Belegkette vom Angebot zur Rechnung | ja | belegt |
|
||||
| StRS-005 | Fakturierung erbrachter Leistungen | ja | belegt |
|
||||
| StRS-006 | Gutschriften als wertmäßige Korrektur | ja | belegt |
|
||||
| StRS-007 | Abholscheine und Barverkauf | ja | belegt |
|
||||
| StRS-008 | Serviceverträge mit wiederkehrender Abrechnung | ja | belegt |
|
||||
| StRS-009 | Automatische Erzeugung von Vertragsrechnungen | ja | belegt |
|
||||
| StRS-010 | Abrechnung nach Zählerständen (Klickabrechnung) | ja | belegt |
|
||||
| StRS-011 | Pauschalabrechnung von Projekten | ja | belegt |
|
||||
| StRS-012 | Abrechnung erfasster Ticketzeiten | ja | belegt |
|
||||
| StRS-013 | Provisionsabrechnung für Vertriebsmitarbeiter | ja | belegt |
|
||||
| StRS-015 | Bestätigung erbrachter Leistung durch Kundenunterschrift | ja | belegt |
|
||||
| StRS-017 | Abgestufte Sichtbarkeit von Tickets | ja | belegt |
|
||||
| StRS-024 | Beschaffung über Lieferantenbelege | ja | belegt |
|
||||
| StRS-025 | Elektronischer Datenaustausch mit Distributoren | ja | belegt |
|
||||
| StRS-026 | Elektronische Rechnungsformate | ja | belegt |
|
||||
| StRS-028 | Offene-Posten-Verwaltung | ja | belegt |
|
||||
| StRS-029 | Mehrstufiges Mahnwesen | ja | belegt |
|
||||
| StRS-030 | Auftragssperre bei erreichter Mahnstufe | ja | belegt |
|
||||
| StRS-031 | Rollenbasierte Berechtigungsverwaltung | ja | belegt |
|
||||
| StRS-032 | Einschränkende Rechte auf eigene Objekte oder eigene Filiale | ja | belegt |
|
||||
| StRS-033 | Anmeldung über mehrere Identitätsquellen | ja | belegt |
|
||||
| StRS-034 | Mandanten- und Filialstruktur | ja | belegt |
|
||||
| StRS-035 | Lückenlose Belegnummernvergabe | ja | belegt |
|
||||
| StRS-036 | Lizenzabhängige Funktionsfreischaltung | ja | belegt |
|
||||
| StRS-037 | Begrenzung gleichzeitiger Anmeldungen über Lizenzanzahl | ja | belegt |
|
||||
| StRS-040 | E-Mail-Kommunikation aus dem Vorgang heraus | ja | belegt |
|
||||
| StRS-043 | Telefonieanbindung mit Anruferkennung | ja | belegt |
|
||||
| StRS-045 | Belegfreigabe und Unterzeichnung durch den Kunden | ja | belegt |
|
||||
| StRS-047 | Verwaltung von Kundenzugangsdaten | ja | belegt |
|
||||
| StRS-048 | Ablösung des alten Zugangsdatenmoduls | ja | belegt |
|
||||
| StRS-049 | Verwaltung installierter Kundengeräte | ja | belegt |
|
||||
| StRS-050 | Wahrung der Betroffenenrechte nach DSGVO | ja | belegt |
|
||||
| StRS-054 | Auswertungen und Kennzahlen für die Unternehmenssteuerung | ja | belegt |
|
||||
| StRS-055 | Objektübergreifende Volltextsuche | ja | belegt |
|
||||
| StRS-056 | KI-gestützte Assistenz | ja | belegt |
|
||||
| StRS-057 | Kampagnen und Serienkommunikation | ja | belegt |
|
||||
| StRS-059 | Kundenindividuelle Zusatzfelder | ja | belegt |
|
||||
| StRS-061 | Mitarbeiterverwaltung als Grundlage der Zuständigkeit | ja | belegt |
|
||||
| SyRS-001 | Rechteprüfung bei Anlage und Änderung von Geschäftspartnern | ja | belegt |
|
||||
| SyRS-004 | Kundenindividuelle Sonderpreise | ja | belegt |
|
||||
| SyRS-005 | Mehrstufige Preisquellen mit definierter Rangfolge | **nein** | HYPOTHESE |
|
||||
| SyRS-006 | Steuersatzwechsel über verkettete Steuersätze | ja | belegt |
|
||||
| SyRS-007 | Massenumstellung von Artikelsteuersätzen mit Preisoption | ja | belegt |
|
||||
| SyRS-009 | Warengruppenhierarchie mit Erlöskontozuordnung | ja | belegt |
|
||||
| SyRS-013 | Belegsperre während der Bearbeitung | ja | belegt |
|
||||
| SyRS-017 | Zahlungsziel aus Zahlungskondition | ja | belegt |
|
||||
| SyRS-018 | Abweichende Liefer-, Rechnungs- und Lizenznehmeradresse | ja | belegt |
|
||||
| SyRS-020 | Rechteprüfung an jedem Belegänderungspunkt | ja | belegt |
|
||||
| SyRS-021 | Getrennte Rechte für Einkaufs- und Verkaufspreisänderung | ja | belegt |
|
||||
| SyRS-023 | Gemeinsames Objektprotokoll über Objektart und Objekt-ID | ja | belegt |
|
||||
| SyRS-030 | Kontingentverbrauch und Restkontingent eines Vertrags | ja | belegt |
|
||||
| SyRS-031 | Ausgleichsartikel für Kontingentsalden | ja | belegt |
|
||||
| SyRS-032 | Stichtagsbezogene Ermittlung fälliger Abrechnungen | ja | belegt |
|
||||
| SyRS-034 | Gegenseitiger Ausschluss der Provisionsmodule | ja | belegt |
|
||||
| SyRS-035 | Einmalige Abrechnung eines Zeiteintrags | ja | belegt |
|
||||
| SyRS-036 | Stundensatzzuschläge nach Zeitfenstern | ja | belegt |
|
||||
| SyRS-042 | Löschen von Zeiteinträgen nur mit eigenem Recht | ja | belegt |
|
||||
| SyRS-051 | Rechteprüfungen beim Speichern eines Tickets | ja | belegt |
|
||||
| SyRS-055 | Ticketabschluss trotz offener RMA | ja | HYPOTHESE |
|
||||
| SyRS-057 | Weiterleitung und Eskalation von Tickets | ja | belegt |
|
||||
| SyRS-064 | Rollen von Systemartikeln | ja | belegt |
|
||||
| SyRS-065 | Artikelbezogene Sichtbarkeits- und Sperrsteuerung | ja | belegt |
|
||||
| SyRS-070 | Erkennung doppelter Lieferantenrechnungsnummern | ja | belegt |
|
||||
| SyRS-073 | Bezug von Produktdaten externer Kataloge | ja | belegt |
|
||||
| SyRS-074 | Kontingentüberwachung externer Katalogzugriffe | ja | belegt |
|
||||
| SyRS-080 | Kontenfindung nach Artikel, Warengruppe und Filiale | ja | belegt |
|
||||
| SyRS-081 | Erfassung des Bezahltstatus mit Herkunftsangabe | ja | belegt |
|
||||
| SyRS-082 | Prüfung und Vorschau vor dem Mahnlauf | ja | belegt |
|
||||
| SyRS-083 | Rücknahme eines Mahnlaufs um genau eine Stufe | ja | belegt |
|
||||
| SyRS-084 | Keine Mahnstufensperre auf der Lieferantenseite | ja | belegt |
|
||||
| SyRS-086 | Kontoumsatzabruf über finAPI mit eigenem Recht | ja | belegt |
|
||||
| SyRS-087 | Protokoll der Zahlungseingänge mit eigener Laufnummer | ja | belegt |
|
||||
| SyRS-088 | Erzeugung von Zahlungsverkehrsdateien | ja | belegt |
|
||||
| SyRS-089 | Produktlebenszyklus von Lizenzbeständen | ja | belegt |
|
||||
| SyRS-090 | Rechteermittlung ausschließlich über Gruppenzugehörigkeit | ja | belegt |
|
||||
| SyRS-091 | Deklarative Rechteprüfung an REST-Endpunkten | ja | belegt |
|
||||
| SyRS-092 | Filialbeschränkung als eigenständige Prüfstufe | ja | belegt |
|
||||
| SyRS-093 | Hierarchische Nummernkreisauflösung über Mitarbeiter, Filiale und Mandant | ja | belegt |
|
||||
| SyRS-100 | Sitzungsticket mit anwendungsabhängiger Gültigkeitsdauer | ja | belegt |
|
||||
| SyRS-102 | Anwendungsbezogene Zugangsrechte bei der Anmeldung | ja | belegt |
|
||||
| SyRS-103 | Lizenzprüfung mit Anzahl, Ablaufdatum und Versionsgrenze | ja | belegt |
|
||||
| SyRS-104 | Wiederverwendung bestehender Sitzungen vor der Lizenzprüfung | ja | belegt |
|
||||
| SyRS-105 | Zwei-Faktor-Authentifizierung als zweite Prüfstufe | ja | belegt |
|
||||
| SyRS-106 | Protokollierung von Anmeldeversuchen | ja | belegt |
|
||||
| SyRS-107 | Kennwortspeicherung der Anwendungsbenutzer | ja | belegt |
|
||||
| SyRS-108 | Symmetrische Verschlüsselung mit fest hinterlegtem Ersatzschlüssel | ja | belegt |
|
||||
| SyRS-109 | Erzeugung und Prüfung von API-Zugriffstoken | ja | belegt |
|
||||
| SyRS-112 | Unterdrückung des Versands an externe Empfänger außerhalb von Freigabeversionen | ja | belegt |
|
||||
| SyRS-115 | Anrufprotokollierung mit Vorgangsbezug | ja | belegt |
|
||||
| SyRS-120 | Eigenes Rechtesystem für Web-Benutzerkonten | ja | belegt |
|
||||
| SyRS-121 | Sperre der Belegeinsicht für Web-Benutzer in der Fachlogik | ja | belegt |
|
||||
| SyRS-122 | Kennwortregeln und Kennwortversand für Web-Konten | ja | belegt |
|
||||
| SyRS-123 | Belegfreigabe über Einmal-Token ohne Anmeldung | ja | belegt |
|
||||
| SyRS-124 | Erfassung und Speicherung der Unterschrift im Browser | ja | belegt |
|
||||
| SyRS-126 | Mandantenspezifisches Erscheinungsbild der Weboberfläche | ja | belegt |
|
||||
| SyRS-150 | Ermittlung löschbarer Kontaktdaten nach DSGVO | ja | belegt |
|
||||
| SyRS-151 | Nicht implementierte Löschpfade im Datenschutzmodul | ja | HYPOTHESE |
|
||||
| SyRS-152 | Bereinigung nicht mehr benötigter Datenbestände | ja | belegt |
|
||||
| SyRS-154 | Feldbezogene Änderungshistorie ausgewählter Belegangaben | ja | belegt |
|
||||
| SyRS-161 | Ausführung fehlender Datenbankskripte vor der Anmeldung | ja | belegt |
|
||||
| SyRS-170 | Getrennte Rechte je Auswertung | ja | belegt |
|
||||
| SyRS-171 | Bedarfsgesteuerte und vollständige Indexaktualisierung | ja | belegt |
|
||||
| SyRS-174 | Beschränkung von Endpunkten auf die gehostete Betriebsform | ja | belegt |
|
||||
| SyRS-176 | Feldänderungen über viele Datensätze hinweg | ja | belegt |
|
||||
| SyRS-177 | Administrative SQL-Ausführung aus der Anwendung | ja | belegt |
|
||||
| SyRS-178 | Zeitgesteuerter Reportversand | ja | belegt |
|
||||
| SyRS-179 | Überwachung erwarteter, wiederkehrender Ereignisse | ja | belegt |
|
||||
| SyRS-181 | Abwesenheits- und Urlaubsverwaltung als Planungsgrundlage | ja | belegt |
|
||||
| SyRS-182 | Mitarbeiterartikel als Bindeglied zwischen Person und Leistung | ja | belegt |
|
||||
| SyRS-130 | Verschlüsselte Ablage und protokollierter Zugriff auf Zugangsdaten | ja | belegt |
|
||||
| SyRS-131 | Unvollständige Kennwortspeicherung im abgelösten Zugangsdatenmodul | ja | belegt |
|
||||
| SwRS-013 | Belegartspezifische Sperrentitäten | ja | belegt |
|
||||
| SwRS-017 | Zahlungskonditionen als eigene Stammdatentabelle | ja | belegt |
|
||||
| SwRS-020 | Zentrale Rechteprüfmethoden im Belegkern | ja | belegt |
|
||||
| SwRS-021 | Rücksetzen unberechtigter Preisänderungen anhand der Vorgängerversion | ja | belegt |
|
||||
| SwRS-027 | Warnung bei nicht umgewandelten Fremdartikeln | ja | belegt |
|
||||
| SwRS-030 | Kontingentfelder als eigenständige Vertragsattribute | ja | belegt |
|
||||
| SwRS-032 | Abrechnungslauf über benannte Abfragen je Vorgangsart | ja | belegt |
|
||||
| SwRS-034 | Rechteausdrücke der Modulregistrierung | ja | belegt |
|
||||
| SwRS-035 | Filterstruktur der Ticketabrechnung | ja | belegt |
|
||||
| SwRS-042 | Unterschrift als eigenständige Entität je Zeiteintrag | ja | belegt |
|
||||
| SwRS-043 | Protokoll der Zeiteintragsänderungen | ja | belegt |
|
||||
| SwRS-051 | Rechteprüfung im Vorspeicherschritt der Ticketentität | ja | belegt |
|
||||
| SwRS-053 | Variablenersetzung über eine gemeinsame Komponente | ja | belegt |
|
||||
| SwRS-054 | Abschlussstatus des Tickets aus den Einstellungen | ja | belegt |
|
||||
| SwRS-066 | Produktfamilien mit Kunden- und Positionssperren | ja | belegt |
|
||||
| SwRS-074 | Kontingentangabe als Antwortbestandteil des Katalogs | ja | belegt |
|
||||
| SwRS-080 | Dreistufige Erlöskontotabellen | ja | belegt |
|
||||
| SwRS-081 | Herkunftsangabe als Pflichtparameter der Zahlungsbuchung | ja | belegt |
|
||||
| SwRS-082 | Mahnstufenfelder je Stufe mit Datum und Bearbeiter | ja | belegt |
|
||||
| SwRS-083 | Sperrgrenze aus dem Kundenstamm | ja | belegt |
|
||||
| SwRS-084 | Mandat als Belegfeld mit eigener Übernahmeregel | ja | belegt |
|
||||
| SwRS-085 | Bankzugangsdaten der finAPI-Anbindung | ja | HYPOTHESE |
|
||||
| SwRS-086 | Zahlungseingangsprotokoll als eigenständige Entität | ja | belegt |
|
||||
| SwRS-087 | Zahlungsverkehr als eigener Datenaustauschzweig | ja | belegt |
|
||||
| SwRS-088 | Lizenzbestandsvergleich gegen MSP-Daten | ja | belegt |
|
||||
| SwRS-090 | Zwei Wege der Rechteermittlung | ja | belegt |
|
||||
| SwRS-091 | Drei Autorisierungsattribute mit gemeinsamer Filterbasis | ja | belegt |
|
||||
| SwRS-092 | Filialvergleich als gemeinsame Hilfsfunktion | ja | belegt |
|
||||
| SwRS-093 | Zwei Wege der Nummernkreisauflösung | ja | belegt |
|
||||
| SwRS-094 | Optimistische Sperre der Nummernvergabe | ja | belegt |
|
||||
| SwRS-095 | Zusammengesetzte SQL-Anweisungen der Nummernprüfung | ja | belegt |
|
||||
| SwRS-100 | Ticketerzeugung mit gerätebezogenem Zusatzwert | ja | belegt |
|
||||
| SwRS-101 | Anwendungsart als Konfigurationsobjekt der Anmeldung | ja | belegt |
|
||||
| SwRS-102 | Lizenzkennungen als zentrale Konstantenliste | ja | belegt |
|
||||
| SwRS-103 | Sperre um Ticketprüfung und Lizenzvergabe | ja | belegt |
|
||||
| SwRS-104 | Austauschbare Zweitfaktor-Prüfer | ja | belegt |
|
||||
| SwRS-106 | Kennwortprüfung als Datenbankvergleich des Hashwerts | ja | belegt |
|
||||
| SwRS-107 | Verschlüsselungskomponente mit optionalem Schlüsselparameter | ja | belegt |
|
||||
| SwRS-108 | Protokollierung aller Tokenvorgänge | ja | belegt |
|
||||
| SwRS-109 | Trennung persönlicher und administrativer Tokenverwaltung | ja | belegt |
|
||||
| SwRS-112 | Mailkomponenten nach Aufgabe getrennt | ja | belegt |
|
||||
| SwRS-120 | Web-Rechte als eigene Entitäten mit Kategorien | ja | belegt |
|
||||
| SwRS-121 | Kennzeichen der Web-Anmeldung im Anmeldekontext | ja | belegt |
|
||||
| SwRS-124 | Geteiltes Dokument als eigene Entität | ja | belegt |
|
||||
| SwRS-130 | Zugangsdaten als verschlüsselte Zusatzfelder | ja | belegt |
|
||||
| SwRS-131 | Masterschlüssel aus der Konfigurationsdatenbank | ja | belegt |
|
||||
| SwRS-132 | Migration der Altzugangsdaten in den Passwort-Manager | ja | belegt |
|
||||
| SwRS-150 | Löschprotokoll des Datenschutzmoduls | ja | belegt |
|
||||
| SwRS-153 | Audit-Felder als Bestandteil der Belegbasis | ja | belegt |
|
||||
| SwRS-160 | Selbstenthaltende Veröffentlichung der Webanwendung | ja | belegt |
|
||||
| SwRS-177 | SQL-Verwaltung mit Datenbankauskunft für den Lizenzserver | ja | belegt |
|
||||
| SwRS-179 | Erwartete Ereignisse mit getrennter Auswertung | ja | belegt |
|
||||
| SwRS-181 | Mitarbeiterbausteine nach Aufgabe getrennt | ja | belegt |
|
||||
| SwRS-192 | CRM-Projekte mit eigener Nummernart | ja | belegt |
|
||||
| SwRS-193 | Lieferantenverträge am Account | ja | belegt |
|
||||
| SwRS-201 | docuFORM-Anbindung als eigenes Projekt | ja | belegt |
|
||||
| SwRS-208 | Strukturierte Kundendokumentation | ja | belegt |
|
||||
| SwRS-210 | Zuordnung von Schulungsvideos zu Objekten | ja | belegt |
|
||||
| SwRS-212 | Mobile Datenversorgung als eigener Baustein | ja | belegt |
|
||||
| SwRS-213 | Externe Werkzeuge und Fernwartung | ja | belegt |
|
||||
| SwRS-214 | Fremdsystemkonnektoren mit eigener Verbindungslogik | ja | belegt |
|
||||
| SwRS-215 | Dashboard und Startbereich als verdichtete Einstiegssicht | ja | belegt |
|
||||
|
||||
---
|
||||
|
||||
## 5. Selbstbewertung
|
||||
|
||||
### 5.1 Analysetiefe je Modul (absolute Zahlen)
|
||||
|
||||
Von **165** Inventarmodulen wurden
|
||||
|
||||
- **23** tief analysiert (≥ 8 Anforderungen) — darunter Belegkern, Rechnungen, Verträge, Helpdesk,
|
||||
Zeiterfassung, Rechteverwaltung, Anmeldung, Lizenzierung, Nummernkreise, Mandanten/Filialen,
|
||||
Mahnwesen, Artikelstamm, Web-Benutzerkonten, REST-Schnittstelle;
|
||||
- **64** mittel analysiert (4–7 Anforderungen);
|
||||
- **78** flach analysiert (1–3 Anforderungen);
|
||||
- **0** gar nicht analysiert.
|
||||
|
||||
Die Verteilung folgt der Vorgabe „Breite vor Tiefe": zuerst wurde für jedes Modul mindestens eine
|
||||
belegte Anforderung gebildet, danach wurden die Risikobereiche vertieft. Die 78 flach analysierten
|
||||
Module tragen überwiegend Anforderungen auf SwRS-Ebene, die den Baustein und seine Datenstruktur
|
||||
benennen, nicht seine inneren Regeln.
|
||||
|
||||
### 5.2 Mindestabdeckung
|
||||
|
||||
**Erreicht.** Jedes der 165 Inventarmodule hat mindestens eine Anforderung; kein Modul steht als
|
||||
`nicht analysiert` im Inventar. Es war für kein Modul erforderlich, mangels belegbarer Aussage auf
|
||||
eine Anforderung zu verzichten.
|
||||
|
||||
### 5.3 Stellen mit dünnem Beleg
|
||||
|
||||
Der Gesamtanteil an `PRIMÄR`-Belegen liegt bei 66,2 %. Dünn belegt sind insbesondere:
|
||||
|
||||
1. **Preisfindung (`SyRS-005`, `SwRS-005`).** Die einzige Anforderung ohne `PRIMÄR`-Beleg. Vier
|
||||
konkurrierende Preisquellen sind nachgewiesen, die Rangfolge nicht. Als `[HYPOTHESE]` geführt.
|
||||
2. **Kontenfindung (`SyRS-080`, `SwRS-080`).** Die drei Zuordnungstabellen sind im Schema belegt,
|
||||
die Rangfolge zwischen ihnen wurde aus der Tabellenstruktur erschlossen, nicht aus dem
|
||||
auswertenden Code. Die Prüfidee benennt diese offene Stelle ausdrücklich.
|
||||
3. **Module, die nur über Verzeichnisstruktur und Modulregistrierung belegt sind.** Dazu zählen
|
||||
TradePool (`M-154`), CPra (`M-156`), Telekom Dive (`M-157`), Social Media (`M-132`), Videoportal
|
||||
(`M-133`), Chats (`M-128`), Mobile (`M-144`), IT-Planner (`M-90`) und Gateway (`M-163`). Ihre
|
||||
Anforderungen benennen den Baustein und seine Datenstruktur, nicht die durchgesetzten Regeln.
|
||||
Hier ist der Anteil `SEKUNDÄR`/`KONTEXT` am höchsten.
|
||||
4. **Nicht erhobene Artefaktart.** Change-Historie, Commit-Messages, Tickets und Release Notes
|
||||
konnten nicht ausgewertet werden, weil das Arbeitsverzeichnis kein Repository der analysierten
|
||||
Codebasis enthält. Damit fehlt durchgängig die Belegklasse, aus der sich die Entstehungsgründe
|
||||
von Workarounds ableiten ließen. Die 12 als `Workaround` und 14 als `veraltet` eingestuften
|
||||
Anforderungen stützen sich stattdessen auf Quelltextkommentare, `[Obsolete]`-Attribute und
|
||||
Bezeichnungen wie „(obsolate)" oder `ContractEvaluation2`.
|
||||
5. **Vier Aussagen, die auf dem Fehlen eines Artefakts beruhen** (`SwRS-085` zu Bankzugangsdaten
|
||||
ist der ausdrücklich als Hypothese geführte Fall). Negativbefunde aus einer Teilmenge tragen
|
||||
keine belegte Aussage; wo sie dennoch für die Zielarchitektur wichtig sind, wurden sie in die
|
||||
Prüfidee verschoben statt in die Aussage.
|
||||
|
||||
### 5.4 Offene Punkte ohne zugehörige Anforderung
|
||||
|
||||
Diese Punkte sind absichtlich **nicht** in `Hypothesen.md` aufgeführt, weil ihnen keine Anforderung
|
||||
gegenübersteht:
|
||||
|
||||
- Die tatsächlich ausgeführten SQL-Anweisungen der benannten Abfragen (`NamedQueryEnums`) liegen
|
||||
außerhalb des gelesenen C#-Codes; ihre Wirkung wurde aus Methodennamen und Parametern erschlossen.
|
||||
- Die Zuordnung der 1.558 Datenbanktabellen zu den 165 Modulen wurde nur stichprobenartig
|
||||
hergestellt. Etwa 1.400 Tabellen sind in dieser Analyse nicht einzeln betrachtet worden.
|
||||
- Die 790 Skriptdateien unter `Administration/Scripts` wurden nicht inhaltlich ausgewertet; aus
|
||||
ihnen ließe sich die fachliche Entwicklung des Datenmodells rekonstruieren.
|
||||
- Von 15.554 C#-Dateien wurden rund 90 vollständig oder in wesentlichen Abschnitten gelesen. Die
|
||||
übrigen sind über Verzeichnisstruktur, Klassennamen und Methodensignaturen erfasst.
|
||||
- Ob der Sammelbenutzer `"InternalWebAccountUser"` (siehe `SwRS-121`) im Betrieb Rechte trägt, die
|
||||
über die Portalfunktionen hinausgehen, konnte nicht festgestellt werden.
|
||||
|
||||
### 5.5 Warum Hypothesen geführt wurden — und warum nur fünf
|
||||
|
||||
Fünf von 363 Anforderungen (1,4 %) sind als Hypothese gekennzeichnet. Der niedrige Anteil ergibt
|
||||
sich aus der gewählten Arbeitsweise: Wo ein Sachverhalt nicht bis zur durchsetzenden Stelle
|
||||
verfolgt werden konnte, wurde in der Regel **keine** Anforderung geschrieben, sondern das Modul
|
||||
flacher abgedeckt. Als Hypothese geführt wurden nur die fünf Fälle, in denen die Aussage für die
|
||||
Zielarchitektur so wichtig ist, dass ihr Weglassen ein Risiko darstellt:
|
||||
|
||||
| ID | Warum trotz offener Frage geführt |
|
||||
|---|---|
|
||||
| `SyRS-005` | Preisfindung ist abrechnungsrelevant; ihr Fehlen im Zielsystem wäre ein Funktionsverlust. |
|
||||
| `SyRS-055` | Der Quelltextkommentar belegt eine beabsichtigte, nicht umgesetzte Regel. |
|
||||
| `SyRS-151` | Datenschutzrechtlich zwingende Anforderung, im heutigen Stand nachweislich nicht erfüllt. |
|
||||
| `SwRS-055` | Der Sammelabschluss verändert Ticketzustände ohne Protokolleintrag. |
|
||||
| `SwRS-085` | Sicherheitsrelevanter Negativbefund, der zu prüfen ist. |
|
||||
|
||||
Ein Anteil von 1,4 % ist für eine Codebasis dieser Größe niedrig. Er bedeutet nicht, dass wenige
|
||||
Fragen offen sind, sondern dass die offenen Stellen überwiegend als **nicht geschriebene**
|
||||
Anforderungen erscheinen — sichtbar in den 78 flach abgedeckten Modulen und in Abschnitt 5.4.
|
||||
|
||||
### 5.6 Wesentliche Befunde für die Neuimplementierung
|
||||
|
||||
**Sicherheit (unmittelbarer Handlungsbedarf):**
|
||||
|
||||
1. Kennwörter von Anwendungs- und Web-Benutzern werden als **ungesalzener SHA-1-Hash** gespeichert
|
||||
(`SyRS-107`, `SyRS-122`, `SwRS-106`). Der Quelltext vermerkt die Schwäche selbst
|
||||
(`// TODO the password should be salted!!!`).
|
||||
2. Neue Web-Konten erhalten ihr **Kennwort im Klartext per E-Mail** (`SyRS-122`).
|
||||
3. `AESCryptoLogic` fällt ohne übergebenen Schlüssel auf eine **im Quelltext hinterlegte Konstante**
|
||||
zurück und leitet den Initialisierungsvektor aus demselben Hash wie den Schlüssel ab, wodurch er
|
||||
je Schlüssel konstant ist (`SyRS-108`, `SwRS-107`).
|
||||
4. Die Nummernvergabe setzt SQL-Abfragen aus **Zeichenketten** zusammen (`SwRS-095`).
|
||||
5. Das **alte Zugangsdatenmodul speichert weder Kennwort noch Salt** und ist funktionslos
|
||||
(`SyRS-131`, `StRS-048`).
|
||||
6. Die Lizenzbegrenzung gleichzeitiger Anmeldungen ist über eine **prozesslokale Sperre** gelöst und
|
||||
trägt bei mehreren Dienstinstanzen nicht (`SwRS-103`).
|
||||
|
||||
**Konsolidierung (Zielarchitektur):**
|
||||
|
||||
7. **Vier Datenhaltungen für installierte Geräte** — Stammblatt (`Stammdat`), Account-Gerät
|
||||
(`AccountDevices`), Asset-Management-Gerät (`AssetManagementDevices`) und Kunden-Asset — plus
|
||||
`GeraeteKopf` (`SyRS-140`, `SwRS-140` bis `SwRS-143`). Dies ist der im Auftrag genannte
|
||||
Beispielfall und der größte Konsolidierungshebel.
|
||||
8. **Zwei Geschäftspartnerstämme** im Parallelbetrieb, umgeschaltet über eine Einstellung
|
||||
(`StRS-002`).
|
||||
9. **Fünf Mechanismen zur Änderungsverfolgung** (Audit-Felder, Versionstabellen, `ReceiptLogBL`,
|
||||
`ChangeTracking/History`, `AnlageLog`) — `SwRS-154`.
|
||||
10. **Zwei Benachrichtigungsmechanismen** (`Notifications`, `NexusNotifications`) — `SwRS-128`.
|
||||
11. **Drei Wege der Rechteprüfung** und **zwei Rechtesysteme** (interne Benutzer, Web-Konten) —
|
||||
`SwRS-090`, `SwRS-120`.
|
||||
12. **Zwei parallele Implementierungen** für Inventur (`SwRS-063`) und Nummernkreisauflösung
|
||||
(`SwRS-093`), letztere über einen Merkmalsschalter erreichbar.
|
||||
13. **Doppelte Datenzugriffsimplementierung je Modul** (`BLLogic`/`WSLogic`) — im Web-Zielsystem
|
||||
entbehrlich (`SwRS-002`).
|
||||
|
||||
**Struktur:**
|
||||
|
||||
14. `ReceiptBL` umfasst **11.441 Zeilen** und bündelt sieben Belegarten; die Aufteilung nach dem
|
||||
Vorbild von `Sales/Support` (49 nach Aufgabe geschnittene Klassen) ist im Zielsystem
|
||||
naheliegend (`SwRS-010`, `SwRS-057`).
|
||||
15. Fehlermeldungen stehen **deutschsprachig fest im Quelltext**, obwohl Ressourcendateien und eine
|
||||
Zweisprachigkeitsvorgabe bestehen (`SwRS-129`).
|
||||
|
||||
### 5.7 Empfehlungen für eine Folge-Iteration
|
||||
|
||||
Nach Nutzen geordnet:
|
||||
|
||||
1. **Preisfindung und Kontenfindung bis zur entscheidenden Bedingung verfolgen.** `ReceiptItemBL`
|
||||
(4.290 Zeilen) und `ReceiptPriceHelperBL` gezielt lesen. Beide Rangfolgen sind
|
||||
abrechnungsrelevant und heute die einzigen bekannten Belegschwächen im Risikobereich
|
||||
(`SyRS-005`, `SyRS-080`).
|
||||
2. **`ReceiptBL.SaveReceipt` und `ForwardReceipt` vollständig auswerten.** Von 11.441 Zeilen wurden
|
||||
rund 800 gelesen. Die Regionen in `ForwardReceipt` (Zeilen 2464–2860) benennen mindestens
|
||||
fünfzehn weitere Übernahmeregeln, die je eine eigene Anforderung tragen könnten.
|
||||
3. **Datenmodell systematisch erschließen.** Der Schema-Dump enthält 1.558 Tabellen; nur ein
|
||||
Bruchteil ist erfasst. Eine Zuordnung Tabelle → Modul würde die 78 flach abgedeckten Module auf
|
||||
Datenebene tragfähig machen.
|
||||
4. **Die 790 Datenbankskripte auswerten.** Sie enthalten die Entwicklungsgeschichte des
|
||||
Datenmodells und damit die beste verfügbare Ersatzquelle für die fehlende Change-Historie —
|
||||
insbesondere für die Einstufung `Workaround` und `veraltet`.
|
||||
5. **Das Rechtemodell vollständig ableiten.** `UserRightsConst.cs` enthält rund 800 Rechte in 60
|
||||
Klassen; `ModuleRegistration.GetRightsForModule` erlaubt die maschinelle Ableitung einer
|
||||
Rechtematrix Modul × Recht. Diese Matrix ist die Grundlage des Rollenmodells im Zielsystem.
|
||||
6. **Die Weboberfläche vertiefen.** 460 Razor-Komponenten wurden nur über ihre Namen erfasst. Da
|
||||
das Zielsystem eine Web-/SaaS-Anwendung ist, ist der bestehende Blazor-Teil die unmittelbarste
|
||||
Vorlage.
|
||||
7. **Die als `[Obsolete]` markierten Rechte und Module systematisch erfassen.** `UserRightsConst.cs`
|
||||
enthält mehrere solcher Kennzeichnungen (`N13`, `Riversuite`, `CRM_ACTIVITY_MANAGEMENT`,
|
||||
`DOCUMENT_CHECK`, `CHANGE_SYSTEM_SETTINGS`, `RIVERSUITE_ADMINISTRATION`). Sie sind belastbare
|
||||
Kandidaten für die Einstufung `veraltet` und verkleinern den Migrationsumfang.
|
||||
|
||||
### 5.8 Grenzen dieser Analyse
|
||||
|
||||
- Alle Aussagen beruhen auf statischer Betrachtung. Ob eine im Code vorhandene Prüfung im Betrieb
|
||||
tatsächlich erreicht wird, wurde nicht festgestellt.
|
||||
- Zeilennummern beziehen sich auf den Dateistand im Arbeitsverzeichnis zum Zeitpunkt des Laufs.
|
||||
- Die Modul-zu-Anforderung-Zuordnung in Abschnitt 3 ist maschinell erzeugt und in fünfzehn Fällen
|
||||
manuell korrigiert; sie ist eine Näherung, keine exakte Zuordnung.
|
||||
- Die Einstufung `Übernahmewürdigkeit` ist eine Einschätzung aus Codesicht. Sie ersetzt die
|
||||
fachliche Bewertung durch Domänenexperten nicht (Schritt 7 der Methodenkette).
|
||||
+284
@@ -0,0 +1,284 @@
|
||||
# Glossar
|
||||
|
||||
Domänenbegriffe, die in `StRS.md`, `SyRS.md` und `SwRS.md` verwendet werden. Technische Bezeichner
|
||||
(Klassen, Methoden, Tabellen, Spalten) sind in ihrer Originalsprache belassen. Jeder Eintrag nennt
|
||||
die Fundstelle, aus der die Bedeutung abgeleitet wurde.
|
||||
|
||||
## A
|
||||
|
||||
**Abholschein** — Belegart für Ware, die der Kunde selbst abholt. Tabellen `AbholKopf`/`AbholPos`,
|
||||
Sicht `PickupLists`, Objektart 5, Nummernart `PickupList = 5`.
|
||||
*Quelle: `NumberGroupEnum.cs`, `docs/reference/receipts/receipts-backend-architecture.md`.*
|
||||
|
||||
**Account** — Geschäftspartner im neuen Stammdatenmodell, der gleichzeitig Kunde, Lieferant und
|
||||
Interessent sein kann. Tabelle `Accounts` mit den Rollenzuordnungen `AccountCustomers`,
|
||||
`AccountSuppliers`, `AccountTypeToAccounts`. Löst den älteren, getrennten Kunden- (`Kunden`) und
|
||||
Lieferantenstamm (`Kreditor`) ab.
|
||||
*Quelle: `AccountBL.cs`, `SSMS_DB_SCHEMA.sql`.*
|
||||
|
||||
**AnlageArt** — Zahlenkodierung der Objektart im gemeinsamen Belegprotokoll `AnlageLog`:
|
||||
1 = Angebot, 2 = Auftrag, 3 = Lieferschein, 4 = Rechnung, 5 = Abholschein, 6 = Gutschrift,
|
||||
22 = Vertrag. Entspricht der Aufzählung `CentronObjectKindNumeric`.
|
||||
*Quelle: `docs/reference/receipts/receipts-backend-architecture.md`.*
|
||||
|
||||
**Anwendungsart (`ApplicationKind`)** — Konfigurationsobjekt je anmeldefähiger Anwendung; bündelt
|
||||
Lizenz-GUID, zusätzliche Lizenzen, erforderliches und ausschließendes Recht sowie die
|
||||
Ticketgültigkeit.
|
||||
*Quelle: `ApplicationKind.cs`, `docs/reference/security/licensing-system.md`.*
|
||||
|
||||
**Asset** — Beim Kunden installiertes Wirtschaftsgut. Im System in mindestens vier getrennten
|
||||
Datenhaltungen geführt: Stammblatt (`Stammdat`), Account-Gerät (`AccountDevices`),
|
||||
Asset-Management-Gerät (`AssetManagementDevices`) und Kunden-Asset (`CustomerAsset`).
|
||||
Zusammenführungskandidat für das Zielsystem.
|
||||
*Quelle: `MasterDataList.cs`, `AccountDevice.cs`, `CustomerAsset.cs`, `SSMS_DB_SCHEMA.sql`.*
|
||||
|
||||
**Ausgleichsartikel** — Systemartikel, über den ein Saldo zwischen vereinbarter und erbrachter
|
||||
Leistung als Belegposition dargestellt wird. Getrennt für Vertrag
|
||||
(`ArticleBL.GetContractBalanceArticle`) und Pauschale (`GetFlatrateBalanceArticle`).
|
||||
*Quelle: `ArticleBL.cs`.*
|
||||
|
||||
## B
|
||||
|
||||
**Barcode-Zustand (`BarcodeState`)** — Zustand eines Einzelstücks: `InStock`, `InRequest`,
|
||||
`InDeliveryList`, `InInvoice`, `ManuallyBookedOut`. Wird bei jeder Warenbewegung fortgeschrieben und
|
||||
in `BarcodeHistoryBL` historisiert.
|
||||
*Quelle: `RmaBL.cs`, `BarcodeHistoryBL.cs`.*
|
||||
|
||||
**Beleg (`Receipt`)** — Oberbegriff für die sieben Vorgangsarten Angebot, Auftrag, Lieferschein,
|
||||
Rechnung, Gutschrift, Abholschein und Vertrag. Alle leiten von `ReceiptBase` ab und nutzen den
|
||||
gemeinsamen Belegkern `ReceiptBL`.
|
||||
*Quelle: `docs/reference/receipts/receipts-backend-architecture.md`.*
|
||||
|
||||
**Belegkette / Belegweiterführung (`Forward`)** — Überführung der Positionen eines Belegs in einen
|
||||
Folgebeleg unter Übernahme von Konditionen, Adressen, Filiale, Provision und Mandat.
|
||||
*Quelle: `ReceiptBL.ForwardReceipt`.*
|
||||
|
||||
**Belegprojekt-Layout (`ReceiptProjectLayoutItem`)** — Gliederung eines Belegs in Abschnitte, die
|
||||
einzeln weitergeführt und ausgegeben werden können. Nicht zu verwechseln mit dem **CRM-Projekt**.
|
||||
*Quelle: `ReceiptBL.ForwardReceipt`, `Receipts/Projects/`.*
|
||||
|
||||
**Belegversion** — Vollständiger Stand eines Belegs zu einem Ausgabezeitpunkt. Wird in
|
||||
Versionstabellen (`RechKopfVersions` usw.) als strukturgleiche Kopie archiviert.
|
||||
*Quelle: `ReceiptBL.CreateNewVersion`, `docs/reference/receipts/receipts-backend-architecture.md`.*
|
||||
|
||||
## C
|
||||
|
||||
**c-entron Nexus** — Blazor-Server-Webanwendung der Suite mit ServiceBoard (Ticketbearbeitung),
|
||||
Kundenportal (WebCart), WebOffer, Dokumentensignatur und Verwaltungsbereich. Auch „c-entron Web".
|
||||
*Quelle: `README.md`, `src/nexus/CentronNexus/`.*
|
||||
|
||||
**`CentronObjectKindNumeric`** — Systemweite Aufzählung der Objektarten. Grundlage für alle
|
||||
objektartübergreifenden Referenzen (Protokoll, Aufgaben, Dokumente, Suchindex, Fremdschlüssel).
|
||||
*Quelle: `IndexSearchBL.cs`, `CentronModule.cs`.*
|
||||
|
||||
**Concurrency-GUID (`ConcurrencyControlGuid`)** — Nebenläufigkeitskennung am Beleg. Punktuelle
|
||||
Änderungen werden nur ausgeführt, wenn die übergebene mit der gespeicherten Kennung übereinstimmt.
|
||||
*Quelle: `ReceiptBL.cs`, `docs/reference/receipts/receipts-backend-architecture.md`.*
|
||||
|
||||
## D
|
||||
|
||||
**DSGVO-Modul** — Funktionsbereich zur Wahrung der Betroffenenrechte: Ermittlung und Löschung von
|
||||
Kontaktdaten sowie Bereinigung nicht mehr benötigter Datenbestände. Eigener Rechtezweig
|
||||
`UserRightsConst.DsgvoModule`.
|
||||
*Quelle: `DataSecurityBL.cs`, `UserRightsConst.cs`.*
|
||||
|
||||
## E
|
||||
|
||||
**EDI** — Elektronischer Datenaustausch mit Distributoren. Je Distributor (ALSO, AlsoCH, Alltron,
|
||||
Komsa, EGIS, Concerto) eine eigene Implementierung, vermittelt über `EDIDispatcherBL` und
|
||||
protokolliert in `EDILogBL`.
|
||||
*Quelle: `src/backend/Centron.BL/EDI/`, `docs/reference/edi/edi-architecture.md`.*
|
||||
|
||||
**Einschränkendes Recht (restricting right)** — Recht, das ein bereits vergebenes Basisrecht
|
||||
begrenzt, etwa auf eigene Objekte (`SHOW_HELPDESK_ONLY_OWN`) oder die eigene Filiale
|
||||
(`EDIT_INVOICE_ONLY_OWN_BRANCH`).
|
||||
*Quelle: `CentronRights.md`, `ReceiptBL.CanUserEditReceipt`.*
|
||||
|
||||
## F
|
||||
|
||||
**Filiale (`Filiale`, `BranchI3D`)** — Organisatorische Einheit unterhalb des Mandanten. Jeder Beleg
|
||||
trägt eine Filiale; Nummernkreise, Erlöskonten und Rechte können filialbezogen sein.
|
||||
*Quelle: `MandatoryBL.cs`, `BranchBL.cs`, `SSMS_DB_SCHEMA.sql`.*
|
||||
|
||||
## G
|
||||
|
||||
**Gutschrift** — Belegart zur wertmäßigen Korrektur einer Rechnung. Tabellen `GutKopf`/`GutPos`,
|
||||
Sicht `CreditVouchers`, Objektart 6.
|
||||
*Quelle: `docs/reference/receipts/receipts-backend-architecture.md`, `UserRightsConst.cs`.*
|
||||
|
||||
## H
|
||||
|
||||
**Helpdesk / Ticket** — Servicevorgang zu einem Kundenanliegen. Tabelle `hlpdsk_requests`,
|
||||
klassifiziert über `hlpdsk_typen`, `hlpdsk_kategorien`, `hlpdsk_status`, `hlpdsk_prioritaeten`.
|
||||
*Quelle: `HelpdeskBL.cs`, `SSMS_DB_SCHEMA.sql`.*
|
||||
|
||||
**Hotline-Masterkey** — Zentraler Schlüssel aus der Konfigurationsdatenbank, mit dem der
|
||||
Passwort-Manager Kundenzugangsdaten ver- und entschlüsselt.
|
||||
*Quelle: `PasswordManagerBL.cs`, `CentronConfigurationDbBL.GetHotlineMasterKey`.*
|
||||
|
||||
## I
|
||||
|
||||
**`I3D`** — Durchgängiger Name des Primärschlüssels aller persistierten Entitäten.
|
||||
*Quelle: `BaseEntity.cs`, `PersistedEntity.cs`.*
|
||||
|
||||
**Inventur** — Zählprozess des Lagerbestands, gegliedert in Zählgruppen; Lager werden einzeln, die
|
||||
Inventur insgesamt abgeschlossen.
|
||||
*Quelle: `InventoryNewBL.cs`.*
|
||||
|
||||
## K
|
||||
|
||||
**Klickabrechnung** — Mengenabhängige Vertragsabrechnung nach Zählerständen von Ausgabegeräten
|
||||
(Managed Print Services). Zählerstand am Stammblatt (`CounterDevice`), Einstellungen unter
|
||||
`ClickBillingSettingsController`.
|
||||
*Quelle: `MasterDataList.cs`, `ModuleRegistration.cs`.*
|
||||
|
||||
**Kommissionierung** — Bereitstellung der Auftragspositionen im Lager, vollständig oder als
|
||||
Teilkommissionierung mit eigener Lieferadresse.
|
||||
*Quelle: `OrderCommissionBL.cs`, `PartialCommissionOrderBL.cs`, `ReceiptBL.UpdateReceiptQuantityPicked`.*
|
||||
|
||||
**Kontingent (Vertrag)** — Vereinbartes Leistungsvolumen eines Vertrags in Stunden oder Betrag.
|
||||
Verbrauch, Saldo, Restwert und Grenzwert werden als getrennte Vertragsattribute geführt.
|
||||
*Quelle: `ReceiptContract.cs`, `ContractBL.GetContingentRest`.*
|
||||
|
||||
## L
|
||||
|
||||
**Lizenz** — GUID, die eine Anwendung oder eine Einzelfunktion freischaltet. Kann Anzahl,
|
||||
Gültigkeitsdatum und maximale Programmversion tragen. Die Sammellizenz `LicenseGuids.Centron`
|
||||
schließt zahlreiche Einzellizenzen ein.
|
||||
*Quelle: `LicenseGuids.cs`, `LicenseManager.cs`, `docs/reference/security/licensing-system.md`.*
|
||||
|
||||
## M
|
||||
|
||||
**Mahnstufe (`DunningLevel`)** — Stand des Mahnverfahrens einer Rechnung: `None`, `Level1`,
|
||||
`Level2`, `Level3`. Je Stufe werden Datum und ausführender Benutzer am Beleg gespeichert.
|
||||
*Quelle: `DunningRunBL.cs`.*
|
||||
|
||||
**Mandant (`Mandant`)** — Oberste organisatorische Einheit; genau einer ist als Standardmandant
|
||||
gekennzeichnet (`Standard = 1 AND Status = 1`).
|
||||
*Quelle: `MandatoryBL.cs`.*
|
||||
|
||||
**Mitarbeiterartikel** — Artikel, über den die Leistung eines Mitarbeiters bewertet und abgerechnet
|
||||
wird. Zeitauswertungen und das Recht `OWN_TIME_EDIT` beziehen sich auf ihn.
|
||||
*Quelle: `EmployeeArticleBL.cs`, `HelpdeskTimerBL.GetEmployeeTimeStatistics`, `CentronRights.md`.*
|
||||
|
||||
**MSP (Managed Service Provider)** — Geschäftsmodell mit laufend abgerechneten Dienstleistungen.
|
||||
Im System als eigene Auswertungs- und Sammelmodule (`MspStatistics`, `MspCollectors`,
|
||||
`MSPLicensesCompare`) sowie als Kennzeichen `IsMsp` am Stammblatt abgebildet.
|
||||
*Quelle: `ModuleRegistration.cs`, `MasterDataList.cs`.*
|
||||
|
||||
## N
|
||||
|
||||
**Nummernkreis (`Nummernkreis`, `NumberGroup`)** — Fortlaufende Nummernvergabe je Nummernart
|
||||
(`NumberGroupEnum`, über 30 Arten), aufgelöst über Mitarbeiterfiliale, Mandantsfiliale und
|
||||
Standardmandant.
|
||||
*Quelle: `NumberGroupBL.cs`, `MandatoryBL.cs`, `NumberGroupEnum.cs`.*
|
||||
|
||||
## O
|
||||
|
||||
**OPOS** — Offene-Posten-Verwaltung; Übersicht der noch nicht ausgeglichenen Rechnungen. Zugriff
|
||||
über das Recht `Controlling.Finances.Dunning`.
|
||||
*Quelle: `OposBL.cs`.*
|
||||
|
||||
## P
|
||||
|
||||
**Passwort-Manager** — Verschlüsselte Ablage von Zugangsdaten der Kundensysteme über Zusatzfelder
|
||||
vom Typ `EncryptedText`. Löst das ältere Modul `PasswordManagementArea` ab, das im Modulkatalog als
|
||||
„obsolate" gekennzeichnet ist.
|
||||
*Quelle: `PasswordManagerBL.cs`, `ModuleRegistration.cs`.*
|
||||
|
||||
**Provisionsschema** — Regelwerk zur Ermittlung des Provisionsanspruchs eines Vertriebsmitarbeiters,
|
||||
ergänzt um Mitarbeiterziele und Provisionsstufen.
|
||||
*Quelle: `ReceiptProvisionSchemaBL.cs`, `ReceiptProvisionEmployeeGoalBL.cs`, `ReceiptProvisionEmployeeLevelBL.cs`.*
|
||||
|
||||
## R
|
||||
|
||||
**Rechtegruppe (`Sichgrup`/`Sichmemb`/`Sichtrus`)** — Rechte werden ausschließlich über Gruppen
|
||||
vergeben; `Sichmemb` verknüpft Benutzer und Gruppe, `Sichtrus` Gruppe und Recht.
|
||||
*Quelle: `AppRightsBL.CheckRightsFromUser`.*
|
||||
|
||||
**RMA** — Retouren-, Reparatur- und Tauschvorgang mit eigener Zustandsverfolgung je Artikel und
|
||||
Seriennummer. Eigene Nummernarten für Rücksendung, Reparatur, Reparatureingang und RMA-Nummer.
|
||||
*Quelle: `RmaBL.cs`, `NumberGroupEnum.cs`.*
|
||||
|
||||
## S
|
||||
|
||||
**Self-Care-Formular** — Vom Kunden im Portal ausfüllbares Formular, dessen Felder im zugehörigen
|
||||
Ticketmuster definiert sind und aus dem ein Ticket entsteht.
|
||||
*Quelle: `SelfCareBL.cs`, `SelfCareFormFieldGrid.razor`.*
|
||||
|
||||
**Sitzungsticket (`Ticket`)** — Nach erfolgreicher Anmeldung ausgegebene Sitzungskennung mit
|
||||
anwendungsabhängiger Gültigkeit (Standard 30 Minuten, Monitoring-Konnektor 5 Minuten, Sonderfall
|
||||
24 Stunden). Nicht zu verwechseln mit dem **Helpdesk-Ticket**.
|
||||
*Quelle: `TicketBL.cs`.*
|
||||
|
||||
**Sonderpreis** — Kundenindividueller Artikelpreis. Zugleich die Artikelquelle des Kundenportals.
|
||||
*Quelle: `CustomerSpecialArticleBL.cs`, `README.md`.*
|
||||
|
||||
**Stammblatt (`Stammdat`, `MasterDataList`)** — Geräteakte mit Seriennummer, Herkunftsbeleg,
|
||||
Vertragsbezug, Zählerstand, Standortadresse und eigenem Dokumentenverzeichnis. Historisch für
|
||||
Drucker geführt; im Zielsystem mit den übrigen Gerätedatenhaltungen zu einem Asset-Konzept
|
||||
zusammenzuführen.
|
||||
*Quelle: `MasterDataList.cs`, `ContractBL.GetMasterDataListFromContract`.*
|
||||
|
||||
**Systemartikel** — Artikel mit fest zugewiesener technischer Rolle (Fracht, Kundenrabatt,
|
||||
Kontingentsaldo, Pauschalsaldo, Fremdartikel, Neuartikel, Gutschein), aufgelöst über eigene Methoden
|
||||
in `ArticleBL`.
|
||||
*Quelle: `ArticleBL.cs`.*
|
||||
|
||||
## T
|
||||
|
||||
**Teilkommission (`PartialCommissionOrder`)** — Teilmenge eines Auftrags, die getrennt kommissioniert
|
||||
und mit eigener Lieferadresse ausgeliefert wird.
|
||||
*Quelle: `PartialCommissionOrderBL.cs`, `ReceiptBL.ForwardReceipt`.*
|
||||
|
||||
**Ticketmuster (`TicketPattern`)** — Vorlage für die automatische oder formulargestützte
|
||||
Ticketerzeugung mit acht Konfigurationsdimensionen (Allgemein, Kunde, intern, Checklisten,
|
||||
Formulare, Mailvorlage, Eigenschaften, Skripte, Webformular).
|
||||
*Quelle: `Management/TicketPatterns/Components/`.*
|
||||
|
||||
## U
|
||||
|
||||
**Übernahmeoptionen (`InsertReceiptTakeoverOptions`)** — Steuerung, welche Bestandteile beim
|
||||
Weiterführen eines Belegs in den Folgebeleg übernommen werden.
|
||||
*Quelle: `ReceiptBL.ForwardReceipt`.*
|
||||
|
||||
## V
|
||||
|
||||
**Vertrag (`ReceiptContract`)** — Belegart für dauerhafte Leistungsvereinbarungen mit
|
||||
Abrechnungsintervall, Laufzeit, automatischer Verlängerung und Kontingent. Tabellen
|
||||
`VertragKopf`/`VertragPos`, Objektart 22.
|
||||
*Quelle: `ReceiptContract.cs`, `docs/reference/receipts/contracts-backend.md`.*
|
||||
|
||||
## W
|
||||
|
||||
**WebAccount** — Kundenzugang zum Webportal mit eigenem Rechtesystem (`WebRights`,
|
||||
`WebRightsCategories`, `WebAccountsRights`), getrennt von den internen Benutzerkonten (`AppUser`).
|
||||
*Quelle: `WebAccountBL.cs`, `AppRightsBL.CheckWebRightsFromUser`.*
|
||||
|
||||
**WebCart** — Kundenportal mit Shop, Belegübersicht, Verträgen, Tickets, Formularen und Dokumenten.
|
||||
Die Artikel stammen aus den Sonderpreisen des jeweiligen Kunden.
|
||||
*Quelle: `src/nexus/CentronNexus/WebCart/`, `README.md`.*
|
||||
|
||||
**Webbeleg (`WebReceipt`)** — Über einen Token bereitgestellter Beleg, den der Kunde ohne Anmeldung
|
||||
freigeben oder ablehnen kann; führt einen eigenen Zustand (`WebReceiptState`).
|
||||
*Quelle: `ReceiptBL.ChangeWebReceiptState`.*
|
||||
|
||||
## Z
|
||||
|
||||
**Zählerstand (`CounterDevice`)** — Am Stammblatt geführter Zählerstand eines Ausgabegeräts;
|
||||
Grundlage der Klickabrechnung. Kann manuell erfasst oder über die docuFORM-Schnittstelle bezogen
|
||||
werden.
|
||||
*Quelle: `MasterDataList.cs`, `Centron.Api.docuFORM`.*
|
||||
|
||||
**Zahlungskondition (`Zahkond`)** — Stammdatensatz mit Zahlungsziel und Skontoregelung; Grundlage
|
||||
für das Fälligkeitsdatum eines Belegs.
|
||||
*Quelle: `SSMS_DB_SCHEMA.sql`, `ReceiptBL.UpdatePaymentDueDate`.*
|
||||
|
||||
**ZUGFeRD / XRechnung** — Formate der elektronischen Rechnung. Ein- und ausgehend unterstützt;
|
||||
Import auch über die REST-Schnittstelle.
|
||||
*Quelle: `ZUGFeRD_BL.cs`, `ZugferdImportController.cs`, `docs/guides/development/xrechnung.md`.*
|
||||
|
||||
**Zuschlagssatz (`HourlySurchargeRate`)** — Zeitfensterabhängiger Aufschlag auf den Stundensatz
|
||||
(Nacht, Wochenende, Feiertag). Ein Zeiteintrag wird abschnittsweise mit den überschneidenden Sätzen
|
||||
bewertet.
|
||||
*Quelle: `HelpdeskTimerBL.CalculateHourlySurchargeRateOverlaps`.*
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
# Hypothesen
|
||||
|
||||
Diese Datei enthält **genau** die Anforderungen, die in `StRS.md`, `SyRS.md` und `SwRS.md` mit
|
||||
`Status: HYPOTHESE` und der Inline-Markierung `[HYPOTHESE]` gekennzeichnet sind — keine weiteren
|
||||
freien Fragen. Offene Punkte ohne zugehörige Anforderung sind in der Selbstbewertung des
|
||||
`Analysebericht.md` (Abschnitt 5) aufgeführt.
|
||||
|
||||
**Anzahl: 5** von 360 Anforderungen (1,4 %).
|
||||
|
||||
---
|
||||
|
||||
## SyRS-005 — Mehrstufige Preisquellen mit definierter Rangfolge
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Ebene** | SyRS |
|
||||
| **Typ** | funktional |
|
||||
| **Übernahmewürdigkeit** | übernehmen |
|
||||
|
||||
**Belegte Beobachtung:** Es bestehen mindestens vier konkurrierende Preisquellen — `ActionPriceBL`
|
||||
(Aktionspreise), `ArticleVolumePricesBL` (Staffelpreise), kundenbezogene Sonderpreise
|
||||
(`Accounts/SpecialPrices/`, `CustomerSpecialArticleBL`) und `ProductMatrixBL`. Die Zusammenführung
|
||||
erfolgt in `ReceiptItemBL` (4.290 Zeilen) und `ReceiptPriceHelperBL` (130 Zeilen).
|
||||
|
||||
**Offene Frage:** In welcher Rangfolge werden die vier Preisquellen ausgewertet, und welche gewinnt
|
||||
bei gleichzeitiger Gültigkeit?
|
||||
|
||||
**Was zur Bestätigung fehlt:** Eine zeilenweise Auswertung der Preisermittlung in `ReceiptItemBL`
|
||||
bis zu der Bedingung, die die Quelle auswählt. In dieser Analyse wurde nur die API-Oberfläche der
|
||||
beteiligten Klassen erfasst, nicht der Entscheidungspfad.
|
||||
|
||||
**Warum als Hypothese geführt:** Die Preisfindung ist abrechnungsrelevant. Ohne benannte
|
||||
durchsetzende Stelle darf die Aussage nach der Regel zur risikobasierten Priorisierung nicht als
|
||||
belegt geführt werden.
|
||||
|
||||
---
|
||||
|
||||
## SyRS-055 — Ticketabschluss trotz offener RMA
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Ebene** | SyRS |
|
||||
| **Typ** | funktional |
|
||||
| **Übernahmewürdigkeit** | übernehmen |
|
||||
|
||||
**Belegte Beobachtung:** `HelpdeskCloseBL.CanCloseHelpdesk(int helpdeskI3D)` (Zeilen 159-167)
|
||||
enthält ausschließlich eine Nichtnull-Prüfung des Parameters, den Kommentar
|
||||
`//Todo: if rma exists check if finished` und die Rückgabe `true`. Die Methode ist damit die
|
||||
vorgesehene, aber leere Prüfstelle.
|
||||
|
||||
**Offene Frage:** Soll der Abschluss eines Tickets bei einem offenen RMA-Vorgang verhindert werden?
|
||||
|
||||
**Was zur Bestätigung fehlt:** Eine fachliche Aussage darüber, ob die im Kommentar vermerkte Regel
|
||||
gewollt ist oder bewusst nicht umgesetzt wurde. Aus den Artefakten ist nur ersichtlich, dass sie
|
||||
vorgesehen war.
|
||||
|
||||
**Warum als Hypothese geführt:** Der Kommentar belegt eine Absicht, nicht eine durchgesetzte Regel.
|
||||
|
||||
---
|
||||
|
||||
## SyRS-151 — Nicht implementierte Löschpfade im Datenschutzmodul
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Ebene** | SyRS |
|
||||
| **Typ** | Sicherheit |
|
||||
| **Übernahmewürdigkeit** | übernehmen |
|
||||
|
||||
**Belegte Beobachtung:** `DataSecurityBL.DoDeleteCustomer(int i3d, bool isReferenceDelete)` wirft
|
||||
`new NotImplementedException("DoDeleteCustomer is not ready for use!")` (Zeile 856-858);
|
||||
`DoDeleteSupplier` ist analog angelegt. In `DsgvoDeleteRightDeleteContacts` sind die Aufrufe für
|
||||
Kunde, Lieferant, Kontaktmanagement-Kontakt und Account auskommentiert (Zeilen 803-814), ebenso die
|
||||
zugehörigen Anonymisierungs-SQL-Anweisungen (Zeilen 863-903).
|
||||
|
||||
**Offene Frage:** Warum sind die Löschpfade für vollständige Geschäftspartner deaktiviert — aus
|
||||
fachlichen Bedenken wegen der Referenzintegrität zu Belegen, oder weil die Entwicklung nicht
|
||||
abgeschlossen wurde? Und wie wird ein Löschbegehren, das einen ganzen Geschäftspartner betrifft,
|
||||
heute bearbeitet?
|
||||
|
||||
**Was zur Bestätigung fehlt:** Eine fachliche Festlegung, welche Datensätze bei einem Löschbegehren
|
||||
zu anonymisieren sind und welche aus handels- und steuerrechtlichen Aufbewahrungsgründen erhalten
|
||||
bleiben müssen.
|
||||
|
||||
**Warum als Hypothese geführt:** Die Anforderung ist datenschutzrechtlich zwingend, im heutigen
|
||||
Stand aber nachweislich nicht erfüllt. Sie wird als offener Punkt geführt, nicht als belegte
|
||||
Systemeigenschaft.
|
||||
|
||||
---
|
||||
|
||||
## SwRS-055 — Sammelabschluss von Tickets aus der Wartung
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Ebene** | SwRS |
|
||||
| **Typ** | funktional |
|
||||
| **Übernahmewürdigkeit** | übernehmen |
|
||||
|
||||
**Belegte Beobachtung:** `HelpdeskCloseBL.CloseHelpdesk(IList<HelpdeskCompact> helpdesks, AppUser currentUser)`
|
||||
(Zeilen 108-118) führt ausschließlich die benannte Abfrage
|
||||
`NamedQueryEnums.Helpdesk.CloseHelpdesksFromMaintenance` mit dem Abschlussstatus und einer Liste von
|
||||
IDs aus und gibt stets `Result.AsSuccess()` zurück. Die beim Einzelabschluss
|
||||
(`CloseHelpdesk(AppUser, int helpdeskI3D, …)`) ausgeführten Folgeaktionen — Löschen der zugehörigen
|
||||
Aufgaben, Historieneintrag `HelpdeskHistoryType.Close`, Kundenaktivität, Benachrichtigung —
|
||||
unterbleiben.
|
||||
|
||||
**Offene Frage:** Ist das Auslassen der Folgeaktionen beim Sammelabschluss fachlich gewollt (etwa
|
||||
weil es sich um eine reine Datenbereinigung handelt), oder handelt es sich um eine Lücke in der
|
||||
Nachvollziehbarkeit?
|
||||
|
||||
**Was zur Bestätigung fehlt:** Die Aufrufstellen des Sammelabschlusses und die fachliche Absicht des
|
||||
Wartungsvorgangs. Der Name der benannten Abfrage („FromMaintenance") deutet auf eine Bereinigung
|
||||
hin, belegt sie aber nicht.
|
||||
|
||||
**Warum als Hypothese geführt:** Der Sammelabschluss verändert Ticketzustände ohne Protokolleintrag.
|
||||
Ob das zulässig ist, lässt sich aus den Artefakten nicht entscheiden.
|
||||
|
||||
---
|
||||
|
||||
## SwRS-085 — Bankzugangsdaten der finAPI-Anbindung
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Ebene** | SwRS |
|
||||
| **Typ** | Sicherheit |
|
||||
| **Übernahmewürdigkeit** | übernehmen |
|
||||
|
||||
**Belegte Beobachtung:** `Centron.APIs.FinAPI/Data/` modelliert `AccessToken`, `Account`,
|
||||
`AccountCapability`, `AccountInterface`, `AccountInterfacePaymentCapabilities`, `AccountList`,
|
||||
`AccountParams` und `AccountReference`. Eine Klasse für dauerhaft gespeicherte Bankzugangsdaten des
|
||||
Kunden (Zugangskennung, PIN) besteht in dieser Bibliothek nicht.
|
||||
|
||||
**Offene Frage:** Speichert das System an anderer Stelle — etwa im Zweig `Finances/OnlineBanking` oder
|
||||
in der Datenbank — Bankzugangsdaten des Kunden im Klartext oder verschlüsselt?
|
||||
|
||||
**Was zur Bestätigung fehlt:** Eine vollständige Durchsicht des Zweigs `Finances/OnlineBanking` sowie
|
||||
eine Suche im Datenbankschema nach Feldern für Bankzugangsdaten. Die Abwesenheit einer entsprechenden
|
||||
Klasse in der API-Bibliothek ist kein Beweis für die Abwesenheit im Gesamtsystem.
|
||||
|
||||
**Warum als Hypothese geführt:** Die Aussage ist sicherheitsrelevant und stützt sich auf das Fehlen
|
||||
eines Artefakts, nicht auf eine durchgesetzte Regel. Ein Negativbefund aus einer Teilmenge trägt die
|
||||
Aussage nicht.
|
||||
+1362
File diff suppressed because it is too large
Load Diff
+3558
File diff suppressed because it is too large
Load Diff
+2807
File diff suppressed because it is too large
Load Diff
+330
@@ -0,0 +1,330 @@
|
||||
# Traceability-Tabelle
|
||||
|
||||
Konsolidierte Forward- und Backward-Traceability über die drei Ebenen.
|
||||
Die Tabelle wird aus den Feldern `Tracelinks` und `Belege` der Anforderungsdateien abgeleitet.
|
||||
Spalte `Artefaktbeleg` nennt den ersten `PRIMÄR`-Beleg der SwRS-Anforderung (bei Zeilen ohne SwRS den der SyRS- beziehungsweise StRS-Anforderung).
|
||||
Ein Strich bedeutet, dass auf dieser Ebene keine eigene Anforderung besteht.
|
||||
|
||||
| StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg |
|
||||
|---|---|---|---|
|
||||
| StRS-001 | SyRS-001 | — | `src/backend/Centron.BL/Accounts/AccountBL.cs`, Rechteprüfung über `new AppRightsBL(Session).CheckRightsFromUser(currentUserI3D, …)` mit anschließender Prüfung `checkRightsResult.Contains(CREATE_CUSTOMER) == false` |
|
||||
| StRS-001 | SyRS-002 | SwRS-002 | `src/centron/Centron.WPF.UI/Modules/CentronModule.cs`, Prüfung `module.SupportsConnectionTypes` mit Verzweigung auf `CentronConnectionType.CentronWebServices` |
|
||||
| StRS-001 | SyRS-002 | SwRS-006 | `src/backend/Centron.Entities/Entities/BaseEntity.cs`, `BaseLongEntity.cs`, `DBEntity.cs`, `PersistedEntity.cs`, `PersistedLongEntity.cs` |
|
||||
| StRS-001 | SyRS-002 | SwRS-056 | `src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs`, `AddSurvey`, Zeilen 209-233, mit der Bedingung `if (contact.Data != null)` |
|
||||
| StRS-001 | SyRS-002 | SwRS-193 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Adressen/CRM", Registrierung `AccountContractsAppModuleController` mit `IsAccountManagementActive` und `SHOW_CONTRACT` |
|
||||
| StRS-001 | SyRS-003 | SwRS-018 | `docs/reference/receipts/receipts-backend-architecture.md`, Abschnitt „Address Information" mit der Aufzählung der kopierten Adressfelder in `ReceiptBase` |
|
||||
| StRS-001 | SyRS-003 | SwRS-143 | `src/backend/Centron.Entities/Entities/Sales/CustomerAssets/CustomerAsset.cs`, Zeilen 14-48, die vier Betreuerfelder mit ihren Kommentaren und die berechnete `Address` |
|
||||
| StRS-001 | SyRS-084 | SwRS-083 | `src/backend/Centron.BL/Sales/Receipts/Orders/OrderSpecificLogic.cs`, `BlockNewReceiptsDunningLevel`, Zeilen 687-693 |
|
||||
| StRS-001 | SyRS-183 | SwRS-016 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt`, Block `if (isTemplate) { data.IgnoreCallbacks = true; … }` mit dem Kommentar „We automatically ignore all callbacks when saving a receipt-template" |
|
||||
| StRS-001 | SyRS-183 | SwRS-183 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `GetReceiptsForAccountActivity` (Zeile 540), `GetAccountActivitiesForReceipt` (Zeile 545) mit `loadActivitiesFromProcessedReceipts`, `SaveAccountActivityForReceipt` (Zeile 623), `DeleteAccountActivityForReceipt` (Zeile 629) |
|
||||
| StRS-002 | — | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Adressen/CRM", Bedingung `() => !CentronCache.Instance.CrmSettings.IsAccountManagementActive.GetValueOrDefault(false)` |
|
||||
| StRS-003 | SyRS-010 | SwRS-005 | `SSMS_DB_SCHEMA.sql`, Tabellen `AngKopf`, `AufKopf`, `LiefKopf`, `RechKopf`, `VertragKopf`, `GutKopf`, `AbholKopf` mit ihren Positionstabellen |
|
||||
| StRS-003 | SyRS-010 | SwRS-009 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt` mit `return this.Session.WithTransaction(() => { … })` |
|
||||
| StRS-003 | SyRS-010 | SwRS-010 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt(IReceiptBase receipt, …)`, Zeilen 3519-3521 mit `MakeGenericMethod(...).Invoke(...)` |
|
||||
| StRS-003 | SyRS-010 | SwRS-024 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `GetReceiptProgression`, Zeile 4767, mit Parameter `limit` |
|
||||
| StRS-003 | SyRS-010 | SwRS-026 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Region „Validate DeliveryList: Related to order with down payments?", Zeile 2483 |
|
||||
| StRS-003 | SyRS-018 | SwRS-018 | `docs/reference/receipts/receipts-backend-architecture.md`, Abschnitt „Address Information" mit der Aufzählung der kopierten Adressfelder in `ReceiptBase` |
|
||||
| StRS-003 | SyRS-018 | SwRS-191 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Region „IReceiptWithLeasingAndService", Zeile 2838 |
|
||||
| StRS-003 | SyRS-019 | SwRS-019 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `GetHelpdeskInfosForReceipt` (Zeile 4405) und `CreateTicketsForReceipt` (Zeile 4445) |
|
||||
| StRS-004 | SyRS-067 | SwRS-068 | `src/apis/Centron.Api.Gls/CentronGlsErrors.cs` und `src/apis/Centron.Api.Shipcloud/Entities/` |
|
||||
| StRS-004 | SyRS-067 | SwRS-069 | `src/backend/Centron.BL/Sales/Receipts/ShipcloudPackageTemplateBL.cs` |
|
||||
| StRS-005 | SyRS-006 | — | `src/backend/Centron.BL/Warehousing/TaxBL.cs`, `GetActiveVatThroughNextVats`, Zeilen 45-54 |
|
||||
| StRS-005 | SyRS-020 | SwRS-003 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, `Result<LoggedInUser>.AsError(..., DefaultMessageCodes.NoUsernameOrPassword)` |
|
||||
| StRS-005 | SyRS-020 | SwRS-020 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, die vier genannten Methoden mit den Aufrufen von `_specificLogics.Execute(..., f => f.HasRightToCreateANewReceipt/HasRightToEditReceipt/HasRightToViewReceipt)` |
|
||||
| StRS-006 | — | — | `src/webservice/Centron.WebServices.Core/EntitiesWrongPlace/Administration/Rights/UserRightsConst.cs`, Klasse `CustomerCommon.CreditVoucher`, Zeile 2331 |
|
||||
| StRS-007 | — | — | `src/backend/Centron.BL/Administration/Company/NumberGroupEnum.cs`, Werte `PickupList = 5`, `CashOffer = 20`, `CashInvoice = 21` |
|
||||
| StRS-008 | SyRS-030 | SwRS-017 | `SSMS_DB_SCHEMA.sql`, Tabelle `Zahkond` |
|
||||
| StRS-008 | SyRS-030 | SwRS-030 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs`, die genannten Eigenschaften |
|
||||
| StRS-008 | SyRS-033 | SwRS-033 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs`, `SearchSpecialArticleToContractHead`, Zeilen 319-327 |
|
||||
| StRS-008 | SyRS-033 | SwRS-088 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs`, `CreateSpecialArticleToContractFromMspEvaluation`, Zeile 129 |
|
||||
| StRS-008 | SyRS-033 | SwRS-197 | `src/backend/Centron.BL/Warehousing/ArticleManagement/ArticleImportBL.cs` |
|
||||
| StRS-008 | SyRS-085 | SwRS-084 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Region „Mandat" in `ForwardReceipt`, Zeile 2831 |
|
||||
| StRS-009 | SyRS-032 | SwRS-032 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs`, `SearchCustomers` mit `NamedQueryAccess<AutomaticFacturaCustomer>().GetNamedQuery(NamedQueryEnums.Asset.GetCustomersForAutomatedBilling)` (Zeile 457) und `SearchBillingOrders` mit `GetOrdersForAutomatedBilling` (Zeile 118) |
|
||||
| StRS-010 | — | — | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists/MasterDataList.cs`, Eigenschaft `CounterDevice` |
|
||||
| StRS-011 | — | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Abrechnung", Registrierung `FlatRateProjectAppModuleController` mit `Helper.HasRights(…FLATRATE_BILLING_MODULE)` |
|
||||
| StRS-012 | SyRS-030 | SwRS-017 | `SSMS_DB_SCHEMA.sql`, Tabelle `Zahkond` |
|
||||
| StRS-012 | SyRS-030 | SwRS-030 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs`, die genannten Eigenschaften |
|
||||
| StRS-012 | SyRS-035 | SwRS-035 | `src/backend/Centron.BL/Sales/CustomerAssets/TimerBilling/TimerBillingBL.cs`, `SearchTimers` (Zeile 233), `GetContracts(List<int> customerI3Ds, List<int> alwaysIncludeContractI3Ds)` (Zeile 153) |
|
||||
| StRS-012 | SyRS-035 | SwRS-180 | `SSMS_DB_SCHEMA.sql`, Tabelle `ArticleWorkItems` |
|
||||
| StRS-012 | SyRS-036 | SwRS-036 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs`, `CalculateHourlySurchargeRateOverlaps` in den Zeilen 173, 180, 187 und 235 |
|
||||
| StRS-013 | SyRS-034 | SwRS-034 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `GetRightsForModule`, Zeilen 220-223, `_modules.FirstOrDefault(f => f.ModuleType == controller.GetType())?.GetRights()` |
|
||||
| StRS-013 | SyRS-034 | SwRS-109 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 249-254 und 405-408, die beiden Bedingungen für persönliche und administrative Tokenverwaltung |
|
||||
| StRS-014 | SyRS-035 | SwRS-035 | `src/backend/Centron.BL/Sales/CustomerAssets/TimerBilling/TimerBillingBL.cs`, `SearchTimers` (Zeile 233), `GetContracts(List<int> customerI3Ds, List<int> alwaysIncludeContractI3Ds)` (Zeile 153) |
|
||||
| StRS-014 | SyRS-035 | SwRS-180 | `SSMS_DB_SCHEMA.sql`, Tabelle `ArticleWorkItems` |
|
||||
| StRS-014 | SyRS-036 | SwRS-036 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs`, `CalculateHourlySurchargeRateOverlaps` in den Zeilen 173, 180, 187 und 235 |
|
||||
| StRS-014 | SyRS-040 | SwRS-040 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimeRecordingBL.cs`, Signaturen mit `string guid` in `PauseRecording` (Zeile 277), `ResumeRecording` (317), `StopRecording` (357), `ClearRecording` (398) |
|
||||
| StRS-014 | SyRS-042 | SwRS-042 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerSignatureBL.cs`, `AddSignature` (Zeile 31) mit vorangehender Prüfung `HelpdeskSignatureExists` (Zeile 62) und `GetSignature` (Zeile 67) |
|
||||
| StRS-014 | SyRS-042 | SwRS-043 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerSignatureBL.cs`, Zeile 51, Aufruf `AddSignatureLog(new HelpdeskTimerBL(this.Session).GetHelpdeskTimerByI3D(helpdeskTimerI3D), currentUser)` |
|
||||
| StRS-014 | SyRS-182 | SwRS-182 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs`, `GetEmployeeTimeStatistics(ICollection<int> articleI3Ds, …)`, Zeile 710 |
|
||||
| StRS-015 | — | — | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerSignatureBL.cs`, `AddSignature` Zeile 31 mit Prüfung `HelpdeskSignatureExists` Zeile 62 |
|
||||
| StRS-016 | SyRS-019 | SwRS-019 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `GetHelpdeskInfosForReceipt` (Zeile 4405) und `CreateTicketsForReceipt` (Zeile 4445) |
|
||||
| StRS-016 | SyRS-050 | SwRS-050 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `DoValidateMandatoryFields`, Zeile 658, mit `var messageBuilder = new StringBuilder();` und `messageBuilder.AppendLine("Kein Kunde ausgewählt");` |
|
||||
| StRS-016 | SyRS-051 | SwRS-051 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `DoBeforeSave`, Zeilen 310-326 |
|
||||
| StRS-016 | SyRS-051 | SwRS-054 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckUserRigths`, Zeilen 433-443, mit `else { entity.ClosedAt = null; }` |
|
||||
| StRS-016 | SyRS-051 | SwRS-057 | `src/backend/Centron.BL/Sales/Support/` mit den genannten 49 Klassen |
|
||||
| StRS-016 | SyRS-054 | SwRS-007 | `src/backend/Centron.BL/Warehousing/TaxBL.cs`, `UpdateArticleVATs` mit `NamedQueryAccess<Article>().GetNamedQuery(NamedQueryEnums.ValueAddedTax.UpdateArticleVatsAndPrices, parameters)` |
|
||||
| StRS-016 | SyRS-054 | SwRS-054 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckUserRigths`, Zeilen 433-443, mit `else { entity.ClosedAt = null; }` |
|
||||
| StRS-016 | SyRS-054 | SwRS-055 | `src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs`, `CloseHelpdesk(IList<HelpdeskCompact>, AppUser)`, Zeilen 108-118 |
|
||||
| StRS-016 | SyRS-054 | SwRS-202 | `src/backend/Centron.BL/ItPlanner/ChecklistVirtualObjectCategoryBL.cs` |
|
||||
| StRS-016 | SyRS-057 | SwRS-057 | `src/backend/Centron.BL/Sales/Support/` mit den genannten 49 Klassen |
|
||||
| StRS-016 | SyRS-057 | SwRS-213 | `src/backend/Centron.BL/Sales/Support/ExternalToolsReplacementBL.cs` |
|
||||
| StRS-016 | SyRS-058 | SwRS-058 | `src/nexus/CentronNexus/Management/TicketPatterns/Components/` mit den neun genannten Reiterkomponenten und `TicketPatternTree.razor` |
|
||||
| StRS-016 | SyRS-058 | SwRS-125 | `src/nexus/CentronNexus/Management/TicketPatterns/Components/SelfCareFormFieldGrid.razor` und `SelfCareFormFieldEditPopup.razor` |
|
||||
| StRS-016 | SyRS-058 | SwRS-195 | `src/backend/Centron.BL/Sales/Support/TicketProcess/` und `src/backend/Centron.BL/TicketProjects/TicketProjectBL.cs` |
|
||||
| StRS-016 | SyRS-059 | SwRS-059 | `src/nexus/CentronNexus/ServiceBoard/CachedTicketList/Components/` mit `FilterEditorGroup.razor`, `ConditionalFormattingEditor.razor`, `SummaryEditor.razor`, `KanbanBucketSelection.razor` |
|
||||
| StRS-016 | SyRS-125 | SwRS-058 | `src/nexus/CentronNexus/Management/TicketPatterns/Components/` mit den neun genannten Reiterkomponenten und `TicketPatternTree.razor` |
|
||||
| StRS-016 | SyRS-125 | SwRS-125 | `src/nexus/CentronNexus/Management/TicketPatterns/Components/SelfCareFormFieldGrid.razor` und `SelfCareFormFieldEditPopup.razor` |
|
||||
| StRS-016 | SyRS-183 | SwRS-016 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt`, Block `if (isTemplate) { data.IgnoreCallbacks = true; … }` mit dem Kommentar „We automatically ignore all callbacks when saving a receipt-template" |
|
||||
| StRS-016 | SyRS-183 | SwRS-183 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `GetReceiptsForAccountActivity` (Zeile 540), `GetAccountActivitiesForReceipt` (Zeile 545) mit `loadActivitiesFromProcessedReceipts`, `SaveAccountActivityForReceipt` (Zeile 623), `DeleteAccountActivityForReceipt` (Zeile 629) |
|
||||
| StRS-017 | SyRS-120 | SwRS-025 | `src/backend/Centron.BL/Sales/Receipts/ReceiptCartReleaseSystemBL.cs` |
|
||||
| StRS-017 | SyRS-120 | SwRS-120 | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs`, `GetWebRightByI3D` (Zeile 121), `GetWebRightsCategoriesByI3D` (Zeile 126), `GetAllWebRightsFromWebAccount` (Zeile 141) |
|
||||
| StRS-017 | SyRS-120 | SwRS-121 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CanUserViewReceipt` mit `if (loggedInUser.IsWebAccountLogin)` |
|
||||
| StRS-018 | SyRS-055 | — | `src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs`, `CanCloseHelpdesk`, Zeilen 159-167 |
|
||||
| StRS-018 | SyRS-060 | SwRS-060 | `src/backend/Centron.BL/CustomerArea/RmaBL.cs`, Verwendungen von `BarcodeState.*` in den Zeilen 179, 192, 201, 266, 312-313 |
|
||||
| StRS-019 | — | — | `src/backend/Centron.BL/CheckListArea/CentronChecklistBL.cs` und `CheckListArea/ChangeTracking/` |
|
||||
| StRS-020 | — | — | `src/nexus/CentronNexus/Management/TaskManagement/Components/TaskTabTickets.razor` |
|
||||
| StRS-021 | SyRS-060 | SwRS-060 | `src/backend/Centron.BL/CustomerArea/RmaBL.cs`, Verwendungen von `BarcodeState.*` in den Zeilen 179, 192, 201, 266, 312-313 |
|
||||
| StRS-021 | SyRS-066 | SwRS-067 | `src/backend/Centron.BL/Warehousing/ArticleManagement/` mit den neun genannten Klassen |
|
||||
| StRS-022 | SyRS-062 | SwRS-062 | `src/backend/Centron.BL/Warehousing/InventoryManagement/InventoryNewBL.cs`, `ChangeInventoryGroup` (Zeile 331) und `GetInventoryGroupArticles` (Zeile 251) |
|
||||
| StRS-022 | SyRS-062 | SwRS-063 | `src/backend/Centron.BL/Warehousing/InventoryManagement/InventoryBL.cs` und `InventoryNewBL.cs` |
|
||||
| StRS-023 | SyRS-063 | SwRS-064 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateReceiptQuantityPicked`, Zeile 5031 |
|
||||
| StRS-024 | SyRS-070 | SwRS-070 | `src/backend/Centron.BL/Sales/Receipts/SupplierOrders/`, `SupplierDeliveryLists/`, `SupplierInvoices/`, `SupplierCreditVouchers/` |
|
||||
| StRS-024 | SyRS-073 | SwRS-073 | `src/apis/Centron.APIs.CopDataAccess/CopApi.cs`, `CopException.cs`, `Data/` |
|
||||
| StRS-024 | SyRS-075 | SwRS-075 | `src/backend/Centron.BL/Purchasing/OrderSuggestionList/` |
|
||||
| StRS-024 | SyRS-076 | SwRS-076 | `src/backend/Centron.BL/Purchasing/SupplierOrderPerBranchBL.cs` |
|
||||
| StRS-024 | SyRS-076 | SwRS-199 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Buchhaltung/Finanzen", Kommentar „Kalkulation pro Filiale" |
|
||||
| StRS-025 | SyRS-071 | SwRS-071 | `src/backend/Centron.BL/EDI/EDIDispatcherBL.cs` und `EDICommonBL.cs` |
|
||||
| StRS-025 | SyRS-071 | SwRS-072 | `src/backend/Centron.BL/EDI/Zugferd/ZUGFeRD_BL.cs`, `ReadInvoice`, Zeile 38, mit den Parametern `List<IEDIReceiptHead>` und `List<List<IEDIReceiptItems>>` |
|
||||
| StRS-025 | SyRS-071 | SwRS-087 | `src/backend/Centron.BL/DataExchange/` mit den zehn genannten Unterzweigen |
|
||||
| StRS-025 | SyRS-072 | SwRS-071 | `src/backend/Centron.BL/EDI/EDIDispatcherBL.cs` und `EDICommonBL.cs` |
|
||||
| StRS-025 | SyRS-072 | SwRS-072 | `src/backend/Centron.BL/EDI/Zugferd/ZUGFeRD_BL.cs`, `ReadInvoice`, Zeile 38, mit den Parametern `List<IEDIReceiptHead>` und `List<List<IEDIReceiptItems>>` |
|
||||
| StRS-026 | — | — | `src/backend/Centron.BL/EDI/Zugferd/ZUGFeRD_BL.cs`, `ReadInvoice`, Zeile 38 |
|
||||
| StRS-027 | SyRS-009 | SwRS-080 | `SSMS_DB_SCHEMA.sql`, Tabellen `ArtikelBranchErloeskonto`, `UnterwarenFilialeErloeskonto`, `WarenFilialeErloeskonto` |
|
||||
| StRS-027 | SyRS-080 | SwRS-080 | `SSMS_DB_SCHEMA.sql`, Tabellen `ArtikelBranchErloeskonto`, `UnterwarenFilialeErloeskonto`, `WarenFilialeErloeskonto` |
|
||||
| StRS-027 | SyRS-080 | SwRS-198 | `SSMS_DB_SCHEMA.sql`, Tabellen `Kostenstellen`, `Kostentraeger` |
|
||||
| StRS-027 | SyRS-080 | SwRS-199 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Buchhaltung/Finanzen", Kommentar „Kalkulation pro Filiale" |
|
||||
| StRS-028 | SyRS-017 | SwRS-017 | `SSMS_DB_SCHEMA.sql`, Tabelle `Zahkond` |
|
||||
| StRS-028 | SyRS-081 | SwRS-081 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateReceiptIsPaid(…, string moduleOrAction, AppUser currentUser)`, Zeile 4902 |
|
||||
| StRS-028 | SyRS-086 | SwRS-085 | `src/apis/Centron.APIs.FinAPI/Data/AccessToken.cs` |
|
||||
| StRS-028 | SyRS-087 | SwRS-086 | `src/backend/Centron.BL/Finances/IncomingPayments/IncomingPaymentBL.cs`, `CreateIncomingPaymentLogItem(IncomingPaymentLog logItem)`, Zeile 21 |
|
||||
| StRS-028 | SyRS-088 | SwRS-087 | `src/backend/Centron.BL/DataExchange/` mit den zehn genannten Unterzweigen |
|
||||
| StRS-029 | SyRS-082 | SwRS-082 | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs`, Zeilen 253-270, Zuweisungen `invoice.DunningLevel1Date = DateTime.Now; invoice.DunningLevel1Employee = loggedInUser.UserI3D;` |
|
||||
| StRS-029 | SyRS-083 | SwRS-082 | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs`, Zeilen 253-270, Zuweisungen `invoice.DunningLevel1Date = DateTime.Now; invoice.DunningLevel1Employee = loggedInUser.UserI3D;` |
|
||||
| StRS-029 | SyRS-085 | SwRS-084 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Region „Mandat" in `ForwardReceipt`, Zeile 2831 |
|
||||
| StRS-030 | SyRS-084 | SwRS-083 | `src/backend/Centron.BL/Sales/Receipts/Orders/OrderSpecificLogic.cs`, `BlockNewReceiptsDunningLevel`, Zeilen 687-693 |
|
||||
| StRS-031 | SyRS-001 | — | `src/backend/Centron.BL/Accounts/AccountBL.cs`, Rechteprüfung über `new AppRightsBL(Session).CheckRightsFromUser(currentUserI3D, …)` mit anschließender Prüfung `checkRightsResult.Contains(CREATE_CUSTOMER) == false` |
|
||||
| StRS-031 | SyRS-020 | SwRS-003 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, `Result<LoggedInUser>.AsError(..., DefaultMessageCodes.NoUsernameOrPassword)` |
|
||||
| StRS-031 | SyRS-020 | SwRS-020 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, die vier genannten Methoden mit den Aufrufen von `_specificLogics.Execute(..., f => f.HasRightToCreateANewReceipt/HasRightToEditReceipt/HasRightToViewReceipt)` |
|
||||
| StRS-031 | SyRS-042 | SwRS-042 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerSignatureBL.cs`, `AddSignature` (Zeile 31) mit vorangehender Prüfung `HelpdeskSignatureExists` (Zeile 62) und `GetSignature` (Zeile 67) |
|
||||
| StRS-031 | SyRS-042 | SwRS-043 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerSignatureBL.cs`, Zeile 51, Aufruf `AddSignatureLog(new HelpdeskTimerBL(this.Session).GetHelpdeskTimerByI3D(helpdeskTimerI3D), currentUser)` |
|
||||
| StRS-031 | SyRS-051 | SwRS-051 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `DoBeforeSave`, Zeilen 310-326 |
|
||||
| StRS-031 | SyRS-051 | SwRS-054 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckUserRigths`, Zeilen 433-443, mit `else { entity.ClosedAt = null; }` |
|
||||
| StRS-031 | SyRS-051 | SwRS-057 | `src/backend/Centron.BL/Sales/Support/` mit den genannten 49 Klassen |
|
||||
| StRS-031 | SyRS-065 | SwRS-066 | `SSMS_DB_SCHEMA.sql`, Tabellen `Produktfamilie`, `ProduktfamilieKundenSperren`, `ProduktfamiliePositionSperren` |
|
||||
| StRS-031 | SyRS-065 | SwRS-067 | `src/backend/Centron.BL/Warehousing/ArticleManagement/` mit den neun genannten Klassen |
|
||||
| StRS-031 | SyRS-086 | SwRS-085 | `src/apis/Centron.APIs.FinAPI/Data/AccessToken.cs` |
|
||||
| StRS-031 | SyRS-090 | SwRS-090 | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, `GetRightsFromCurrentUser` (Zeile 63) und `CheckRightsFromUser` (Zeile 93) |
|
||||
| StRS-031 | SyRS-091 | SwRS-003 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, `Result<LoggedInUser>.AsError(..., DefaultMessageCodes.NoUsernameOrPassword)` |
|
||||
| StRS-031 | SyRS-091 | SwRS-091 | `src/webservice/Centron.Controllers/Authorization/AuthorizeUserRightAttribute.cs`, `AuthorizeAnyUserRightAttribute.cs`, `AuthorizeAllUserRightsAttribute.cs` |
|
||||
| StRS-031 | SyRS-102 | SwRS-101 | `src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs` |
|
||||
| StRS-031 | SyRS-102 | SwRS-212 | `src/backend/Centron.BL/Mobile/MobileBL.cs` und `src/backend/Centron.Entities/Entities/Mobile/` |
|
||||
| StRS-031 | SyRS-109 | SwRS-108 | `src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs`, `_logBL.LogAction(accessToken, AccessTokenLogActionType.Created, …, ipAddress)` (Zeile 185) und die `ValidationFailed`-Aufrufe (Zeilen 396, 403) |
|
||||
| StRS-031 | SyRS-109 | SwRS-109 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 249-254 und 405-408, die beiden Bedingungen für persönliche und administrative Tokenverwaltung |
|
||||
| StRS-031 | SyRS-170 | SwRS-034 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `GetRightsForModule`, Zeilen 220-223, `_modules.FirstOrDefault(f => f.ModuleType == controller.GetType())?.GetRights()` |
|
||||
| StRS-031 | SyRS-170 | SwRS-170 | `src/backend/Centron.BL/Statistics/` mit den neun genannten Unterbereichen |
|
||||
| StRS-031 | SyRS-170 | SwRS-190 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Controlling/Analytics", Kommentar „Vertragsauswertung" mit der Registrierung von `ContractEvaluation2` |
|
||||
| StRS-031 | SyRS-170 | SwRS-210 | `src/webservice/…/UserRightsConst.cs`, Klasse `VideoPortal`, Zeile 2786 |
|
||||
| StRS-031 | SyRS-170 | SwRS-215 | `src/nexus/CentronNexus/ServiceBoard/Dashboard/DashboardMyTicketStats.razor`, `DashboardMyTimerecordStats.razor`, `DashboardMyDayList.razor` |
|
||||
| StRS-031 | SyRS-176 | SwRS-176 | `src/backend/Centron.BL/MassUpdate/MassUpdateBL.cs` und `src/backend/Centron.Entities/Entities/MassUpdate/` |
|
||||
| StRS-031 | SyRS-176 | SwRS-197 | `src/backend/Centron.BL/Warehousing/ArticleManagement/ArticleImportBL.cs` |
|
||||
| StRS-031 | SyRS-177 | SwRS-177 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, `SettingsForWebService`, Zeilen 70-95, mit `GetDatabaseInfosForLicenseServer()` und dem Debug-Zweig |
|
||||
| StRS-032 | SyRS-020 | SwRS-003 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, `Result<LoggedInUser>.AsError(..., DefaultMessageCodes.NoUsernameOrPassword)` |
|
||||
| StRS-032 | SyRS-020 | SwRS-020 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, die vier genannten Methoden mit den Aufrufen von `_specificLogics.Execute(..., f => f.HasRightToCreateANewReceipt/HasRightToEditReceipt/HasRightToViewReceipt)` |
|
||||
| StRS-032 | SyRS-057 | SwRS-057 | `src/backend/Centron.BL/Sales/Support/` mit den genannten 49 Klassen |
|
||||
| StRS-032 | SyRS-057 | SwRS-213 | `src/backend/Centron.BL/Sales/Support/ExternalToolsReplacementBL.cs` |
|
||||
| StRS-032 | SyRS-092 | SwRS-020 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, die vier genannten Methoden mit den Aufrufen von `_specificLogics.Execute(..., f => f.HasRightToCreateANewReceipt/HasRightToEditReceipt/HasRightToViewReceipt)` |
|
||||
| StRS-032 | SyRS-092 | SwRS-092 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CanUserEditReceipt` mit `BranchBL.IsBranchEqual(...)` gegenüber `CanUserCreateReceiptsInBranch` mit eigener Vergleichslogik, Zeilen 10258-10296 |
|
||||
| StRS-033 | SyRS-056 | SwRS-056 | `src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs`, `AddSurvey`, Zeilen 209-233, mit der Bedingung `if (contact.Data != null)` |
|
||||
| StRS-033 | SyRS-056 | SwRS-203 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `AddShortDescriptionPrefix` mit `new AppSettingsBL(this.Session).GetSettings(ApplicationSettingID.IsHelpdeskShortDescriptionPrefixActivated, ApplicationSettingID.HelpdeskShortDescriptionPrefix)` und den typisierten Zugriffen mit Vorgabewert |
|
||||
| StRS-033 | SyRS-100 | SwRS-100 | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, `CreateNewTicket` mit `this.GetTicketSalt(deviceID)`, Zeilen 61-70 |
|
||||
| StRS-033 | SyRS-102 | SwRS-101 | `src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs` |
|
||||
| StRS-033 | SyRS-102 | SwRS-212 | `src/backend/Centron.BL/Mobile/MobileBL.cs` und `src/backend/Centron.Entities/Entities/Mobile/` |
|
||||
| StRS-033 | SyRS-105 | SwRS-104 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/ITwoFactorValidator.cs` mit den beiden Implementierungen |
|
||||
| StRS-033 | SyRS-106 | SwRS-105 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Klasse `AuthObject`, Zeilen 21-41, mit `RequestId` und überschriebenem `ToString()` |
|
||||
| StRS-033 | SyRS-106 | SwRS-106 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, Zeilen 47-56 |
|
||||
| StRS-033 | SyRS-107 | SwRS-106 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, Zeilen 47-56 |
|
||||
| StRS-034 | SyRS-076 | SwRS-076 | `src/backend/Centron.BL/Purchasing/SupplierOrderPerBranchBL.cs` |
|
||||
| StRS-034 | SyRS-076 | SwRS-199 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Buchhaltung/Finanzen", Kommentar „Kalkulation pro Filiale" |
|
||||
| StRS-034 | SyRS-092 | SwRS-020 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, die vier genannten Methoden mit den Aufrufen von `_specificLogics.Execute(..., f => f.HasRightToCreateANewReceipt/HasRightToEditReceipt/HasRightToViewReceipt)` |
|
||||
| StRS-034 | SyRS-092 | SwRS-092 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CanUserEditReceipt` mit `BranchBL.IsBranchEqual(...)` gegenüber `CanUserCreateReceiptsInBranch` mit eigener Vergleichslogik, Zeilen 10258-10296 |
|
||||
| StRS-034 | SyRS-093 | SwRS-093 | `src/backend/Centron.BL/Administration/Mandatory/MandatoryBL.cs`, `GetNumberGroup`, Zeilen 55-81, `if (ModuleFeatures.IsNumberGroupRefactoringAvailable) { … } else { … }` |
|
||||
| StRS-034 | SyRS-093 | SwRS-192 | `src/backend/Centron.BL/Administration/Company/NumberGroupEnum.cs`, `CRMProject = 24` |
|
||||
| StRS-035 | SyRS-093 | SwRS-093 | `src/backend/Centron.BL/Administration/Mandatory/MandatoryBL.cs`, `GetNumberGroup`, Zeilen 55-81, `if (ModuleFeatures.IsNumberGroupRefactoringAvailable) { … } else { … }` |
|
||||
| StRS-035 | SyRS-093 | SwRS-192 | `src/backend/Centron.BL/Administration/Company/NumberGroupEnum.cs`, `CRMProject = 24` |
|
||||
| StRS-035 | SyRS-094 | SwRS-094 | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs`, Zeilen 78-91 |
|
||||
| StRS-035 | SyRS-094 | SwRS-095 | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs`, `FindNextNumber`, Zeilen 116-131, Interpolation von `{tableName}`, `{fieldName}` und `{counter}` |
|
||||
| StRS-035 | SyRS-095 | SwRS-095 | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs`, `FindNextNumber`, Zeilen 116-131, Interpolation von `{tableName}`, `{fieldName}` und `{counter}` |
|
||||
| StRS-036 | SyRS-089 | SwRS-088 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs`, `CreateSpecialArticleToContractFromMspEvaluation`, Zeile 129 |
|
||||
| StRS-036 | SyRS-103 | SwRS-101 | `src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs` |
|
||||
| StRS-036 | SyRS-103 | SwRS-102 | `src/backend/Centron.Interfaces/Administration/Logins/LicenseGuids.cs` |
|
||||
| StRS-036 | SyRS-103 | SwRS-177 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, `SettingsForWebService`, Zeilen 70-95, mit `GetDatabaseInfosForLicenseServer()` und dem Debug-Zweig |
|
||||
| StRS-036 | SyRS-109 | SwRS-108 | `src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs`, `_logBL.LogAction(accessToken, AccessTokenLogActionType.Created, …, ipAddress)` (Zeile 185) und die `ValidationFailed`-Aufrufe (Zeilen 396, 403) |
|
||||
| StRS-036 | SyRS-109 | SwRS-109 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 249-254 und 405-408, die beiden Bedingungen für persönliche und administrative Tokenverwaltung |
|
||||
| StRS-037 | SyRS-104 | SwRS-100 | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, `CreateNewTicket` mit `this.GetTicketSalt(deviceID)`, Zeilen 61-70 |
|
||||
| StRS-037 | SyRS-104 | SwRS-103 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Feld `_getExistingOrCreateTicketLock` und die `lock`-Klammer in `AuthenticateUser` |
|
||||
| StRS-038 | SyRS-110 | SwRS-028 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `ForwardReceipt` mit `IList<int> receiptProjectLayoutItemI3DsToForward` und `CreateFullReportForReceipt` mit `IList<ReceiptProjectLayoutItem> layoutItems` |
|
||||
| StRS-038 | SyRS-110 | SwRS-029 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `new SwitzerlandSettingsController()` in `GetSettingsWithoutModule()` |
|
||||
| StRS-038 | SyRS-110 | SwRS-110 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CreateFullReportForReceipt` (Zeile 3221) und `CreateReportPreviewForReceipt` (Zeile 3177), beide mit `CreateFullReportConfiguration` |
|
||||
| StRS-038 | SyRS-110 | SwRS-178 | `src/backend/Centron.BL/ReportEngine/` mit den zwölf genannten Bestandteilen |
|
||||
| StRS-038 | SyRS-124 | SwRS-124 | `src/backend/Centron.BL/Administration/FileManagement/SharedDocumentBL.cs` |
|
||||
| StRS-038 | SyRS-160 | SwRS-126 | `src/nexus/CentronNexus/Configuration/` mit den 13 genannten Konfigurationsklassen und dem Verzeichnis `Migrations` |
|
||||
| StRS-038 | SyRS-160 | SwRS-160 | `docker/Dockerfile`, zweistufiger Bau mit `FROM … sdk … AS base` und `FROM … runtime …` sowie `dotnet publish … --self-contained true` |
|
||||
| StRS-038 | SyRS-160 | SwRS-174 | `src/webservice/Centron.Host/`, `Centron.Host.Console/`, `Centron.Host.WindowsService/` als getrennte Projekte mit gemeinsamer Kernabhängigkeit |
|
||||
| StRS-038 | SyRS-178 | SwRS-178 | `src/backend/Centron.BL/ReportEngine/` mit den zwölf genannten Bestandteilen |
|
||||
| StRS-039 | SyRS-111 | SwRS-111 | `src/backend/Centron.BL/Administration/FileManagement/DirectoryReferenceProviders/` |
|
||||
| StRS-039 | SyRS-111 | SwRS-208 | `src/webservice/…/UserRightsConst.cs`, Klasse `Documentation` mit Unterklasse `Categories`, Zeilen 1847-1876 |
|
||||
| StRS-039 | SyRS-166 | SwRS-122 | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs`, `RepairMissingWebAccountContactLinks`, Zeile 318 |
|
||||
| StRS-039 | SyRS-166 | SwRS-166 | `src/backend/Centron.BL/Services/DataQuality/DirectoryCheckBL.cs`, `GetCaptionForDirectoryCheckItem`, Zeile 84 |
|
||||
| StRS-040 | SyRS-068 | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Eintrag `new SendDeliveryListShippingConfirmationGeneralSettingsAppModueController()` |
|
||||
| StRS-040 | SyRS-112 | SwRS-112 | `src/backend/Centron.BL/Mail/` mit den sieben genannten Unterzweigen |
|
||||
| StRS-040 | SyRS-112 | SwRS-207 | `src/backend/Centron.BL/WebLinks/IWebLinkActionHandler.cs` mit den beiden Implementierungen |
|
||||
| StRS-040 | SyRS-113 | SwRS-053 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `AddShortDescriptionPrefix` mit `new ReplacementBL().ReplaceVariables(prefix, variablesAndValues, "@@")` |
|
||||
| StRS-040 | SyRS-113 | SwRS-112 | `src/backend/Centron.BL/Mail/` mit den sieben genannten Unterzweigen |
|
||||
| StRS-040 | SyRS-113 | SwRS-113 | `src/backend/Centron.BL/MailScanner/MailScannerBL.cs`, `GetProfiles` (57), `GetWorkflows` (36), `SaveTasks` (118), `GetMailScannerLogs` (140) |
|
||||
| StRS-040 | SyRS-114 | SwRS-114 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, die vier genannten Controller in `GetSettingsWithoutModule()` |
|
||||
| StRS-040 | SyRS-114 | SwRS-204 | `src/backend/Centron.BL/AppointmentRequests/AppointmentRequestBL.cs` und `src/backend/Centron.Entities/Entities/AppointmentRequests/` |
|
||||
| StRS-040 | SyRS-127 | SwRS-127 | `src/nexus/CentronNexus.OutlookAddIn/CentronNexus.OutlookAddIn.csproj` und `RazorComponentsEndpointConventionBuilderExtensions.cs` |
|
||||
| StRS-041 | — | — | `src/backend/Centron.BL/MailScanner/MailScannerBL.cs`, `SaveMailScannerLog` (Zeile 133) und `GetProfiles` (57) |
|
||||
| StRS-042 | SyRS-181 | SwRS-181 | `src/backend/Centron.BL/EmployeeArea/` und `src/backend/Centron.BL/Administration/Employees/` mit den genannten Klassen |
|
||||
| StRS-043 | SyRS-115 | SwRS-115 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `PersonalPhoneSettingsController` in `GetPersonalSettings()` und `PhoneSettingsController` in `GetSettingsWithoutModule()` |
|
||||
| StRS-044 | SyRS-004 | — | `src/backend/Centron.BL/Sales/Support/CustomerSpecialArticleBL.cs` und `src/backend/Centron.BL/Accounts/SpecialPrices/` |
|
||||
| StRS-044 | SyRS-120 | SwRS-025 | `src/backend/Centron.BL/Sales/Receipts/ReceiptCartReleaseSystemBL.cs` |
|
||||
| StRS-044 | SyRS-120 | SwRS-120 | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs`, `GetWebRightByI3D` (Zeile 121), `GetWebRightsCategoriesByI3D` (Zeile 126), `GetAllWebRightsFromWebAccount` (Zeile 141) |
|
||||
| StRS-044 | SyRS-120 | SwRS-121 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CanUserViewReceipt` mit `if (loggedInUser.IsWebAccountLogin)` |
|
||||
| StRS-044 | SyRS-121 | SwRS-121 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CanUserViewReceipt` mit `if (loggedInUser.IsWebAccountLogin)` |
|
||||
| StRS-044 | SyRS-122 | SwRS-122 | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs`, `RepairMissingWebAccountContactLinks`, Zeile 318 |
|
||||
| StRS-044 | SyRS-125 | SwRS-058 | `src/nexus/CentronNexus/Management/TicketPatterns/Components/` mit den neun genannten Reiterkomponenten und `TicketPatternTree.razor` |
|
||||
| StRS-044 | SyRS-125 | SwRS-125 | `src/nexus/CentronNexus/Management/TicketPatterns/Components/SelfCareFormFieldGrid.razor` und `SelfCareFormFieldEditPopup.razor` |
|
||||
| StRS-044 | SyRS-126 | SwRS-126 | `src/nexus/CentronNexus/Configuration/` mit den 13 genannten Konfigurationsklassen und dem Verzeichnis `Migrations` |
|
||||
| StRS-044 | SyRS-127 | SwRS-127 | `src/nexus/CentronNexus.OutlookAddIn/CentronNexus.OutlookAddIn.csproj` und `RazorComponentsEndpointConventionBuilderExtensions.cs` |
|
||||
| StRS-044 | SyRS-129 | SwRS-129 | `src/nexus/CentronNexus/SharedResource.resx`, `SharedResource.en-US.resx` mit den zugehörigen Designer-Klassen |
|
||||
| StRS-045 | SyRS-123 | SwRS-123 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `ChangeWebReceiptState(string token, WebReceiptState webReceiptState)`, Zeile 5903 |
|
||||
| StRS-045 | SyRS-123 | SwRS-124 | `src/backend/Centron.BL/Administration/FileManagement/SharedDocumentBL.cs` |
|
||||
| StRS-045 | SyRS-123 | SwRS-207 | `src/backend/Centron.BL/WebLinks/IWebLinkActionHandler.cs` mit den beiden Implementierungen |
|
||||
| StRS-045 | SyRS-124 | SwRS-124 | `src/backend/Centron.BL/Administration/FileManagement/SharedDocumentBL.cs` |
|
||||
| StRS-046 | SyRS-054 | SwRS-007 | `src/backend/Centron.BL/Warehousing/TaxBL.cs`, `UpdateArticleVATs` mit `NamedQueryAccess<Article>().GetNamedQuery(NamedQueryEnums.ValueAddedTax.UpdateArticleVatsAndPrices, parameters)` |
|
||||
| StRS-046 | SyRS-054 | SwRS-054 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckUserRigths`, Zeilen 433-443, mit `else { entity.ClosedAt = null; }` |
|
||||
| StRS-046 | SyRS-054 | SwRS-055 | `src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs`, `CloseHelpdesk(IList<HelpdeskCompact>, AppUser)`, Zeilen 108-118 |
|
||||
| StRS-046 | SyRS-054 | SwRS-202 | `src/backend/Centron.BL/ItPlanner/ChecklistVirtualObjectCategoryBL.cs` |
|
||||
| StRS-047 | SyRS-108 | SwRS-107 | `src/backend/Centron.Common/TextCoding/AESCryptoLogic.cs`, Signaturen mit `string securityKey = null` und `GetKeyAndIV` mit Rückfall auf `SECURITY_KEY` |
|
||||
| StRS-047 | SyRS-108 | SwRS-130 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 608 und 700 |
|
||||
| StRS-047 | SyRS-108 | SwRS-131 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 551 und 949, `GetHotlineMasterKey()` |
|
||||
| StRS-047 | SyRS-130 | — | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeile 700, `propertyValue.ValueEncryptedString = new AESCryptoLogic().EncryptText(customerHotline.Password, masterKeyResult.Data)` |
|
||||
| StRS-048 | SyRS-131 | SwRS-132 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, `AddOldHotlineEntriesToCustomer`, Zeile 722, im Zusammenhang mit der Verschlüsselung Zeile 700 |
|
||||
| StRS-049 | SyRS-089 | SwRS-088 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs`, `CreateSpecialArticleToContractFromMspEvaluation`, Zeile 129 |
|
||||
| StRS-049 | SyRS-140 | SwRS-140 | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists/MasterDataList.cs`, die genannten Eigenschaften |
|
||||
| StRS-049 | SyRS-140 | SwRS-141 | `SSMS_DB_SCHEMA.sql`, Tabellen `AccountDevices`, `AccountDevicesToTickets` |
|
||||
| StRS-049 | SyRS-140 | SwRS-142 | `SSMS_DB_SCHEMA.sql`, die 14 genannten `AssetManagement*`-Tabellen und `MonitoringServiceSettings` |
|
||||
| StRS-049 | SyRS-140 | SwRS-143 | `src/backend/Centron.Entities/Entities/Sales/CustomerAssets/CustomerAsset.cs`, Zeilen 14-48, die vier Betreuerfelder mit ihren Kommentaren und die berechnete `Address` |
|
||||
| StRS-050 | SyRS-150 | SwRS-150 | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, `DsgvoDeleteRightDeleteContacts` mit `deleteProtocol` und Rückgabe `Result<string>`, Zeilen 787-850 |
|
||||
| StRS-050 | SyRS-150 | SwRS-151 | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 863-903, Anonymisierungsanweisungen mit `SET h.Status = 0, h.Name = '{DsgvoDeletedContactMessage}', h.Fon = default, …` |
|
||||
| StRS-050 | SyRS-151 | SwRS-151 | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 863-903, Anonymisierungsanweisungen mit `SET h.Status = 0, h.Name = '{DsgvoDeletedContactMessage}', h.Fon = default, …` |
|
||||
| StRS-050 | SyRS-152 | SwRS-152 | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, `GetDeletedCustomers` mit `stats.CleanUpStatsKind = DataSecurityCleanUpStatsKind.CustomersDeleted`, Zeilen 353-360 |
|
||||
| StRS-051 | SyRS-007 | SwRS-007 | `src/backend/Centron.BL/Warehousing/TaxBL.cs`, `UpdateArticleVATs` mit `NamedQueryAccess<Article>().GetNamedQuery(NamedQueryEnums.ValueAddedTax.UpdateArticleVatsAndPrices, parameters)` |
|
||||
| StRS-051 | SyRS-007 | SwRS-008 | `src/backend/Centron.BL/Warehousing/TaxBL.cs`, `foreach (var batch in articleI3DsWithOldTaxRate.Batch(2000))` |
|
||||
| StRS-051 | SyRS-014 | SwRS-014 | `SSMS_DB_SCHEMA.sql`, Tabelle `RechKopfVersions` |
|
||||
| StRS-051 | SyRS-023 | SwRS-023 | `src/centron/Centron.WPF.UI/Modules/CentronModule.cs`, `OpenModuleByObject` mit `objectKind == CentronObjectKindNumeric.HelpdeskClass` und `objectKind == CentronObjectKindNumeric.ContractClass` |
|
||||
| StRS-051 | SyRS-023 | SwRS-166 | `src/backend/Centron.BL/Services/DataQuality/DirectoryCheckBL.cs`, `GetCaptionForDirectoryCheckItem`, Zeile 84 |
|
||||
| StRS-051 | SyRS-023 | SwRS-206 | `src/backend/Centron.BL/Tags/TagsBL.cs` und `src/backend/Centron.Entities/Entities/Tags/` |
|
||||
| StRS-051 | SyRS-071 | SwRS-071 | `src/backend/Centron.BL/EDI/EDIDispatcherBL.cs` und `EDICommonBL.cs` |
|
||||
| StRS-051 | SyRS-071 | SwRS-072 | `src/backend/Centron.BL/EDI/Zugferd/ZUGFeRD_BL.cs`, `ReadInvoice`, Zeile 38, mit den Parametern `List<IEDIReceiptHead>` und `List<List<IEDIReceiptItems>>` |
|
||||
| StRS-051 | SyRS-071 | SwRS-087 | `src/backend/Centron.BL/DataExchange/` mit den zehn genannten Unterzweigen |
|
||||
| StRS-051 | SyRS-081 | SwRS-081 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateReceiptIsPaid(…, string moduleOrAction, AppUser currentUser)`, Zeile 4902 |
|
||||
| StRS-051 | SyRS-106 | SwRS-105 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Klasse `AuthObject`, Zeilen 21-41, mit `RequestId` und überschriebenem `ToString()` |
|
||||
| StRS-051 | SyRS-106 | SwRS-106 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, Zeilen 47-56 |
|
||||
| StRS-051 | SyRS-153 | SwRS-153 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt`, Zuweisungen `receipt.CreatedAt = receipt.ChangedAt; receipt.CreatedByI3D = receipt.ChangedByI3D; receipt.CreatedThroughApplicationVersion = receipt.ChangedThroughApplicationVersion;` im Zweig `if (isNewReceipt)` |
|
||||
| StRS-051 | SyRS-153 | SwRS-154 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `WriteReceiptLogs` mit `_receiptLogBL.CreateContingentKindEntry(...)` neben den Audit-Feldzuweisungen in `SaveReceipt` |
|
||||
| StRS-051 | SyRS-154 | SwRS-154 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `WriteReceiptLogs` mit `_receiptLogBL.CreateContingentKindEntry(...)` neben den Audit-Feldzuweisungen in `SaveReceipt` |
|
||||
| StRS-051 | SyRS-165 | SwRS-165 | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs` und `Authenticator.cs`, die genannten Protokollaufrufe |
|
||||
| StRS-052 | SyRS-112 | SwRS-112 | `src/backend/Centron.BL/Mail/` mit den sieben genannten Unterzweigen |
|
||||
| StRS-052 | SyRS-112 | SwRS-207 | `src/backend/Centron.BL/WebLinks/IWebLinkActionHandler.cs` mit den beiden Implementierungen |
|
||||
| StRS-052 | SyRS-160 | SwRS-126 | `src/nexus/CentronNexus/Configuration/` mit den 13 genannten Konfigurationsklassen und dem Verzeichnis `Migrations` |
|
||||
| StRS-052 | SyRS-160 | SwRS-160 | `docker/Dockerfile`, zweistufiger Bau mit `FROM … sdk … AS base` und `FROM … runtime …` sowie `dotnet publish … --self-contained true` |
|
||||
| StRS-052 | SyRS-160 | SwRS-174 | `src/webservice/Centron.Host/`, `Centron.Host.Console/`, `Centron.Host.WindowsService/` als getrennte Projekte mit gemeinsamer Kernabhängigkeit |
|
||||
| StRS-052 | SyRS-163 | SwRS-163 | `.github/workflows/build.yml`, `runs-on` mit `self-hosted`, `timeout-minutes: 180` und die `if`-Bedingung auf `head.repo.full_name` |
|
||||
| StRS-052 | SyRS-168 | SwRS-001 | `src/backend/Centron.BL/BLSession.cs`, `BaseBL.cs`, `DBBaseBL.cs` |
|
||||
| StRS-052 | SyRS-168 | SwRS-002 | `src/centron/Centron.WPF.UI/Modules/CentronModule.cs`, Prüfung `module.SupportsConnectionTypes` mit Verzweigung auf `CentronConnectionType.CentronWebServices` |
|
||||
| StRS-052 | SyRS-168 | SwRS-168 | `src/centron/Centron.WPF.UI/Modules/CentronModule.cs`, `OpenModule` mit `module.SupportsConnectionTypes.All(f => f != ClassContainer.Instance.ConnectionType)` |
|
||||
| StRS-052 | SyRS-174 | SwRS-174 | `src/webservice/Centron.Host/`, `Centron.Host.Console/`, `Centron.Host.WindowsService/` als getrennte Projekte mit gemeinsamer Kernabhängigkeit |
|
||||
| StRS-053 | SyRS-161 | SwRS-161 | `src/backend/Centron.BL/Administration/Scripts/ScriptMethods/IScriptMethod.cs`, `IRecurringScriptMethod.cs`, `ScriptMethodPool.cs` |
|
||||
| StRS-053 | SyRS-161 | SwRS-162 | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, `ShouldExecuteScripts` (Zeile 37) und Parameter `currentVersionOverride` (Zeile 39) sowie der `#if DEBUG`-Block (Zeile 57 ff.) |
|
||||
| StRS-053 | SyRS-162 | SwRS-162 | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, `ShouldExecuteScripts` (Zeile 37) und Parameter `currentVersionOverride` (Zeile 39) sowie der `#if DEBUG`-Block (Zeile 57 ff.) |
|
||||
| StRS-054 | SyRS-170 | SwRS-034 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `GetRightsForModule`, Zeilen 220-223, `_modules.FirstOrDefault(f => f.ModuleType == controller.GetType())?.GetRights()` |
|
||||
| StRS-054 | SyRS-170 | SwRS-170 | `src/backend/Centron.BL/Statistics/` mit den neun genannten Unterbereichen |
|
||||
| StRS-054 | SyRS-170 | SwRS-190 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Controlling/Analytics", Kommentar „Vertragsauswertung" mit der Registrierung von `ContractEvaluation2` |
|
||||
| StRS-054 | SyRS-170 | SwRS-210 | `src/webservice/…/UserRightsConst.cs`, Klasse `VideoPortal`, Zeile 2786 |
|
||||
| StRS-054 | SyRS-170 | SwRS-215 | `src/nexus/CentronNexus/ServiceBoard/Dashboard/DashboardMyTicketStats.razor`, `DashboardMyTimerecordStats.razor`, `DashboardMyDayList.razor` |
|
||||
| StRS-054 | SyRS-178 | SwRS-178 | `src/backend/Centron.BL/ReportEngine/` mit den zwölf genannten Bestandteilen |
|
||||
| StRS-055 | SyRS-171 | SwRS-171 | `src/backend/Centron.BL/IndexSearch/GermanAnalyzer.cs` |
|
||||
| StRS-055 | SyRS-171 | SwRS-206 | `src/backend/Centron.BL/Tags/TagsBL.cs` und `src/backend/Centron.Entities/Entities/Tags/` |
|
||||
| StRS-056 | SyRS-167 | SwRS-167 | `src/backend/Centron.BL/Telemetry/TelemetryBL.cs`, `GetCompletedPendingApiCalls(DateTime maxBucketStartUtc)` (Zeile 308) und `UpsertApiCallBatch` (Zeile 173) |
|
||||
| StRS-056 | SyRS-172 | SwRS-172 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `new ArtificialIntelligencePromptSettingsController()` in `GetSettingsWithoutModule()` |
|
||||
| StRS-057 | — | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Adressen/CRM", Registrierung `CampaignAppModuleController` mit `LicenseGuids.CampaignsMailing` |
|
||||
| StRS-058 | — | — | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CreateNewReceipt(…, bool insertSalutationAndAgreement, …)`, Zeile 775 |
|
||||
| StRS-059 | SyRS-108 | SwRS-107 | `src/backend/Centron.Common/TextCoding/AESCryptoLogic.cs`, Signaturen mit `string securityKey = null` und `GetKeyAndIV` mit Rückfall auf `SECURITY_KEY` |
|
||||
| StRS-059 | SyRS-108 | SwRS-130 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 608 und 700 |
|
||||
| StRS-059 | SyRS-108 | SwRS-131 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 551 und 949, `GetHotlineMasterKey()` |
|
||||
| StRS-060 | SyRS-180 | SwRS-180 | `SSMS_DB_SCHEMA.sql`, Tabelle `ArticleWorkItems` |
|
||||
| StRS-061 | SyRS-181 | SwRS-181 | `src/backend/Centron.BL/EmployeeArea/` und `src/backend/Centron.BL/Administration/Employees/` mit den genannten Klassen |
|
||||
| StRS-061 | SyRS-182 | SwRS-182 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs`, `GetEmployeeTimeStatistics(ICollection<int> articleI3Ds, …)`, Zeile 710 |
|
||||
| StRS-062 | SyRS-033 | SwRS-033 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs`, `SearchSpecialArticleToContractHead`, Zeilen 319-327 |
|
||||
| StRS-062 | SyRS-033 | SwRS-088 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs`, `CreateSpecialArticleToContractFromMspEvaluation`, Zeile 129 |
|
||||
| StRS-062 | SyRS-033 | SwRS-197 | `src/backend/Centron.BL/Warehousing/ArticleManagement/ArticleImportBL.cs` |
|
||||
| StRS-062 | SyRS-173 | SwRS-004 | `src/backend/Centron.BL/Sales/Support/HelpdeskCloseBL.cs`, `ObjectMapper.Map<AccountAddressContact, AccountAddressContactDTO>(contact.Data)` |
|
||||
| StRS-062 | SyRS-173 | SwRS-173 | `src/webservice/Centron.Controllers/Controllers/v1/` mit den genannten 15 Bereichsverzeichnissen |
|
||||
| StRS-062 | SyRS-173 | SwRS-175 | `src/webservice/Centron.Controllers/Controllers/v1/Integrations/` und `Controllers/v1/DataExchange/` mit den elf genannten Controllern |
|
||||
| StRS-062 | SyRS-173 | SwRS-194 | `src/backend/Centron.BL/CustomerArea/BusinessLineBL.cs`, `InterestBL.cs`, `ProductBL.cs` |
|
||||
| StRS-062 | SyRS-173 | SwRS-212 | `src/backend/Centron.BL/Mobile/MobileBL.cs` und `src/backend/Centron.Entities/Entities/Mobile/` |
|
||||
| StRS-062 | SyRS-175 | SwRS-175 | `src/webservice/Centron.Controllers/Controllers/v1/Integrations/` und `Controllers/v1/DataExchange/` mit den elf genannten Controllern |
|
||||
| StRS-062 | SyRS-175 | SwRS-196 | `src/backend/Centron.BL/ExternalHelpdesk/ExternalHelpdeskConfigurationBL.cs` |
|
||||
| StRS-062 | SyRS-175 | SwRS-201 | `Centron.Api.docuFORM/Centron.Api.docuFORM.csproj` |
|
||||
| StRS-062 | SyRS-175 | SwRS-209 | `SSMS_DB_SCHEMA.sql`, Tabellen `SocialMediaStream`, `SocialMediaStreamAccount`, `SocialMediaAction`, `SocialMediaComment`, `SocialMediaLike` |
|
||||
| StRS-062 | SyRS-175 | SwRS-214 | `src/backend/Centron.BL/RiverDivo/RiverConnectionBL.cs`, `src/backend/Centron.BL/CPra/CPraConnectorBL.cs`, `src/backend/Centron.BL/TradePool/TradePoolBL.cs` |
|
||||
| StRS-062 | SyRS-179 | SwRS-179 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Region „Automatisierung", zwei getrennte Registrierungen mit `SHOW_EXPECTEDEVENTS` und `SHOW_EXPECTEDEVENTSREPORTING` |
|
||||
| — | SyRS-005 | SwRS-005 | `SSMS_DB_SCHEMA.sql`, Tabellen `AngKopf`, `AufKopf`, `LiefKopf`, `RechKopf`, `VertragKopf`, `GutKopf`, `AbholKopf` mit ihren Positionstabellen |
|
||||
| — | SyRS-008 | SwRS-029 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `new SwitzerlandSettingsController()` in `GetSettingsWithoutModule()` |
|
||||
| — | SyRS-011 | SwRS-009 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt` mit `return this.Session.WithTransaction(() => { … })` |
|
||||
| — | SyRS-011 | SwRS-011 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt`, Aufrufkette Zeilen 3634-3700 |
|
||||
| — | SyRS-011 | SwRS-015 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `ForwardReceipt<TReceipt, TReceiptItem>(AppUser, ForwardReceiptData, IList<ReceiptToForward>, IList<int>, InsertReceiptTakeoverOptions, bool, bool)`, Zeile 1548 |
|
||||
| — | SyRS-011 | SwRS-027 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Region „Validate Unconverted Article Warning", Zeile 2509 |
|
||||
| — | SyRS-012 | SwRS-012 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Methodensignaturen ab Zeile 4790 mit `Guid? concurrencyControlGuid` |
|
||||
| — | SyRS-012 | SwRS-064 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateReceiptQuantityPicked`, Zeile 5031 |
|
||||
| — | SyRS-013 | SwRS-013 | `src/backend/Centron.BL/Sales/Receipts/Invoices/InvoiceSpecificLogic.cs`, Feld `private readonly AssetLockBL<InvoiceLock> _lockBL;` |
|
||||
| — | SyRS-015 | SwRS-015 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `ForwardReceipt<TReceipt, TReceiptItem>(AppUser, ForwardReceiptData, IList<ReceiptToForward>, IList<int>, InsertReceiptTakeoverOptions, bool, bool)`, Zeile 1548 |
|
||||
| — | SyRS-015 | SwRS-024 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `GetReceiptProgression`, Zeile 4767, mit Parameter `limit` |
|
||||
| — | SyRS-015 | SwRS-028 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `ForwardReceipt` mit `IList<int> receiptProjectLayoutItemI3DsToForward` und `CreateFullReportForReceipt` mit `IList<ReceiptProjectLayoutItem> layoutItems` |
|
||||
| — | SyRS-016 | SwRS-016 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt`, Block `if (isTemplate) { data.IgnoreCallbacks = true; … }` mit dem Kommentar „We automatically ignore all callbacks when saving a receipt-template" |
|
||||
| — | SyRS-021 | SwRS-021 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt`, Aufruf mit `previousReceiptVersion` als Referenz |
|
||||
| — | SyRS-022 | SwRS-001 | `src/backend/Centron.BL/BLSession.cs`, `BaseBL.cs`, `DBBaseBL.cs` |
|
||||
| — | SyRS-022 | SwRS-010 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt(IReceiptBase receipt, …)`, Zeilen 3519-3521 mit `MakeGenericMethod(...).Invoke(...)` |
|
||||
| — | SyRS-022 | SwRS-022 | `src/backend/Centron.BL/Sales/Receipts/Invoices/InvoiceSpecificLogic.cs`, `TargetReceiptKind => CentronObjectKindNumeric.InvoiceClass` |
|
||||
| — | SyRS-022 | SwRS-070 | `src/backend/Centron.BL/Sales/Receipts/SupplierOrders/`, `SupplierDeliveryLists/`, `SupplierInvoices/`, `SupplierCreditVouchers/` |
|
||||
| — | SyRS-031 | SwRS-031 | `src/backend/Centron.BL/Warehousing/ArticleBL.cs`, `GetFlatrateBalanceArticle` und `GetContractBalanceArticle` als getrennte Methoden |
|
||||
| — | SyRS-041 | SwRS-041 | `src/backend/Centron.BL/Sales/Support/HelpdeskTimeRecordingBL.cs`, `GetStopwatchNotificationsForEmployee` (Zeile 506) und `DeleteStopwatchNotifications` (Zeile 518) |
|
||||
| — | SyRS-052 | SwRS-052 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckTextFieldLengths`, Zeilen 333-348, mit dem Kommentar `// nvarchar:2000 > string:1000` |
|
||||
| — | SyRS-052 | SwRS-059 | `src/nexus/CentronNexus/ServiceBoard/CachedTicketList/Components/` mit `FilterEditorGroup.razor`, `ConditionalFormattingEditor.razor`, `SummaryEditor.razor`, `KanbanBucketSelection.razor` |
|
||||
| — | SyRS-053 | SwRS-053 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `AddShortDescriptionPrefix` mit `new ReplacementBL().ReplaceVariables(prefix, variablesAndValues, "@@")` |
|
||||
| — | SyRS-053 | SwRS-203 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `AddShortDescriptionPrefix` mit `new AppSettingsBL(this.Session).GetSettings(ApplicationSettingID.IsHelpdeskShortDescriptionPrefixActivated, ApplicationSettingID.HelpdeskShortDescriptionPrefix)` und den typisierten Zugriffen mit Vorgabewert |
|
||||
| — | SyRS-061 | SwRS-061 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `SaveReceipt`, Aufruf `this._receiptBarcodeBL.CheckIfAllNonActiveBarcodesAreStillInTheReceipt(receipt, previousReceiptVersion)` |
|
||||
| — | SyRS-064 | SwRS-027 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Region „Validate Unconverted Article Warning", Zeile 2509 |
|
||||
| — | SyRS-064 | SwRS-031 | `src/backend/Centron.BL/Warehousing/ArticleBL.cs`, `GetFlatrateBalanceArticle` und `GetContractBalanceArticle` als getrennte Methoden |
|
||||
| — | SyRS-064 | SwRS-065 | `src/backend/Centron.BL/Warehousing/ArticleBL.cs`, Methoden `GetFreightArticle` (166), `GetCustomerDiscountArticle` (190), `GetArticleI3DForExternalArticles` (207), `GetArticleI3DForNewArticles` (215), `GetVoucherArticleList` (235) |
|
||||
| — | SyRS-064 | SwRS-200 | `src/backend/Centron.BL/Warehousing/ArticleBL.cs`, `GetVoucherArticleList`, Zeile 235 |
|
||||
| — | SyRS-074 | SwRS-074 | `src/apis/Centron.APIs.ITscopeDataAccess/Data/ITscopeApiKeyQuota.cs` |
|
||||
| — | SyRS-101 | — | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, `RefreshTicketExpireDate`, Bedingung `< 5` |
|
||||
| — | SyRS-128 | SwRS-128 | `src/backend/Centron.BL/Notifications/CentronNotificationsBL.cs` und `src/backend/Centron.BL/NexusNotifications/NexusNotificationsBL.cs` |
|
||||
| — | SyRS-128 | SwRS-205 | `src/backend/Centron.BL/Chats/ChatBL.cs` und `src/backend/Centron.Entities/Entities/Chats/` |
|
||||
| — | SyRS-164 | SwRS-164 | `tests/backend/`, `tests/shared/`, `tests/apis/` gegenüber `src/backend/`, `src/shared/`, `src/apis/` |
|
||||
| — | — | SwRS-211 | `src/shared/Centron.Core/`, `src/shared/Centron.Controls/`, `src/shared/Centron.Controls.Preview/` |
|
||||
|
||||
**Zeilen gesamt: 319**
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
# Messprotokoll – Versuch 01 (V1 Baseline, Prompt-only) – Iteration 02
|
||||
|
||||
## Lauf
|
||||
- **Prompt-Datei:** `Versuche/Versuch_01/02_Prompt.md`
|
||||
- **Iteration:** 02 – vom User ausdrücklich benannt; entspricht zugleich der Regel „höchste
|
||||
vorhandene Iterationsnummer". Wiederholungslauf zur Varianzbestimmung in derselben Zelle.
|
||||
- **SHA-256 (Prompt):** `F9B2A1AAB45DDCB87E905B83F24D7B1C7860D81CA07E503E51222E266E0D7849`
|
||||
- **Startzeit:** 2026-08-26T22:58:15.5203844+02:00
|
||||
- **Endzeit:** 2026-08-27T00:24:02.3040325+02:00
|
||||
- **Dauer gesamt:** 1:25:46 (`duration_ms` 1:25:45; API: 1:21:50)
|
||||
— **im Parallelbetrieb erhoben, nicht für Laufzeitvergleiche verwendbar**
|
||||
- **Root-Verzeichnis:** `c:\DEV\MasterArbeit\QuellCode\CentronERP` (24.662 versionierte Dateien)
|
||||
- **Codebasis-Commit:** `7df384f6d2e7249dc914a74e299fe7fa71ece748` (dirty: nein)
|
||||
- **Snapshot-Zustand:** bereinigt von KI-Konfigurationen: ja (Prüfmuster ohne Treffer);
|
||||
die Codebasis ist seit Commit `f045b99a` kein eigenes Repository mehr, sondern Teil des
|
||||
Arbeitsrepos – der Vorher/Nachher-Vergleich läuft deshalb pfadskopiert
|
||||
- **Snapshot-Zusatzartefakte:** keine – der Snapshot entspricht dem Commit-Stand
|
||||
- **Prompt-Repo-Commit:** `7df384f6d2e7249dc914a74e299fe7fa71ece748`
|
||||
|
||||
## Werkzeugkonfiguration
|
||||
- **Skill-Version:** 7.0.0
|
||||
- **Claude-Code-Version:** 2.1.246
|
||||
- **CLI-Pfad:** `C:\Users\ChristophSchwoerer\.vscode\extensions\anthropic.claude-code-2.1.246-win32-x64\resources\native-binary\claude.exe`
|
||||
- **Modell (angefordert):** `claude-opus-5`
|
||||
- **Modelle (tatsächlich eingesetzt):** `claude-opus-5` 38.137.560 Tokens (99.98 %), `claude-haiku-4-5-20251001` 6.965 Tokens (0.02 %)
|
||||
- **Kontrolle Modell:** bestanden – ausschließlich das angeforderte Modell plus Haiku als zulässiger interner Hilfsaufruf
|
||||
- **Effort:** `high` (per `--effort high` gesetzt)
|
||||
- **Laufverzeichnis-ID:** `v7.0.0-2269`
|
||||
- **Ablage:** `Iteration 3/claude-opus-5/solo/high/`
|
||||
- **Parallele Läufe:** nein – die Zeitangaben sind für Laufzeitvergleiche verwendbar
|
||||
- **Agentenmodus:** `solo` (V1)
|
||||
- **Kontextfenster:** 1.000.000 Tokens; `maxOutputTokens` 64.000
|
||||
- **Sampling-Parameter:** nicht steuerbar über die CLI, nicht erfasst
|
||||
- **Nur bei lokalem Modellbetrieb:** entfällt (Cloud-Inferenz, `provider: firstParty`)
|
||||
- **Permission-Mode:** `acceptEdits`
|
||||
- **Toolfreigabe:** `--allowedTools "Bash" "PowerShell"` /
|
||||
`--disallowedTools` 33er-Denylist (schreibende und bauende Kommandos) **zuzüglich** `Task`, `Agent`, `Workflow` aus dem Modus `solo`
|
||||
- **Isolationsmechanismus:** `--safe-mode`, `--strict-mcp-config`
|
||||
- **MCP-Server / Agentendateien:** keine – aus dem Snapshot entfernt, zusätzlich `--safe-mode`
|
||||
- **Subagenten:** keine (`spawned` = 0, `by_type` leer)
|
||||
- **Verschachtelung:** `spawned` = 0, davon `spawned_by_subagents` = 0, `max_depth` = 0. Keine tieferen Ebenen, `_meta\subagenten.md` entfällt.
|
||||
|
||||
## Validierungsstichprobe
|
||||
- **Größe:** noch nicht festgelegt
|
||||
- **Ziehungsverfahren:** noch nicht festgelegt
|
||||
- **Validatoren:** noch nicht festgelegt
|
||||
- **Stand:** noch nicht gezogen
|
||||
|
||||
## Verbrauch
|
||||
|
||||
### Hauptagent (`usage`)
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Input-Tokens | 256 |
|
||||
| Output-Tokens | 468.007 (davon 20.913 Thinking-Tokens) |
|
||||
| Cache-Write-Tokens | 596.413 |
|
||||
| Cache-Read-Tokens | 37.072.884 |
|
||||
| Agent-Turns | 165 |
|
||||
|
||||
### Gesamtlauf inkl. Subagenten (`modelUsage`, abrechnungsrelevant)
|
||||
| Messgröße | `claude-opus-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 256 | 6.943 | 7.199 |
|
||||
| Output-Tokens | 468.007 | 22 | 468.029 |
|
||||
| Cache-Write-Tokens | 596.413 | 0 | 596.413 |
|
||||
| Cache-Read-Tokens | 37.072.884 | 0 | 37.072.884 |
|
||||
| **Tokens gesamt** | **38.137.560** | **6.965** | **38.144.525** |
|
||||
|
||||
**Tokens gesamt: 38.144.525** — Input + Output + Cache-Write + Cache-Read über alle Modelle.
|
||||
Das ist die **berichtete Aufwandsgröße** der Versuchsreihe. `total_cost_usd` bleibt unberührt in
|
||||
`RawResult.json` erhalten, wird aber nicht ins Protokoll übernommen: Token sind modell- und
|
||||
preisunabhängig und bleiben damit über Preisänderungen und Modellwechsel hinweg vergleichbar.
|
||||
|
||||
Da im Modus `solo` keine Subagenten laufen, sind `usage` und `modelUsage` für das Hauptmodell
|
||||
deckungsgleich; die Differenz zur Summe stammt allein aus den Haiku-Hilfsaufrufen.
|
||||
|
||||
## Gefundene Anforderungen
|
||||
|
||||
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 |
|
||||
|---|---:|---:|
|
||||
| StRS | 62 | 17,1 % |
|
||||
| SyRS | 132 | 36,4 % |
|
||||
| SwRS | 169 | 46,6 % |
|
||||
| **Gesamt** | **363** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 147 | 40,5 % |
|
||||
| Daten | 87 | 24,0 % |
|
||||
| Sicherheit | 55 | 15,2 % |
|
||||
| nicht-funktional | 46 | 12,7 % |
|
||||
| Schnittstelle | 28 | 7,7 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 740 |
|
||||
| davon `PRIMÄR` | 490 (66,2 %) |
|
||||
| davon `SEKUNDÄR` | 187 (25,3 %) |
|
||||
| davon `KONTEXT` | 63 (8,5 %) |
|
||||
| Belege je Anforderung (Median) | 2 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 362 (99,7 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 337 | 92,8 % |
|
||||
| workaround | 12 | 3,3 % |
|
||||
| sonderfall | 1 | 0,3 % |
|
||||
| veraltet | 13 | 3,6 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 358 | 98,6 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 5 | 1,4 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 67 | 18,5 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 46 | 12,7 % |
|
||||
|
||||
### Regelkonformität (Prüfung gegen die Vorgaben des Prompts)
|
||||
|
||||
| Vorgabe | Ergebnis |
|
||||
|---|---|
|
||||
| **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** (106 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 363 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 363 von 363 mit Tracelinks (100,0 %) |
|
||||
|
||||
## Ergebnis
|
||||
- **Status:** erfolgreich (`is_error` = false, `subtype` = `success`, `stop_reason` = `end_turn`, `terminal_reason` = `completed`)
|
||||
- **Session-ID:** `0ec4aa93-c1b8-4ad1-ae63-2ebcdc31cbf4`
|
||||
- **Permission-Denials:** 8 (5 × `Bash`, 2 × `PowerShell`, 1 × `Read`) – **keines auf `Task`/`Agent`/`Workflow`**. Der Agent hat zu keinem Zeitpunkt zu delegieren versucht; die Modus-Sperre wurde nie ausgelöst.
|
||||
- **Kontrolle Agentenmodus:** `subagent_stats.spawned` = 0 – Bedingung `solo` eingehalten
|
||||
- **Subagenten-Prompts:** entfällt (Modus `solo`)
|
||||
- **Erzeugte Dateien:** 7 Dateien in `Ergebnisse\`:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
| `Analysebericht.md` | 75.086 B |
|
||||
| `Glossar.md` | 14.154 B |
|
||||
| `Hypothesen.md` | 6.393 B |
|
||||
| `StRS.md` | 104.009 B |
|
||||
| `SwRS.md` | 251.643 B |
|
||||
| `SyRS.md` | 206.150 B |
|
||||
| `Traceability.md` | 54.332 B |
|
||||
|
||||
- **Root unverändert:** ja (zeilenendennormalisiert verglichen).
|
||||
- **Abschlusstext des Agenten:** siehe `RawResult.json` (`result`)
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Neue Zelle: `claude-opus-5` / `solo` / `high`.** Erster gültiger Lauf dieser Kombination.
|
||||
Der vorausgegangene Versuch `195958_v7.0.0-e7e6` scheiterte am Session-Kontingent; dieser Lauf
|
||||
wurde **seriell** gefahren, ohne jeden Parallelbetrieb.
|
||||
|
||||
**2. Er relativiert den Effort-Befund vom Vortag.** Die verdoppelte Belegdichte – Median 2,0
|
||||
statt 1,0 – war den drei `max`-Läufen zugeschrieben worden, weil alle 44 `high`-Läufe zuvor bei
|
||||
Median 1,0 lagen. Dieser Lauf erreicht Median **2,0 auf `high`**. Der Unterschied liegt damit
|
||||
nicht am Effort, sondern am **Modell**: Die 44 Läufe mit Median 1,0 liefen sämtlich auf Sonnet,
|
||||
die `max`-Läufe auf Opus. Opus liefert die höhere Belegdichte auch ohne `max`; `max` hebt sie
|
||||
bei Opus weiter auf 3,0. Der Effort bleibt für den **Verbrauch** wirksam: 38,1 Mio. Tokens auf
|
||||
`high` gegenüber 67,5 bis 116,2 Mio. auf `max`.
|
||||
|
||||
**3. Zweithöchste Primärbelegquote der Reihe: 99,7 %** (362 von 363 Anforderungen). Nur `37c5`
|
||||
war mit 100 % besser – ebenfalls Opus, dort auf `max`.
|
||||
|
||||
**4. Ausgewogene Ebenenverteilung** (62 StRS / 132 SyRS / 169 SwRS) und 740 Belege auf 363
|
||||
Anforderungen. `spawned` = 0, Modellkontrolle bestanden.
|
||||
|
||||
**5. Seriell gemessen – die Zeitangabe ist verwertbar.** Als erst zweiter Lauf der gesamten
|
||||
Reihe (nach `d6f9`) lief dieser ohne Parallelbetrieb und ohne Kontingentwartezeit.
|
||||
+1
File diff suppressed because one or more lines are too long
+7276
File diff suppressed because it is too large
Load Diff
+65
@@ -0,0 +1,65 @@
|
||||
## Gefundene Anforderungen
|
||||
|
||||
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 |
|
||||
|---|---:|---:|
|
||||
| StRS | 62 | 17,1 % |
|
||||
| SyRS | 132 | 36,4 % |
|
||||
| SwRS | 169 | 46,6 % |
|
||||
| **Gesamt** | **363** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 147 | 40,5 % |
|
||||
| Daten | 87 | 24,0 % |
|
||||
| Sicherheit | 55 | 15,2 % |
|
||||
| nicht-funktional | 46 | 12,7 % |
|
||||
| Schnittstelle | 28 | 7,7 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 740 |
|
||||
| davon `PRIMÄR` | 490 (66,2 %) |
|
||||
| davon `SEKUNDÄR` | 187 (25,3 %) |
|
||||
| davon `KONTEXT` | 63 (8,5 %) |
|
||||
| Belege je Anforderung (Median) | 2 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 362 (99,7 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 337 | 92,8 % |
|
||||
| workaround | 12 | 3,3 % |
|
||||
| sonderfall | 1 | 0,3 % |
|
||||
| veraltet | 13 | 3,6 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 358 | 98,6 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 5 | 1,4 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 67 | 18,5 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 46 | 12,7 % |
|
||||
|
||||
### Regelkonformität (Prüfung gegen die Vorgaben des Prompts)
|
||||
|
||||
| Vorgabe | Ergebnis |
|
||||
|---|---|
|
||||
| **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** (106 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 363 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 363 von 363 mit Tracelinks (100,0 %) |
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
# Versuch 01 - Baseline (Prompt-only) - Iteration 02
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V1 Baseline (Prompt-only)
|
||||
- **Iteration:** 02 (erste Überarbeitung nach Auswertung von Iteration 01)
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Auswertung der 24 Läufe von Tag 1 über 3.287 erzeugte Anforderungen. Jede Änderung ist an einen gemessenen Befund gekoppelt:
|
||||
|
||||
| Änderung | Auslösender Befund |
|
||||
|---|---|
|
||||
| Modulinventar als Pflicht-Vorstufe, Mindestabdeckung je Modul, Vertiefung erst danach | Anforderungszahl schwankte je Lauf zwischen 42 und 325 (Faktor 5,9); 55 bis 60 von rund 85 Modulen blieben unanalysiert; die Modultabellen der Analyseberichte reichten von 0 bis 51 Zeilen |
|
||||
| Hypothesenpflicht kalibriert, `Hypothesen.md` deckungsgleich mit den Inline-Markierungen | Zwei Läufe meldeten null Hypothesen bei 71 bzw. 148 Anforderungen; der Anteil schwankte zwischen 0 % und 26,2 %; mehrfach wichen Sammeldatei und Inline-Markierungen voneinander ab |
|
||||
| Primärbeleg muss die durchsetzende Stelle benennen | 45,9 % aller Anforderungen trugen genau einen Beleg; in einem Lauf waren 5 von 31 risikorelevanten Anforderungen weder mit `PRIMÄR` noch als `[HYPOTHESE]` gedeckt |
|
||||
| Belegpflicht verschärft: ohne Beleg keine Anforderung | Eine Anforderung wurde ohne jeden Beleg geschrieben |
|
||||
| Konsolidierungsbegriff an einem Beispiel kalibriert | Anteil der Konsolidierungskandidaten schwankte je Lauf zwischen 2,4 % und 35,2 % |
|
||||
| Eigenes Feld `Qualitätsmerkmal` für die ISO-25010-Zuordnung | Die Zuordnung war gefordert, hatte aber keinen Ablageort: nur 33 von 313 nicht-funktionalen Anforderungen führten sie als eigene Angabe |
|
||||
| Risikoanforderungen im Konsistenzcheck auflisten | Verstöße gegen die risikobasierte Priorisierung fielen erst in der nachgelagerten Auswertung auf, nicht im Lauf selbst |
|
||||
|
||||
Unverändert bleiben Prüfidee, Tracelinks, Belegklassifikation und das Blockformat: Prüfidee und Tracelinks waren in **allen** 3.287 Anforderungen gesetzt, 78,6 % der Belege waren `PRIMÄR`.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite ausschließlich auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, ggf. DB-Skripte). Nutze nur Informationen, die du aus diesen Artefakten gewinnen kannst.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, keine Ausführung)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz).
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
|
||||
---
|
||||
|
||||
### Werkzeugkontext (vom Versuchsaufbau vorgegeben)
|
||||
Für diesen Lauf stehen zur Verfügung: Lesen und Suchen von Dateien sowie das Ausführen von
|
||||
Kommandozeilenbefehlen im Arbeitsverzeichnis.
|
||||
Nicht verfügbar sind: Subagenten, spezialisierte Agentenrollen, externe Werkzeugserver.
|
||||
Triff keine Annahmen über weitere Werkzeuge und versuche nicht, nicht verfügbare
|
||||
Werkzeuge zu ersetzen.
|
||||
### Ausgabeverzeichnis (überschreibt anderslautende Pfadangaben oben)
|
||||
Schreibe ALLE zu erzeugenden Ergebnisdateien in das Verzeichnis
|
||||
`c:\DEV\MasterArbeit\Versuche\Versuch_01\Iteration 3\claude-opus-5\solo\high\02_Lauf_2026-08-26_225807_v7.0.0-2269\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-27T00:24:02.3040325+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T22:58:15.5203844+02:00
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"modulinventar": {
|
||||
"description": "Schritt 0: erstellt das vollständige Modulinventar als Bezugsgröße für die Abdeckung, mit Buchführung über zugeordnete und nicht zugeordnete Quelldateien. Erzeugt KEINE Anforderungen.",
|
||||
"prompt": "Du erstellst das Modulinventar für ein Reverse-Requirements-Engineering-Vorhaben an einer Legacy-ERP-Suite. Du formulierst KEINE Anforderungen. Deine einzige Aufgabe ist eine vollständige, belegte und nachrechenbare Bestandsaufnahme.\n\n## Vorgehen\n\n1. Erschließe die Struktur aus den Projektdateien, nicht aus Vermutungen: Solution- und Projektdateien, Verzeichnisbaum, Modul-Registrierungen im Code, Rechtekonstanten, Tabellen des Datenbankschemas.\n2. Erfasse JEDES fachliche Modul und JEDE technische Querschnittskomponente. Ein Modul, das hier fehlt, existiert für die gesamte weitere Analyse nicht — das Inventar ist die Bezugsgröße für die Mindestabdeckung.\n3. Nimm das Datenbankschema ausdrücklich mit auf: Ein Schema-Dump im Arbeitsverzeichnis ist eine erstrangige Strukturquelle. Ordne die Tabellengruppen den fachlichen Modulen zu, soweit die Namensgebung das trägt.\n\n## Was du je Eintrag lieferst\n\n`ID` (M001, M002, … fortlaufend, stabil sortiert) | `Modul` | `Art` (fachlich | technisch) | `Pfad` | `Dateien` (Anzahl Quelldateien) | `Aufgabe` (ein Satz) | `Belegquelle` (woraus du die Aufgabe abgeleitet hast: Klassenname, UI-String, Kommentar, Tabellenname)\n\n## Harte Regeln\n\n- **Der Aufgabensatz muss belegt sein.** Leite ihn aus dem ab, was du tatsächlich gelesen hast. Ein Ordnername ist kein Beleg. Kannst du die Aufgabe nicht bestimmen, schreibe `Aufgabe unbestimmt` plus Begründung — aber lasse das Modul NICHT weg.\n- **Kein Zuschnitt nach Bequemlichkeit.** Weder alles in wenige Großmodule zusammenfassen noch jede Datei zu einem Modul erklären. Richte dich nach der fachlichen Gliederung, die die Codebasis selbst vornimmt (Modulregistrierung, Menüstruktur, Namensräume). Beschreibe deinen Zuschnitt in zwei Sätzen, damit er nachvollziehbar ist.\n\n## Abschlussbuchführung — Pflicht\n\nNenne am Ende:\n- Anzahl Module gesamt, davon fachlich / technisch\n- Summe der dem Inventar zugeordneten Quelldateien\n- Gesamtzahl der Quelldateien im Arbeitsverzeichnis\n- Die Differenz, und welche Verzeichnisse sie ausmacht\n\nEine Differenz ist zulässig (Tests, generierter Code, Ressourcen), aber sie muss **benannt** sein. Eine Buchführung, die nicht aufgeht und das nicht erklärt, ist unbrauchbar.\n\n## Rückgabe\n\nDie Inventartabelle, die zwei Sätze zum Zuschnitt und die Abschlussbuchführung. Keine Einleitung, keine Zusammenfassung, keine Empfehlungen."
|
||||
},
|
||||
"faktenermittler": {
|
||||
"description": "Erhebt für einen zugewiesenen Modulausschnitt belegte technische Fakten samt der durchsetzenden Codestelle, mit Abdeckungsbuchführung je Modul. Formuliert KEINE Anforderungen.",
|
||||
"prompt": "Du erhebst Fakten aus einer Legacy-ERP-Codebasis. Du formulierst KEINE Anforderungen und KEINE Interpretationen — die schreibt der Auftraggeber selbst aus deinen Fakten. Deine Fakten sind sein einziges Material: Was du nicht lieferst, wird nicht spezifiziert; was du falsch lieferst, wird zur falschen Anforderung.\n\n## Was ein Fakt ist\n\n`Fundstelle` — Pfad, Klasse, Methode, wenn bestimmbar Zeilenbereich.\n`Beobachtung` — was der Code tatsächlich tut: Statusübergang, Validierungsregel, Berechnungsformel, Berechtigungsprüfung, Constraint, Default. Die tragende Bedingung wörtlich oder eng paraphrasiert.\n`Einstufung` — nach der Rubrik unten.\n`Modul` — die Inventar-ID, zu der der Fakt gehört.\n\n## Belegrubrik — daran entscheidet sich die Verwertbarkeit\n\n**PRIMÄR** — die genannte Stelle **setzt die Regel durch**. Man kann hingehen und die Bedingung lesen.\n> `AppRightsBL.cs, GetRightsFromCurrentUser(AppUser)` — iteriert `user.Groups` und sammelt `group.Rights`; Rechte hängen ausschließlich an Gruppen, nie direkt am Benutzer.\n\n**SEKUNDÄR** — die Stelle ruft die Regel auf, konfiguriert oder zeigt sie an, setzt sie aber nicht durch.\n> `AppUserGroupBL.cs` — verwaltet die Gruppenzuordnung, auf der die Rechteprüfung aufbaut.\n\n**KONTEXT** — Umfeld, das die Aussage stützt, ohne sie zu tragen: UI-Beschriftungen, Konfigurationswerte, Kommentare.\n\n## Anti-Muster — in Messungen nachweislich gescheitert\n\n- **„Diese Datei betrifft die Fakturierung.“** Ein Dateiverweis ist kein Fakt. Gefordert ist die Stelle **mit Bedingung**, etwa: `InvoiceService.cs:212, FinalizeInvoice() — wirft InvalidOperationException, wenn invoice.Status == InvoiceStatus.Paid`.\n- **„Ich öffne ein bis drei repräsentative Dateien.“** Stichproben liefern keine Primärbelege: Die durchsetzende Stelle liegt fast nie in der Datei, die repräsentativ aussieht. Nutze Suchwerkzeuge, um die tragenden Stellen zu finden, statt zu raten, welche Datei sie enthält.\n- **Aufwärtsrunden der Einstufung.** Was du nicht als durchsetzende Stelle gelesen hast, ist nicht `PRIMÄR`. Eine falsch hochgestufte Einstufung ist schlimmer als eine ehrliche `SEKUNDÄR`.\n\n## Pflichtquellen\n\n- **Das Datenbankschema.** Liegt ein SQL-Schema-Dump im Arbeitsverzeichnis, ist er für deinen Ausschnitt auszuwerten: Constraints, Fremdschlüssel, Defaults und `NOT NULL` sind durchgesetzte Regeln und damit erstrangige `PRIMÄR`-Belege. In Messungen haben zwei von fünf Läufen den Dump übersehen und dadurch Belege verloren.\n- **Risikobereiche zuerst und tiefer:** Sicherheitsregeln, Abrechnungs- und Fakturierungslogik, Berechtigungsprüfungen.\n\n## Was du ausdrücklich melden musst\n\n- **Nicht gefundene Durchsetzung.** Existiert eine Regel offensichtlich, kannst du die durchsetzende Stelle aber nicht lokalisieren, sage das mit Begründung. Diese Meldungen werden zu ausgewiesenen Hypothesen. Eine verschwiegene Lücke wird dagegen zu einer Anforderung, die niemand mehr prüfen kann.\n- **Widersprüche.** Zwei Stellen, die dieselbe Regel unterschiedlich durchsetzen, sind ein eigener Befund — nicht stillschweigend zugunsten einer Variante auflösen.\n- **Nicht implementiertes.** Methoden, die nur `throw new NotImplementedException(...)` enthalten, obwohl Aufrufer und Rechteprüfung existieren, sind ein Befund von hohem Wert.\n\n## Abdeckungsbuchführung — Pflicht\n\nSchließe mit einer Tabelle: je zugewiesenem Modul die Anzahl der gelieferten Fakten, davon `PRIMÄR`, und die Einstufung `tief | mittel | flach | nicht erschlossen` mit einem Satz Begründung. Module ohne einen einzigen Fakt sind namentlich zu nennen.\n\n## Rückgabe\n\nDie Fakten, nach Modul gegliedert, dann die Abdeckungsbuchführung. Prüfe vor dem Absenden: Trägt jeder als `PRIMÄR` eingestufte Fakt eine Bedingung, die man an der genannten Stelle nachlesen kann? Wenn nicht, stufe ihn herunter."
|
||||
},
|
||||
"strs-autor": {
|
||||
"description": "Formuliert ausschließlich Stakeholder-Anforderungen (StRS) im vorgegebenen Blockformat aus gelieferten Fakten.",
|
||||
"prompt": "Du formulierst **ausschließlich Stakeholder-Anforderungen (StRS)** nach ISO/IEC/IEEE 29148 aus Fakten, die dir geliefert werden. Die Ebene ist deine Zuständigkeit und deine Grenze.\n\n## Die Ebene, und wie du sie prüfst\n\nStRS beschreibt die **fachliche Sicht**: Akteure, Geschäftsziele, Geschäftsregeln, fachliche Ergebnisse. Nicht, wie das System das technisch löst.\n\n**Grenztest — wende ihn auf jede `Aussage` an, bevor du sie stehen lässt:** Nennt der Satz eine Klasse, eine Methode, eine Tabelle, ein Protokoll oder eine Schnittstelle, gehört er nicht auf diese Ebene. Formuliere ihn fachlich um oder verwirf ihn und setze stattdessen einen Tracelink. Der Fakt darf und soll technisch sein — die `Aussage` nicht.\n\n## Blockformat — verbindlich, jedes Feld gefüllt\n\n`ID`, `Titel`, `Ebene`, `Typ`, `Qualitätsmerkmal`, `Akteur`, `Vorbedingung`, `Fakt`, `Aussage`, `Ergebnis`, `Belege`, `Prüfidee`, `Tracelinks`, `Konsolidierung`, `Übernahmewürdigkeit`, `Status`.\n\nVerwende den dir zugewiesenen ID-Block und halte die Nummerierung lückenlos.\n\n## Harte Regeln\n\n- **Keine Anforderung ohne Beleg.** Fundstelle und Einstufung werden aus den gelieferten Fakten **unverändert** übernommen. Du stufst nichts hoch und erfindest nichts. Findest du keinen Fakt für einen Sachverhalt, schreibst du keine Anforderung — du meldest die Lücke.\n- **`Fakt` und `Aussage` sind zwei verschiedene Dinge.** `Fakt` ist die belegte Beobachtung, `Aussage` die fachliche Soll-Formulierung („Das System soll …“). Wer beides vermischt, erzeugt eine Anforderung, deren Belegbarkeit nicht mehr prüfbar ist.\n- **Risikorelevante Anforderungen** (Sicherheit, Abrechnung, Berechtigungen) brauchen einen `PRIMÄR`-Beleg **oder** `[HYPOTHESE]` in `Status`. Einen dritten Weg gibt es nicht. Dies ist die Regel, die in Messungen am häufigsten verfehlt wurde — prüfe sie bei jeder einzelnen Anforderung.\n- **Belege mehrfach, wo die Faktenlage es hergibt.** Ein einzelner Beleg ist zulässig, aber kein Ziel; Anforderungen mit mehreren unabhängigen Belegen sind belastbarer.\n- **`Prüfidee` ist Pflicht** und muss ein prüfbares Kriterium nennen. „Wird getestet“ ist keine Prüfidee. „Benutzer A ist nur Gruppe X zugeordnet, X besitzt Recht R nicht → Aufruf einer mit R geschützten Aktion muss verweigert werden“ ist eine.\n- **Nicht-funktionale Anforderungen** tragen das ISO-25010-Merkmal im Feld `Qualitätsmerkmal`, niemals im Feld `Typ`.\n\n## Selbstprüfung vor dem Absenden\n\nGeh deine Blöcke durch und beantworte für dich: Wie viele Anforderungen hast du geschrieben? Wie viele davon sind risikorelevant, und tragen die **alle** entweder `PRIMÄR` oder `[HYPOTHESE]`? Gibt es doppelte IDs? Nenne diese drei Zahlen am Ende deiner Rückgabe.\n\n## Rückgabe\n\nDie Anforderungsblöcke, danach die drei Zahlen der Selbstprüfung und eine Liste der Sachverhalte, für die dir Fakten fehlten."
|
||||
},
|
||||
"syrs-autor": {
|
||||
"description": "Formuliert ausschließlich System-Anforderungen (SyRS) im vorgegebenen Blockformat aus gelieferten Fakten.",
|
||||
"prompt": "Du formulierst **ausschließlich System-Anforderungen (SyRS)** nach ISO/IEC/IEEE 29148 aus Fakten, die dir geliefert werden. Die Ebene ist deine Zuständigkeit und deine Grenze.\n\n## Die Ebene, und wie du sie prüfst\n\nSyRS beschreibt das **beobachtbare Systemverhalten an den Systemgrenzen**: Schnittstellen, Statusmaschinen, Validierungen, Performance- und Sicherheitsverhalten.\n\n**Grenztest nach oben:** Beschreibt deine `Aussage` ein Geschäftsziel, ohne Systemverhalten zu nennen, gehört sie auf die StRS-Ebene.\n**Grenztest nach unten:** Beschreibt sie internen Aufbau — Klassenstruktur, Persistenzweg, Algorithmus —, gehört sie auf die SwRS-Ebene. Verwende Tracelinks statt die Grenze zu überschreiten.\n\n## Blockformat — verbindlich, jedes Feld gefüllt\n\n`ID`, `Titel`, `Ebene`, `Typ`, `Qualitätsmerkmal`, `Akteur`, `Vorbedingung`, `Fakt`, `Aussage`, `Ergebnis`, `Belege`, `Prüfidee`, `Tracelinks`, `Konsolidierung`, `Übernahmewürdigkeit`, `Status`.\n\nVerwende den dir zugewiesenen ID-Block und halte die Nummerierung lückenlos.\n\n## Harte Regeln\n\n- **Keine Anforderung ohne Beleg;** Fundstelle und Einstufung unverändert übernehmen, nichts hochstufen.\n- **`Fakt` und `Aussage` sauber trennen.**\n- **Risikorelevante Anforderungen** (Sicherheit, Abrechnung, Berechtigungen) brauchen `PRIMÄR` **oder** `[HYPOTHESE]`. Diese Regel wurde in Messungen am häufigsten verfehlt — prüfe sie einzeln.\n- **Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung** in `Tracelinks`. Existiert keine, benenne die fachliche Lücke ausdrücklich, statt das Feld leer zu lassen.\n- **Nicht-funktionale Anforderungen** tragen das ISO-25010-Merkmal im Feld `Qualitätsmerkmal`, nicht im `Typ`. Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.\n- **`Prüfidee` ist Pflicht** und nennt ein prüfbares Kriterium.\n\n## Selbstprüfung vor dem Absenden\n\nAnzahl geschriebener Anforderungen; Anzahl risikorelevanter und ob **alle** gedeckt sind; Anzahl ohne StRS-Tracelink. Nenne die drei Zahlen am Ende.\n\n## Rückgabe\n\nDie Anforderungsblöcke, danach die Selbstprüfung und die Liste fehlender Fakten."
|
||||
},
|
||||
"swrs-autor": {
|
||||
"description": "Formuliert ausschließlich Software-Anforderungen (SwRS) im vorgegebenen Blockformat aus gelieferten Fakten, einschließlich Konsolidierungsprüfung.",
|
||||
"prompt": "Du formulierst **ausschließlich Software-Anforderungen (SwRS)** nach ISO/IEC/IEEE 29148 aus Fakten, die dir geliefert werden. Die Ebene ist deine Zuständigkeit und deine Grenze.\n\n## Die Ebene\n\nSwRS beschreibt die **softwareinterne Sicht**: Komponenten, Datenmodelle, Persistenzregeln, interne Algorithmen und Berechnungsvorschriften, softwareinterne Constraints. Was an der Systemgrenze beobachtbar ist, gehört auf die SyRS-Ebene.\n\n## Blockformat — verbindlich, jedes Feld gefüllt\n\n`ID`, `Titel`, `Ebene`, `Typ`, `Qualitätsmerkmal`, `Akteur`, `Vorbedingung`, `Fakt`, `Aussage`, `Ergebnis`, `Belege`, `Prüfidee`, `Tracelinks`, `Konsolidierung`, `Übernahmewürdigkeit`, `Status`.\n\nVerwende den dir zugewiesenen ID-Block und halte die Nummerierung lückenlos.\n\n## Harte Regeln\n\n- **Keine Anforderung ohne Beleg;** nichts hochstufen, nichts erfinden.\n- **`Fakt` und `Aussage` sauber trennen.**\n- **Risikorelevante Anforderungen** brauchen `PRIMÄR` **oder** `[HYPOTHESE]`. Einzeln prüfen.\n- **Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung** in `Tracelinks`.\n- **Datenbank-Constraints sind erstrangige Belege.** Fremdschlüssel, `NOT NULL`, Defaults und Check-Constraints aus dem Schema sind durchgesetzte Regeln und als `PRIMÄR` einzustufen.\n\n## Konsolidierungsprüfung — deine besondere Zuständigkeit\n\nDie Codebasis enthält fachliche Redundanz: Dieselbe Funktion kann in getrennten Modulen unterschiedlich implementiert sein. Prüfe bei jeder Anforderung, ob eine andere denselben fachlichen Gegenstand abbildet, und trage den Fall in `Konsolidierung` ein.\n\n**Kalibrierung.** Gemeint sind *fachlich gleichartige Konzepte in getrennten Implementierungen*. Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter“ geführt, sonstige Hardware getrennt davon als „Assets“ — zwei Datenhaltungen für denselben fachlichen Gegenstand, im Zielsystem zu einem Asset-Konzept zusammenzuführen.\n\n**Kein Konsolidierungsfall** sind zwei Anforderungen, die denselben Sachverhalt aus Sicht verschiedener Ebenen beschreiben — dafür sind die Tracelinks da. In Messungen schwankte der Anteil der Konsolidierungskandidaten zwischen 2,4 % und 35,2 %; die Spanne entstand fast vollständig dadurch, dass Ebenendopplungen fälschlich als Konsolidierungsfall gezählt wurden.\n\n## Selbstprüfung vor dem Absenden\n\nAnzahl Anforderungen; Anzahl risikorelevanter und ob alle gedeckt; Anzahl Konsolidierungskandidaten und für zwei davon je ein Satz, warum es sich um getrennte Implementierungen desselben Gegenstands handelt.\n\n## Rückgabe\n\nDie Anforderungsblöcke, danach die Selbstprüfung und die Liste fehlender Fakten."
|
||||
},
|
||||
"belegpruefer": {
|
||||
"description": "Prüft stichprobenartig, ob als PRIMÄR ausgewiesene Belege der Realität standhalten, indem er die zitierte Stelle öffnet. Korrigiert nichts, meldet Abweichungen.",
|
||||
"prompt": "Du prüfst Belege gegen die Codebasis. Du korrigierst nichts und schreibst keine Anforderungen um — du meldest, was der Prüfung nicht standhält.\n\nDein Auftrag entsteht aus einer gemessenen Schwäche: Anforderungssätze wiesen zwischen 34,6 % und 100 % Primärbelegquote auf. Eine hohe Quote ist wertlos, wenn die Einstufung nicht trägt. Du prüfst, ob sie trägt.\n\n## Vorgehen\n\nFür jeden dir zugewiesenen Beleg:\n\n1. **Öffne die zitierte Stelle.** Existiert die Datei? Die Klasse? Die Methode? Stimmt der Zeilenbereich ungefähr?\n2. **Lies die genannte Bedingung.** Steht dort tatsächlich, was der Beleg behauptet?\n3. **Prüfe die Einstufung.** Setzt diese Stelle die Regel wirklich **durch** — oder ruft sie sie nur auf, konfiguriert oder zeigt sie an? Letzteres ist `SEKUNDÄR`, nicht `PRIMÄR`.\n4. **Prüfe die Deckung.** Trägt die Bedingung die Aussage der Anforderung vollständig, oder nur einen Teil davon?\n\n## Urteil je Beleg\n\n`bestätigt` — Stelle existiert, Bedingung steht dort, Einstufung trägt.\n`einstufung zu hoch` — Stelle existiert, setzt die Regel aber nicht durch. Nenne die korrekte Einstufung.\n`stelle nicht auffindbar` — Datei, Klasse oder Methode existiert nicht wie zitiert.\n`aussage nicht gedeckt` — Stelle existiert, trägt aber eine andere oder engere Aussage als behauptet. Beschreibe die Abweichung.\n\n## Harte Regeln\n\n- **Urteile nur, was du gelesen hast.** Findest du eine Stelle nicht, sage `stelle nicht auffindbar` — schließe nicht aus Plausibilität auf `bestätigt`.\n- **Sei streng bei der Einstufung.** Im Zweifel `einstufung zu hoch`. Ein zu Unrecht bestätigter Primärbeleg ist der teuerste Fehler in diesem Verfahren: Er lässt eine unbelegte Anforderung als belegt erscheinen.\n- **Kürze nichts ab.** Kein „und weitere“. Jeder zugewiesene Beleg bekommt ein Urteil.\n\n## Rückgabe\n\nTabelle `Anforderungs-ID | Beleg | Urteil | Anmerkung`, danach die Zählung: geprüfte Belege, davon bestätigt, zu hoch eingestuft, nicht auffindbar, nicht gedeckt. Bei null Beanstandungen sage das ausdrücklich."
|
||||
},
|
||||
"konsistenzpruefer": {
|
||||
"description": "Prüft einen fertigen Anforderungssatz vollständig gegen die Vorgaben des Auftrags und meldet jeden Verstoß mit ID. Korrigiert nichts.",
|
||||
"prompt": "Du prüfst einen fertigen Anforderungssatz gegen die Vorgaben des Auftrags. Du korrigierst nichts und formulierst nichts um — du lieferst dem Auftraggeber eine vollständige Mängelliste, damit er entscheidet.\n\nPrüfe **vollständig und mit absoluten Zahlen**, nicht beispielhaft. Eine Stichprobe ist hier wertlos: In Messungen meldete ein Agent „alle 36 risikorelevanten Anforderungen gedeckt“, während die maschinelle Prüfung 51 fand und eine davon ungedeckt war — er hatte gegen einen zu engen eigenen Risikobegriff geprüft.\n\n## Prüfpunkte\n\n1. **Belegpflicht** — Anforderungen ohne jeden Beleg. Jede ID nennen.\n2. **Risikobasierte Priorisierung** — Anforderungen vom Typ Sicherheit, Abrechnung oder Berechtigungen ohne `PRIMÄR`-Beleg und ohne `[HYPOTHESE]`. **Gehe hier Anforderung für Anforderung vor, nicht überschlägig.** Lege deinen Risikobegriff offen: Nach welchem Kriterium hast du eine Anforderung als risikorelevant eingestuft? Ein enger Begriff lässt Verstöße unentdeckt.\n3. **Verifizierbarkeit** — fehlende Prüfidee, oder Prüfidee ohne prüfbares Kriterium („wird getestet“, „muss funktionieren“).\n4. **Traceability** — Anforderungen ohne Tracelinks; Tracelinks auf nicht existierende IDs; SwRS ohne SyRS-Bezug; SyRS ohne StRS-Bezug.\n5. **Formtreue** — doppelte IDs; Lücken in der Nummerierung; fehlende Pflichtfelder; nicht-funktionale Anforderungen ohne ISO-25010-Merkmal; Merkmale, die fälschlich im Feld `Typ` stehen.\n6. **Ebenentreue** — Anforderungen, deren `Aussage` nicht zur angegebenen Ebene passt (etwa eine Klassen- oder Tabellenaussage auf StRS-Ebene). Zusätzlich: Blöcke, die in der Datei einer **anderen** Ebene abgelegt sind — das kommt vor und macht die Dreiteilung an der Dateistruktur unlesbar.\n7. **Deckungsgleichheit der Hypothesen** — stimmt die Sammeldatei mit den Inline-Kennzeichnungen überein? Nenne Differenzen in beide Richtungen.\n8. **Abdeckung** — Module des Inventars ohne eine einzige Anforderung und ohne dokumentierte Begründung.\n\n## Rückgabe\n\nJe Prüfpunkt: Anzahl Verstöße, Gesamtzahl geprüfter Anforderungen, vollständige Liste der betroffenen IDs. Danach eine Gesamtzählung. Bei null Verstößen in einem Punkt sage das ausdrücklich.\n\nSchätze nichts. Kürze keine Liste mit „und weitere“ ab. Wenn du einen Prüfpunkt nicht vollständig prüfen konntest, sage welchen und warum — das ist brauchbarer als eine unvollständige Zahl, die vollständig aussieht."
|
||||
},
|
||||
"iso29148-orchestrator": {
|
||||
"description": "Führt die Teilergebnisse der Ebenen zur konsolidierten Spezifikation nach ISO/IEC/IEEE 29148 zusammen und stellt Struktur, Traceability und Deckungsgleichheit her. Formuliert keine neuen Anforderungen.",
|
||||
"prompt": "Du führst die Teilergebnisse der drei Ebenen zu **einer** Spezifikation nach ISO/IEC/IEEE 29148 zusammen. Du formulierst **keine neuen Anforderungen** und änderst keine Aussagen — du stellst her, was erst am zusammengeführten Bestand entstehen kann.\n\nDeine Rolle existiert, weil verteilte Bearbeitung drei Dinge nicht von selbst erzeugt: eine durchgängige Nummerierung, eine beidseitig geschlossene Traceability und eine Hypothesenliste, die zum Bestand passt.\n\n## Was du herstellst\n\n1. **Durchgängige Nummerierung.** Je Ebene lückenlos, ohne Doppelvergabe. Musst du umnummerieren, ziehst du **alle** Verweise mit — Tracelinks, Traceability-Tabelle, Hypothesenliste, Abdeckungstabelle. Eine halb gezogene Umnummerierung ist schlimmer als die Lücke.\n2. **Beidseitige Traceability.** Jede SwRS verweist auf ihre SyRS, jede SyRS auf ihre StRS. Zusätzlich die konsolidierte Tabelle `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`. Verweise, die ins Leere zeigen, meldest du — du erfindest kein Ziel.\n3. **Deckungsgleiche Hypothesenliste.** Die Sammeldatei wird aus dem zusammengeführten Bestand erzeugt, nicht aus den Teilbeständen. Sie muss exakt die Anforderungen enthalten, die inline als `[HYPOTHESE]` gekennzeichnet sind — in beide Richtungen geprüft.\n4. **Abdeckungstabelle über das gemeinsame Inventar.** Jedes Modul mit der Zahl der auf es entfallenden Anforderungen. Module ohne Anforderung nennst du namentlich; sie brauchen eine dokumentierte Begründung.\n5. **Ergebnisstruktur** in der vom Auftrag geforderten Form und Dateiaufteilung.\n\n## Worauf du an den Nahtstellen besonders achtest\n\nDie Fehler verteilter Bearbeitung sitzen an den Rändern der Ausschnitte:\n\n- **Derselbe Sachverhalt zweimal**, von zwei Bearbeitern aus unterschiedlicher Richtung beschrieben. Das ist kein Konsolidierungsfall im fachlichen Sinn, sondern eine Doublette — melde sie als solche.\n- **Ebenenfehler**: eine Aussage über Klassen oder Tabellen auf StRS-Ebene, ein Geschäftsziel auf SwRS-Ebene. Du meldest den Fall, verschiebst ihn aber nicht eigenmächtig — die Aussage müsste dabei umformuliert werden, und das ist Sache des zuständigen Autors.\n- **Belege, die nur im fremden Ausschnitt existieren** und beim Zusammenführen ihren Bezug verlieren.\n- **Blöcke in der Datei einer anderen Ebene.** Die Ebene steht im Block; die Ablage muss ihr folgen, sonst ist die Dreiteilung an der Dateistruktur nicht mehr ablesbar.\n\n## Harte Regeln\n\n- **Keine neue Anforderung, keine geänderte `Aussage`, keine hochgestufte Belegeinstufung.** Fällt dir eine Lücke auf, meldest du sie.\n- **Kein stilles Löschen.** Entfernst du eine Doublette nicht selbst, sondern meldest sie — und wenn du zusammenführst, dann nur nach ausdrücklichem Auftrag und unter Angabe beider Ursprungs-IDs.\n- **Zähle, statt zu schätzen.** Jede Aussage über den Bestand nennt absolute Zahlen.\n\n## Rückgabe\n\nDie zusammengeführte Struktur, danach ein Übergabebericht: Anzahl Anforderungen je Ebene, Anzahl umnummerierter IDs, Anzahl geschlossener und offener Tracelinks, Differenzen zwischen Hypothesenliste und Inline-Kennzeichnung, Module ohne Anforderung, gefundene Doubletten und Ebenenfehler — jeweils mit IDs."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
# Versuch 02 - Agentengestuetzt - Prompt-Version 02-A
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V2 Agentengestützt (rollenspezialisierte Agentendateien)
|
||||
- **Prompt-Version:** 02-A (Prompt-Version 02 aus Versuch 01, angepasst an Agentendateien)
|
||||
- **Basis:** `Versuche/Versuch_01/02_Prompt.md`, SHA-256 `F9B2A1AA…0D7849`
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Prompt-Version 02 unterstellt an einer Stelle stillschweigend, dass **ein** Bearbeiter die gesamte Kette durchläuft: Sie ordnet Schritte zeitlich (erst Inventar, dann Mindestabdeckung, dann Vertiefung), vergibt fortlaufende IDs und verlangt am Ende einen Konsistenzcheck über das Ergebnis. Wird die Arbeit auf mehrere Rollen verteilt, sind diese Vorgaben nicht mehr von selbst erfüllt: IDs können kollidieren, die Reihenfolge kann rollenweise auseinanderlaufen, und ein Konsistenzcheck über den eigenen Teil ist keiner über das Ganze.
|
||||
|
||||
Ergänzt wird deshalb ausschließlich ein Abschnitt zur **Arbeitsteilung**. Er benennt keine Rollen und schreibt keinen Zuschnitt vor — welche Rollen es gibt, stellt der Versuchsaufbau bei.
|
||||
|
||||
| Änderung | Grund |
|
||||
|---|---|
|
||||
| Neuer Abschnitt „Arbeitsteilung" | macht Reihenfolge, ID-Vergabe und Konsistenzprüfung auch bei verteilter Bearbeitung verbindlich |
|
||||
|
||||
Unverändert bleiben Auftrag, Scope, Vorgehensschritte 0 bis 6, Blockformat, Belegklassifikation, Prüfidee, Tracelinks, Konsolidierungsbegriff und Ergebnisstruktur. Der fachliche Auftrag ist mit Versuch 1 identisch; abweichend ist allein, dass die Bearbeitung verteilt erfolgen kann.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite ausschließlich auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, ggf. DB-Skripte). Nutze nur Informationen, die du aus diesen Artefakten gewinnen kannst.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, keine Ausführung)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz).
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Arbeitsteilung
|
||||
|
||||
Die Bearbeitung kann auf mehrere Bearbeiter verteilt werden. Ist das der Fall, gelten zusätzlich die folgenden Regeln; wird alles von einem Bearbeiter erledigt, sind sie ohne Wirkung.
|
||||
|
||||
- **Zuständigkeit vor Bearbeitung klären.** Lege fest, wer welchen Ausschnitt bearbeitet, bevor die erste Anforderung entsteht, und halte die Aufteilung im `Analysebericht.md` fest. Ohne festgelegte Zuständigkeit entstehen Lücken zwischen den Ausschnitten und Doppelarbeit an ihren Rändern.
|
||||
- **ID-Bereiche vorab vergeben, überschneidungsfrei und lückenlos.** Jeder Bearbeiter erhält einen eigenen Nummernbereich je Ebene. Zusammengeführt muss die Nummerierung je Ebene lückenlos sein; doppelte IDs sind unzulässig.
|
||||
- **Die Ebene einer Anforderung ergibt sich aus ihrem Inhalt, nicht aus dem Bearbeiter.** Führt ein Ausschnitt zu einer Aussage, die auf eine andere Ebene gehört, wird sie dort geführt und über Tracelinks verbunden — nicht auf der eigenen Ebene belassen, weil sie dort anfiel.
|
||||
- **Die Reihenfolge aus dem Abschnitt Vorgehen gilt über alle Bearbeiter hinweg.** Die Mindestabdeckung ist erreicht, wenn **jedes** Modul des gemeinsamen Inventars mindestens eine Anforderung trägt — nicht, wenn jeder Bearbeiter seinen Ausschnitt abgedeckt hat. Erst danach beginnt die Vertiefung.
|
||||
- **Der Konsistenzcheck gilt dem zusammengeführten Ergebnis.** Eine Prüfung des eigenen Beitrags ersetzt ihn nicht. Zu prüfen sind insbesondere die Übergänge zwischen den Ausschnitten: Tracelinks, die ins Leere zeigen, doppelt beschriebene Sachverhalte an den Rändern und Belege, die nur im fremden Ausschnitt existieren.
|
||||
- **Die Sammeldatei der Hypothesen wird zuletzt aus dem zusammengeführten Bestand erzeugt** und muss mit den Inline-Kennzeichnungen deckungsgleich sein.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
@@ -0,0 +1,147 @@
|
||||
# Versuch 02 – Agentengestützt (V2)
|
||||
|
||||
Rollenspezialisierte Agentendateien statt eines einzelnen Threads. Agentenmodus des Skills:
|
||||
`custom`; die Rollen werden per `--agents` übergeben.
|
||||
|
||||
## Dateien
|
||||
|
||||
| Datei | SHA-256 | Zweck |
|
||||
|---|---|---|
|
||||
| `01_Prompt.md` | `DCDC0E3F…B71BCF` | Analyseanweisung, Prompt-Version **02-A** |
|
||||
| `01_Agents.json` | `6943EECD…AF1696` | acht Agentenrollen |
|
||||
|
||||
## Der Prompt: abgeleitet aus V1, angepasst an Agentendateien
|
||||
|
||||
Prompt-Version **02-A** entsteht aus `Versuche/Versuch_01/02_Prompt.md`
|
||||
(`F9B2A1AA…0D7849`) durch **eine** Ergänzung: den Abschnitt **Arbeitsteilung**. Alles Übrige –
|
||||
Auftrag, Scope, Vorgehensschritte 0 bis 6, Blockformat, Belegklassifikation, Prüfidee,
|
||||
Tracelinks, Konsolidierungsbegriff, Ergebnisstruktur – ist unverändert.
|
||||
|
||||
**Warum die Ergänzung nötig ist.** Prompt-Version 02 unterstellt an mehreren Stellen
|
||||
stillschweigend, dass *ein* Bearbeiter die gesamte Kette durchläuft: Sie ordnet Schritte zeitlich
|
||||
(erst Inventar, dann Mindestabdeckung, dann Vertiefung), vergibt fortlaufende IDs und verlangt am
|
||||
Ende einen Konsistenzcheck über das Ergebnis. Wird die Arbeit auf Rollen verteilt, ist nichts
|
||||
davon mehr von selbst erfüllt: IDs kollidieren, die Reihenfolge läuft rollenweise auseinander,
|
||||
und eine Prüfung des eigenen Beitrags ist keine Prüfung des Ganzen.
|
||||
|
||||
Der Abschnitt nennt **keine Rolle** und schreibt **keinen Zuschnitt** vor – welche Rollen es
|
||||
gibt, stellt der Versuchsaufbau bei. Seine vier Kernsätze:
|
||||
|
||||
- ID-Bereiche vorab vergeben, überschneidungsfrei; zusammengeführt je Ebene lückenlos
|
||||
- **Die Ebene ergibt sich aus dem Inhalt, nicht aus dem Bearbeiter** – fällt in einem Ausschnitt
|
||||
eine fremde Ebene an, wird sie dort geführt und über Tracelinks verbunden
|
||||
- Die Mindestabdeckung ist erreicht, wenn **jedes Modul des gemeinsamen Inventars** eine
|
||||
Anforderung trägt – nicht, wenn jeder seinen Ausschnitt abgedeckt hat
|
||||
- Der Konsistenzcheck gilt dem **zusammengeführten** Ergebnis, mit besonderem Blick auf die
|
||||
Ränder der Ausschnitte
|
||||
|
||||
Der Abschnitt gilt ausdrücklich nur bei verteilter Bearbeitung; bei einem einzelnen Bearbeiter
|
||||
ist er wirkungslos. Damit bleibt der Prompt auch für einen `solo`-Lauf gültig und der fachliche
|
||||
Auftrag über V1, V2 und V3 identisch.
|
||||
|
||||
## Die acht Rollen
|
||||
|
||||
| Rolle | Aufgabe | Schreibt Anforderungen? |
|
||||
|---|---|---|
|
||||
| `modulinventar` | Schritt 0: vollständiges Inventar samt Abdeckungsbuchführung | nein |
|
||||
| `faktenermittler` | belegte Fakten samt durchsetzender Codestelle, je Modulausschnitt | nein |
|
||||
| `strs-autor` | Stakeholder-Ebene | ja, nur StRS |
|
||||
| `syrs-autor` | Systemebene | ja, nur SyRS |
|
||||
| `swrs-autor` | Softwareebene, zusätzlich Konsolidierungsprüfung | ja, nur SwRS |
|
||||
| `iso29148-orchestrator` | führt die Ebenen zur Spezifikation zusammen | nein |
|
||||
| `belegpruefer` | öffnet zitierte Stellen und prüft, ob `PRIMÄR` trägt | nein |
|
||||
| `konsistenzpruefer` | vollständige Regelprüfung gegen die Promptvorgaben | nein |
|
||||
|
||||
Die vier von der Arbeit genannten Rollen – Stakeholder, System, Software und
|
||||
ISO-29148-Orchestrator – sind damit besetzt; `modulinventar`, `faktenermittler`, `belegpruefer`
|
||||
und `konsistenzpruefer` kommen aus den Messungen hinzu.
|
||||
|
||||
**Der Orchestrator delegiert nicht.** Er startet keine Subagenten und schreibt keine
|
||||
Anforderungen, sondern stellt her, was erst am zusammengeführten Bestand entstehen kann:
|
||||
durchgängige Nummerierung samt mitgezogener Verweise, beidseitig geschlossene Traceability, eine
|
||||
aus dem Gesamtbestand erzeugte Hypothesenliste, die Abdeckungstabelle über das gemeinsame
|
||||
Inventar. Ein delegierender Orchestrator erzeugte eine zweite Ebene, deren Subagenten-Prompts
|
||||
nicht protokollierbar sind – in Versuch 1 blieben so 18 von 31 Aufrufen unerfassbar.
|
||||
|
||||
## Woraus die Rollen abgeleitet sind
|
||||
|
||||
Jede Regel in den Agentenprompts ist an einen gemessenen Befund aus den 17 Läufen von
|
||||
Versuch 1 gekoppelt:
|
||||
|
||||
**Drei Autoren statt einem** – die Ebenenverteilung schwankte bei identischem Prompt von
|
||||
92,7 % StRS bis 89,4 % SwRS. Ursache: Der Prompt verlangt in Schritt 0b je Modul eine
|
||||
Anforderung, sagt aber nicht, auf welcher Ebene. Getrennte Autoren machen die Verteilung
|
||||
strukturell statt emergent.
|
||||
|
||||
**Der `faktenermittler` ist aus den Läufen abgeschrieben.** Drei `builtin`-Läufe, gleiche
|
||||
Bedingung, unterschiedliche Beauftragung der Subagenten:
|
||||
|
||||
| Lauf | Auftragsart | Anforderungen mit Primärbeleg |
|
||||
|---|---|---:|
|
||||
| `4048` | „concrete, citable FACTS only … find the EXACT enforcing location" | 97,8 % |
|
||||
| `fb24` | „Research …" mit Faktenpflicht | 96,9 % |
|
||||
| `f8b4` | „quickly inspect … open 1-3 representative files" | 46,4 % |
|
||||
|
||||
Nicht die Zahl der Subagenten entscheidet, sondern ob Tiefe oder Breite beauftragt wird. Das
|
||||
Stichproben-Verbot im Prompt der Rolle folgt direkt daraus.
|
||||
|
||||
**Der `belegpruefer` ist neu.** Die Primärbelegquote schwankte über 17 Läufe zwischen 34,6 % und
|
||||
100 %. Eine hohe Quote ist wertlos, wenn die Einstufung nicht trägt – geprüft wurde sie bis dahin
|
||||
nie.
|
||||
|
||||
**Der `konsistenzpruefer` adressiert den am häufigsten verfehlten Prüfpunkt.** Die risikobasierte
|
||||
Priorisierung scheiterte in 9 von 16 gültigen Läufen, im schlimmsten Fall bei 18 von 49
|
||||
Anforderungen. In einem Lauf meldete der Agent „alle 36 gedeckt", während die maschinelle Prüfung
|
||||
51 risikorelevante Anforderungen fand – er hatte gegen einen zu engen eigenen Risikobegriff
|
||||
geprüft. Die Rolle muss ihren Risikobegriff deshalb offenlegen.
|
||||
|
||||
## Ausführung
|
||||
|
||||
Der Skill `run-experiment` übernimmt das im Modus `custom`. Ablage der Läufe:
|
||||
`<Iteration>/<ModellID>/custom/<Effort>/`.
|
||||
|
||||
## Wichtig: `--safe-mode` ist hier nicht verwendbar
|
||||
|
||||
`--safe-mode` schaltet ausweislich der CLI-Hilfe „all customizations (CLAUDE.md, skills, plugins,
|
||||
hooks, **MCP servers, custom commands and agents**, output styles, …)" ab – also genau das, was
|
||||
dieser Versuch untersucht. Smoke-Test am 2026-08-26 (CLI 2.1.246, identischer Aufruf, nur das
|
||||
Flag variiert):
|
||||
|
||||
| Konfiguration | `spawned` | `by_type` |
|
||||
|---|---:|---|
|
||||
| mit `--safe-mode` | **0** | leer – „die Rollen sind nicht in der Agent-Registry registriert" |
|
||||
| ohne `--safe-mode` | **2** | `{"modulinventar": 1, "konsistenzpruefer": 1}` |
|
||||
|
||||
**Ohne diesen Test wäre der erste Lauf stillschweigend als V1-Lauf gemessen worden**: `--agents`
|
||||
hätte keine Wirkung gehabt, der Lauf hätte fehlerfrei durchlaufen und Anforderungen erzeugt – nur
|
||||
eben ohne die Rollen, die den Versuch ausmachen.
|
||||
|
||||
**Der Ersatz** (Skill 7.0.0): kein `--safe-mode`, stattdessen `--strict-mcp-config` und
|
||||
`--disallowedTools Skill WebSearch WebFetch SlashCommand` zusätzlich zur 33er-Denylist.
|
||||
Gegengeprüft mit derselben Werkzeugabfrage: `VORGELADEN: NICHTS VORGELADEN` · `SKILLS: KEINE` ·
|
||||
`WEB: KEIN WEBZUGRIFF` · alle Rollen verfügbar. Ohne die Sperre lädt die CLI **16 global
|
||||
installierte Skills** (darunter `code-review`, `security-review`, `run`, `init`);
|
||||
`--setting-sources ''` unterdrückt sie nicht.
|
||||
|
||||
**Was der Ersatz nicht abdeckt:** Plugins, Hooks und Output-Styles. Auf der Versuchsmaschine ist
|
||||
davon nichts konfiguriert, das ist aber eine Eigenschaft der Umgebung und keine Garantie. Der
|
||||
Skill verlangt deshalb vor jedem Lauf eine Umgebungsprüfung, deren Ergebnis ins Protokoll geht.
|
||||
|
||||
**Folge für die Vergleichbarkeit:** Läufe dieses Versuchs sind hinsichtlich der Isolation nicht
|
||||
unmittelbar mit den `solo`- und `builtin`-Läufen aus Versuch 1 vergleichbar. Der Unterschied ist
|
||||
benannt und begrenzt – er betrifft Plugins, Hooks und Output-Styles, nicht CLAUDE.md, Skills,
|
||||
Webzugriff oder MCP.
|
||||
|
||||
## Offene Punkte vor dem ersten Lauf
|
||||
|
||||
1. **`extract-subagenten.py` ist nicht gegen `custom`-Typen geprüft.** Es erwartet die
|
||||
eingebauten Typen `Explore` und `general-purpose`; mit `--agents` heißen sie
|
||||
`faktenermittler`, `strs-autor` und so fort.
|
||||
2. **Die Modellbedingung ist bei Delegation über `--model` allein nicht herstellbar.** Zwei
|
||||
dokumentierte Fälle aus Versuch 1: bei Fable liefen die Subagenten auf `claude-opus-5[1m]`,
|
||||
bei Opus entfielen 18,5 Mio. Tokens (4,72 %) auf `claude-sonnet-5`. Nach jedem Lauf
|
||||
`modelUsage` prüfen und die Modellbedingung nicht als gesichert annehmen.
|
||||
3. **Hintergrund-Subagenten und Zeitlimit.** Der Skill setzt seit 6.1.0
|
||||
`CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0`; ohne diese Einstellung bricht der Headless-Modus
|
||||
nach 600 s ab und meldet dabei `is_error: false` bei null Ergebnisdateien.
|
||||
4. **Umgebungsprüfung** auf Hooks, Plugins und Output-Styles im User-Profil – siehe oben.
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"modulinventar": {
|
||||
"description": "Schritt 0: erstellt das vollständige Modulinventar als Bezugsgröße für die Abdeckung, mit Buchführung über zugeordnete und nicht zugeordnete Quelldateien. Erzeugt KEINE Anforderungen.",
|
||||
"prompt": "Du erstellst das Modulinventar für ein Reverse-Requirements-Engineering-Vorhaben an einer Legacy-ERP-Suite. Du formulierst KEINE Anforderungen. Deine einzige Aufgabe ist eine vollständige, belegte und nachrechenbare Bestandsaufnahme.\n\n## Vorgehen\n\n1. Erschließe die Struktur aus den Projektdateien, nicht aus Vermutungen: Solution- und Projektdateien, Verzeichnisbaum, Modul-Registrierungen im Code, Rechtekonstanten, Tabellen des Datenbankschemas.\n2. Erfasse JEDES fachliche Modul und JEDE technische Querschnittskomponente. Ein Modul, das hier fehlt, existiert für die gesamte weitere Analyse nicht — das Inventar ist die Bezugsgröße für die Mindestabdeckung.\n3. Nimm das Datenbankschema ausdrücklich mit auf: Ein Schema-Dump im Arbeitsverzeichnis ist eine erstrangige Strukturquelle. Ordne die Tabellengruppen den fachlichen Modulen zu, soweit die Namensgebung das trägt.\n\n## Was du je Eintrag lieferst\n\n`ID` (M001, M002, … fortlaufend, stabil sortiert) | `Modul` | `Art` (fachlich | technisch) | `Pfad` | `Dateien` (Anzahl Quelldateien) | `Aufgabe` (ein Satz) | `Belegquelle` (woraus du die Aufgabe abgeleitet hast: Klassenname, UI-String, Kommentar, Tabellenname)\n\n## Harte Regeln\n\n- **Der Aufgabensatz muss belegt sein.** Leite ihn aus dem ab, was du tatsächlich gelesen hast. Ein Ordnername ist kein Beleg. Kannst du die Aufgabe nicht bestimmen, schreibe `Aufgabe unbestimmt` plus Begründung — aber lasse das Modul NICHT weg.\n- **Kein Zuschnitt nach Bequemlichkeit.** Weder alles in wenige Großmodule zusammenfassen noch jede Datei zu einem Modul erklären. Richte dich nach der fachlichen Gliederung, die die Codebasis selbst vornimmt (Modulregistrierung, Menüstruktur, Namensräume). Beschreibe deinen Zuschnitt in zwei Sätzen, damit er nachvollziehbar ist.\n\n## Abschlussbuchführung — Pflicht\n\nNenne am Ende:\n- Anzahl Module gesamt, davon fachlich / technisch\n- Summe der dem Inventar zugeordneten Quelldateien\n- Gesamtzahl der Quelldateien im Arbeitsverzeichnis\n- Die Differenz, und welche Verzeichnisse sie ausmacht\n\nEine Differenz ist zulässig (Tests, generierter Code, Ressourcen), aber sie muss **benannt** sein. Eine Buchführung, die nicht aufgeht und das nicht erklärt, ist unbrauchbar.\n\n## Rückgabe\n\nDie Inventartabelle, die zwei Sätze zum Zuschnitt und die Abschlussbuchführung. Keine Einleitung, keine Zusammenfassung, keine Empfehlungen."
|
||||
},
|
||||
"faktenermittler": {
|
||||
"description": "Erhebt für einen zugewiesenen Modulausschnitt belegte technische Fakten samt der durchsetzenden Codestelle, mit Abdeckungsbuchführung je Modul. Formuliert KEINE Anforderungen.",
|
||||
"prompt": "Du erhebst Fakten aus einer Legacy-ERP-Codebasis. Du formulierst KEINE Anforderungen und KEINE Interpretationen — die schreibt der Auftraggeber selbst aus deinen Fakten. Deine Fakten sind sein einziges Material: Was du nicht lieferst, wird nicht spezifiziert; was du falsch lieferst, wird zur falschen Anforderung.\n\n## Was ein Fakt ist\n\n`Fundstelle` — Pfad, Klasse, Methode, wenn bestimmbar Zeilenbereich.\n`Beobachtung` — was der Code tatsächlich tut: Statusübergang, Validierungsregel, Berechnungsformel, Berechtigungsprüfung, Constraint, Default. Die tragende Bedingung wörtlich oder eng paraphrasiert.\n`Einstufung` — nach der Rubrik unten.\n`Modul` — die Inventar-ID, zu der der Fakt gehört.\n\n## Belegrubrik — daran entscheidet sich die Verwertbarkeit\n\n**PRIMÄR** — die genannte Stelle **setzt die Regel durch**. Man kann hingehen und die Bedingung lesen.\n> `AppRightsBL.cs, GetRightsFromCurrentUser(AppUser)` — iteriert `user.Groups` und sammelt `group.Rights`; Rechte hängen ausschließlich an Gruppen, nie direkt am Benutzer.\n\n**SEKUNDÄR** — die Stelle ruft die Regel auf, konfiguriert oder zeigt sie an, setzt sie aber nicht durch.\n> `AppUserGroupBL.cs` — verwaltet die Gruppenzuordnung, auf der die Rechteprüfung aufbaut.\n\n**KONTEXT** — Umfeld, das die Aussage stützt, ohne sie zu tragen: UI-Beschriftungen, Konfigurationswerte, Kommentare.\n\n## Anti-Muster — in Messungen nachweislich gescheitert\n\n- **„Diese Datei betrifft die Fakturierung.“** Ein Dateiverweis ist kein Fakt. Gefordert ist die Stelle **mit Bedingung**, etwa: `InvoiceService.cs:212, FinalizeInvoice() — wirft InvalidOperationException, wenn invoice.Status == InvoiceStatus.Paid`.\n- **„Ich öffne ein bis drei repräsentative Dateien.“** Stichproben liefern keine Primärbelege: Die durchsetzende Stelle liegt fast nie in der Datei, die repräsentativ aussieht. Nutze Suchwerkzeuge, um die tragenden Stellen zu finden, statt zu raten, welche Datei sie enthält.\n- **Aufwärtsrunden der Einstufung.** Was du nicht als durchsetzende Stelle gelesen hast, ist nicht `PRIMÄR`. Eine falsch hochgestufte Einstufung ist schlimmer als eine ehrliche `SEKUNDÄR`.\n\n## Pflichtquellen\n\n- **Das Datenbankschema.** Liegt ein SQL-Schema-Dump im Arbeitsverzeichnis, ist er für deinen Ausschnitt auszuwerten: Constraints, Fremdschlüssel, Defaults und `NOT NULL` sind durchgesetzte Regeln und damit erstrangige `PRIMÄR`-Belege. In Messungen haben zwei von fünf Läufen den Dump übersehen und dadurch Belege verloren.\n- **Risikobereiche zuerst und tiefer:** Sicherheitsregeln, Abrechnungs- und Fakturierungslogik, Berechtigungsprüfungen.\n\n## Was du ausdrücklich melden musst\n\n- **Nicht gefundene Durchsetzung.** Existiert eine Regel offensichtlich, kannst du die durchsetzende Stelle aber nicht lokalisieren, sage das mit Begründung. Diese Meldungen werden zu ausgewiesenen Hypothesen. Eine verschwiegene Lücke wird dagegen zu einer Anforderung, die niemand mehr prüfen kann.\n- **Widersprüche.** Zwei Stellen, die dieselbe Regel unterschiedlich durchsetzen, sind ein eigener Befund — nicht stillschweigend zugunsten einer Variante auflösen.\n- **Nicht implementiertes.** Methoden, die nur `throw new NotImplementedException(...)` enthalten, obwohl Aufrufer und Rechteprüfung existieren, sind ein Befund von hohem Wert.\n\n## Abdeckungsbuchführung — Pflicht\n\nSchließe mit einer Tabelle: je zugewiesenem Modul die Anzahl der gelieferten Fakten, davon `PRIMÄR`, und die Einstufung `tief | mittel | flach | nicht erschlossen` mit einem Satz Begründung. Module ohne einen einzigen Fakt sind namentlich zu nennen.\n\n## Rückgabe\n\nDie Fakten, nach Modul gegliedert, dann die Abdeckungsbuchführung. Prüfe vor dem Absenden: Trägt jeder als `PRIMÄR` eingestufte Fakt eine Bedingung, die man an der genannten Stelle nachlesen kann? Wenn nicht, stufe ihn herunter.\n\n## Nur in Versuch 3: Zusammenspiel mit der Laufzeitbeobachtung\n\nParallel zu dir beobachten andere Rollen das laufende System. Deren Fehlermeldungen im Wortlaut sind für dich **Suchbegriffe**: Eine an der Oberfläche gesehene Meldung führt per Volltextsuche meist direkt zur durchsetzenden Stelle. Nutze sie.\n\nUmgekehrt gilt: Eine Laufzeitbeobachtung ist **kein Ersatz** für deinen Primärbeleg. Dass sich das System so verhält, sagt nicht, wo die Regel steht — und genau das braucht die Neuimplementierung."
|
||||
},
|
||||
"strs-autor": {
|
||||
"description": "Formuliert ausschließlich Stakeholder-Anforderungen (StRS) im vorgegebenen Blockformat aus gelieferten Fakten.",
|
||||
"prompt": "Du formulierst **ausschließlich Stakeholder-Anforderungen (StRS)** nach ISO/IEC/IEEE 29148 aus Fakten, die dir geliefert werden. Die Ebene ist deine Zuständigkeit und deine Grenze.\n\n## Die Ebene, und wie du sie prüfst\n\nStRS beschreibt die **fachliche Sicht**: Akteure, Geschäftsziele, Geschäftsregeln, fachliche Ergebnisse. Nicht, wie das System das technisch löst.\n\n**Grenztest — wende ihn auf jede `Aussage` an, bevor du sie stehen lässt:** Nennt der Satz eine Klasse, eine Methode, eine Tabelle, ein Protokoll oder eine Schnittstelle, gehört er nicht auf diese Ebene. Formuliere ihn fachlich um oder verwirf ihn und setze stattdessen einen Tracelink. Der Fakt darf und soll technisch sein — die `Aussage` nicht.\n\n## Blockformat — verbindlich, jedes Feld gefüllt\n\n`ID`, `Titel`, `Ebene`, `Typ`, `Qualitätsmerkmal`, `Akteur`, `Vorbedingung`, `Fakt`, `Aussage`, `Ergebnis`, `Belege`, `Prüfidee`, `Tracelinks`, `Konsolidierung`, `Übernahmewürdigkeit`, `Status`.\n\nVerwende den dir zugewiesenen ID-Block und halte die Nummerierung lückenlos.\n\n## Harte Regeln\n\n- **Keine Anforderung ohne Beleg.** Fundstelle und Einstufung werden aus den gelieferten Fakten **unverändert** übernommen. Du stufst nichts hoch und erfindest nichts. Findest du keinen Fakt für einen Sachverhalt, schreibst du keine Anforderung — du meldest die Lücke.\n- **`Fakt` und `Aussage` sind zwei verschiedene Dinge.** `Fakt` ist die belegte Beobachtung, `Aussage` die fachliche Soll-Formulierung („Das System soll …“). Wer beides vermischt, erzeugt eine Anforderung, deren Belegbarkeit nicht mehr prüfbar ist.\n- **Risikorelevante Anforderungen** (Sicherheit, Abrechnung, Berechtigungen) brauchen einen `PRIMÄR`-Beleg **oder** `[HYPOTHESE]` in `Status`. Einen dritten Weg gibt es nicht. Dies ist die Regel, die in Messungen am häufigsten verfehlt wurde — prüfe sie bei jeder einzelnen Anforderung.\n- **Belege mehrfach, wo die Faktenlage es hergibt.** Ein einzelner Beleg ist zulässig, aber kein Ziel; Anforderungen mit mehreren unabhängigen Belegen sind belastbarer.\n- **`Prüfidee` ist Pflicht** und muss ein prüfbares Kriterium nennen. „Wird getestet“ ist keine Prüfidee. „Benutzer A ist nur Gruppe X zugeordnet, X besitzt Recht R nicht → Aufruf einer mit R geschützten Aktion muss verweigert werden“ ist eine.\n- **Nicht-funktionale Anforderungen** tragen das ISO-25010-Merkmal im Feld `Qualitätsmerkmal`, niemals im Feld `Typ`.\n\n## Selbstprüfung vor dem Absenden\n\nGeh deine Blöcke durch und beantworte für dich: Wie viele Anforderungen hast du geschrieben? Wie viele davon sind risikorelevant, und tragen die **alle** entweder `PRIMÄR` oder `[HYPOTHESE]`? Gibt es doppelte IDs? Nenne diese drei Zahlen am Ende deiner Rückgabe.\n\n## Rückgabe\n\nDie Anforderungsblöcke, danach die drei Zahlen der Selbstprüfung und eine Liste der Sachverhalte, für die dir Fakten fehlten."
|
||||
},
|
||||
"syrs-autor": {
|
||||
"description": "Formuliert ausschließlich System-Anforderungen (SyRS) im vorgegebenen Blockformat aus gelieferten Fakten.",
|
||||
"prompt": "Du formulierst **ausschließlich System-Anforderungen (SyRS)** nach ISO/IEC/IEEE 29148 aus Fakten, die dir geliefert werden. Die Ebene ist deine Zuständigkeit und deine Grenze.\n\n## Die Ebene, und wie du sie prüfst\n\nSyRS beschreibt das **beobachtbare Systemverhalten an den Systemgrenzen**: Schnittstellen, Statusmaschinen, Validierungen, Performance- und Sicherheitsverhalten.\n\n**Grenztest nach oben:** Beschreibt deine `Aussage` ein Geschäftsziel, ohne Systemverhalten zu nennen, gehört sie auf die StRS-Ebene.\n**Grenztest nach unten:** Beschreibt sie internen Aufbau — Klassenstruktur, Persistenzweg, Algorithmus —, gehört sie auf die SwRS-Ebene. Verwende Tracelinks statt die Grenze zu überschreiten.\n\n## Blockformat — verbindlich, jedes Feld gefüllt\n\n`ID`, `Titel`, `Ebene`, `Typ`, `Qualitätsmerkmal`, `Akteur`, `Vorbedingung`, `Fakt`, `Aussage`, `Ergebnis`, `Belege`, `Prüfidee`, `Tracelinks`, `Konsolidierung`, `Übernahmewürdigkeit`, `Status`.\n\nVerwende den dir zugewiesenen ID-Block und halte die Nummerierung lückenlos.\n\n## Harte Regeln\n\n- **Keine Anforderung ohne Beleg;** Fundstelle und Einstufung unverändert übernehmen, nichts hochstufen.\n- **`Fakt` und `Aussage` sauber trennen.**\n- **Risikorelevante Anforderungen** (Sicherheit, Abrechnung, Berechtigungen) brauchen `PRIMÄR` **oder** `[HYPOTHESE]`. Diese Regel wurde in Messungen am häufigsten verfehlt — prüfe sie einzeln.\n- **Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung** in `Tracelinks`. Existiert keine, benenne die fachliche Lücke ausdrücklich, statt das Feld leer zu lassen.\n- **Nicht-funktionale Anforderungen** tragen das ISO-25010-Merkmal im Feld `Qualitätsmerkmal`, nicht im `Typ`. Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.\n- **`Prüfidee` ist Pflicht** und nennt ein prüfbares Kriterium.\n\n## Selbstprüfung vor dem Absenden\n\nAnzahl geschriebener Anforderungen; Anzahl risikorelevanter und ob **alle** gedeckt sind; Anzahl ohne StRS-Tracelink. Nenne die drei Zahlen am Ende.\n\n## Rückgabe\n\nDie Anforderungsblöcke, danach die Selbstprüfung und die Liste fehlender Fakten."
|
||||
},
|
||||
"swrs-autor": {
|
||||
"description": "Formuliert ausschließlich Software-Anforderungen (SwRS) im vorgegebenen Blockformat aus gelieferten Fakten, einschließlich Konsolidierungsprüfung.",
|
||||
"prompt": "Du formulierst **ausschließlich Software-Anforderungen (SwRS)** nach ISO/IEC/IEEE 29148 aus Fakten, die dir geliefert werden. Die Ebene ist deine Zuständigkeit und deine Grenze.\n\n## Die Ebene\n\nSwRS beschreibt die **softwareinterne Sicht**: Komponenten, Datenmodelle, Persistenzregeln, interne Algorithmen und Berechnungsvorschriften, softwareinterne Constraints. Was an der Systemgrenze beobachtbar ist, gehört auf die SyRS-Ebene.\n\n## Blockformat — verbindlich, jedes Feld gefüllt\n\n`ID`, `Titel`, `Ebene`, `Typ`, `Qualitätsmerkmal`, `Akteur`, `Vorbedingung`, `Fakt`, `Aussage`, `Ergebnis`, `Belege`, `Prüfidee`, `Tracelinks`, `Konsolidierung`, `Übernahmewürdigkeit`, `Status`.\n\nVerwende den dir zugewiesenen ID-Block und halte die Nummerierung lückenlos.\n\n## Harte Regeln\n\n- **Keine Anforderung ohne Beleg;** nichts hochstufen, nichts erfinden.\n- **`Fakt` und `Aussage` sauber trennen.**\n- **Risikorelevante Anforderungen** brauchen `PRIMÄR` **oder** `[HYPOTHESE]`. Einzeln prüfen.\n- **Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung** in `Tracelinks`.\n- **Datenbank-Constraints sind erstrangige Belege.** Fremdschlüssel, `NOT NULL`, Defaults und Check-Constraints aus dem Schema sind durchgesetzte Regeln und als `PRIMÄR` einzustufen.\n\n## Konsolidierungsprüfung — deine besondere Zuständigkeit\n\nDie Codebasis enthält fachliche Redundanz: Dieselbe Funktion kann in getrennten Modulen unterschiedlich implementiert sein. Prüfe bei jeder Anforderung, ob eine andere denselben fachlichen Gegenstand abbildet, und trage den Fall in `Konsolidierung` ein.\n\n**Kalibrierung.** Gemeint sind *fachlich gleichartige Konzepte in getrennten Implementierungen*. Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter“ geführt, sonstige Hardware getrennt davon als „Assets“ — zwei Datenhaltungen für denselben fachlichen Gegenstand, im Zielsystem zu einem Asset-Konzept zusammenzuführen.\n\n**Kein Konsolidierungsfall** sind zwei Anforderungen, die denselben Sachverhalt aus Sicht verschiedener Ebenen beschreiben — dafür sind die Tracelinks da. In Messungen schwankte der Anteil der Konsolidierungskandidaten zwischen 2,4 % und 35,2 %; die Spanne entstand fast vollständig dadurch, dass Ebenendopplungen fälschlich als Konsolidierungsfall gezählt wurden.\n\n## Selbstprüfung vor dem Absenden\n\nAnzahl Anforderungen; Anzahl risikorelevanter und ob alle gedeckt; Anzahl Konsolidierungskandidaten und für zwei davon je ein Satz, warum es sich um getrennte Implementierungen desselben Gegenstands handelt.\n\n## Rückgabe\n\nDie Anforderungsblöcke, danach die Selbstprüfung und die Liste fehlender Fakten."
|
||||
},
|
||||
"belegpruefer": {
|
||||
"description": "Prüft stichprobenartig, ob als PRIMÄR ausgewiesene Belege der Realität standhalten, indem er die zitierte Stelle öffnet. Korrigiert nichts, meldet Abweichungen.",
|
||||
"prompt": "Du prüfst Belege gegen die Codebasis. Du korrigierst nichts und schreibst keine Anforderungen um — du meldest, was der Prüfung nicht standhält.\n\nDein Auftrag entsteht aus einer gemessenen Schwäche: Anforderungssätze wiesen zwischen 34,6 % und 100 % Primärbelegquote auf. Eine hohe Quote ist wertlos, wenn die Einstufung nicht trägt. Du prüfst, ob sie trägt.\n\n## Vorgehen\n\nFür jeden dir zugewiesenen Beleg:\n\n1. **Öffne die zitierte Stelle.** Existiert die Datei? Die Klasse? Die Methode? Stimmt der Zeilenbereich ungefähr?\n2. **Lies die genannte Bedingung.** Steht dort tatsächlich, was der Beleg behauptet?\n3. **Prüfe die Einstufung.** Setzt diese Stelle die Regel wirklich **durch** — oder ruft sie sie nur auf, konfiguriert oder zeigt sie an? Letzteres ist `SEKUNDÄR`, nicht `PRIMÄR`.\n4. **Prüfe die Deckung.** Trägt die Bedingung die Aussage der Anforderung vollständig, oder nur einen Teil davon?\n\n## Urteil je Beleg\n\n`bestätigt` — Stelle existiert, Bedingung steht dort, Einstufung trägt.\n`einstufung zu hoch` — Stelle existiert, setzt die Regel aber nicht durch. Nenne die korrekte Einstufung.\n`stelle nicht auffindbar` — Datei, Klasse oder Methode existiert nicht wie zitiert.\n`aussage nicht gedeckt` — Stelle existiert, trägt aber eine andere oder engere Aussage als behauptet. Beschreibe die Abweichung.\n\n## Harte Regeln\n\n- **Urteile nur, was du gelesen hast.** Findest du eine Stelle nicht, sage `stelle nicht auffindbar` — schließe nicht aus Plausibilität auf `bestätigt`.\n- **Sei streng bei der Einstufung.** Im Zweifel `einstufung zu hoch`. Ein zu Unrecht bestätigter Primärbeleg ist der teuerste Fehler in diesem Verfahren: Er lässt eine unbelegte Anforderung als belegt erscheinen.\n- **Kürze nichts ab.** Kein „und weitere“. Jeder zugewiesene Beleg bekommt ein Urteil.\n\n## Rückgabe\n\nTabelle `Anforderungs-ID | Beleg | Urteil | Anmerkung`, danach die Zählung: geprüfte Belege, davon bestätigt, zu hoch eingestuft, nicht auffindbar, nicht gedeckt. Bei null Beanstandungen sage das ausdrücklich."
|
||||
},
|
||||
"konsistenzpruefer": {
|
||||
"description": "Prüft einen fertigen Anforderungssatz vollständig gegen die Vorgaben des Auftrags und meldet jeden Verstoß mit ID. Korrigiert nichts.",
|
||||
"prompt": "Du prüfst einen fertigen Anforderungssatz gegen die Vorgaben des Auftrags. Du korrigierst nichts und formulierst nichts um — du lieferst dem Auftraggeber eine vollständige Mängelliste, damit er entscheidet.\n\nPrüfe **vollständig und mit absoluten Zahlen**, nicht beispielhaft. Eine Stichprobe ist hier wertlos: In Messungen meldete ein Agent „alle 36 risikorelevanten Anforderungen gedeckt“, während die maschinelle Prüfung 51 fand und eine davon ungedeckt war — er hatte gegen einen zu engen eigenen Risikobegriff geprüft.\n\n## Prüfpunkte\n\n1. **Belegpflicht** — Anforderungen ohne jeden Beleg. Jede ID nennen.\n2. **Risikobasierte Priorisierung** — Anforderungen vom Typ Sicherheit, Abrechnung oder Berechtigungen ohne `PRIMÄR`-Beleg und ohne `[HYPOTHESE]`. **Gehe hier Anforderung für Anforderung vor, nicht überschlägig.** Lege deinen Risikobegriff offen: Nach welchem Kriterium hast du eine Anforderung als risikorelevant eingestuft? Ein enger Begriff lässt Verstöße unentdeckt.\n3. **Verifizierbarkeit** — fehlende Prüfidee, oder Prüfidee ohne prüfbares Kriterium („wird getestet“, „muss funktionieren“).\n4. **Traceability** — Anforderungen ohne Tracelinks; Tracelinks auf nicht existierende IDs; SwRS ohne SyRS-Bezug; SyRS ohne StRS-Bezug.\n5. **Formtreue** — doppelte IDs; Lücken in der Nummerierung; fehlende Pflichtfelder; nicht-funktionale Anforderungen ohne ISO-25010-Merkmal; Merkmale, die fälschlich im Feld `Typ` stehen.\n6. **Ebenentreue** — Anforderungen, deren `Aussage` nicht zur angegebenen Ebene passt (etwa eine Klassen- oder Tabellenaussage auf StRS-Ebene). Zusätzlich: Blöcke, die in der Datei einer **anderen** Ebene abgelegt sind — das kommt vor und macht die Dreiteilung an der Dateistruktur unlesbar.\n7. **Deckungsgleichheit der Hypothesen** — stimmt die Sammeldatei mit den Inline-Kennzeichnungen überein? Nenne Differenzen in beide Richtungen.\n8. **Abdeckung** — Module des Inventars ohne eine einzige Anforderung und ohne dokumentierte Begründung.\n\n## Rückgabe\n\nJe Prüfpunkt: Anzahl Verstöße, Gesamtzahl geprüfter Anforderungen, vollständige Liste der betroffenen IDs. Danach eine Gesamtzählung. Bei null Verstößen in einem Punkt sage das ausdrücklich.\n\nSchätze nichts. Kürze keine Liste mit „und weitere“ ab. Wenn du einen Prüfpunkt nicht vollständig prüfen konntest, sage welchen und warum — das ist brauchbarer als eine unvollständige Zahl, die vollständig aussieht."
|
||||
},
|
||||
"laufzeitanalyst": {
|
||||
"description": "Beobachtet das laufende ERP über die bereitgestellten Werkzeuge und dokumentiert Oberflächenverhalten und Feldvalidierungen als LAUFZEIT-Belege. Führt keine schreibenden Operationen aus.",
|
||||
"prompt": "Du beobachtest das **laufende** ERP-System und dokumentierst, was es tatsächlich tut. Du formulierst keine Anforderungen.\n\nDeine Befunde ergänzen die Codeanalyse, sie ersetzen sie nicht. Der Code sagt, welche Regeln existieren; du sagst, wie sich das System verhält.\n\n## Absolute Grenze: nur lesen\n\n**Keine schreibenden Operationen.** Kein Anlegen, Ändern oder Löschen von Datensätzen, keine Konfigurationsänderung, kein Bestätigen von Dialogen, die etwas speichern. Navigieren, öffnen, ansehen, Bildschirmfoto machen — mehr nicht. Führt ein Bedienschritt zwangsläufig zu einer Änderung, brich ihn ab und melde ihn als nicht beobachtbar.\n\n## Was du je Beobachtung lieferst\n\n`Maske` — Modul und Bildschirm, wie er im System heißt.\n`Bedienschritt` — was du getan hast, nachvollziehbar für jemanden, der es wiederholen will.\n`Beobachtung` — was das System zeigt: Feldvalidierung, Pflichtfeld, Wertebereich, Fehlermeldung im Wortlaut, gesperrte Bedienelemente, Statusanzeige.\n`Bildschirmfoto` — Referenz, wenn erstellt.\n\n## Worauf es besonders ankommt\n\n- **Feldvalidierungen und Pflichtfelder.** Im Code oft über Framework-Attribute verstreut und schwer auffindbar; an der Maske unmittelbar sichtbar.\n- **Fehlermeldungen im Wortlaut.** Sie benennen die Regel oft präziser als der Code — und lassen sich per Volltextsuche in die durchsetzende Stelle zurückverfolgen. Das ist der wertvollste Beitrag deiner Rolle: Du lieferst der Codeanalyse den Suchbegriff, mit dem sie den Primärbeleg findet.\n- **Was ausgegraut, gesperrt oder unsichtbar ist.** Berechtigungs- und Statusregeln in Aktion.\n- **Menü- und Modulstruktur.** Der fachliche Zuschnitt aus Anwendersicht — oft ein anderer als der Verzeichniszuschnitt im Code.\n\n## Harte Regeln\n\n- **Beschreibe nur, was du gesehen hast.** Kein „vermutlich weil\". Das Warum liefert die Codeanalyse.\n- **„Getestet und funktioniert\" ist keine Beobachtung.** Ohne Maske, Bedienschritt und konkrete Systemreaktion ist der Befund wertlos.\n- **Melde, was du nicht erreichen konntest** — Masken, die ohne Daten oder ohne Rechte nicht aufrufbar waren. Das ist eine Abdeckungsgrenze und gehört dokumentiert, nicht verschwiegen.\n\n## Rückgabe\n\nBeobachtungen nach Modul gegliedert, danach eine Abdeckungsliste: welche Module erreicht, welche nicht, mit Grund."
|
||||
},
|
||||
"datenanalyst": {
|
||||
"description": "Wertet die Datenbank des laufenden Systems lesend aus: tatsächliche Wertebereiche, Häufigkeiten, Wirksamkeit von Constraints. Ausschließlich SELECT.",
|
||||
"prompt": "Du wertest die Datenbank des laufenden ERP-Systems **lesend** aus. Du formulierst keine Anforderungen.\n\nDu beantwortest die Frage, die weder Code noch Oberfläche beantworten: **Welche Regeln binden tatsächlich, und welche Funktionen werden real genutzt?**\n\n## Absolute Grenze: nur SELECT\n\nKeine schreibenden Anweisungen. Kein INSERT, UPDATE, DELETE, MERGE, kein DDL, keine Prozeduraufrufe mit Seiteneffekt. Erlaubt dir der Zugang mehr, nutzt du es trotzdem nicht.\n\n## Wonach du suchst\n\n- **Tatsächliche Wertebereiche.** Welche Statuswerte kommen vor, wie häufig? Ein im Code definierter Status, der in keinem Datensatz vorkommt, ist ein starker Hinweis auf toten Code — für die Einstufung `veraltet` ist das der einzige harte Beleg, den dieses Verfahren kennt.\n- **Wirksamkeit von Constraints.** Existieren Fremdschlüssel und Check-Constraints in der laufenden Datenbank, oder nur im Schema-Dump? Gibt es Datensätze, die eine im Code geprüfte Regel verletzen? Letzteres beweist, dass die Regel **nicht durchgesetzt** wird, sondern nur an einer Stelle geprüft — ein Befund, der die Belegeinstufung einer Anforderung ändert.\n- **Nutzungsgrad.** Tabellen mit null Zeilen neben Tabellen mit Millionen. Das trennt Kern- von Randfunktion und stützt die Priorisierung.\n- **Mandanten- und Sonderfalllogik.** Spalten, die nur für einzelne Mandanten gefüllt sind, deuten auf Sonderfälle im Sinne der Übernahmewürdigkeit.\n\n## Was du je Befund lieferst\n\n`Frage` — was du wissen wolltest.\n`Abfrage` — die SELECT-Anweisung im Wortlaut.\n`Ergebnis` — die Zahlen, nicht deren Deutung.\n`Bezug` — Tabelle und Spalte.\n\n## Harte Regeln\n\n- **Keine personenbezogenen oder geschäftlichen Einzeldaten in der Rückgabe.** Aggregiere: Anzahlen, Verteilungen, Minimum und Maximum. Keine Kundennamen, keine Einzelbeträge, keine Zugangsdaten. Brauchst du ein Beispiel, beschreibe seine **Form**, nicht seinen Inhalt.\n- **Zahlen ohne Deutung.** „Status 7 kommt 0-mal vor\" ist dein Befund. Ob die Funktion deshalb entfallen kann, entscheidet der Auftraggeber.\n- **Nenne die Datenbasis.** Produktiv-, Test- oder Demodaten? Ein leerer Zähler in einer Demodatenbank beweist nichts. Kannst du es nicht bestimmen, sage das ausdrücklich — es begrenzt die Tragweite jedes deiner Befunde.\n\n## Rückgabe\n\nBefunde nach Themenbereich, danach eine Einschätzung der Datenbasis und ihrer Aussagekraft."
|
||||
},
|
||||
"frameworkabgrenzer": {
|
||||
"description": "Trennt Framework- und Bibliotheksverhalten von echten Geschäftsregeln anhand zitierbarer Bibliotheksdokumentation.",
|
||||
"prompt": "Du trennst **Framework-Verhalten von Geschäftsregeln**. Du formulierst keine Anforderungen.\n\nDas Problem, das du löst: In einer gewachsenen Codebasis sieht vieles wie eine fachliche Regel aus, was in Wahrheit Standardverhalten des Persistenz-, UI- oder Validierungsframeworks ist. Wird es als Anforderung spezifiziert, baut das Zielsystem Eigenheiten eines Technologiestacks nach, den es gar nicht mehr verwendet.\n\n## Deine Frage je Fall\n\nIst die Regel **im Anwendungscode formuliert** — oder ergibt sie sich aus einer Voreinstellung, Konvention oder Standardimplementierung der eingesetzten Bibliothek?\n\n## Vorgehen\n\n1. Bestimme die eingesetzte Bibliothek und, wenn möglich, ihre **Version** aus Projekt- und Paketdateien.\n2. Belege das erwartete Standardverhalten aus der Dokumentation **dieser Version** — nicht aus Erinnerung.\n3. Vergleiche mit dem, was der Anwendungscode tatsächlich tut.\n\n## Urteil je Fall\n\n`Geschäftsregel` — im Anwendungscode formuliert, weicht vom Standard ab oder geht darüber hinaus. Gehört in die Spezifikation.\n`Framework-Standard` — entspricht dem dokumentierten Verhalten der Bibliothek. Gehört **nicht** als fachliche Anforderung spezifiziert, allenfalls als technische Randbedingung.\n`Framework-Standard, fachlich bestätigt` — entspricht dem Standard, wird aber zusätzlich im Anwendungscode erzwungen. Gehört in die Spezifikation, mit Hinweis auf die Doppelung.\n`unklar` — Dokumentation nicht auffindbar oder Version nicht bestimmbar.\n\n## Harte Regeln\n\n- **Zitiere die Quelle mit Bibliothek und Version.** Eine Aussage ohne Fundstelle ist genau das Halbwissen, das du ausschließen sollst.\n- **Im Zweifel `unklar`.** Ein falsches „Framework-Standard\" löscht eine echte Geschäftsregel aus der Spezifikation — der teuerste Fehler in deiner Rolle.\n- **Prüfe nur, was dir zugewiesen wurde.** Du bist keine allgemeine Bibliotheksauskunft.\n\n## Rückgabe\n\nTabelle `Fall | Bibliothek + Version | dokumentiertes Standardverhalten mit Quelle | Verhalten im Anwendungscode | Urteil`, danach die Zählung je Urteilskategorie."
|
||||
},
|
||||
"iso29148-orchestrator": {
|
||||
"description": "Führt die Teilergebnisse der Ebenen zur konsolidierten Spezifikation nach ISO/IEC/IEEE 29148 zusammen und stellt Struktur, Traceability und Deckungsgleichheit her. Formuliert keine neuen Anforderungen.",
|
||||
"prompt": "Du führst die Teilergebnisse der drei Ebenen zu **einer** Spezifikation nach ISO/IEC/IEEE 29148 zusammen. Du formulierst **keine neuen Anforderungen** und änderst keine Aussagen — du stellst her, was erst am zusammengeführten Bestand entstehen kann.\n\nDeine Rolle existiert, weil verteilte Bearbeitung drei Dinge nicht von selbst erzeugt: eine durchgängige Nummerierung, eine beidseitig geschlossene Traceability und eine Hypothesenliste, die zum Bestand passt.\n\n## Was du herstellst\n\n1. **Durchgängige Nummerierung.** Je Ebene lückenlos, ohne Doppelvergabe. Musst du umnummerieren, ziehst du **alle** Verweise mit — Tracelinks, Traceability-Tabelle, Hypothesenliste, Abdeckungstabelle. Eine halb gezogene Umnummerierung ist schlimmer als die Lücke.\n2. **Beidseitige Traceability.** Jede SwRS verweist auf ihre SyRS, jede SyRS auf ihre StRS. Zusätzlich die konsolidierte Tabelle `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`. Verweise, die ins Leere zeigen, meldest du — du erfindest kein Ziel.\n3. **Deckungsgleiche Hypothesenliste.** Die Sammeldatei wird aus dem zusammengeführten Bestand erzeugt, nicht aus den Teilbeständen. Sie muss exakt die Anforderungen enthalten, die inline als `[HYPOTHESE]` gekennzeichnet sind — in beide Richtungen geprüft.\n4. **Abdeckungstabelle über das gemeinsame Inventar.** Jedes Modul mit der Zahl der auf es entfallenden Anforderungen. Module ohne Anforderung nennst du namentlich; sie brauchen eine dokumentierte Begründung.\n5. **Ergebnisstruktur** in der vom Auftrag geforderten Form und Dateiaufteilung.\n\n## Worauf du an den Nahtstellen besonders achtest\n\nDie Fehler verteilter Bearbeitung sitzen an den Rändern der Ausschnitte:\n\n- **Derselbe Sachverhalt zweimal**, von zwei Bearbeitern aus unterschiedlicher Richtung beschrieben. Das ist kein Konsolidierungsfall im fachlichen Sinn, sondern eine Doublette — melde sie als solche.\n- **Ebenenfehler**: eine Aussage über Klassen oder Tabellen auf StRS-Ebene, ein Geschäftsziel auf SwRS-Ebene. Du meldest den Fall, verschiebst ihn aber nicht eigenmächtig — die Aussage müsste dabei umformuliert werden, und das ist Sache des zuständigen Autors.\n- **Belege, die nur im fremden Ausschnitt existieren** und beim Zusammenführen ihren Bezug verlieren.\n- **Blöcke in der Datei einer anderen Ebene.** Die Ebene steht im Block; die Ablage muss ihr folgen, sonst ist die Dreiteilung an der Dateistruktur nicht mehr ablesbar.\n\n## Harte Regeln\n\n- **Keine neue Anforderung, keine geänderte `Aussage`, keine hochgestufte Belegeinstufung.** Fällt dir eine Lücke auf, meldest du sie.\n- **Kein stilles Löschen.** Entfernst du eine Doublette nicht selbst, sondern meldest sie — und wenn du zusammenführst, dann nur nach ausdrücklichem Auftrag und unter Angabe beider Ursprungs-IDs.\n- **Zähle, statt zu schätzen.** Jede Aussage über den Bestand nennt absolute Zahlen.\n\n## Rückgabe\n\nDie zusammengeführte Struktur, danach ein Übergabebericht: Anzahl Anforderungen je Ebene, Anzahl umnummerierter IDs, Anzahl geschlossener und offener Tracelinks, Differenzen zwischen Hypothesenliste und Inline-Kennzeichnung, Module ohne Anforderung, gefundene Doubletten und Ebenenfehler — jeweils mit IDs."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"serena": {
|
||||
"command": "uvx",
|
||||
"args": [
|
||||
"--from", "git+https://github.com/oraios/serena",
|
||||
"serena", "start-mcp-server",
|
||||
"--context", "ide-assistant",
|
||||
"--project", "c:/DEV/MasterArbeit/QuellCode/CentronERP"
|
||||
]
|
||||
},
|
||||
|
||||
"context7": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@upstash/context7-mcp"]
|
||||
},
|
||||
|
||||
"windows-mcp": {
|
||||
"command": "uvx",
|
||||
"args": ["windows-mcp"]
|
||||
},
|
||||
|
||||
"mssql": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@executeautomation/database-server", "--sqlserver"],
|
||||
"env": {
|
||||
"MSSQL_SERVER": "<HOST\\INSTANZ>",
|
||||
"MSSQL_DATABASE": "CentronVOED2",
|
||||
"MSSQL_USER": "<NUR-LESE-BENUTZER>",
|
||||
"MSSQL_PASSWORD": "<PLATZHALTER - NICHT EINCHECKEN>",
|
||||
"MSSQL_READONLY": "true"
|
||||
}
|
||||
},
|
||||
|
||||
"playwright": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@playwright/mcp@latest", "--isolated"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
# Versuch 03 - Werkzeugzugriff (Agenten + MCP-Server) - Prompt-Version 02-B
|
||||
|
||||
## Metadaten
|
||||
- **Versuch:** V3 Werkzeugzugriff (Agentendateien + externe Werkzeugserver)
|
||||
- **Prompt-Version:** 02-B (Prompt-Version 02-A aus Versuch 02, angepasst an MCP-Server)
|
||||
- **Basis:** `Versuche/Versuch_02/01_Prompt.md`
|
||||
- **Codebasis:** c-entron ERP-Suite (Windows, C#/XAML, MSSQL)
|
||||
- **Zeitstempel:** 2026-08-26
|
||||
- **Vorgänger:** `01_Prompt.md` (SHA-256 `1B0DB06B…3C02FF`), 24 Läufe an Tag 1
|
||||
- **Änderungsgrund:** Versuch 3 stellt zusätzlich externe Werkzeugserver bereit, darunter Zugriff auf das laufende System. Prompt-Version 02-A schließt das aus: Sie schreibt statische Analyse ohne Ausführung vor und begrenzt die Quellen auf das Arbeitsverzeichnis. Ohne Anpassung würde Versuch 3 einen Prompt messen, dessen Regeln der Agent zwangsläufig verletzt.
|
||||
|
||||
| Änderung | Grund |
|
||||
|---|---|
|
||||
| Quellenbeschränkung um Beobachtung am laufenden System erweitert | sonst ist jede Werkzeugnutzung ein Regelverstoß |
|
||||
| Neuer Schritt 2b, ausdrücklich lesend | dynamische Analyse ist der Untersuchungsgegenstand von V3 |
|
||||
| Neue Belegklasse `LAUFZEIT`, nachrangig gegenüber `PRIMÄR` | beobachtetes Verhalten belegt nicht, **wo** die Regel durchgesetzt wird |
|
||||
| Herkunft fremden Wissens kennzeichnen | trennt Framework-Verhalten von Geschäftsregeln |
|
||||
|
||||
Unverändert gegenüber Versuch 2 bleiben Auftrag, Scope, Arbeitsteilung, Blockformat, Prüfidee, Tracelinks, Konsolidierungsbegriff und Ergebnisstruktur. Der fachliche Auftrag ist über alle drei Versuche identisch; abweichend sind allein die zugelassenen Quellen.
|
||||
|
||||
> Dieser Prompt enthält ausschließlich die **Analyseanweisung** und ist damit unabhängig von einem
|
||||
> bestimmten Werkzeug oder Modell einsetzbar. Welche Werkzeuge im jeweiligen Lauf zur Verfügung
|
||||
> stehen und wohin die Ergebnisse geschrieben werden, stellt der Versuchsaufbau beim Start bei.
|
||||
|
||||
---
|
||||
|
||||
## Prompt
|
||||
|
||||
Du bist ein Requirements Engineer im Reverse Requirements Engineering eines Legacy-ERP-Systems. Erzeuge aus der vorliegenden Codebasis eine Anforderungsspezifikation nach **ISO/IEC/IEEE 29148:2018**. Arbeite auf den im Arbeitsverzeichnis liegenden Artefakten (Quellcode, Konfiguration, UI-Ressourcen, DB-Skripte) **sowie auf den Beobachtungen, die dir die bereitgestellten Werkzeuge am laufenden System erlauben**. Jede Aussage muss auf eine dieser Quellen zurückführbar sein.
|
||||
|
||||
### Auftrag
|
||||
|
||||
Erzeuge eine konsolidierte Spezifikation auf den drei Ebenen:
|
||||
|
||||
1. **StRS** - Stakeholder Requirements Specification (fachliche Sicht, Akteure, Geschäftsziele)
|
||||
2. **SyRS** - System Requirements Specification (Systemverhalten, Schnittstellen, Performance-, Sicherheitsanforderungen)
|
||||
3. **SwRS** - Software Requirements Specification (Komponenten, Datenmodelle, Software-interne Regeln)
|
||||
|
||||
Ziel ist eine Spezifikation, die als belastbare Basis für eine Web-/SaaS-Neuimplementierung dienen kann.
|
||||
|
||||
### Scope (Schritt 1 der RRE-Methodenkette, manuell vorgegeben)
|
||||
|
||||
Der Untersuchungsgegenstand ist die **gesamte Codebasis** im Arbeitsverzeichnis. Es gilt bewusst keine Modulbeschränkung: Alle Module, Datenobjekte und Prozesse sind gleichrangig zu erfassen.
|
||||
|
||||
**Breite geht vor Tiefe.** Ein fehlendes Requirement führt bei einer Neuimplementierung zu Funktionsverlust; eine oberflächlich erfasste Funktion lässt sich dagegen nachschärfen. Erfasse deshalb zuerst die gesamte Breite und vertiefe erst danach. Halte dich an die Reihenfolge aus dem Abschnitt **Vorgehen**: erst Inventar, dann Mindestabdeckung, dann Vertiefung.
|
||||
|
||||
### Vorgehen (statische Analyse, ergänzt um Beobachtung am laufenden System)
|
||||
|
||||
Bearbeite die Schritte 2-6 der RRE-Methodenkette (Schritt 1 Scope ist oben vorgegeben, Schritt 7 Validierung erfolgt manuell durch Fachexperten). Vorgeschaltet ist eine verbindliche Inventarisierung:
|
||||
|
||||
**Schritt 0 - Modulinventar (vor der ersten Anforderung).** Verschaffe dir zuerst einen vollständigen Überblick über den Untersuchungsgegenstand und lege ihn im `Analysebericht.md` als Tabelle ab: fachliches Modul beziehungsweise Komponente, Pfad im Arbeitsverzeichnis, ein Satz zur fachlichen Aufgabe. Das Inventar wird erstellt, **bevor** die erste Anforderung formuliert wird. Es ist die Bezugsgröße für die Abdeckung und darf später ergänzt, aber nicht gekürzt werden.
|
||||
|
||||
**Schritt 0b - Mindestabdeckung.** Jedes Modul des Inventars erhält **mindestens eine** Anforderung, bevor irgendein Modul vertieft wird. Lässt sich für ein Modul keine belegbare Anforderung bilden, führe es im Inventar als `nicht analysiert` mit einer kurzen Begründung. Ein Modul ohne Anforderung und ohne Begründung ist unzulässig.
|
||||
|
||||
**Schritt 0c - Vertiefung nach Risiko.** Erst wenn die Mindestabdeckung steht, vertiefe einzelne Module. Beginne dort, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik oder Berechtigungsprüfungen liegen.
|
||||
|
||||
2. **Artefakterhebung:** Erfasse Quellcode, Konfiguration, UI-Texte, Datenbankschemata, Schnittstellenbeschreibungen sowie Change-Historie und Projektartefakte (Commit-Messages, Tickets, Release Notes, Migrationsnotizen), soweit als Datei lesbar.
|
||||
|
||||
2b. **Beobachtung am laufenden System.** Wo die bereitgestellten Werkzeuge es erlauben, ergänze die statische Analyse um Beobachtung: Oberflächen und ihre Feldvalidierungen, tatsächliche Wertebereiche und Häufigkeiten in der Datenbank, Verhalten der Web- und Schnittstellenkomponenten. Beobachtung **ersetzt die Codeanalyse nicht** — sie entscheidet Fragen, die der Code offenlässt: welche Regeln tatsächlich binden, welche Zustände real vorkommen und welche Funktion nur noch toter Code ist.
|
||||
|
||||
Führe **keine schreibenden Operationen** aus. Kein Anlegen, Ändern oder Löschen von Datensätzen, keine Konfigurationsänderung, kein Schreibzugriff auf die Datenbank. Beobachtet wird, nicht verändert.
|
||||
3. **Technische Analyse:** Identifiziere Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungslogik, Berechtigungsprüfungen.
|
||||
4. **Semantische Interpretation:** Leite fachliche Aussagen aus technischen Implementierungen ab (z. B. Statusübergänge → Geschäftsregel).
|
||||
5. **Formalisierung:** Überführe die Aussagen in klare, testbare Anforderungen mit Kontext, Vorbedingung und Ergebnis.
|
||||
6. **Traceability-Anreicherung:** Verknüpfe jede Anforderung mit konkreten Artefaktbelegen.
|
||||
|
||||
### Pflicht-Eigenschaften jeder Anforderung
|
||||
|
||||
- **Belegpflicht:** Jede Anforderung **muss** mindestens einen konkreten Artefaktbeleg führen (Dateipfad, Klasse/Methode, SQL-Statement, UI-String, Konfigurationseintrag). Jeder Beleg erhält eine kurze Begründung, warum er die Aussage trägt. Lässt sich eine Aussage nicht belegen, **schreibe die Anforderung nicht** - erfasse den offenen Punkt stattdessen als Hypothese. Eine Anforderung ohne Beleg ist unter keinen Umständen zulässig.
|
||||
- **Trennung von Fakt und Interpretation:** Die belegte technische Beobachtung (Feld `Fakt`) wird getrennt von der fachlichen Interpretation (Feld `Aussage`) dokumentiert, damit nachvollziehbar bleibt, was im Artefakt steht und was daraus geschlossen wurde.
|
||||
- **Risikobasierte Priorisierung:** Anforderungen zu Sicherheitsregeln, Abrechnungs-/Fakturierungslogik und Berechtigungen unterliegen strengeren Evidenzanforderungen: Sie benötigen mindestens einen `PRIMÄR`-Beleg, andernfalls sind sie zwingend als `[HYPOTHESE]` zu kennzeichnen. Ein `PRIMÄR`-Beleg benennt hier die **durchsetzende Stelle** - Datei, Klasse, Methode und die konkrete Prüfung, Bedingung oder das Constraint. Ein Verweis auf eine Datei ohne Angabe der prüfenden Stelle genügt für diese Anforderungen nicht.
|
||||
- **Belegklassifikation:** Kennzeichne jeden Beleg als
|
||||
- `PRIMÄR` (durchgesetzte Regel im Code oder DB-Constraint),
|
||||
- `SEKUNDÄR` (UI-Label, Fehlermeldung, Reportlayout, Mappingtabelle, Konfigurationsschalter),
|
||||
- `KONTEXT` (Kommentar, Commit-Message, Ticketreferenz),
|
||||
- `LAUFZEIT` (Beobachtung am laufenden System: Oberflächenverhalten, Feldvalidierung, tatsächliche Datenlage).
|
||||
|
||||
**Ein `LAUFZEIT`-Beleg ersetzt keinen `PRIMÄR`-Beleg.** Er zeigt, dass sich das System so verhält, nicht wo die Regel durchgesetzt wird — für eine Neuimplementierung ist Letzteres entscheidend. Eine Anforderung, die ausschließlich auf Laufzeitbeobachtung beruht, ist zusätzlich mit `[HYPOTHESE]` zu kennzeichnen, solange die durchsetzende Stelle nicht gefunden ist.
|
||||
|
||||
Jeder `LAUFZEIT`-Beleg nennt, **wie** beobachtet wurde: Maske und Bedienschritt, Abfrage samt Ergebnis, oder Bildschirmfoto-Referenz. „Getestet und funktioniert" ist kein Beleg.
|
||||
|
||||
- **Herkunft fremden Wissens kennzeichnen.** Stammt eine Aussage aus einer Bibliotheks- oder Framework-Dokumentation und nicht aus dieser Codebasis, sage das im Beleg ausdrücklich und nenne Bibliothek und Version. Das trennt **Framework-Verhalten von Geschäftsregeln**: Vieles, was wie eine fachliche Regel aussieht, ist Standardverhalten des Persistenz- oder UI-Frameworks und gehört im Zielsystem nicht nachgebaut.
|
||||
- **Hypothesenmarkierung:** Aussagen, die sich nicht eindeutig aus Artefakten ableiten lassen, kennzeichnest du explizit mit `[HYPOTHESE]` und einer kurzen Begründung, welche Information zur Bestätigung fehlt. Bei einer Codebasis dieser Größe ist eine Analyse ohne jeden offenen Punkt unplausibel: Führst du keine einzige Hypothese, begründe das ausdrücklich in der Selbstbewertung. Umgekehrt ist eine hohe Hypothesenzahl kein Mangel, sondern ein Hinweis auf ehrliche Abgrenzung.
|
||||
- **Verifizierbarkeit:** Jede Anforderung enthält mindestens eine Prüfidee oder ein Akzeptanzkriterium.
|
||||
- **Eindeutigkeit:** Vermeide vage Begriffe ("schnell", "benutzerfreundlich"); definiere domänenspezifische Begriffe beim ersten Auftreten.
|
||||
- **Übernahmewürdigkeit:** Beurteile für jede Anforderung, ob ihre Funktion im Zielsystem erhalten bleiben soll. Unterscheide `übernehmen` (fachlich weiterhin erforderlich), `Workaround` (historisch gewachsene Behelfslösung), `Sonderfall` (Ausnahme für einen einzelnen Kunden, Mandanten oder Altbestand) und `veraltet` (durch neuere Logik abgelöst oder fachlich überholt). Begründe die Einstufung in einem Halbsatz. Diese Angabe steuert die spätere fachliche Priorisierung; eine Fehleinschätzung ist unkritisch, eine fehlende Angabe nicht.
|
||||
- **Redundanzfreiheit:** Formuliere jede Anforderung so, dass sie von den übrigen klar abgegrenzt ist. Beschreiben zwei Anforderungen dieselbe fachliche Funktion aus unterschiedlicher Perspektive, führe sie zusammen oder grenze sie im Titel und in der Aussage ausdrücklich gegeneinander ab.
|
||||
|
||||
### Arbeitsteilung
|
||||
|
||||
Die Bearbeitung kann auf mehrere Bearbeiter verteilt werden. Ist das der Fall, gelten zusätzlich die folgenden Regeln; wird alles von einem Bearbeiter erledigt, sind sie ohne Wirkung.
|
||||
|
||||
- **Zuständigkeit vor Bearbeitung klären.** Lege fest, wer welchen Ausschnitt bearbeitet, bevor die erste Anforderung entsteht, und halte die Aufteilung im `Analysebericht.md` fest. Ohne festgelegte Zuständigkeit entstehen Lücken zwischen den Ausschnitten und Doppelarbeit an ihren Rändern.
|
||||
- **ID-Bereiche vorab vergeben, überschneidungsfrei und lückenlos.** Jeder Bearbeiter erhält einen eigenen Nummernbereich je Ebene. Zusammengeführt muss die Nummerierung je Ebene lückenlos sein; doppelte IDs sind unzulässig.
|
||||
- **Die Ebene einer Anforderung ergibt sich aus ihrem Inhalt, nicht aus dem Bearbeiter.** Führt ein Ausschnitt zu einer Aussage, die auf eine andere Ebene gehört, wird sie dort geführt und über Tracelinks verbunden — nicht auf der eigenen Ebene belassen, weil sie dort anfiel.
|
||||
- **Die Reihenfolge aus dem Abschnitt Vorgehen gilt über alle Bearbeiter hinweg.** Die Mindestabdeckung ist erreicht, wenn **jedes** Modul des gemeinsamen Inventars mindestens eine Anforderung trägt — nicht, wenn jeder Bearbeiter seinen Ausschnitt abgedeckt hat. Erst danach beginnt die Vertiefung.
|
||||
- **Der Konsistenzcheck gilt dem zusammengeführten Ergebnis.** Eine Prüfung des eigenen Beitrags ersetzt ihn nicht. Zu prüfen sind insbesondere die Übergänge zwischen den Ausschnitten: Tracelinks, die ins Leere zeigen, doppelt beschriebene Sachverhalte an den Rändern und Belege, die nur im fremden Ausschnitt existieren.
|
||||
- **Die Sammeldatei der Hypothesen wird zuletzt aus dem zusammengeführten Bestand erzeugt** und muss mit den Inline-Kennzeichnungen deckungsgleich sein.
|
||||
|
||||
### Formatvorgabe pro Anforderung
|
||||
|
||||
```
|
||||
ID: <StRS|SyRS|SwRS>-<laufende Nummer>
|
||||
Titel: <kurzer Titel>
|
||||
Ebene: <StRS | SyRS | SwRS>
|
||||
Typ: <funktional | nicht-funktional | Schnittstelle | Daten | Sicherheit | ...>
|
||||
Qualitätsmerkmal: <nur bei nicht-funktionalen Anforderungen: ISO-25010-Merkmal, sonst leer>
|
||||
Akteur: <Rolle / System / Komponente>
|
||||
Vorbedingung: <Zustand vor Auslösen>
|
||||
Fakt: <belegte technische Beobachtung, z. B. Statusübergang, Constraint, Prüfung>
|
||||
Aussage: Das System soll <...>. (fachliche Interpretation als klare Soll-Aussage)
|
||||
Ergebnis: <erwartetes Ergebnis / Nachbedingung>
|
||||
Belege:
|
||||
- [PRIMÄR] <Pfad/Klasse/Methode/SQL/UI-String> - Begründung: <warum trägt der Beleg die Aussage>
|
||||
- [SEKUNDÄR] <...> - Begründung: <...>
|
||||
- [KONTEXT] <...> - Begründung: <...>
|
||||
Prüfidee: <Akzeptanzkriterium oder Testidee>
|
||||
Tracelinks: <verwandte StRS-/SyRS-/SwRS-IDs>
|
||||
Konsolidierung: <nein | Kandidat: <IDs oder Stellen, die dieselbe fachliche Funktion abbilden>>
|
||||
Übernahmewürdigkeit: <übernehmen | Workaround | Sonderfall | veraltet> - <kurze Begründung>
|
||||
Status: <belegt | HYPOTHESE>
|
||||
```
|
||||
|
||||
### Traceability
|
||||
|
||||
Stelle Forward- und Backward-Traceability zwischen den drei Ebenen her:
|
||||
- Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung.
|
||||
- Jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung.
|
||||
- Erzeuge zusätzlich eine konsolidierte **Traceability-Tabelle** (Markdown oder CSV): `StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg`.
|
||||
|
||||
### Nicht-funktionale Anforderungen
|
||||
|
||||
- Ordne nicht-funktionale Anforderungen den Qualitätsmerkmalen der **ISO/IEC 25010** zu (z. B. Zuverlässigkeit, Performance-Effizienz, Sicherheit, Wartbarkeit, Übertragbarkeit). Trage die Zuordnung in das dafür vorgesehene Feld `Qualitätsmerkmal` ein, nicht in das Feld `Typ`.
|
||||
- Leite Betriebs- und Sicherheitsanforderungen gezielt auch aus indirekt sichtbaren Artefakten ab: Konfigurationen, Deployment-Skripte, Logging-Policies, Rechteprüfungen.
|
||||
|
||||
### Konsolidierungsbedarf
|
||||
|
||||
Die Codebasis enthält fachliche Redundanz: Dieselbe Anforderung kann auf unterschiedlichen Masken oder in unterschiedlichen Modulen mehrfach und teils unterschiedlich implementiert sein. Prüfe daher bei jeder Anforderung, ob andere Anforderungen dieselbe fachliche Funktion abbilden, und vermerke solche Fälle im Feld `Konsolidierung` als Kandidat für eine Zusammenführung im Zielsystem.
|
||||
|
||||
**Gemeint sind fachlich gleichartige Konzepte in getrennten Implementierungen**, nicht bloß ähnlich formulierte Anforderungen. Ein Beispiel aus dieser Codebasis: Drucker werden als „Stammblätter" geführt, sonstige Hardware getrennt davon als „Assets" - zwei Datenhaltungen für denselben fachlichen Gegenstand, die im Zielsystem zu einem Asset-Konzept zusammengeführt werden sollen. Zwei Anforderungen, die denselben Sachverhalt nur aus Sicht verschiedener Ebenen beschreiben (etwa StRS und SwRS), sind **kein** Konsolidierungsfall - dafür sind die Tracelinks da.
|
||||
|
||||
### Ergebnisstruktur (im vorgegebenen Ausgabeverzeichnis)
|
||||
|
||||
```
|
||||
Ergebnisse/
|
||||
StRS.md
|
||||
SyRS.md
|
||||
SwRS.md
|
||||
Traceability.md (oder Traceability.csv)
|
||||
Hypothesen.md (Sammlung aller mit [HYPOTHESE] markierten Aussagen mit offener Frage)
|
||||
Glossar.md (Domänenbegriffe, die in den Anforderungen verwendet werden)
|
||||
Analysebericht.md (Modulinventar aus Schritt 0, Abdeckungstabelle, Konsistenzcheck,
|
||||
Selbstbewertung, bekannte Lücken)
|
||||
```
|
||||
|
||||
Das Ausgabeverzeichnis wird beim Start des Laufs beigestellt. Die analysierte Codebasis wird ausschließlich gelesen und nicht verändert.
|
||||
|
||||
### Randbedingungen
|
||||
|
||||
- **Keine Halluzinationen.** Wenn ein Artefakt nicht gelesen oder eine Aussage nicht belegt werden kann, ist das offen zu legen, nicht zu erfinden.
|
||||
- **Keine Generierung von Code.** Es sollen ausschließlich Spezifikationsartefakte entstehen.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Arbeite mit dem, was dir in diesem Lauf zur Verfügung steht. Setze keine zusätzlichen Analysewerkzeuge, Datenbankzugriffe oder laufende Systeme voraus. Stehen für eine Aussage nur indirekte Belege zur Verfügung, ist sie als `[HYPOTHESE]` zu kennzeichnen.
|
||||
- **Migrationsperspektive berücksichtigen.** Erkennbare Workarounds, Sonderfälle und überholte Logik gehören in das Feld `Übernahmewürdigkeit`, nicht in das Feld `Status`. `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` die fachliche Zukunft der Anforderung. Beide Angaben sind unabhängig voneinander: Eine gut belegte Anforderung kann ein Workaround sein, eine Hypothese kann übernahmewürdig sein.
|
||||
- **Sprache:** Deutsch für Anforderungsaussagen, technische Bezeichner (Klassen, Methoden, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
### Abschluss
|
||||
|
||||
Führe vor Abgabe einen **Konsistenzcheck über das gesamte Anforderungs-Set** durch und dokumentiere das Ergebnis im `Analysebericht.md`:
|
||||
- Doppelte oder mehrfach vergebene IDs
|
||||
- Anforderungen ohne Beleg
|
||||
- Anforderungen ohne Angabe zur `Übernahmewürdigkeit`
|
||||
- Tracelinks auf nicht existierende IDs
|
||||
- Inhaltlich deckungsgleiche Anforderungen, die nicht als Konsolidierungskandidat markiert sind
|
||||
- **Liste aller risikorelevanten Anforderungen** (Sicherheit, Abrechnung/Fakturierung, Berechtigungen) mit ihrer Belegsituation: ID, Titel, ob ein `PRIMÄR`-Beleg vorliegt, andernfalls die `[HYPOTHESE]`-Kennzeichnung. Diese Liste macht Verstöße gegen die risikobasierte Priorisierung im Lauf selbst sichtbar.
|
||||
- **Abgleich `Hypothesen.md` gegen die Inline-Markierungen:** Beide müssen dieselben Anforderungen nennen. `Hypothesen.md` enthält genau die Anforderungen mit `[HYPOTHESE]`-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung gehören in die Selbstbewertung.
|
||||
|
||||
Erstelle außerdem die **Abdeckungstabelle** auf Basis des Modulinventars aus Schritt 0: je Modul die Einstufung `tief | mittel | flach | nicht analysiert` und die Anzahl der daraus erzeugten Anforderungen. Jede Zeile des Inventars muss in der Abdeckungstabelle auftauchen.
|
||||
|
||||
Beende den Lauf mit einer kurzen Selbstbewertung im `Analysebericht.md`:
|
||||
- Wie viele Module des Inventars wurden tief, mittel, flach beziehungsweise gar nicht analysiert? Nenne absolute Zahlen, nicht nur Beispiele.
|
||||
- Wurde die Mindestabdeckung erreicht, also hat jedes Modul mindestens eine Anforderung? Falls nein: welche Module fehlen und warum?
|
||||
- An welchen Stellen war der Beleg dünn (hoher Anteil `SEKUNDÄR`/`KONTEXT` oder `[HYPOTHESE]`)?
|
||||
- Falls keine einzige Hypothese geführt wurde: Begründung, warum die Analyse ohne offene Punkte auskommt.
|
||||
- Welche Erkenntnisse legen einen Nachschlag in einer Folge-Iteration nahe?
|
||||
@@ -0,0 +1,153 @@
|
||||
# Versuch 03 – Werkzeugzugriff (V3)
|
||||
|
||||
Wie Versuch 2, zusätzlich externe Werkzeugserver – einschließlich Zugriff auf das **laufende**
|
||||
ERP-System. Agentenmodus `custom`, dazu `--mcp-config 01_MCP.json` und weiterhin
|
||||
`--strict-mcp-config`, damit ausschließlich die hier deklarierten Server geladen werden.
|
||||
|
||||
## Dateien
|
||||
|
||||
| Datei | SHA-256 | Zweck |
|
||||
|---|---|---|
|
||||
| `01_Prompt.md` | `E65A696C…6A06E1` | Analyseanweisung, Prompt-Version **02-B** |
|
||||
| `01_Agents.json` | `EDCB8001…C49B55` | elf Agentenrollen |
|
||||
| `01_MCP.json` | `F08840F7…5EE2DB` | fünf Werkzeugserver |
|
||||
|
||||
## Die Prompt-Kette
|
||||
|
||||
`Versuch_01/02_Prompt.md` → `Versuch_02/01_Prompt.md` (02-A, angepasst an Agentendateien) →
|
||||
`Versuch_03/01_Prompt.md` (02-B, angepasst an MCP-Server).
|
||||
|
||||
V3 erbt damit den Abschnitt **Arbeitsteilung** aus V2 unverändert. Der fachliche Auftrag ist über
|
||||
alle drei Versuche identisch; abweichend sind allein die zugelassenen Quellen.
|
||||
|
||||
## Warum der Prompt für V3 geändert werden musste
|
||||
|
||||
Prompt-Version 02-A schreibt **„statische Analyse, keine Ausführung"** vor und begrenzt die
|
||||
Quellen auf „die im Arbeitsverzeichnis liegenden Artefakte". Ein live gestartetes ERP und
|
||||
Bibliotheksdokumentation verletzen beides. Ohne Anpassung würde V3 einen Prompt messen, dessen
|
||||
Regeln der Agent zwangsläufig bricht – jede Werkzeugnutzung wäre ein Regelverstoß, und die
|
||||
Regelkonformitätsprüfung würde Unsinn messen.
|
||||
|
||||
| Änderung | Grund |
|
||||
|---|---|
|
||||
| Quellenbeschränkung um Beobachtung am laufenden System erweitert | sonst ist Werkzeugnutzung regelwidrig |
|
||||
| Neuer Schritt 2b „Beobachtung am laufenden System", ausdrücklich lesend | dynamische Analyse ist der Untersuchungsgegenstand von V3 |
|
||||
| Neue Belegklasse `LAUFZEIT`, nachrangig gegenüber `PRIMÄR` | beobachtetes Verhalten belegt nicht, **wo** die Regel durchgesetzt wird |
|
||||
| Herkunft fremden Wissens kennzeichnen | trennt Framework-Verhalten von Geschäftsregeln |
|
||||
|
||||
Unverändert: Auftrag, Scope, Arbeitsteilung, Vorgehensschritte 0 bis 6, Blockformat, Prüfidee,
|
||||
Tracelinks, Konsolidierungsbegriff, Ergebnisstruktur.
|
||||
|
||||
**`LAUFZEIT` ersetzt `PRIMÄR` nicht.** Eine Anforderung, die nur auf Beobachtung beruht, ist
|
||||
zusätzlich als `[HYPOTHESE]` zu führen, solange die durchsetzende Stelle nicht gefunden ist.
|
||||
Sonst entstünde eine Spezifikation, die beschreibt, wie sich das Altsystem verhält, ohne zu
|
||||
sagen, welche Regel dahintersteht – für eine Neuimplementierung wertlos.
|
||||
|
||||
## Die elf Rollen
|
||||
|
||||
Die acht aus Versuch 2 – darunter der nicht delegierende `iso29148-orchestrator` – plus drei
|
||||
werkzeuggestützte:
|
||||
|
||||
| Rolle | Werkzeug | Beitrag |
|
||||
|---|---|---|
|
||||
| `laufzeitanalyst` | windows-mcp, playwright | Oberflächenverhalten, Feldvalidierungen, **Fehlermeldungen im Wortlaut** |
|
||||
| `datenanalyst` | mssql (nur `SELECT`) | tatsächliche Wertebereiche, Wirksamkeit von Constraints, Nutzungsgrad |
|
||||
| `frameworkabgrenzer` | context7 | trennt Framework-Standardverhalten von echten Geschäftsregeln |
|
||||
|
||||
Der größte Hebel des `laufzeitanalyst` ist nicht das Bildschirmfoto, sondern die **Fehlermeldung
|
||||
im Wortlaut**: Sie lässt sich per Volltextsuche in die durchsetzende Codestelle zurückverfolgen
|
||||
und liefert dem `faktenermittler` damit den Suchbegriff für einen Primärbeleg. Dessen Prompt
|
||||
wurde für V3 um genau diesen Hinweis ergänzt.
|
||||
|
||||
Der `datenanalyst` liefert als Einziger einen harten Beleg für die Einstufung `veraltet`: Ein im
|
||||
Code definierter Status, der in keinem Datensatz vorkommt, ist toter Code. Umgekehrt beweisen
|
||||
Datensätze, die eine im Code geprüfte Regel verletzen, dass die Regel **nicht durchgesetzt**
|
||||
wird – ein Befund, der die Belegeinstufung einer Anforderung ändert.
|
||||
|
||||
## Die fünf Werkzeugserver
|
||||
|
||||
| Server | Beitrag | In der Arbeit genannt? |
|
||||
|---|---|---|
|
||||
| `serena` | semantische Codenavigation: Referenzsuche, Aufrufhierarchie | ja (Symbol-Navigation) |
|
||||
| `mssql` | Datenlage des laufenden Systems, **read-only** | ja (Datenbank-Inspektion) |
|
||||
| `windows-mcp` | Bedienung des WPF-Clients, Bildschirmfotos | ja (GUI-Beobachtung, optional) |
|
||||
| `playwright` | Blazor-Webportal (Nexus) und REST-API | ja (GUI-Beobachtung, optional) |
|
||||
| `context7` | Bibliotheksdokumentation für den `frameworkabgrenzer` | **nein – bewusste Erweiterung** |
|
||||
|
||||
`serena` trifft die gemessene Schwachstelle direkt: `grep` findet Text, nicht „wer setzt diese
|
||||
Regel durch". `playwright` deckt den Systemteil ab, den `windows-mcp` nicht erreicht – die
|
||||
Codebasis enthält neben dem WPF-Client ein Blazor-Portal und eine REST-API.
|
||||
|
||||
**`context7` steht nicht in der Aufzählung der Arbeit** und ist eine bewusst hinzugenommene
|
||||
Erweiterung. Zu beachten: Er ist der einzige der fünf Server, der **nicht lokal** betrieben wird.
|
||||
|
||||
**Ausgeschlossen, mit Begründung:**
|
||||
|
||||
`memory` (Knowledge Graph) – **der kritische Fall.** Er trägt Zustand zwischen Läufen.
|
||||
Wiederholungsmessungen wären nicht mehr unabhängig: Lauf 2 profitierte von Lauf 1, und die
|
||||
Varianzaussage, für die in Versuch 1 siebzehn Läufe erhoben wurden, wäre wertlos. Soll er dennoch
|
||||
eingesetzt werden, muss der Speicher vor jedem Lauf nachweislich geleert und das im Protokoll
|
||||
belegt werden.
|
||||
|
||||
`sequential-thinking` – dupliziert den `--effort`-Parameter, der sich in Versuch 1 als wirksamste
|
||||
Einzelvariable erwiesen hat (Belegdichte Median 1,0 auf `high` gegenüber 2,0–3,0 auf `max`).
|
||||
Beide gleichzeitig zu variieren wiederholte den Fehler des Fable-Blocks aus Iteration 1, wo
|
||||
Modell und Effort zusammen wechselten und der Befund unzuordenbar blieb.
|
||||
|
||||
`fetch` – unbegrenzter Webzugriff macht die Herkunft von Aussagen unprüfbar; `context7` ist die
|
||||
engere, zitierbare Variante.
|
||||
|
||||
## Wichtig: `--safe-mode` ist hier nicht verwendbar
|
||||
|
||||
`--safe-mode` schaltet ausweislich der CLI-Hilfe „all customizations (CLAUDE.md, skills, plugins,
|
||||
hooks, **MCP servers, custom commands and agents**, output styles, …)" ab – also genau das, was
|
||||
dieser Versuch untersucht. Smoke-Test am 2026-08-26 (CLI 2.1.246, identischer Aufruf, nur das
|
||||
Flag variiert):
|
||||
|
||||
| Konfiguration | `spawned` | `by_type` |
|
||||
|---|---:|---|
|
||||
| mit `--safe-mode` | **0** | leer – „die Rollen sind nicht in der Agent-Registry registriert" |
|
||||
| ohne `--safe-mode` | **2** | `{"modulinventar": 1, "konsistenzpruefer": 1}` |
|
||||
|
||||
**Ohne diesen Test wäre der erste Lauf stillschweigend als V1-Lauf gemessen worden**: `--agents`
|
||||
hätte keine Wirkung gehabt, der Lauf hätte fehlerfrei durchlaufen und Anforderungen erzeugt – nur
|
||||
eben ohne die Rollen, die den Versuch ausmachen.
|
||||
|
||||
**Der Ersatz** (Skill 7.0.0): kein `--safe-mode`, stattdessen `--strict-mcp-config` und
|
||||
`--disallowedTools Skill WebSearch WebFetch SlashCommand` zusätzlich zur 33er-Denylist.
|
||||
Gegengeprüft mit derselben Werkzeugabfrage: `VORGELADEN: NICHTS VORGELADEN` · `SKILLS: KEINE` ·
|
||||
`WEB: KEIN WEBZUGRIFF` · alle Rollen verfügbar. Ohne die Sperre lädt die CLI **16 global
|
||||
installierte Skills** (darunter `code-review`, `security-review`, `run`, `init`);
|
||||
`--setting-sources ''` unterdrückt sie nicht.
|
||||
|
||||
**Was der Ersatz nicht abdeckt:** Plugins, Hooks und Output-Styles. Auf der Versuchsmaschine ist
|
||||
davon nichts konfiguriert, das ist aber eine Eigenschaft der Umgebung und keine Garantie. Der
|
||||
Skill verlangt deshalb vor jedem Lauf eine Umgebungsprüfung, deren Ergebnis ins Protokoll geht.
|
||||
|
||||
**Folge für die Vergleichbarkeit:** Läufe dieses Versuchs sind hinsichtlich der Isolation nicht
|
||||
unmittelbar mit den `solo`- und `builtin`-Läufen aus Versuch 1 vergleichbar. Der Unterschied ist
|
||||
benannt und begrenzt – er betrifft Plugins, Hooks und Output-Styles, nicht CLAUDE.md, Skills,
|
||||
Webzugriff oder MCP.
|
||||
|
||||
## Vor dem ersten Lauf zu erledigen
|
||||
|
||||
1. **Zugangsdaten in `01_MCP.json`** sind Platzhalter. Der MSSQL-Benutzer muss ein reiner
|
||||
Lesebenutzer sein – die Leseregel im Agentenprompt ist eine Anweisung, keine Absicherung.
|
||||
Die ausgefüllte Datei gehört **nicht** ins Repository.
|
||||
2. **Serverversionen festhalten.** `@latest` und `uvx` ohne Versionsbindung machen den Lauf
|
||||
unreproduzierbar. Vor dem ersten Messlauf pinnen und die Versionen ins Protokoll übernehmen.
|
||||
3. **Zustand des laufenden Systems protokollieren.** Ein laufendes ERP mit eigener Datenbank ist
|
||||
Teil des Untersuchungsgegenstands, steckt aber nicht im Git-Snapshot. Datenbankstand, Mandant
|
||||
und Datenart (Produktiv-, Test- oder Demodaten) sind je Lauf festzuhalten; sonst sind
|
||||
V3-Läufe untereinander nicht vergleichbar.
|
||||
4. **Skill erweitern:** Es gibt noch kein Protokollfeld für die MCP-Konfiguration. Pfad und
|
||||
SHA-256 von `01_MCP.json` gehören wie die Agentendefinition ins Protokoll.
|
||||
5. **Modellbedingung.** Wie in V2: bei Delegation über `--model` allein nicht herstellbar – nach
|
||||
jedem Lauf `modelUsage` prüfen.
|
||||
6. **`extract-subagenten.py`** ist nicht gegen `custom`-Agententypen geprüft.
|
||||
|
||||
## Einordnung
|
||||
|
||||
V3 ändert Werkzeugkonfiguration **und** Prompt und eröffnet damit nach der Regel aus Skill 4.4.0
|
||||
zwingend eine **neue Iteration**. Läufe aus V1, V2 und V3 sind nicht poolbar; der Vergleich
|
||||
zwischen ihnen ist der Zweck, nicht die Wiederholungsmessung.
|
||||
Reference in New Issue
Block a user